資源描述:
《基于lcd顯示的數(shù)字時鐘設(shè)計》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、基于lcd顯示的數(shù)字時鐘設(shè)計基于液晶顯示的數(shù)字時鐘設(shè)計的具體要求:*要求學(xué)生能夠熟練地用單片機中定時/計數(shù)、中斷、LCD顯示等技術(shù),參考教材或相關(guān)資料,采用匯編或C語言采用編程實現(xiàn)數(shù)字時鐘的功能,在LCD1602上實時顯示,并運用Proteus軟件繪制電路原理圖,進行仿真驗證和誤差分析,并針對存在的問題提出改進措施。*時鐘的計時工作范圍在00:00:00~23:59:59秒之內(nèi),秒誤差小于0.1%。*在液晶板分兩行顯示。第一行顯示編程者姓名的漢語拼音和日期,如“Luozhihui2008-6-21”,要求位于顯示屏的中間位置;第二行顯示時鐘的運行時間。
2、*至少采用一種或一種以上的語言編程,可以自己增加功能,如增加定時鬧鈴、記事提醒等功能,也可以選用點陣圖形的LCD顯示器。課程設(shè)計報告要求完成課程設(shè)計報告,報告包括的內(nèi)容:課程設(shè)計目的、課程設(shè)計的原理(簡要說明即可);課程設(shè)計內(nèi)容及步驟(包括問題分析,算法設(shè)計,功能模塊分割,主程序框圖,仿真電路模型,仿真對比分析);課程設(shè)計結(jié)果及結(jié)論(驗證結(jié)果的圖示,誤差分析與改進措施,創(chuàng)新說明);課程設(shè)計的心得體會、參考文獻、附錄(源程序代碼)。程序代碼如下:#include#definelcdpP1sbitkey0=P2^0;//按鍵改變時針sbi
3、tkey1=P2^1;//按鍵改變分針sbitkey2=P2^2;//按鍵改變秒針sbitkey3=P2^3;//按鍵控制增減sbitkey4=P2^4;//按鍵控制暫?;蜻\行charincrease_deincrease=1;//時間增減標(biāo)志voidtimechange(void);//修改時間函數(shù)charstop_run=0;//時鐘暫停運行暫停標(biāo)志sbitrs=P3^5;sbitrw=P3^6;sbiten=P3^7;charcount=20;charname[]="ZHANGXUYUN&SHIJIAN2010-6-21";chard[]={'0
4、','0',':','0','0',':','0','0','0'};//初始 00:00:00bitampm=0;charhour=0;charminute=0;charsecond=0;voidtransfer(void);voidwrite_inst(char);voidwrite_char(char);voiddelay1ms(int);voidcheck_BF(void);voidinit_lcm(void);main(){chari;EA=1;ET0=1;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-
5、50000)%256;TR0=1;init_lcm();write_inst(0x80);//第一行的起始地址for(i=0;i<30;i++)write_char(name[i]);//寫數(shù)據(jù)delay1ms(2000);while(1){transfer();for(i=0;i<9;i++){write_inst(0xc0+i);//第二行的起始地址write_char(d[8-i]);//寫數(shù)據(jù)}if(key3==0){delay1ms(20);if(key3==0){if(increase_deincrease==1)increase_dein
6、crease=0;elseincrease_deincrease++;}}timechange();if(key4==0){delay1ms(20);if(key4==0){if(stop_run==1)stop_run=0;elsestop_run++;}}if(stop_run==1)TR0=0;elseTR0=1;}}voidtransfer(void){d[8]=hour/10+0x30;d[7]=hour%10+0x30;d[6]=':';d[5]=minute/10+0x30;d[4]=minute%10+0x30;d[3]=':';d[2
7、]=second/10+0x30;d[1]=second%10+0x30;if(ampm==0)d[0]=0;elsed[0]=1;}voidwrite_inst(charinst){lcdp=inst;rs=0;rw=0;en=0;delay1ms(10);en=1;delay1ms(10);en=0;check_BF();}voidwrite_char(charcharacter){lcdp=character;rs=1;rw=0;en=0;delay1ms(10);en=1;delay1ms(10);en=0;check_BF();}voidch
8、eck_BF(void){chari,x=0x80;while(x&0x80){rs=0;rw