首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

新手51单片机入门实战-电子可调音乐闹钟项目

硬件开发 70.35KB 13 需要积分: 1
立即下载

资源介绍:

请用keil软件打开和编辑,用专门的51单片机烧录软件去烧录(stc-isp)
#include #include "DELAY.H" #include "Nixie.H" #include "MatrixKey.H" #include "DS1302.H" #include "Timer1.H" #include "Timer0.H" #include "music.H" sbit Buzzer=P2^5; unsigned char MODE;//有三种模式,正常显示,时钟设置,闹钟设置 unsigned char KeyNum;//瞬间键码值 char Select;//数码管的位选(当前选择的数码管),Select>=0 && Select<=2 unsigned char Flag;//数码管闪烁标志 char ClockNum[3]={0,0,0}; unsigned char FreqSelect,MusicSelect; //音乐播放函数 void Musicplay() { if(Music[MusicSelect]!=0xFF) //如果不是停止标志位 { FreqSelect=Music[MusicSelect]; //选择音符对应的频率 MusicSelect++; Delay(SPEED/4*Music[MusicSelect]); //选择音符对应的时值 MusicSelect++; TR0=0; Delay(5); //音符间短暂停顿 TR0=1; } else //如果是停止标志位 { MusicSelect=0; } if(DS1302_Time[4]==ClockNum[1]+1) { TR0=0;Buzzer=0; } } //时间显示函数(含音乐播放函数) void TimeShow(void) { DS1302_ReadTime(); Nixie(1,DS1302_Time[3]/10);//显示时 Nixie(2,DS1302_Time[3]%10); Nixie(3,17); Nixie(4,DS1302_Time[4]/10);//显示分 Nixie(5,DS1302_Time[4]%10); Nixie(6,17); Nixie(7,DS1302_Time[5]/10);//显示秒 Nixie(8,DS1302_Time[5]%10); if(DS1302_Time[3]==ClockNum[0] && DS1302_Time[4]==ClockNum[1] && DS1302_Time[5]==ClockNum[2]) { TR0=1; } if(TR0==1) { Musicplay(); } } //时间设置函数 void TimeSet(void) { //选择设置1 if(KeyNum==1) { Select++; if(Select>2){Select=0;} } //选择设置2 if(KeyNum==2) { Select--; if(Select<0){Select=2;} } //按键时间加 if(KeyNum==3) { if(Select+3==3) { DS1302_Time[Select+3]++; if(DS1302_Time[Select+3]>24) { DS1302_Time[Select+3]=0; } } if(Select+3==4) { DS1302_Time[Select+3]++; if(DS1302_Time[Select+3]>60) { DS1302_Time[Select+3]=0; } } if(Select+3==5) { DS1302_Time[Select+3]++; if(DS1302_Time[Select+3]>60) { DS1302_Time[Select+3]=0; } } } //按键时间减 if(KeyNum==4) { if(Select+3==3) { DS1302_Time[Select+3]--; if(DS1302_Time[Select+3]<0) { DS1302_Time[Select+3]=24; } } if(Select+3==4) { DS1302_Time[Select+3]--; if(DS1302_Time[Select+3]<0) { DS1302_Time[Select+3]=60; } } if(Select+3==5) { DS1302_Time[Select+3]--; if(DS1302_Time[Select+3]<0) { DS1302_Time[Select+3]=60; } } } //闪烁判断 if(Select==0 && Flag==1){Nixie(1,16);Nixie(2,16);} else {Nixie(1,DS1302_Time[3]/10);Nixie(2,DS1302_Time[3]%10);} if(Select==1 && Flag==1){Nixie(4,16);Nixie(5,16);} else {Nixie(4,DS1302_Time[4]/10);Nixie(5,DS1302_Time[4]%10);} if(Select==2 && Flag==1){Nixie(7,16);Nixie(8,16);} else {Nixie(7,DS1302_Time[5]/10);Nixie(8,DS1302_Time[5]%10);} Nixie(3,17); Nixie(6,17); } //闹钟设置函数 void ClockSet() { //选择设置1 if(KeyNum==1) { Select++; if(Select>2){Select=0;} } //选择设置2 if(KeyNum==2) { Select--; if(Select<0){Select=2;} } //按键时间加 if(KeyNum==3) { if(Select==0) { ClockNum[Select]++; if(ClockNum[Select]>24) { ClockNum[Select]=0; } } if(Select==1) { ClockNum[Select]++; if(ClockNum[Select]>60) { ClockNum[Select]=0; } } if(Select==2) { ClockNum[Select]++; if(ClockNum[Select]>60) { ClockNum[Select]=0; } } } //按键时间减 if(KeyNum==4) { if(Select==0) { ClockNum[Select]--; if(ClockNum[Select]<0) { ClockNum[Select]=24; } } if(Select==1) { ClockNum[Select]--; if(ClockNum[Select]<0) { ClockNum[Select]=60; } } if(Select==2) { ClockNum[Select]--; if(ClockNum[Select]<0) { ClockNum[Select]=60; } } } //闪烁判断 if(Select==0 && Flag==1){Nixie(1,16);Nixie(2,16);} else {Nixie(1,ClockNum[0]/10);Nixie(2,ClockNum[0]%10);} if(Select==1 && Flag==1){Nixie(4,16);Nixie(5,16);} else {Nixie(4,ClockNum[1]/10);Nixie(5,ClockNum[1]%10);} if(Select==2 && Flag==1){Nixie(7,16);Nixie(8,16);} else {Nixie(7,ClockNum[2]/10);Nixie(8,ClockNum[2]%10);} Nixie(3,17); Nixie(6,17); } //主函数 void main() { DS1302_Init(); Timer1_Init(); Timer0_Init(); Buzzer=0; DS1302_SetTime(); while(1) { KeyNum=MatrixKey(); if(KeyNum==5) { if(MODE==0){MODE=1;Select=0;}//显示模式 else if(MODE==1){MODE=2;DS1302_SetTime();}//时钟设置模式 else if(MODE==2){MODE=0;}//闹钟设置模式 } switch(MODE)//根据不同的功能执行不同的函数 { case 0:TimeShow();break; case 1:TimeSet();break; case 2:ClockSet();break; } } } //定时器0中断负责音乐的播放 void Timer0_Routine() interrupt 1 { if(FreqTable[FreqSelect]) //如果不是休止符 { /*取对应频率值的重装载值到定时器*/ TL0 = FreqTable[FreqSelect]%256; //设置定时初值 TH0 = FreqTable[FreqSelect]/256; //设置定时初值 Buzzer=!Buzzer; //翻转蜂鸣器IO口 } } //定时器1负责设置位的闪烁 void Timer1_Routine() interrupt 3 { static unsigned int T1Count; TL1 = 0x18; //设置定时初值 TH1 = 0xFC; //设置定时初值 T1Count++; if(T1Count>=300) { T1Count=0; Flag=!Flag; } }

