2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p>  物理機(jī)電學(xué)院課程設(shè)計(jì)報(bào)告</p><p>  課程名稱: 單片機(jī)原理 </p><p>  專業(yè)班級(jí): 10電本(2)班 </p><p>  學(xué)生姓名: </p><p>  學(xué) 號(hào):

2、 </p><p>  指導(dǎo)教師: </p><p>  完成時(shí)間: </p><p>  報(bào)告成績: </p><p><b>  單

3、片機(jī)課程設(shè)計(jì)報(bào)告</b></p><p><b>  目錄</b></p><p>  一、設(shè)計(jì)任務(wù)與要求- 1 -</p><p>  1.1 設(shè)計(jì)任務(wù)- 1 -</p><p>  1.2 數(shù)字時(shí)鐘的設(shè)計(jì)- 1 -</p><p>  二、方案設(shè)計(jì)與論證- 2 -</

4、p><p>  方案一:- 2 -</p><p>  方案二:- 2 -</p><p>  三、硬件電路設(shè)計(jì)- 4 -</p><p>  3.1最小系統(tǒng)部分。- 4 -</p><p>  3.2 外圍電路部分。- 5 -</p><p>  四、軟件設(shè)計(jì)- 6 -</p&g

5、t;<p>  4.1 程序框圖- 6 -</p><p>  4.2 實(shí)驗(yàn)程序(見附錄2)- 6 -</p><p>  五、仿真過程與仿真結(jié)果- 7 -</p><p>  5.1 仿真原理圖:- 7 -</p><p>  5.2 仿真結(jié)果- 7 -</p><p>  六、安裝與調(diào)試-

6、 8 -</p><p>  6.1 安裝:- 8 -</p><p>  6.2 實(shí)物圖:- 8 -</p><p>  6.3 調(diào)試:- 9 -</p><p>  6.4 調(diào)試結(jié)果:- 9 -</p><p>  七、結(jié)論與心得- 10 -</p><p>  八、參考文獻(xiàn)-

7、11 -</p><p>  附錄1:主要器件清單:- 12 -</p><p>  附錄2:實(shí)驗(yàn)程序- 13 -</p><p><b>  單片機(jī)課程設(shè)計(jì)報(bào)告</b></p><p><b>  一、設(shè)計(jì)任務(wù)與要求</b></p><p><b>  1.1

8、 設(shè)計(jì)任務(wù)</b></p><p>  通過課程設(shè)計(jì)的教學(xué)實(shí)踐,進(jìn)一步學(xué)習(xí)、掌握單片機(jī)應(yīng)用系統(tǒng)的有關(guān)知識(shí),加深了解單片機(jī)的工作原理。初步掌握簡單單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)、制作、調(diào)試的方法。提高動(dòng)手實(shí)踐能力、提高科學(xué)的思維能力。</p><p>  1.2 數(shù)字時(shí)鐘的設(shè)計(jì)</p><p><b>  設(shè)計(jì)基本要求:</b></p&g

9、t;<p> ?。?)能顯示小時(shí)、分鐘、秒;</p><p> ?。?)具有時(shí)間設(shè)置功能;</p><p> ?。?)在進(jìn)入系統(tǒng)時(shí)顯示自己的學(xué)號(hào)并閃爍兩下; </p><p><b>  擴(kuò)展要求:</b></p><p>  具備鬧鐘功能,有聲音提示。</p><p><b&

10、gt;  二、方案設(shè)計(jì)與論證</b></p><p>  本設(shè)計(jì)基于單片機(jī)技術(shù)原理,以單片機(jī)芯片AT89S51作為核心控制器,通過硬件電路的制作以及軟件程序的編制,計(jì)制作出一個(gè)多功能數(shù)字時(shí)鐘系統(tǒng)。單片機(jī)擴(kuò)展的LED顯示器用來顯示秒、分、時(shí)計(jì)數(shù)單元中的值。整個(gè)設(shè)計(jì)包括兩大部分: 硬件部分和軟件部分,以單片機(jī)為核心, 配以一定的外圍電路和軟件。硬件是整個(gè)系統(tǒng)的基礎(chǔ), 軟件部分則要合理、充分地支持和使用系

