版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 物理機電學院課程設計報告</p><p> 課程名稱: 單片機原理 </p><p> 專業(yè)班級: 10電本(2)班 </p><p> 學生姓名: </p><p> 學 號:
2、 </p><p> 指導教師: </p><p> 完成時間: </p><p> 報告成績: </p><p><b> 單
3、片機課程設計報告</b></p><p><b> 目錄</b></p><p> 一、設計任務與要求- 1 -</p><p> 1.1 設計任務- 1 -</p><p> 1.2 數(shù)字時鐘的設計- 1 -</p><p> 二、方案設計與論證- 2 -</
4、p><p> 方案一:- 2 -</p><p> 方案二:- 2 -</p><p> 三、硬件電路設計- 4 -</p><p> 3.1最小系統(tǒng)部分。- 4 -</p><p> 3.2 外圍電路部分。- 5 -</p><p> 四、軟件設計- 6 -</p&g
5、t;<p> 4.1 程序框圖- 6 -</p><p> 4.2 實驗程序(見附錄2)- 6 -</p><p> 五、仿真過程與仿真結果- 7 -</p><p> 5.1 仿真原理圖:- 7 -</p><p> 5.2 仿真結果- 7 -</p><p> 六、安裝與調試-
6、 8 -</p><p> 6.1 安裝:- 8 -</p><p> 6.2 實物圖:- 8 -</p><p> 6.3 調試:- 9 -</p><p> 6.4 調試結果:- 9 -</p><p> 七、結論與心得- 10 -</p><p> 八、參考文獻-
7、11 -</p><p> 附錄1:主要器件清單:- 12 -</p><p> 附錄2:實驗程序- 13 -</p><p><b> 單片機課程設計報告</b></p><p><b> 一、設計任務與要求</b></p><p><b> 1.1
8、 設計任務</b></p><p> 通過課程設計的教學實踐,進一步學習、掌握單片機應用系統(tǒng)的有關知識,加深了解單片機的工作原理。初步掌握簡單單片機應用系統(tǒng)的設計、制作、調試的方法。提高動手實踐能力、提高科學的思維能力。</p><p> 1.2 數(shù)字時鐘的設計</p><p><b> 設計基本要求:</b></p&g
9、t;<p> (1)能顯示小時、分鐘、秒;</p><p> ?。?)具有時間設置功能;</p><p> ?。?)在進入系統(tǒng)時顯示自己的學號并閃爍兩下; </p><p><b> 擴展要求:</b></p><p> 具備鬧鐘功能,有聲音提示。</p><p><b&
10、gt; 二、方案設計與論證</b></p><p> 本設計基于單片機技術原理,以單片機芯片AT89S51作為核心控制器,通過硬件電路的制作以及軟件程序的編制,計制作出一個多功能數(shù)字時鐘系統(tǒng)。單片機擴展的LED顯示器用來顯示秒、分、時計數(shù)單元中的值。整個設計包括兩大部分: 硬件部分和軟件部分,以單片機為核心, 配以一定的外圍電路和軟件。硬件是整個系統(tǒng)的基礎, 軟件部分則要合理、充分地支持和使用系
11、統(tǒng)的硬件, 從而完成系統(tǒng)所要完成的任務。 </p><p> 該時鐘系統(tǒng)主要由時鐘模塊、液晶顯示模塊、鍵盤控制模塊組成。設計以硬件軟件化為指導思想充分發(fā)揮單片機功能大部分功能通過軟件編程來實現(xiàn),路簡單明了,統(tǒng)穩(wěn)定性高。</p><p><b> 方案一:</b></p><p> 利用AT89S52單片機內部的定時/計數(shù)器進行中斷定時
12、,合軟件延時實現(xiàn)時、分、秒的計時。該方案節(jié)省硬件成本且能使讀者在定時/計數(shù)器的使用、中斷及程序設計方面得到鍛煉與提高,對單片機的指令系統(tǒng)能有更深入的了解,而對學好單片機技術這門課程起到一定的作用。</p><p><b> 方案二:</b></p><p> 利用DS2302(其引腳如圖2.1.1 所示)時鐘芯片連接AT89S51單片機,提供當前日期和時間數(shù)據(jù),
13、并將實時的日期數(shù)據(jù)在字符型液晶顯示器LCD1602(其引腳如圖 2.1.2 所示,顯示編碼如圖 2.1.3所示)上顯示出來。</p><p> 圖2.1.1 DS2302引腳圖</p><p> 圖2.1.2 LCD1602引腳圖 圖2.1.3 LCD1602編碼顯示</p><p><b> 分析:</b><
14、/p><p> 方案一直接利用AT89S51單片機內部定時/計數(shù)器進行中斷定時,和軟件延時實現(xiàn)時、分、秒的計時。此方法雖然可以有效的節(jié)約成本,但產(chǎn)生的誤差也較大,</p><p> 不能達到精確定時的目的。</p><p> 相比于方案一,方案二由于利用標準的時鐘芯片進行設計,可以有效的減小產(chǎn)生的誤差,達到準確定時的目的。</p><p>
15、 想比較之下,選擇方案二進行設計較合適。</p><p><b> 三、硬件電路設計</b></p><p> 將硬件部分分為最小系統(tǒng)部分和外圍電路部分。</p><p> 3.1最小系統(tǒng)部分。</p><p><b> 3.1.1原理圖</b></p><p>&
16、lt;b> 圖3.1.1 </b></p><p> 3.1.2 PCB圖</p><p><b> 圖3.1.2 </b></p><p> 3.2 外圍電路部分。</p><p><b> 3.2.1原理圖</b></p><p><b&
17、gt; 圖3.2.1 </b></p><p> 3.2.2 PCB圖</p><p><b> 圖3.2.2 </b></p><p><b> 四、軟件設計</b></p><p><b> 4.1 程序框圖</b></p><p&
18、gt; 圖4.1.1b 按鍵掃描程序框</p><p> 圖4.1.1a 主程序框圖 </p><p> 4.2 實驗程序(見附錄2)</p><p> 五、仿真過程與仿真結果</p><p> 5.1 仿真原理圖:</p><p><b>
19、 圖5.1.1</b></p><p><b> 5.2 仿真結果</b></p><p> a.星期: b.日期:</p><p> c.時間:d.鬧鐘:</p><p><b> 圖5.1.2 </b></p><p><b> 六、安裝與
20、調試</b></p><p><b> 6.1 安裝:</b></p><p> a.在keil軟件中新建工程,芯片選擇AT89S51,保存工程;打開數(shù)字鐘C語言程序,保存,編譯無誤后生成HEX文件。</p><p> b.打開STC-ISP-燒寫軟件并選擇好芯片型號,COM口,波特率等;取出最小系統(tǒng)模塊,將串口連接電腦USB
21、接口,連接好啊電源,并將下載跳線短接;</p><p> c.在燒寫軟件中選擇好第一步中生成的HEX文件,點擊下載按鈕,將數(shù)字鐘程序燒寫進最小系統(tǒng)板的單片機中;</p><p> d.程序燒寫完成后,將最小系統(tǒng)模塊與外圍電路模塊對應原理圖用杜邦線一一連接起來,接上電源(注意電源正負極),進行調試。</p><p><b> 6.2 實物圖:</
22、b></p><p><b> 圖6.2.1</b></p><p><b> 6.3 調試:</b></p><p> a.確認無誤后接上電源,發(fā)現(xiàn)1602液晶顯示屏亮但無顯示,通過調節(jié)電位器W后改變1602的對比度后,問題解決。</p><p> b.調節(jié)W后液晶屏有現(xiàn)顯示,但不能
23、正?,F(xiàn)實時鐘。重新檢查連線并無錯誤,回仿真圖進行仿真調試也一切正常。經(jīng)反復查證是DS2302時鐘芯片無參考電壓以致不能正常工作所致,通過在DS2302時鐘芯片的3個引出腳分別外接1K上拉電阻并連接電源VCC。重新接上電源后,問題解決。</p><p> c.通過外圍電路的4個按鍵調節(jié)系統(tǒng)時間,日期,星期,鬧鐘。測試各個系統(tǒng)功能是否正常</p><p><b> 6.4 調試結
24、果:</b></p><p> 經(jīng)過反復調試與論證,本數(shù)字時鐘系統(tǒng)能夠正確的顯示時間,日期,星期等基本要求,且時間誤差在1S以內;在進入系統(tǒng)時可以顯示自己的學號并閃爍2次;可以進行時間,日期,星期調節(jié),并具有鬧鐘設定功能。</p><p><b> 七、結論與心得</b></p><p> 歷時一個星期的實訓結束了,從最開始的
25、選定任務,到仿真,畫原理圖,畫PCB,制板,焊接,調試,檢測——。一路走來,看著自己的作品一步步的從“理想”變?yōu)椤艾F(xiàn)實”。那種喜悅心情是無法用語言形容的!其實最重要的不是結果,而是過程。結果是生硬的,而過程永遠值得我們慢慢回味。在這幾天的實訓過程當中,有歡笑過,也有失落過。這其中的點點滴滴現(xiàn)在仔細回味起來不免苦笑一番。</p><p> 經(jīng)過一個星期的實訓令我受益良多。上個學期學習了《單片機原理》,學語法,背指
26、令。但由于自己沒有開發(fā)板,不能將理論付諸實踐。只有在實驗課上才有幾次動手的機會,但也只有為數(shù)不多的幾次罷了。且能像這次這樣自己親自動手制版更是機會難得。這次實踐讓我對C51開發(fā)板的硬件結構有了進一步的連接,同時也認識了DS2302時鐘芯片和LCD1602液晶顯示屏的引腳及功能。進一步熟悉了ISIS軟件和ALTIUM軟件是的使用。特別是仿真軟件的使用,以前我只能簡單的按照老師給的那一套步驟,自己一點都不知道變通。而在這次實訓中遇到了些許問
27、題,通過虛心請教其他的同學,經(jīng)過同學們的熱心幫助,我的問題一個個都迎刃而解了。這才發(fā)現(xiàn)其實這套軟件的功能其實非常強大,不是我過去簡簡單單的那一套路而已,這其中的許多功能還有待開發(fā)。</p><p> 這次實訓也讓我體會到團隊協(xié)作的重要性。遇到問題大家一起討論,最終取得最好的解決方案。自己有不懂的問題虛心向他人請教,開始覺得不好意思,覺得別人會不耐煩,但其實發(fā)現(xiàn)大家都是很熱情的,都會耐心的把方法講解給我聽,直到我
28、會為止。想當初如果自己因為種種原因不把自己的問題去請教他人,那么自己不懂的到現(xiàn)在還是不懂。自己也就不能學到那么多東西了。</p><p> 雖然這次實訓讓我學到了很多,但也發(fā)現(xiàn)了自己在很多方面的不足。比如C程序不能自己獨立完成,仿真軟件用得不夠熟練等。而這些都只怨自己平時不夠努力。在今后的學習生活中,我要加倍努力,在編程上多下點功夫,從最簡單的開始,一步一步的積累。因為自己基礎較差。人要逼下自己,才會發(fā)現(xiàn)自己的
29、潛能原來這么大。讓自己多學點,多懂點,只有這樣才不會愧對自己的大學四年!</p><p><b> 八、參考文獻</b></p><p> [1]單片機原理及應用 / 張毅剛,彭喜元,彭宇編著.—2版[M].北京:高等教育出版社,2010.5[2011.12重印].</p><p> [2]單片機C51設計教程與實驗/祁偉, 楊亭編著[M
30、].北京:航空航天大學出版社,2006.</p><p> [3]單片機C程序設計實例指導/李光飛等編著[M]. 航空航天大學出版社,2005.</p><p> [4]例說51單片機:C語言版/張義和等編著: 袁彩霞改編[M].北京:人民郵電出版社,2008.4.</p><p> 附錄1:主要器件清單:</p><p><b&
31、gt; 附錄2:實驗程序</b></p><p> #include<reg52.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int </p><p> sbit rs=P2^0; //數(shù)據(jù)、命令選擇
32、端</p><p> sbit lcden=P2^2; //使能信號</p><p> sbit lcdew=P2^1; // 讀寫選擇端</p><p> sbit s1=P1^5; //功能鍵設定</p><p> sbit s2=P1^6; // 增大鍵設定</p><p> sbit s
33、3=P1^7; // 減小鍵設定</p><p> sbit s4=P1^4; //關閉蜂鳴器</p><p> sbit beep=P2^3; // 蜂鳴器設定 */</p><p> sbit RST=P2^5;//ds1302 設定</p><p> sbit SCLK=P2^7;</p>&l
34、t;p> sbit IO=P2^6;</p><p> sbit ACC0 = ACC^0;</p><p> sbit ACC7 = ACC^7;//位尋址寄存器定義</p><p><b> bit flag;</b></p><p> uchar code table1[]=" wan
35、g shu quan";</p><p> uchar code table2[]=" 2010041611 ";</p><p> uchar code table3[]=" ";</p><p> uchar code table4[]="
36、 ";</p><p> uchar num[8],enter,shi,fen,miao,nian,yue,ri,week,shi1,fen1,flag1=0,flag2=0,flag3,choice,</p><p> time[]="20XX-XX-XX XXX ",//年月日字符數(shù)組</p><p> time
37、1[]=" xx:xx:xx ",//時分秒字符數(shù)組</p><p> time3[]="@ NO 00:00:00";//鬧鐘設定時顯示的時間數(shù)組</p><p> void delay(uint z) //1ms延時函數(shù)</p><p> {uint x,y;</p&g
38、t;<p> for(x=z;x>0;x--)</p><p> for(y=500;y>0;y--);</p><p><b> }</b></p><p> void di() //蜂鳴設定函數(shù)</p><p><b> {</b></p>
39、<p><b> beep=0;</b></p><p> delay(80);</p><p><b> beep=1;</b></p><p><b> }</b></p><p> uchar read(uchar x) //讀ds1302數(shù)據(jù)&
40、lt;/p><p><b> {</b></p><p><b> uchar i;</b></p><p><b> RST=0;</b></p><p><b> SCLK=0;</b></p><p><b>
41、 RST=1;</b></p><p> ACC=(x|0x01);</p><p> for(i=8;i>0;i--)//循環(huán)8次移位</p><p><b> {</b></p><p><b> IO=ACC0;</b></p><p><
42、;b> SCLK=1;</b></p><p><b> SCLK=0;</b></p><p> ACC=ACC>>1;//右移</p><p><b> }</b></p><p> for(i=8;i>0;i--)//循環(huán)8次移位</p>
43、;<p> {ACC=ACC>>1;</p><p><b> ACC7=IO;</b></p><p><b> SCLK=1;</b></p><p><b> SCLK=0;</b></p><p><b> }</b
44、></p><p><b> SCLK=1;</b></p><p><b> RST=0;</b></p><p> return ACC;</p><p><b> }</b></p><p> void write (uchar a
45、ddr,uchar dat) //向ds1302寫數(shù)據(jù)</p><p><b> {</b></p><p><b> uchar i;</b></p><p><b> RST=0;</b></p><p><b> SCLK=0;</b><
46、;/p><p><b> RST=1;</b></p><p><b> ACC=addr;</b></p><p> for(i=8;i>0;i--)</p><p><b> {</b></p><p><b> IO=ACC0
47、;</b></p><p><b> SCLK=1;</b></p><p><b> SCLK=0;</b></p><p> ACC=ACC>>1;</p><p><b> }</b></p><p><b&g
48、t; ACC=dat;</b></p><p> for(i=8;i>0;i--)</p><p><b> {</b></p><p><b> IO=ACC0;</b></p><p><b> SCLK=1;</b></p>&l
49、t;p><b> SCLK=0;</b></p><p> ACC=ACC>>1;</p><p><b> }</b></p><p><b> SCLK=1;</b></p><p><b> RST=0;</b></
50、p><p><b> }</b></p><p> void getnum() //接收ds1302的數(shù)據(jù)</p><p><b> {</b></p><p><b> uchar j;</b></p><p> for(j=0;j<7
51、;j++)</p><p><b> {</b></p><p> num[j]=read(0x80+0x02*j);</p><p><b> }</b></p><p> time[2]=((num[6]&0x70)>>4)+'0';//年</p
52、><p> time[3]=(num[6]&0x0f)+'0'; nian=((num[6]&0x70)>>4)*10+(num[6]&0x0f);</p><p> time[5]=((num[4]&0x70)>>4)+'0';//yue</p><p> time[
53、6]=(num[4]&0x0f)+'0'; yue=((num[4]&0x70)>>4)*10+(num[4]&0x0f);</p><p> time[8]=((num[3]&0x70)>>4)+'0';//ri</p><p> time[9]=(num[3]&0x0f)+
54、9;0'; ri=((num[3]&0x70)>>4)*10+(num[3]&0x0f);</p><p> time[13]=(num[5]&0x0f)+'0';//week</p><p> week=(num[5]&0x0f);</p><p> switch(time[13])
55、 //星期字符數(shù)組賦值</p><p><b> {</b></p><p> case '1': time[12]='S'; time[13]='u'; time[14]='n';</p><p><b> break;</b></p>
56、;<p> case '2': time[12]='M'; time[13]='o'; time[14]='n';</p><p><b> break;</b></p><p> case '3': time[12]='T'; time[13]=
57、9;u'; time[14]='e';</p><p><b> break;</b></p><p> case '4': time[12]='W'; time[13]='e'; time[14]='d';</p><p><b> bre
58、ak;</b></p><p> case '5': time[12]='T'; time[13]='h'; time[14]='u';</p><p><b> break;</b></p><p> case '6': time[12]=
59、9;F'; time[13]='r'; time[14]='i';</p><p><b> break;</b></p><p> case '7': time[12]='S'; time[13]='a'; time[14]='t';</p>&
60、lt;p> break; </p><p><b> }</b></p><p> time1[5]=((num[2]&0x70)>>4)+'0'; //shi</p><p> time1[6]=(num[2]&0x0f)+'0'; shi=((num[
61、2]&0x70)>>4)*10+(num[2]&0x0f);</p><p> time1[8]=((num[1]&0x70)>>4)+'0'; //fen</p><p> time1[9]=(num[1]&0x0f)+'0'; fen=((num[1]&0x70)>>
62、;4)*10+(num[1]&0x0f);</p><p> time1[11]=((num[0]&0x70)>>4)+'0'; //miao</p><p> time1[12]=(num[0]&0x0f)+'0'; miao=((num[0]&0x70)>>4)*10+(num[0]&a
63、mp;0x0f);</p><p><b> }</b></p><p> void write_com(uchar com) //寫入lcd顯示方式</p><p><b> {</b></p><p><b> rs=0;</b></p><
64、;p><b> P0=com;</b></p><p><b> delay(1);</b></p><p><b> lcden=1;</b></p><p><b> delay(1);</b></p><p><b> lc
65、den=0;</b></p><p><b> }</b></p><p> void write_data(uchar date)//向lcd1602寫入數(shù)據(jù)</p><p><b> {</b></p><p><b> rs=1;</b></
66、p><p><b> P0=date;</b></p><p><b> delay(1);</b></p><p><b> lcden=1;</b></p><p><b> delay(1);</b></p><p>&l
67、t;b> lcden=0;</b></p><p><b> }</b></p><p> void chuxian1()</p><p> {uchar num1;</p><p> write_com(0x80);//將數(shù)據(jù)指針定位到第一行第一個字節(jié)</p><p&g
68、t; for(num1=0;num1<15;num1++)</p><p><b> {</b></p><p> write_data(table1[num1]);</p><p> delay(20);</p><p><b> }</b></p><p>
69、; write_com(0x80+0x40);</p><p> for(num1=0;num1<14;num1++)</p><p><b> {</b></p><p> write_data(table2[num1]);</p><p> delay(20);</p><p>
70、;<b> }</b></p><p> delay(1500);</p><p> write_com(0x01);</p><p><b> } </b></p><p> void chuxian2()</p><p> {uchar num1;</
71、p><p> write_com(0x80);//將數(shù)據(jù)指針定位到第一行第一個字節(jié)</p><p> for(num1=0;num1<15;num1++)</p><p><b> {</b></p><p> write_data(table3[num1]);</p><p> de
72、lay(20);</p><p><b> }</b></p><p> write_com(0x80+0x40);</p><p> for(num1=0;num1<14;num1++)</p><p><b> {</b></p><p> write_d
73、ata(table4[num1]);</p><p> delay(20);</p><p><b> }</b></p><p> delay(50);</p><p> write_com(0x01);</p><p><b> } </b></p>
74、<p> void display() //顯示數(shù)據(jù)</p><p><b> {</b></p><p><b> uchar i;</b></p><p> write_com(0x0c); //顯示方式設定為:無光標,且不閃爍</p><p> if(
75、flag2==1) </p><p> time1[0]='@'; //鬧鐘圖標設定</p><p><b> else </b></p><p> time1[0]=' ';</p><p> if(flag1==0) //flag為0時正常顯示年、月、日、時、分、
76、秒等</p><p><b> { </b></p><p> write_com(0x80);</p><p> for(i=0;time[i]!='\0';i++)</p><p><b> {</b></p><p> write_data(
77、time[i]);</p><p><b> }</b></p><p> write_com(0xc0);</p><p> for(i=0;time1[i]!='\0';i++)</p><p><b> {</b></p><p> write
78、_data(time1[i]);</p><p><b> }</b></p><p><b> }</b></p><p> if(flag1==1) //flag為1時進入時間設定界面</p><p><b> {</b></p><p&g
79、t; time3[8]=fen1/10+'0'; time3[9]=fen1%10+'0';</p><p> time3[5]=shi1/10+'0';time3[6]=shi1%10+'0';</p><p> if(choice==0)</p><p><b> {</b&
80、gt;</p><p> time3[2]='N';time3[3]='O';</p><p><b> }</b></p><p> if(choice==1)</p><p><b> {</b></p><p> time3[2
81、]='O'; time3[3]='K';</p><p><b> }</b></p><p> write_com(0xc0);</p><p> for(i=0;time3[i]!='\0';i++)</p><p><b> {</b>&
82、lt;/p><p> write_data(time3[i]);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void keyscan() // 掃描鍵盤&l
83、t;/p><p><b> {</b></p><p><b> getnum();</b></p><p> if(s1==0)//功能鍵被按下 write_com(0x0c);</p><p><b> {</b></p><p&g
84、t;<b> delay(1);</b></p><p><b> if(s1==0)</b></p><p><b> {</b></p><p> enter++; //記錄摁下次數(shù)</p><p> if(flag1==1&&enter==
85、6)</p><p><b> enter=2;</b></p><p> if(flag1==0&&enter==9)</p><p><b> enter=0;</b></p><p> while(s1==0);di(); //按鍵放下時響一下</p>
86、<p><b> }</b></p><p><b> }</b></p><p> switch(enter)</p><p><b> {</b></p><p> case 0: write_com(0x0c);break;</p>
87、<p> case 1: write_com(0xcc);write_com(0x0f); delay(100); //按秒 時 有光標</p><p><b> break;</b></p><p> case 2: write_com(0xc9); write_com(0x0f);delay(100);//分 </p&g
88、t;<p><b> break;</b></p><p> case 3: write_com(0xc6); write_com(0x0f);delay(100);//時</p><p><b> break;</b></p><p> case 4: if(flag1==0)</
89、p><p><b> {</b></p><p> write_com(0x8e); write_com(0x0f);delay(100);//星期</p><p><b> }</b></p><p> if(flag1==1)</p><p><b>
90、 {</b></p><p> write_com(0xc3); write_com(0x0f);delay(100); //NO、OK選項閃爍</p><p><b> }</b></p><p><b> break;</b></p><p> case 5: if(
91、flag1==0)</p><p><b> {</b></p><p> write_com(0x89); write_com(0x0f);delay(100);//日閃爍</p><p><b> }</b></p><p> if(flag1==1)</p><
92、p><b> {</b></p><p> write_com(0xc0); write_com(0x0f);delay(100); //時鐘標志閃爍</p><p><b> }</b></p><p><b> break;</b></p><p>
93、case 6: write_com(0x86); write_com(0x0f);delay(100);//月</p><p><b> break;</b></p><p> case 7: write_com(0x83); write_com(0x0f);delay(100);//年</p><p><b>
94、 break;</b></p><p> case 8: write_com(0x0c);write_com(0xc0); write_data('@'); </p><p> if(flag1==0) write_com(0xc0);</p><p> else write_com(0xc9);write_com(0x0f)
95、;delay(100);//鬧鐘</p><p><b> break;</b></p><p><b> }</b></p><p> if(enter!=0&&s2==0)</p><p><b> {</b></p><p&
96、gt;<b> delay(1);</b></p><p> if(enter!=0&&s2==0)</p><p><b> {</b></p><p> switch(enter)</p><p><b> {</b></p><
97、;p> case 1:miao++; if(miao==60) miao=0;</p><p> write(0x80,(miao/10*0x10+miao%10)); //秒 </p><p><b> break;</b></p><p> case 2:if(flag1==0)</p><p&g
98、t;<b> {</b></p><p> fen++;if(fen==60) fen=0;</p><p> write(0x82,((fen/10)*0x10+fen%10));//分 </p><p><b> }</b></p><p> if(flag1==1)</p&
99、gt;<p><b> {</b></p><p> fen1++;if(fen1==60) fen1=0;</p><p><b> }</b></p><p><b> break;</b></p><p> case 3:if(flag1==0
100、)</p><p><b> {</b></p><p> shi++;if(shi==24) shi=0;</p><p> write(0x84,(shi/10*0x10+shi%10)); //時</p><p><b> }</b></p><p>
101、 if(flag1==1)</p><p><b> {</b></p><p> shi1++; if(shi1==24) shi1=0;</p><p><b> }</b></p><p><b> break;</b></p><p>
102、 case 4:if(flag1==0)</p><p><b> {</b></p><p> week++; if(week==8) week=1;</p><p> write(0x8a,(week/10*0x10+week%10)); //星期 </p><p><b> }&l
103、t;/b></p><p> if(flag1==1)</p><p><b> {</b></p><p> choice++; if(choice==2) choice=0;</p><p><b> }</b></p><p><b> br
104、eak;</b></p><p> case 5:if(flag1==0)</p><p><b> {</b></p><p> ri++; if(ri==32) ri=1;</p><p> write(0x86,(ri/10*0x10+ri%10)); //日 </p&g
105、t;<p><b> }</b></p><p> if(flag1==1)</p><p><b> {</b></p><p> if(choice==0) flag2=0;</p><p> if(choice==1) flag2=1;</p><
106、;p> enter=0; flag1=0;</p><p><b> }</b></p><p> break;</p><p> case 6:yue++; if(yue==13) yue=1;</p><p> write(0x88,(yue/10*0x10+yue%10)
107、);//月 </p><p><b> break;</b></p><p> case 7:nian++;if(nian==99)nian=0;</p><p> write(0x8c,(nian/10*0x10+nian%10));//年 </p><p><b> break;&
108、lt;/b></p><p> case 8: flag1=1; enter=2;display(); break;//進入鬧鐘設置界面</p><p> }</p><p> while(s2==0);di(); //按鍵放下時響一下</p><p><b> }</
109、b></p><p><b> }</b></p><p> if(enter!=0&&s3==0)</p><p><b> {</b></p><p><b> delay(1);</b></p><p> if(en
110、ter!=0&&s3==0)</p><p><b> {</b></p><p> switch(enter)</p><p><b> {</b></p><p> case 1:miao--; if(miao==-1) miao=59; </p>&l
111、t;p> write(0x80,(miao/10*0x10+miao%10)); //秒 </p><p><b> break;</b></p><p> case 2:if(flag1==0)</p><p><b> {</b></p><p> fen--;if(fe
112、n==-1) fen=59;</p><p> write(0x82,((fen/10)*0x10+fen%10));//分 </p><p><b> }</b></p><p> if(flag1==1)</p><p><b> {</b></p><p>
113、 fen1--;if(fen1==-1) fen1=59;</p><p><b> }</b></p><p><b> break;</b></p><p> case 3:if(flag1==0)</p><p><b> {</b></p>&
114、lt;p> shi--;if(shi==-1) shi=23;</p><p> write(0x84,(shi/10*0x10+shi%10)); //時</p><p><b> }</b></p><p> if(flag1==1)</p><p><b> {</b>
115、</p><p> shi1--; if(shi1==-1) shi1=23;</p><p><b> }</b></p><p><b> break;</b></p><p> case 4:if(flag1==0)</p><p><b> {
116、</b></p><p> week--; if(week==0) week=7;</p><p> write(0x8a,(week/10*0x10+week%10)); //星期 </p><p><b> }</b></p><p> if(flag1==1)</p>
117、<p><b> {</b></p><p> choice--; if(choice==-1) choice=1;</p><p><b> }</b></p><p><b> break;</b></p><p> case 5:if(flag1=
118、=0)</p><p><b> {</b></p><p> ri--; if(ri==0) ri=31;</p><p> write(0x86,(ri/10*0x10+ri%10)); //日 </p><p><b> }</b></p><p&g
119、t; if(flag1==1)</p><p><b> {</b></p><p> if(choice==0) flag2=0;</p><p> if(choice==1) flag2=1;</p><p> enter=0; flag1=0;</p><p><b>
120、 }</b></p><p> break;</p><p> case 6:yue--;if(yue==0) yue=12;</p><p> write(0x88,(yue/10*0x10+yue%10));//月 </p><p><b> break;</b>
121、;</p><p> case 7:nian--;if(nian==-1) nian=99;</p><p> write(0x8c,(nian/10*0x10+nian%10));//年 </p><p><b> break;</b></p><p> case 8: flag1=1; bre
122、ak;//進入鬧鐘設置界面</p><p><b> }</b></p><p> while(s3==0);di(); //按鍵放下時響一下</p><p><b> }</b></p><p><b> }</b></p><p&
123、gt; // if(s4==0)</p><p><b> // {</b></p><p> //delay(1);</p><p> //if(s4==0)</p><p><b> // {</b></p><p> //
124、 flag=1; </p><p><b> // }</b></p><p><b> // }</b></p><p><b> }</b></p><p> void init() //初始化</p>
125、<p><b> {</b></p><p> //beep=0;</p><p> lcden=0;// lcd信號使能端設定</p><p> lcdew=0; //lcd讀寫選擇端設定</p><p><b> RST=0;</b></p><
126、;p><b> SCLK=1;</b></p><p> write_com(0x38);</p><p> write_com(0x0c);</p><p> write_com(0x06); // lcd初始化</p><p> write_com(0x01);</p><
127、p> write_com(0x80); //顯示“20”</p><p> chuxian1();</p><p> chuxian2();</p><p> chuxian1();</p><p> chuxian2();</p><p> chuxian1();</p><
128、p> write_data(time[0]); write_data(time[1]);</p><p> write_com(0x84); //顯示“—”</p><p> write_data(time[4]);</p><p> write_com(0x87); //顯示“—”</p><p> write_
129、data(time[7]);</p><p> write_com(0xc7); //顯示“:”</p><p> write_data(time1[7]);</p><p> write_com(0xca); //顯示“:”</p><p> write_data(time1[10]);</p><p&g
130、t; write(0x80,0); </p><p> miao=read(0x80);</p><p><b> }</b></p><p> void main()</p><p><b> {</b></p><p> init(); //初始
131、化</p><p><b> while(1)</b></p><p><b> {</b></p><p> if(fen1!=fen) flag3=0;</p><p><b> getnum();</b></p><p> while(
132、flag2==1&&enter==0&&shi1==shi&&fen1==fen&&flag3==0)</p><p><b> { </b></p><p> di();delay(200);di();delay(600);</p><p> getnum();displ
133、ay();</p><p> if(s1==0||s2==0||s3==0)</p><p><b> {</b></p><p> delay(10);</p><p><b> flag3=1;</b></p><p> while(s1==0||s2==0||
134、s3==0); </p><p><b> }</b></p><p><b> enter=0;</b></p><p><b> }</b></p><p> display();</p><p> keyscan();</p&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機數(shù)字鐘課程設計
- 單片機課程設計---數(shù)字鐘設計
- 單片機課程設計報告-數(shù)字鐘的設計
- 單片機課程設計數(shù)字鐘報告
- 單片機課程設計--基于單片機數(shù)字鐘的設計
- 單片機課程設計--- 簡易數(shù)字鐘
- 單片機課程設計數(shù)字鐘
- 基于單片機的數(shù)字鐘課程設計
- 簡易數(shù)字鐘的單片機課程設計
- 單片機課程設計--數(shù)字鐘電子鐘
- 單片機課程設計報告-數(shù)字鐘的設計與實現(xiàn)
- 基于單片機的數(shù)字鐘課程設計
- 課程設計--單片機控制的數(shù)字鐘
- 課程設計---基于單片機的數(shù)字鐘的設計
- 單片機多功能電子數(shù)字鐘課程設計報告
- 單片機課程設計--智能電子數(shù)字鐘設計
- 簡易數(shù)字鐘的單片機課程設計1
- 單片機數(shù)字鐘畢業(yè)設計---單片機設計數(shù)字鐘
- 單片機的數(shù)字鐘設計
- 江蘇大學單片機課程設計-多功能數(shù)字鐘的設計
評論
0/150
提交評論