首页下载资源硬件开发新手51单片机入门实战-电子可调音乐闹钟项目

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

2303_8068675370.35KB需要积分:1

资源文件列表:

可调电子音乐闹钟.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

资源介绍:

请用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; } }
100+评论
captcha