11、統(tǒng)的硬件, 從而完成系統(tǒng)所要完成的任務(wù)。 </p><p>  該時(shí)鐘系統(tǒng)主要由時(shí)鐘模塊、液晶顯示模塊、鍵盤控制模塊組成。設(shè)計(jì)以硬件軟件化為指導(dǎo)思想充分發(fā)揮單片機(jī)功能大部分功能通過軟件編程來實(shí)現(xiàn),路簡單明了,統(tǒng)穩(wěn)定性高。</p><p><b>  方案一:</b></p><p>  利用AT89S52單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器進(jìn)行中斷定時(shí)

12、,合軟件延時(shí)實(shí)現(xiàn)時(shí)、分、秒的計(jì)時(shí)。該方案節(jié)省硬件成本且能使讀者在定時(shí)/計(jì)數(shù)器的使用、中斷及程序設(shè)計(jì)方面得到鍛煉與提高,對(duì)單片機(jī)的指令系統(tǒng)能有更深入的了解,而對(duì)學(xué)好單片機(jī)技術(shù)這門課程起到一定的作用。</p><p><b>  方案二:</b></p><p>  利用DS2302(其引腳如圖2.1.1 所示)時(shí)鐘芯片連接AT89S51單片機(jī),提供當(dāng)前日期和時(shí)間數(shù)據(jù),

13、并將實(shí)時(shí)的日期數(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單片機(jī)內(nèi)部定時(shí)/計(jì)數(shù)器進(jìn)行中斷定時(shí),和軟件延時(shí)實(shí)現(xiàn)時(shí)、分、秒的計(jì)時(shí)。此方法雖然可以有效的節(jié)約成本,但產(chǎn)生的誤差也較大,</p><p>  不能達(dá)到精確定時(shí)的目的。</p><p>  相比于方案一,方案二由于利用標(biāo)準(zhǔn)的時(shí)鐘芯片進(jìn)行設(shè)計(jì),可以有效的減小產(chǎn)生的誤差,達(dá)到準(zhǔn)確定時(shí)的目的。</p><p>

15、  想比較之下,選擇方案二進(jìn)行設(shè)計(jì)較合適。</p><p><b>  三、硬件電路設(shè)計(jì)</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>  四、軟件設(shè)計(jì)</b></p><p><b>  4.1 程序框圖</b></p><p&

18、gt;  圖4.1.1b 按鍵掃描程序框</p><p>  圖4.1.1a 主程序框圖 </p><p>  4.2 實(shí)驗(yàn)程序(見附錄2)</p><p>  五、仿真過程與仿真結(jié)果</p><p>  5.1 仿真原理圖:</p><p><b> 

19、 圖5.1.1</b></p><p><b>  5.2 仿真結(jié)果</b></p><p>  a.星期: b.日期:</p><p>  c.時(shí)間:d.鬧鐘:</p><p><b>  圖5.1.2 </b></p><p><b>  六、安裝與

20、調(diào)試</b></p><p><b>  6.1 安裝:</b></p><p>  a.在keil軟件中新建工程,芯片選擇AT89S51,保存工程;打開數(shù)字鐘C語言程序,保存,編譯無誤后生成HEX文件。</p><p>  b.打開STC-ISP-燒寫軟件并選擇好芯片型號(hào),COM口,波特率等;取出最小系統(tǒng)模塊,將串口連接電腦USB

21、接口,連接好啊電源,并將下載跳線短接;</p><p>  c.在燒寫軟件中選擇好第一步中生成的HEX文件,點(diǎn)擊下載按鈕,將數(shù)字鐘程序燒寫進(jìn)最小系統(tǒng)板的單片機(jī)中;</p><p>  d.程序燒寫完成后,將最小系統(tǒng)模塊與外圍電路模塊對(duì)應(yīng)原理圖用杜邦線一一連接起來,接上電源(注意電源正負(fù)極),進(jìn)行調(diào)試。</p><p><b>  6.2 實(shí)物圖:</

22、b></p><p><b>  圖6.2.1</b></p><p><b>  6.3 調(diào)試:</b></p><p>  a.確認(rèn)無誤后接上電源,發(fā)現(xiàn)1602液晶顯示屏亮但無顯示,通過調(diào)節(jié)電位器W后改變1602的對(duì)比度后,問題解決。</p><p>  b.調(diào)節(jié)W后液晶屏有現(xiàn)顯示,但不能

23、正?,F(xiàn)實(shí)時(shí)鐘。重新檢查連線并無錯(cuò)誤,回仿真圖進(jìn)行仿真調(diào)試也一切正常。經(jīng)反復(fù)查證是DS2302時(shí)鐘芯片無參考電壓以致不能正常工作所致,通過在DS2302時(shí)鐘芯片的3個(gè)引出腳分別外接1K上拉電阻并連接電源VCC。重新接上電源后,問題解決。</p><p>  c.通過外圍電路的4個(gè)按鍵調(diào)節(jié)系統(tǒng)時(shí)間,日期,星期,鬧鐘。測試各個(gè)系統(tǒng)功能是否正常</p><p><b>  6.4 調(diào)試結(jié)

24、果:</b></p><p>  經(jīng)過反復(fù)調(diào)試與論證,本數(shù)字時(shí)鐘系統(tǒng)能夠正確的顯示時(shí)間,日期,星期等基本要求,且時(shí)間誤差在1S以內(nèi);在進(jìn)入系統(tǒng)時(shí)可以顯示自己的學(xué)號(hào)并閃爍2次;可以進(jìn)行時(shí)間,日期,星期調(diào)節(jié),并具有鬧鐘設(shè)定功能。</p><p><b>  七、結(jié)論與心得</b></p><p>  歷時(shí)一個(gè)星期的實(shí)訓(xùn)結(jié)束了,從最開始的

25、選定任務(wù),到仿真,畫原理圖,畫PCB,制板,焊接,調(diào)試,檢測——。一路走來,看著自己的作品一步步的從“理想”變?yōu)椤艾F(xiàn)實(shí)”。那種喜悅心情是無法用語言形容的!其實(shí)最重要的不是結(jié)果,而是過程。結(jié)果是生硬的,而過程永遠(yuǎn)值得我們慢慢回味。在這幾天的實(shí)訓(xùn)過程當(dāng)中,有歡笑過,也有失落過。這其中的點(diǎn)點(diǎn)滴滴現(xiàn)在仔細(xì)回味起來不免苦笑一番。</p><p>  經(jīng)過一個(gè)星期的實(shí)訓(xùn)令我受益良多。上個(gè)學(xué)期學(xué)習(xí)了《單片機(jī)原理》,學(xué)語法,背指

