版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 1引言</b></p><p> 本設(shè)計(jì)利用AT89C51單片機(jī)結(jié)合字符型LCD顯示器設(shè)計(jì)一個簡易的倒數(shù)計(jì)數(shù)器,可用來煮方便面、煮開水或小睡片刻等。做一小段時間倒計(jì)數(shù),當(dāng)?shù)褂?jì)數(shù)為0時,則發(fā)出一段音樂聲響,通知倒計(jì)數(shù)終了。</p><p><b> 2設(shè)計(jì)方案及原理</b></p><p>
2、 設(shè)計(jì)一個簡易的倒數(shù)計(jì)數(shù)器。當(dāng)鍵盤按鍵有按下時,調(diào)整計(jì)數(shù)器值,LCD顯示新值。當(dāng)復(fù)位鍵有按下時,計(jì)數(shù)器復(fù)位為初值,重新倒計(jì)數(shù)。當(dāng)計(jì)數(shù)器值倒計(jì)為0時,蜂鳴器發(fā)出聲音,計(jì)數(shù)器停止倒計(jì),程序結(jié)束。</p><p> 具體過程:按K1鍵,則在LCD上顯示出設(shè)置畫面。此時,若:</p><p> (1) 按K2鍵---增加倒計(jì)數(shù)的時間1分鐘。</p><p> (2
3、) 按K3鍵---減少倒計(jì)數(shù)的時間1分鐘。</p><p> (3) 按K4鍵---設(shè)置完成。</p><p><b> 3硬件設(shè)計(jì)</b></p><p><b> 3.1 設(shè)計(jì)說明</b></p><p> 設(shè)計(jì)的功能:輸出時間,按下鍵就開始計(jì)時,并將時間顯示在LCD1602顯示器上。當(dāng)
4、倒計(jì)數(shù)為0時,蜂鳴器就發(fā)出音樂聲響。該計(jì)數(shù)器系統(tǒng)主要由計(jì)數(shù)器模塊、LCD顯示器模塊、蜂鳴器模塊、鍵盤模塊、復(fù)位模塊等部分組成??傮w設(shè)計(jì)方框圖如圖所示。</p><p> 圖1 總體設(shè)計(jì)方框圖</p><p><b> 3.2電路原理圖</b></p><p> 電路原理圖連接如圖2所示</p><p><b&
5、gt; 圖1 電路原理圖</b></p><p><b> 4軟件設(shè)計(jì)</b></p><p> 音樂倒數(shù)計(jì)數(shù)器程序流程圖包括主程序流程圖,LCD顯示流程圖以及按鍵流程圖,各流程圖如圖2,圖3,圖4所示。</p><p><b> 圖2 主程序流程圖</b></p><p>
6、圖3 LCD顯示流程圖 圖4 按鍵流程圖 </p><p><b> 5系統(tǒng)的仿真與調(diào)試</b></p><p> 本課程設(shè)計(jì)調(diào)試結(jié)果詳見附錄</p><p><b> 6總結(jié)</b></p><p> 經(jīng)過設(shè)計(jì),簡
7、單帶有LCD顯示的音樂倒數(shù)計(jì)數(shù)器完成,系統(tǒng)基本功能基本實(shí)現(xiàn),測試運(yùn)行也正常。該系統(tǒng)完成了計(jì)數(shù)與報警的功能。</p><p> 當(dāng)然這個系統(tǒng)還存在許多有待完善的地方:</p><p> (1) 功能相對較少,有待于添加,如時鐘與鬧鐘功能。</p><p> (2) 界面設(shè)計(jì)不夠精致完美。</p><p><b> 參考文獻(xiàn)&l
8、t;/b></p><p> [1] 康華光.陳大欽.電子技術(shù)基礎(chǔ)—模擬部分[M].北京:高等教育出版社,2005.</p><p> [2] 李朝青.單片機(jī)原理及接口技術(shù)[M].北京:航空航天大學(xué)出版社,2005.</p><p> [3] 蘭吉昌.51單片機(jī)應(yīng)用設(shè)計(jì)百例[M].北京:化學(xué)工業(yè)出版社,2009.</p><p>
9、<b> 附錄</b></p><p><b> 1調(diào)試結(jié)果圖</b></p><p><b> 圖2調(diào)試結(jié)果圖</b></p><p> 2 程序關(guān)鍵問題的部分代碼</p><p> #include<reg52.h></p><p&
10、gt; #include<intrins.h></p><p> #define time 100</p><p> #define uint unsigned int</p><p> #define uchar unsigned char</p><p> uint t,flag,flag0,flag1,flag2,
11、flag3,flag4,flag5,minute,second=60;</p><p> uchar num,j,i,k=0;</p><p> uchar code table[]="TIME 00:00";</p><p> uint code table1[]={64580,64684,64777,64820,64898,6496
12、8,65030};</p><p> sbit key1=P1^0;</p><p> sbit key2=P1^1;</p><p> sbit key3=P1^2;</p><p> sbit key4=P1^3;</p><p> sbit key5=P1^4;</p><p>
13、 sbit P1_5=P1^5;</p><p> sbit RS=P2^0;</p><p> sbit RW=P2^1;</p><p> sbit E=P2^2;</p><p> sbit led_red=P2^3;</p><p> void write_time(uint addr,uint d
14、ate);</p><p> /////////延時函數(shù)///////</p><p> void delay(uint z)</p><p><b> {</b></p><p><b> uint x,y;</b></p><p> for(x=z;x>0
15、;x--)</p><p> for(y=110;y>0;y--);</p><p><b> }</b></p><p> ///////延時1S////////////</p><p> void delay1(void)</p><p><b> {</b&g
16、t;</p><p> uchar a,b,c;</p><p> for(c=13;c>0;c--)</p><p> for(b=247;b>0;b--)</p><p> for(a=142;a>0;a--);</p><p><b> _nop_;</b><
17、;/p><p><b> }</b></p><p> ////////1602寫命令函數(shù)//////</p><p> void write_com(uchar com)</p><p><b> {</b></p><p><b> RS=0;</b
18、></p><p><b> P3=com;</b></p><p><b> delay(5);</b></p><p><b> E=1;</b></p><p> delay(10);</p><p><b> E=0;&
19、lt;/b></p><p><b> }</b></p><p> //////1602寫數(shù)據(jù)函數(shù)//////</p><p> void write_date(uchar date)</p><p><b> {</b></p><p><b>
20、 RS=1;</b></p><p><b> P3=date;</b></p><p><b> delay(5);</b></p><p><b> E=1;</b></p><p> delay(10);</p><p><
21、;b> E=0;</b></p><p><b> }</b></p><p> //////按鍵1處理函數(shù)///////</p><p> void KEY1()</p><p><b> {</b></p><p> while(flag1)
22、</p><p><b> {</b></p><p> if(key2==0)</p><p><b> {</b></p><p> delay(time);</p><p> if(key2==0)</p><p><b>
23、 { </b></p><p> if(minute<=60)</p><p> minute=minute+1;</p><p> write_time(7,minute);</p><p><b> }</b></p><p><b> }</b&
24、gt;</p><p> if(key3==0)</p><p><b> {</b></p><p> delay(time);</p><p> if(key3==0)</p><p><b> {</b></p><p> if(mi
25、nute>0)</p><p> minute=minute-1;</p><p> write_time(7,minute);</p><p><b> }</b></p><p><b> }</b></p><p> if(key4==0||key5==
26、0)</p><p><b> {</b></p><p> delay(150);</p><p> if(key4==0||key5==0)</p><p><b> {</b></p><p><b> flag1=0;</b></
27、p><p><b> flag =1;</b></p><p><b> TR0=1;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b&g
28、t;</p><p><b> }</b></p><p> void write_time(uint addr,uint date)</p><p><b> {</b></p><p> uint ge,shi;</p><p> ge=date%10;<
29、/p><p> shi=date/10;</p><p> write_com(0x80+addr);</p><p> write_date(0x30+shi);</p><p> write_date(0x30+ge);</p><p> if(addr==7&&date==0)</p&
30、gt;<p><b> j=1;</b></p><p> if(j==1&&addr==10&&date==0)</p><p><b> {</b></p><p><b> flag0=1;</b></p><p>&
31、lt;b> TR0=0;</b></p><p><b> TR1=1;</b></p><p><b> flag5=1;</b></p><p><b> }</b></p><p><b> }</b></p>
32、<p> //////初始化函數(shù)//////</p><p> void init()</p><p><b> { </b></p><p><b> P1=0xff;</b></p><p><b> RW=0;</b></p><
33、;p> write_com(0x38);</p><p> write_com(0x0c);</p><p> write_com(0x06);</p><p> write_com(0x80);</p><p> TMOD=0x11;</p><p> TH0=(65536-50000)/256;&
34、lt;/p><p> TL0=(65536-50000)%256;</p><p><b> TH1=0xfc;</b></p><p><b> TL1=0x44;</b></p><p><b> ET1=1;</b></p><p><b
35、> ET0=1;</b></p><p><b> //TR1=1;</b></p><p><b> //TR0=1;</b></p><p><b> EA=1;</b></p><p><b> flag0=1;</b>
36、;</p><p> for(num=0;num<12;num++)</p><p><b> {</b></p><p> write_date(table[num]);</p><p> delay(20);</p><p><b> }</b></
37、p><p><b> }</b></p><p> void write_time0()</p><p><b> {</b></p><p> minute=minute-1;</p><p> write_time(7,minute);</p><
38、;p> write_time(10,59);</p><p> flag=0; </p><p><b> }</b></p><p> void counter()</p><p><b> {</b></p><p><b> if(t=
39、=20)</b></p><p><b> {</b></p><p> led_red=led_red^1;</p><p> if(flag==1)</p><p> write_time0();</p><p><b> t=0;</b></
40、p><p> second=second-1;</p><p> write_time(10,second); </p><p> if(k==1&&second==59)</p><p><b> {</b></p><p> if(minute>0) <
41、/p><p> minute=minute-1;</p><p> write_time(7,minute);</p><p><b> }</b></p><p> if(second==0)</p><p><b> {</b></p><p&
42、gt;<b> k=1;</b></p><p> second=60;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> int mai
43、n()</p><p><b> {</b></p><p><b> init();</b></p><p><b> while(1)</b></p><p><b> {</b></p><p> while(fla
44、g0)</p><p><b> start();</b></p><p> counter();</p><p> while(flag5)</p><p><b> {</b></p><p><b> delay1();</b></
45、p><p><b> i++;</b></p><p><b> if(i>7)</b></p><p><b> i=0;</b></p><p><b> }</b></p><p><b> }</
46、b></p><p><b> return 0;</b></p><p><b> }</b></p><p> void inter0() interrupt 1</p><p><b> {</b></p><p> TH0=(6
47、5536-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p><b> t++;</b></p><p><b> }</b></p><p> void initer1() interrupt 3</p><p>
48、<b> {</b></p><p> TH1=table1[i]/256;</p><p> TL1=table1[i]%256;</p><p> P1_5=~P1_5;</p><p> if(key5==0)</p><p><b> {</b></
49、p><p> delay(100);</p><p> if(key5==0)</p><p><b> {</b></p><p><b> TR1=0;</b></p><p><b> flag5=0;</b></p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 倒數(shù)計(jì)數(shù)器單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)----手動計(jì)數(shù)器
- 單片機(jī)課程設(shè)計(jì)帶有l(wèi)cd顯示的音樂倒數(shù)計(jì)數(shù)器
- 單片機(jī)計(jì)數(shù)器課程設(shè)計(jì)報告
- 基于單片機(jī)lcd顯示的音樂倒數(shù)計(jì)數(shù)器課程設(shè)計(jì)論文
- 單片機(jī)課程設(shè)計(jì)----語言報數(shù)計(jì)數(shù)器
- 單片機(jī)課程設(shè)計(jì)(語言報數(shù)計(jì)數(shù)器)
- 單片機(jī)課程設(shè)計(jì)--簡易頻率計(jì)數(shù)器
- 單片機(jī)課程設(shè)計(jì)外部脈沖計(jì)數(shù)器
- 微機(jī)原理課程設(shè)計(jì)--基于單片機(jī)設(shè)計(jì)的音樂倒數(shù)計(jì)數(shù)器
- 微機(jī)原理課程設(shè)計(jì)--基于單片機(jī)設(shè)計(jì)的音樂倒數(shù)計(jì)數(shù)器
- 單片機(jī)課程設(shè)計(jì)報告(零件計(jì)數(shù)器)
- 基于單片機(jī)的頻率計(jì)數(shù)器課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)00-99加計(jì)數(shù)器
- 微機(jī)原理課程設(shè)計(jì)--基于單片機(jī)設(shè)計(jì)的音樂倒數(shù)計(jì)數(shù)器.doc
- 課程設(shè)計(jì)--簡易的倒數(shù)計(jì)數(shù)器
- 單片機(jī)課程設(shè)計(jì)---基于51單計(jì)時計(jì)數(shù)器系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---基于51單計(jì)時計(jì)數(shù)器系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--00-99加計(jì)數(shù)器程序設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-00-99手動計(jì)數(shù)器設(shè)計(jì)
評論
0/150
提交評論