资源描述:
《单片机课程设计-倒数计时器》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、电话:草片机厲禮礫程殺针报告班级:电气1132姓名:学号一、设计要求利用单片机结合LCD显示器设计一个倒数计吋器,可以放在家中使用,例如煮方便面、煮开水或小睡片刻等,做一小段时间计时。当倒数计时为0时,则发出一段音乐,通知倒数终了,该做重要的事情了。具体要求:①文字型LCD(16*2)显示目前倒数的时间;显示格式为“COUNTDOWN时时:分分:秒秒”;具有3个按键操作来设置现在想要倒数的吋间;一旦按键后则开始倒数计吋,当计吋为零则发出一阵音乐声响,②程序开始执行,显示器显示“0009”,按下操作键S1~S3动作如下:操作键S1,可调整倒数时间时分秒;操作键S2
2、,设置倒数计时时间为上升,显示“增加”;操作键S3,设置倒数计时时间为下降,显示“减少”;③RESET按下后显示如下:COUNTDOWN00:00:09倒数吋间操作键S2:增加倒数计时,操作键S3,减少倒数计时,操作键S1按第四下设置完成。④一旦按键后则开始倒数计时,当计时为0时则发出一段音乐。二设计说明音乐倒数计数器倒数的时间通过数字显示,控制器使用单片机AT89C51o该计数器系统主耍由计数器模块、LCD显示器模块、蜂鸣器模块、键盘模块、复位模块等部分组成。总体设计方框图如图1所示。图1总体设计方框图三电路图四程序说明#include#de
3、fineucharunsignedchar#defineuintunsignedintsbitlcde=P2A7;sbitlcdrs=P2A6;sbitlcdw=P2A5;sbitspeaker=PlAO;sbitsl=P3A0;sbits2=P3Al;sbits3=P3A2;sbitrd=P3A7;sbitP3_4=P3A4;ucharcodetable[]="countdownucharcodetablel[]="00:00:09";ucharcount,slnum;staticcharmiao=9,shi=0,fen=0;〃生tl快乐歌的咅符频率表,不同频
4、率由不同的延吋来决定ucharcodeSONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159,212,212,106,126,159,169,190,119,119426,159,142,159,0};〃生Fl快乐歌节拍表,节拍决定每个音符的演奏长短ucharcodeSONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24,9,3,12,12,12,12,12,9,3,12,12,12,24,0};〃延时函数55msvoiddelay(uintz)uintx,y;f
5、or(x=z;x>0;x-)for(y=110;y>0;y-);}voidwrite_com(ucharx)〃向Icd写入命令{P0=x;lcdrs=0;lcdw=0;lcde=l;delay(2);lcde=0;lcdw=0;}voidwrite_date(ucharx)〃向led写入数据{lcdrs=l;lcdw=0;P0=x;delay(5);lcde=l;delay(2);lcde=0;}voidwrite_sfm(ucharadd/uchardate)//显示时分秒及其位置{ucharshi,ge;shi=date/10;ge=date%10;writ
6、e_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);}〃播放函数voidPlayMusicf){uinti=OJ,k;while(SONG_LONG[i]!=011SONG_TONE[i]>=0){//播放各个音符,SONG_LONG为拍子长度for(j=0;j7、(){ucharnum;write_com(0x38);//Icdl602初始化write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(num=0;n+)〃显示'countdown!'{write_date(table[num]);delay(5);}write_com(0x80+0x40);for(num=um++)〃显示'00:00:09'{write_date(tablel[num]);delay(5);}TMOD=0x01;//定吋器0工作方式1TH0=(65536-5000
8、0)/256;//IsT