26、令。但由于自己沒有開發(fā)板,不能將理論付諸實(shí)踐。只有在實(shí)驗(yàn)課上才有幾次動(dòng)手的機(jī)會(huì),但也只有為數(shù)不多的幾次罷了。且能像這次這樣自己親自動(dòng)手制版更是機(jī)會(huì)難得。這次實(shí)踐讓我對(duì)C51開發(fā)板的硬件結(jié)構(gòu)有了進(jìn)一步的連接,同時(shí)也認(rèn)識(shí)了DS2302時(shí)鐘芯片和LCD1602液晶顯示屏的引腳及功能。進(jìn)一步熟悉了ISIS軟件和ALTIUM軟件是的使用。特別是仿真軟件的使用,以前我只能簡單的按照老師給的那一套步驟,自己一點(diǎn)都不知道變通。而在這次實(shí)訓(xùn)中遇到了些許問

27、題,通過虛心請(qǐng)教其他的同學(xué),經(jīng)過同學(xué)們的熱心幫助,我的問題一個(gè)個(gè)都迎刃而解了。這才發(fā)現(xiàn)其實(shí)這套軟件的功能其實(shí)非常強(qiáng)大,不是我過去簡簡單單的那一套路而已,這其中的許多功能還有待開發(fā)。</p><p>  這次實(shí)訓(xùn)也讓我體會(huì)到團(tuán)隊(duì)協(xié)作的重要性。遇到問題大家一起討論,最終取得最好的解決方案。自己有不懂的問題虛心向他人請(qǐng)教,開始覺得不好意思,覺得別人會(huì)不耐煩,但其實(shí)發(fā)現(xiàn)大家都是很熱情的,都會(huì)耐心的把方法講解給我聽,直到我