资源文件列表:

可调电子音乐闹钟.zip 大约有45个文件
  1. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/
  2. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Delay.c 151B
  3. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Delay.h 79B
  4. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/DS1302.c 3.16KB
  5. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/DS1302.h 396B
  6. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Listings/
  7. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Listings/Delay.lst 1.2KB
  8. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Listings/DS1302.lst 6.26KB
  9. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Listings/main.lst 12KB
  10. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Listings/MatrixKey.lst 3.19KB
  11. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Listings/music.lst 12.67KB
  12. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Listings/Nixie.lst 1.79KB
  13. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Listings/Project.m51 26KB
  14. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Listings/Timer0.lst 1.96KB
  15. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Listings/Timer1.lst 1.96KB
  16. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/main.c 5.48KB
  17. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/MatrixKey.c 1.54KB
  18. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/MatrixKey.h 84B
  19. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/music.h 3.07KB
  20. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Nixie.c 608B
  21. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Nixie.h 92B
  22. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Objects/
  23. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Objects/Delay.obj 888B
  24. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Objects/DS1302.__i 122B
  25. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Objects/DS1302.obj 7.81KB
  26. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Objects/main.obj 20.49KB
  27. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Objects/MatrixKey.__i 131B
  28. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Objects/MatrixKey.obj 5.57KB
  29. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Objects/music.__i 119B
  30. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Objects/Nixie.__i 119B
  31. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Objects/Nixie.obj 3.62KB
  32. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Objects/Project 39.11KB
  33. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Objects/Project.build_log.htm 982B
  34. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Objects/Project.hex 9.21KB
  35. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Objects/Project.lnp 268B
  36. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Objects/Timer0.__i 122B
  37. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Objects/Timer0.obj 2.76KB
  38. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Objects/Timer1.obj 2.76KB
  39. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Project.uvgui.会觉闻 72.46KB
  40. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Project.uvopt 9.83KB
  41. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Project.uvproj 15.65KB
  42. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Timer0.c 638B
  43. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Timer0.h 81B
  44. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Timer1.c 636B
  45. 可调电子音乐闹钟/可调音乐闹钟-显示加按键加时钟加闹钟加音乐/Timer1.h 81B