28、會(huì)為止。想當(dāng)初如果自己因?yàn)榉N種原因不把自己的問題去請(qǐng)教他人,那么自己不懂的到現(xiàn)在還是不懂。自己也就不能學(xué)到那么多東西了。</p><p>  雖然這次實(shí)訓(xùn)讓我學(xué)到了很多,但也發(fā)現(xiàn)了自己在很多方面的不足。比如C程序不能自己獨(dú)立完成,仿真軟件用得不夠熟練等。而這些都只怨自己平時(shí)不夠努力。在今后的學(xué)習(xí)生活中,我要加倍努力,在編程上多下點(diǎn)功夫,從最簡單的開始,一步一步的積累。因?yàn)樽约夯A(chǔ)較差。人要逼下自己,才會(huì)發(fā)現(xiàn)自己的

29、潛能原來這么大。讓自己多學(xué)點(diǎn),多懂點(diǎn),只有這樣才不會(huì)愧對(duì)自己的大學(xué)四年!</p><p><b>  八、參考文獻(xiàn)</b></p><p>  [1]單片機(jī)原理及應(yīng)用 / 張毅剛,彭喜元,彭宇編著.—2版[M].北京:高等教育出版社,2010.5[2011.12重印].</p><p>  [2]單片機(jī)C51設(shè)計(jì)教程與實(shí)驗(yàn)/祁偉, 楊亭編著[M

30、].北京:航空航天大學(xué)出版社,2006.</p><p>  [3]單片機(jī)C程序設(shè)計(jì)實(shí)例指導(dǎo)/李光飛等編著[M]. 航空航天大學(xué)出版社,2005.</p><p>  [4]例說51單片機(jī):C語言版/張義和等編著: 袁彩霞改編[M].北京:人民郵電出版社,2008.4.</p><p>  附錄1:主要器件清單:</p><p><b&

31、gt;  附錄2:實(shí)驗(yàn)程序</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; //使能信號(hào)</p><p>  sbit lcdew=P2^1; // 讀寫選擇端</p><p>  sbit s1=P1^5; //功能鍵設(shè)定</p><p>  sbit s2=P1^6; // 增大鍵設(shè)定</p><p>  sbit s

33、3=P1^7; // 減小鍵設(shè)定</p><p>  sbit s4=P1^4; //關(guān)閉蜂鳴器</p><p>  sbit beep=P2^3; // 蜂鳴器設(shè)定 */</p><p>  sbit RST=P2^5;//ds1302 設(shè)定</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í)分秒字符數(shù)組</p><p>  time3[]="@ NO 00:00:00";//鬧鐘設(shè)定時(shí)顯示的時(shí)間數(shù)組</p><p>  void delay(uint z) //1ms延時(shí)函數(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è)定函數(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ù)指針定位到第一行第一個(gè)字節(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ù)指針定位到第一行第一個(gè)字節(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); //顯示方式設(shè)定為:無光標(biāo),且不閃爍</p><p>  if(

75、flag2==1) </p><p>  time1[0]='@'; //鬧鐘圖標(biāo)設(shè)定</p><p><b>  else </b></p><p>  time1[0]=' ';</p><p>  if(flag1==0) //flag為0時(shí)正常顯示年、月、日、時(shí)、分、

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時(shí)進(jìn)入時(shí)間設(shè)定界面</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(); //按鍵放下時(shí)響一下</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); //按秒 時(shí) 有光標(biāo)</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);//時(shí)</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選項(xiàng)閃爍</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); //時(shí)鐘標(biāo)志閃爍</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)); //時(shí)</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;//進(jìn)入鬧鐘設(shè)置界面</p><p>  }</p><p>  while(s2==0);di(); //按鍵放下時(shí)響一下</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)); //時(shí)</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;//進(jìn)入鬧鐘設(shè)置界面</p><p><b>  }</b></p><p>  while(s3==0);di(); //按鍵放下時(shí)響一下</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信號(hào)使能端設(shè)定</p><p>  lcdew=0; //lcd讀寫選擇端設(shè)定</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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論