0评论
提交 加载更多评论
其他资源 餐饮管理系统 JAVA+Vue+SpringBoot+MySQL
基于Vue.js和SpringBoot的餐饮管理系统,分为用户前台和管理后台,可以给管理员、员工、普通用户角色使用,包括菜品管理模块、论坛管理模块、供应商模块、公告信息模块、员工管理模块和系统基础模块,项目编号T252。 项目录屏:https://www.bilibili.com/video/BV1Rz421q7Q1 启动教程:https://www.bilibili.com/video/BV1pW4y1P7GR 项目讲解视频:https://space.bilibili.com/417412814/channel/collectiondetail?sid=2242844
餐饮管理系统 JAVA+Vue+SpringBoot+MySQL 餐饮管理系统 JAVA+Vue+SpringBoot+MySQL 餐饮管理系统 JAVA+Vue+SpringBoot+MySQL
社区养老服务系统 JAVA+Vue+SpringBoot+MySQL
基于Vue.js和SpringBoot的社区养老服务系统,分为用户前台和管理后台,可以给管理员、普通用户角色使用,包括物品种类模块、物品信息模块、社区服务模块、服务预约模块、社区活动模块和系统基础模块,项目编号T253。 项目录屏:https://www.bilibili.com/video/BV13Z421T7Jm 启动教程:https://www.bilibili.com/video/BV1pW4y1P7GR 项目讲解视频:https://space.bilibili.com/417412814/channel/collectiondetail?sid=2242844
社区养老服务系统 JAVA+Vue+SpringBoot+MySQL 社区养老服务系统 JAVA+Vue+SpringBoot+MySQL 社区养老服务系统 JAVA+Vue+SpringBoot+MySQL
小区团购管理系统 JAVA+Vue+SpringBoot+MySQL
基于Vue.js和SpringBoot的小区团购管理系统,分为用户前台和管理后台,可以给管理员、采购员、普通用户角色使用,包括商品管理模块、公告信息模块、采购员模块、用户管理模块和系统基础模块,项目编号T254。 项目录屏:https://www.bilibili.com/video/BV1iw4m1Y7Bw 启动教程:https://www.bilibili.com/video/BV1pW4y1P7GR 项目讲解视频:https://space.bilibili.com/417412814/channel/collectiondetail?sid=2242844
小区团购管理系统 JAVA+Vue+SpringBoot+MySQL 小区团购管理系统 JAVA+Vue+SpringBoot+MySQL 小区团购管理系统 JAVA+Vue+SpringBoot+MySQL
串口调试助手fireTools-win64-v1.0.3.2测试版
串口调试助手fireTools-win64-v1.0.3.2测试版
MyBatis简易教程
MyBatis简易教程 欢迎进入MyBatis简易教程。本教程旨在帮助您快速入门MyBatis,并掌握其基本用法。通过本教程,您将了解MyBatis的核心概念、配置方法以及如何在项目中集成和使用MyBatis进行数据库操作。 1. MyBatis简介 MyBatis是一款优秀的持久层框架,它通过消除几乎所有的JDBC代码和手动设置参数以及检索结果集的工作,让开发者专注于SQL本身。MyBatis支持自定义SQL、存储过程以及高级映射。它极大的简化了数据库操作,并与现有的Java代码完美集成。 2. 环境准备 在开始使用MyBatis之前,您需要准备以下开发环境: JDK 8或以上版本 Maven或Gradle构建工具 数据库(如MySQL、Oracle等)
毕业论文管理系统 JAVA+Vue+SpringBoot+MySQL
基于Vue.js和SpringBoot的在线互动学习网站,分为用户前台和管理后台,可以给管理员、老师、普通用户角色使用,包括课题信息模块、选题申请模块、公告信息模块、课题任务模块、指导教师模块和系统基础模块,项目编号T251。 项目录屏:https://www.bilibili.com/video/BV1wS411w7Qq 启动教程:https://www.bilibili.com/video/BV1pW4y1P7GR 项目讲解视频:https://space.bilibili.com/417412814/channel/collectiondetail?sid=2242844
毕业论文管理系统 JAVA+Vue+SpringBoot+MySQL 毕业论文管理系统 JAVA+Vue+SpringBoot+MySQL 毕业论文管理系统 JAVA+Vue+SpringBoot+MySQL
优质的后台管理系统模板
提供了最易上手的后台管理系统模板,生态完善且配有系统教程,非常适合初学者学习和搭建使用。该模板具备以下特点: 生态完善:模板经过精心设计,具备丰富的功能模块和强大的扩展能力,能够满足多种业务需求。无论是用户管理、权限控制,还是数据统计和报表生成,模板都能轻松应对。 系统教程:我们为每一个功能模块都配备了详细的系统教程,包含操作说明和图文步骤,帮助您快速掌握每一个功能的使用方法。即使您是初学者,也能轻松上手,快速搭建自己的后台管理系统。 适合初学者学习:模板设计简洁直观,使用友好,特别适合刚开始学习后台管理系统搭建的初学者。通过实践操作,您可以在短时间内熟悉和掌握后台管理系统的基本构建方法和技巧。 压缩包提供:为了方便您下载和使用,我们将模板打包成压缩包,您只需下载解压即可快速开始使用。压缩包中包含了所有必要的文件和资源,确保您能够顺利完成搭建。 精简版和完整版:根据不同的需求,我们提供了精简版和完整版两种选择。精简版适合快速上手和基本功能的学习,而完整版则包含更多高级功能和扩展模块,满足更复杂的业务需求。 教程:https://space.bilibili.com/3011
fanjiandiezj_downyi.com.zip
fanjiandiezj_downyi.com.zip