單片機答辯倒計時器課程設計報告_第1頁
已閱讀1頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  《單片機原理及應用》</p><p><b>  課程設計報告</b></p><p>  專 業(yè) 電子信息工程</p><p>  班 級 </p><p>  姓 名 </p><p>  指導

2、老師 </p><p>  二0一二 年 十二 月 二十五 日</p><p><b>  課程設計任務書</b></p><p>  一、設計題目:答辯倒計時器</p><p><b>  二、設計要求 </b></p><p>  設計一個答辯倒計時器,

3、用2位數(shù)碼管顯示剩余分鐘,2位數(shù)碼管顯示剩余秒 ,復位后顯示10.00表示設定10分鐘,并可加減修改,按開始/取消按鈕開始倒計時,再次按開始/取消按鈕則復位,時間到則蜂鳴音提示??傮w要求如下:</p><p>  1、方案論證,確定總體電路原理圖。 </p><p>  2、元器件選擇,設計PCB圖(或用萬能電路實驗板搭線)。</p><p>  3、繪制程序流程圖

4、,編寫匯編語言源程序(或C語言源程序)。</p><p>  4、安裝調試,實現(xiàn)倒計時器的基本功能。 </p><p><b>  三、設計報告內容</b></p><p>  1、寫出設計方案(包括方案對比,方案確定),給出完整的電路原理圖和設計程序流程圖。 </p><p>  2、對所設計方案的實現(xiàn)進行全面分析。&

5、lt;/p><p>  3、編程調試方法和程序清單。</p><p>  4、安裝調試過程,出現(xiàn)的各種現(xiàn)象,總結經(jīng)驗和體會。</p><p>  5、進一步完善的設想。</p><p><b>  目 錄</b></p><p>  一、課程設計目的1</p><p>

6、  二、課程設計題目描述和要求1</p><p>  三、課程設計報告內容1</p><p>  3.2 硬件電路3</p><p>  3.2.1 復位電路3</p><p>  3.2.2 晶振電路4</p><p>  3.2.3 單片機最小系統(tǒng)4</p><p>  3.2

7、.4 硬件流程圖4</p><p>  3.3 源程序設計5</p><p>  3.3.1 程序清單5</p><p>  3.3.2 程序流程圖6</p><p><b>  四、設計過程7</b></p><p><b>  4.1實踐步驟7</b>&l

8、t;/p><p><b>  4.2實踐標準7</b></p><p><b>  4.3系統(tǒng)調試7</b></p><p>  4.3.1 硬件調試7</p><p>  4.3.2 軟件調試9</p><p>  五、設計報告總結10</p><

9、p>  六、總結經(jīng)驗和體會11</p><p>  七、進一步完善的設想12</p><p><b>  八、參考書目12</b></p><p>  附錄一:成品效果圖13</p><p>  附錄二:倒計時器源程序(C語言)13</p><p><b>  一、課程設

10、計目的 </b></p><p>  1、鞏固和加深單片機原理課程知識的理解和運用。 </p><p>  2、進一步提高學生單片機應用系統(tǒng)的設計能力。 </p><p>  3、培養(yǎng)學生綜合分析問題、發(fā)現(xiàn)問題和解決問題的能力。</p><p>  二、課程設計題目描述和要求</p><p>  設計一個

11、答辯倒計時器,用2位數(shù)碼管顯示剩余分鐘,2位數(shù)碼管顯示剩余秒 ,復位后顯示10.00表示設定10分鐘,并可加減修改,按開始/取消按鈕開始倒計時,再次按開始/取消按鈕則復位,時間到則蜂鳴音提示??傮w要求如下:</p><p>  1、方案論證,確定總體電路原理圖。 </p><p>  2、元器件選擇,設計PCB圖(或用萬能電路實驗板搭線)。</p><p>  3、

12、繪制程序流程圖,編寫匯編語言源程序(或C語言源程序)。</p><p>  4、安裝調試,實現(xiàn)倒計時器的基本功能。 </p><p>  三、課程設計報告內容</p><p>  3.1元器件清單及所用儀器設備</p><p>  表1-1 設備清單</p><p>  表1-2 元器件清單

13、 </p><p>  表1-3 工具清單</p><p><b>  3.2 硬件電路</b></p><p>  倒計時器硬件電路原理圖如下圖所示。</p><p><b>  圖1 電路原理圖</b></p><p>  3.2.1 復位電路</p&

14、gt;<p>  復位電路產(chǎn)生復位信號,復位信號送入 RST 后還要送至片內的施密特觸發(fā)器,由片內復位電路在每個機器周器的 S5P2 時刻對觸發(fā)器輸出采樣信號,然后由內部復位電路產(chǎn)生復位操作所要的信號。一般的復位電路可分為上電自動復位和按鍵復位,我們在此選用的是上電復位。上電自動復位原理:RST 引腳是復位信號的輸入端,只要高電平的復位信號持續(xù)兩個機器周期以上的有效時間,就可以使單片機上電復位。上電自動復位是通過電容充電實

15、現(xiàn)的,上電瞬間,RST 端 </p><p>  電位與Vcc 相同,隨充電電流的減少,RST 的電位逐漸下降,直到復位信號無效。按鍵復位在此不在作過多的介紹,其原理和上電復位是相同的。但其采用的是脈沖復位電路和電平復位電路兩種。</p><p>  3.2.2 晶振電路</p><p>  晶振與單片機的腳XTAL0和腳XTAL1構成的振蕩電路中會產(chǎn)生偕波(也就是

16、不希望存在的其他頻率的波),這個波對電路的影響不大,但會降低電路的時鐘振蕩器的穩(wěn)定性。為了電路的穩(wěn)定性起見,ATMEL公司只是建議在晶振的兩引腳處接入兩個10pf-50pf的瓷片電容接地來削減偕波對電路的穩(wěn)定性的影響,所以晶振所配的電容在10pf-50pf之間都可以的。但是主流是接入兩個30pf的瓷片電容,此次電路用30PF。</p><p>  3.2.3 單片機最小系統(tǒng)</p><p&g

17、t;  最小系統(tǒng)就是單片機在發(fā)揮具體測控功能時所必須的組成部分。如下圖所示為最小系統(tǒng)方框圖:</p><p>  圖2 單片機最小系統(tǒng)方框圖</p><p>  3.2.4 硬件流程圖</p><p>  倒計時器硬件電路流程圖如下圖所示。</p><p>  圖3 倒計時器硬件電路流程圖</p><p>  3.3

18、 源程序設計</p><p>  3.3.1 程序清單</p><p><b>  初始化:</b></p><p>  uchar Count = 0;</p><p><b>  uint n=0;</b></p><p>  uint m=0; </p>

19、;<p>  uchar min = 10 ;</p><p>  uchar sec = 0 ; </p><p>  uchar table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //數(shù)碼管的段碼編碼 (0-9)</p><p>  uchar table

20、_d[10] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //帶點數(shù)碼管的段碼編碼 (0-9)</p><p>  sbit BELL = P1^2; //設置P1.2口,為控制蜂鳴器發(fā)聲的引腳</p><p>  sbit KEY1 = P3^2; //設置P3.2 P3.3 P3.4口為按鍵引腳</p

21、><p>  sbit KEY2 = P3^3;</p><p>  sbit KEY3 = P3^4;</p><p><b>  函數(shù)名:</b></p><p>  void Delay(uint del) //延時子程序,延時時間為 1ms * del</p><p>  void Ti

22、me0_Init() //初始化定時器 11.0592M 50ms</p><p>  void time0() interrupt 1 //中斷</p><p>  void display(void) //數(shù)碼管每位動態(tài)顯示</p><p>  void DisLED_1()//復位函數(shù)</p><p>  v

23、oid DisLED_2() //時間增加</p><p>  void DisLED_3() //時間減少</p><p>  void DisLED_4() // 時間為零的顯示</p><p>  void KEY() //檢測按鍵</p><p>  void main() //主函數(shù)</p>

24、;<p><b>  主函數(shù):</b></p><p>  void main() //主函數(shù)</p><p><b>  {</b></p><p>  Time0_Init(); </p><p><b>  while(1)</b>&

25、lt;/p><p><b>  {</b></p><p>  display();</p><p><b>  KEY();</b></p><p>  if(min==0 && sec==0)</p><p><b>  {</b&

26、gt;</p><p>  DisLED_4(); //調用數(shù)碼管顯示代碼</p><p><b>  m=0;</b></p><p>  while(100-m)</p><p><b>  {</b></p><p>  display();</p>

27、;<p><b>  BELL = 0;</b></p><p>  Delay(1); //延時1毫秒</p><p><b>  BELL = 1;</b></p><p>  Delay(1); //延時1毫秒</p><p><b>  m++;</

28、b></p><p><b>  }</b></p><p><b>  TR0 = 0;</b></p><p>  while(KEY1!=0)</p><p><b>  {</b></p><p><b>  min = 0;&l

29、t;/b></p><p><b>  sec = 0;</b></p><p>  display(); </p><p>  } </p><p><b>  }</b></p><p><b>  }</b>&l

30、t;/p><p>  3.3.2 程序流程圖</p><p>  圖4 倒計時器主程序流程圖</p><p><b>  四、設計過程</b></p><p><b>  4.1實踐步驟</b></p><p>  1、根據(jù)實驗要求,完成電路原理圖和應用程序流程圖。</p

31、><p>  2、編寫匯編語言(或C語言)源程序。</p><p>  3、根據(jù)所設計的原理圖,完成電路板的焊接,在進行測試。</p><p>  4、硬件軟件綜合調試,如果不能實行,在分析哪里出了問題,糾正問題在去測試,直到測試完成,完善其設計功能。</p><p><b>  4.2實踐標準</b></p>

32、<p>  1、完成電路的制作,排版與焊接,并進行測量是否能正常的運行;</p><p>  2、完成程序的設計,并進行程序調試是否出現(xiàn)錯誤;</p><p>  3、硬件與軟件結合進行調試看是否能達到課程設計目的;</p><p>  4、最后實現(xiàn)其設計要求和功能,裝配工藝美觀,電路運行穩(wěn)定、可靠。</p><p><b&

33、gt;  4.3系統(tǒng)調試</b></p><p>  4.3.1 硬件調試</p><p>  在硬件調試時,先有萬用表檢查印制電路的焊接情況,檢查是否有虛焊,是否有短路。在檢查無誤之后通電檢查LED數(shù)碼管的顯示??傮w電路正常,達到題目的要求。實際電路下圖:</p><p>  圖5 實際電路圖 </p><p>  完成了硬件

34、的設計、制作和軟件編程后,要使系統(tǒng)能夠按設計意圖正常運作,必須進行系統(tǒng)調試。系統(tǒng)調試包括軟件調試和硬件調試。不過,作為一個小計算機系統(tǒng),其運行是軟硬件相結合的,因此,軟硬件的調試也是不可能絕對分開的,硬件的調試常常需要利用調試軟件,軟件的調試也可能需要對硬件的測試和控制來進行。</p><p><b>  1、脫機檢查。</b></p><p>  用萬用表逐步按照電

35、路原理圖檢查印制電路中所有器件的各引腳,尤其是電源的連接是否正確:檢查數(shù)據(jù)總線、地址總線和控制總線是否有短路等故障,順序是否正確;檢查各開關按鍵是否能正常開關,是否連接正常;各限流電阻是否短路等內容。為了保護芯片,應先對各IC電位進行檢查,確定其無誤后再插入芯片檢查。</p><p><b>  2、聯(lián)機調試。</b></p><p>  暫時拔掉89S51芯片,將仿

36、真器的引腳插入89S51的芯片插座進行調試,檢驗鍵盤/顯示接口電路是否滿足要求設計??梢酝ㄟ^一些簡單的測軟件來查看接口工作是否正常。例如,我們可以設計一個軟件,使89S51的P1、P2口輸出55H或AAH,同時讀P3口,運行后用萬用表檢查相應端口電平是否一高一低,在仿真器中檢查讀入的P3口8位是否為1,如果正常則說明89S51正常工作。還可以設計一個使所有LED全顯示“8.”的靜態(tài)顯示程序來檢驗LED的好壞。如果運行測試結果與預期不符,

37、很容易根據(jù)故障現(xiàn)象判斷故障原因并采取針對性措施排除故障。</p><p>  4.3.2 軟件調試</p><p>  軟件調試的任務是利用開發(fā)工具進行在線仿真調試,發(fā)現(xiàn)和糾正程序錯誤,同時也能發(fā)現(xiàn)硬件故障。</p><p>  程序的調試應一個模塊一個模塊地進行,首先單獨調試各功能子程序,檢驗程序是否能夠實現(xiàn)預期的功能,接口電路的控制是否正常等;最后逐步將各子程序

38、連接起來進行聯(lián)調。聯(lián)調需要注意的是,各程序模塊間能否正常傳遞參數(shù),特別要注意各子程序的現(xiàn)場保護與恢復。調試的基本步驟如下:</p><p>  1、用仿真器修改顯示緩沖區(qū)內容,屏蔽拆字程序,調試動態(tài)掃描顯示功能。例如將DISP0~DISP3單元置為“0123”,應能在LED上從左到右顯示“0123”。若顯示不正確,可在顯示子程序相應設置斷點調試檢查,然后用仿真器修改計時緩沖區(qū)內容,調試顯示模塊,例如,將MIN、S

39、EC單元置為“0123”檢查是否能正確顯示“01.23”,若顯示不正確,應在顯示子程序相應位置設置斷點,反復調試檢驗直至完全正確。</p><p>  2、運行主程序調試時模塊,不按下任何鍵,檢查是否從由10.00開始正確計時,若不能正確計時則應在定時器中斷服務子程序中設置斷點,檢查MIN、SEC單元是否隨斷點運動而變化。然后屏蔽緩沖區(qū)初始化部分,用仿真器修改計時緩沖區(qū)內容為40:33.5,運行主程序,檢驗能否正

40、確進位。</p><p>  3、調試鍵盤模塊掃描,先用延時10ms子程序代替顯示子程序延時消抖,在求取鍵號后設置斷點,中斷后觀察A累加器中的鍵號是否正確,然后恢復用顯示子程序延時消抖,檢驗與顯示模塊能否正常連接。</p><p>  4、調試時間設置定時模塊TIMSEF。首先屏蔽中斷子程序,單獨調試鍵盤設置模塊CKECKEY,觀察顯示緩沖區(qū)DISP0~DISP3單元的內容是否隨鍵入的鍵號

41、改變,以及鍵號能否在LED上顯示。然后屏蔽CKECKEY子程序,分別將R1設置為時間緩沖區(qū)和鬧鐘值寄存區(qū)的首地址,修改顯示緩沖區(qū)內容,程序運行后查看時間設置緩沖區(qū)MIN、SEC單元和鬧鐘值寄存區(qū)AMIN、ASEC單元內容是否正確。最后聯(lián)調TIMSET模塊。</p><p>  5、運行主程序聯(lián)調,檢查能否用鍵盤修改定時時間,能否正確計時、啟閉。</p><p><b>  五、設

42、計報告總結</b></p><p><b>  1、設計方案:</b></p><p>  根據(jù)設計要求,設計好硬件電路和軟件程序。</p><p>  利用電路模擬仿真軟件對設計好的電路進行模擬仿真,以確保硬件電路能夠正常工作。</p><p>  用已經(jīng)準備好的電子元器件,焊接電路。</p>

43、<p>  把設計好的軟件程序嵌入到已經(jīng)焊接好的硬件電路中,進行調試。 </p><p>  2、對所設計方案的實現(xiàn)進行全面分析</p><p>  該硬件電路的核心部分是AT89S51單片機,對電路進行各方面控制和計算,用一個4位8段的共陰數(shù)碼管顯示,用7407作為緩沖級,提高輸出電路驅動能力,使數(shù)碼管能正常顯示。用一個9013三極管驅動

44、蜂鳴器,當電路上電和計時時間到時響一秒提示時間到。用一個6M石英晶振和2個30pF的電容為AT89S51芯片提供時鐘頻率,2個30pF電容主要是為了方便晶振起振。K1、K2、K3、3個開關分別用于加時間、減時間、復位和開始。用若干電阻作為上拉電阻,增大電路輸出電流。</p><p><b>  3、編程調試方法</b></p><p>  編程與調試是C語言和Keil

45、軟件相結合的。C語言是一種國際上廣泛流行的、很有發(fā)展前途的計算機高級語言。它適合作為系統(tǒng)描述語言,即可用來編寫系統(tǒng)軟件,也可用來編寫應用軟件。 Keil軟件是一種目前用得比較廣泛的一款單片機編程軟件,它支持C和 匯編的編譯,并可生成 HEX 文件,還可進行代碼的軟硬件仿真軟件。 </p><p>  4、安裝調試過程,出現(xiàn)的各種現(xiàn)象</p><p><b>  硬件:&l

46、t;/b></p><p>  電路在接電源后,顯示器中有一個數(shù)碼管不亮。</p><p>  主要原因:數(shù)碼管的一根連接線沒焊好,導致數(shù)碼管不亮。</p><p><b>  軟件:</b></p><p>  程序燒錄到板子上后蜂鳴器一直響。</p><p>  主要原因:沒有對BELL

47、至低電平,只需在主程序中寫上“BELL=0”就行了。</p><p>  程序燒錄到板子上后數(shù)碼管顯示不穩(wěn)定,亮度不一。</p><p>  主要原因:延時時間不準確,經(jīng)過軟件計算,對定時器賦合適的初值即可。</p><p><b>  六、總結經(jīng)驗和體會</b></p><p>  在這次的單片機程序課程設計中,學到了

48、關于單片機的很多東西,單片機具有軟硬結合,體積小,可以很容易嵌入到各種應用系統(tǒng)中,單片機為核心的嵌入式控制系統(tǒng)在工業(yè)檢測與控制、儀器儀表、消費類電子產(chǎn)品、通信、武器裝備、各種終端及計算機外部設備、汽車電子設備和分布式多機系統(tǒng)領域中得到了廣泛了應用</p><p>  單片機是我們的這個專業(yè)中很重要的一門課程,同時也是一門比較難學的課程,剛開始學習單片機的時候,覺得很難,特別是在學習單片機指令系統(tǒng)和單片機匯編語言程

49、序設計這兩章的時候,都聽不懂,但是每節(jié)課都會認真聽課,認真做筆記,不過后來在自己的摸索中慢慢的有點懂了,其實單片機主要是難在寫程序和寫代碼,程序主要是用C語言編程,有時候腦子里沒有一點思緒,什么都想不出來,所以,如果想要把單片機學好的話,首先就要把C語言學好,單片機主要是建立在C語言的基礎上的,不過單片機也可以用匯編語言編譯。我相信在我不斷的摸索中,我一定會把它給搞懂的。</p><p>  在這次的課程設計中,

50、我很感謝我們的指導老師周瑩蓮,廖亦凡老師,還有我的組員,他們讓我學了很多東西,讓我知道了團隊合作有多么的重要,在做硬件的過程中,也遇到了很多困難,比如說電路的連接線很復雜,我和另一個組員就會想一下該怎么布線,所以每一個步驟都要做的很細心,我們在連接線路的過程中,我們是沒連接一根線都會用萬用表測量一次,以免沒有導通,我們在做的過程中還會了解每一個元器件能實現(xiàn)什么樣的功能,這次實踐讓我對單片機有了更深一步的了解,讓我們真正做到了理論聯(lián)系實踐

51、,把我們所學的知識都運用到實踐中去,這樣就能把單片機學的更好。</p><p>  雖然我們的單片機課程結束了,我們的課程設計也順利地做完了,但是我對學單片機的熱情只增不減,還是想要更深一步的去了解單片機,我永遠也不會忘記老師對我的教悔,讓我受益終身。</p><p>  七、進一步完善的設想</p><p>  A、新增一段程序,對硬件的按鍵進行防抖,使計時器計時

52、更加的精確;</p><p>  B、對于硬件的導線線路,盡量在線路比較短的地方不使用導線,使用焊錫進行導通,這樣就會比較的美觀;</p><p>  C、硬件元器件的排版要進行比較的規(guī)律,盡量做到導線排版的時候不會出現(xiàn)重疊的現(xiàn)象;</p><p>  D、計算每一條語句的時間,提高執(zhí)行的定時器的精度。</p><p><b>  

53、八、參考書目</b></p><p>  趙偉軍,《Protel99se教程》,北京,人民郵電出版社,1996年</p><p>  譚浩強,《C程序設計教程》,北京,清華大學出版社,2007年</p><p>  張毅剛,《單片機原理及應用》,北京,高等教育出版社,2010年</p><p>  [4] 胡漢才,《單片機原理及

54、系統(tǒng)設計》,北京,清華大學出版社,2002年</p><p>  [5] 沈紅衛(wèi),《單片機應用系統(tǒng)設計實例與分析》,北京,北京航空航天大學出版社,2003年</p><p><b>  附錄一:成品效果圖</b></p><p><b>  圖六 成品效果圖</b></p><p>  附錄二:

55、倒計時器源程序(C語言)</p><p>  #include<reg51.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  uchar Count = 0;</p><p>  u

56、int n; </p><p>  uint fs=0;</p><p>  sbit BELL = P1^0; //設置P1.0口,為控制蜂鳴器發(fā)聲的引腳</p><p>  sbit K1 = P3^2;</p><p>  sbit K2 = P3^3;</p><p>  sbit K3 = P3^

57、5;</p><p>  uchar min = 10 ;</p><p>  uchar sec = 0 ;</p><p>  uchar ws[4] = {0xfe,0xfd,0xfb,0xf7}; </p><p>  uchar table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7

58、d,0x07,0x7f,0x6f}; //數(shù)碼管的段碼編碼 (0-9)</p><p>  uchar table_d[10] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //帶點數(shù)碼管的段碼編碼 (0-9)</p><p>  void delay(void) //誤差 0us</p><p>

59、;<b>  {</b></p><p>  unsigned char a,b;</p><p>  for(b=1;b>0;b--)</p><p>  for(a=7;a>0;a--);</p><p><b>  }</b></p><p>  void

60、Delay(uint del) // 延時子程序,延時時間為 1ms * del</p><p>  {uint x,j;</p><p>  for(j=0;j<del;j++)</p><p>  for(x=0;x<=148;x++);</p><p><b>  } </b></p&g

61、t;<p>  void beep()//產(chǎn)生1KHZ頻率聲音的函數(shù)</p><p>  {unsigned char k=0;</p><p>  while(100-k)</p><p><b>  {BELL=1;</b></p><p><b>  Delay(1);</b&g

62、t;</p><p><b>  BELL=0;</b></p><p><b>  Delay(1);</b></p><p><b>  k++; </b></p><p><b>  } </b></p><p>&

63、lt;b>  }</b></p><p>  void Time0_Init() //初始化定時器 11.0592M 50ms</p><p>  { EA = 1;</p><p>  TMOD = 0x01; </p><p>  TH0= 0x9E;</p><p><b

64、>  TL0=0x58;</b></p><p><b>  TR0 = 0;</b></p><p><b>  ET0 = 1;</b></p><p><b>  }</b></p><p>  void time0() interrupt 1

65、/*定時器0中斷程序*/</p><p><b>  { </b></p><p>  TH0= 0x9E;</p><p>  TL0=0x58;</p><p>  if (Count == 20)</p><p><b>  { </b></p&

66、gt;<p>  Count = 0;</p><p>  if(sec == 0)</p><p><b>  {</b></p><p>  if(min == 0)</p><p><b>  {</b></p><p><b>  min =

67、10;</b></p><p><b>  }</b></p><p>  else min--;</p><p><b>  sec = 59;</b></p><p><b>  }</b></p><p>  else sec--;&

68、lt;/p><p><b>  } </b></p><p>  else Count++;</p><p>  if(min==0&&sec==0) /*調用蜂鳴器程序*/</p><p><b>  {</b></p><p><b>  b

69、eep();</b></p><p><b>  min=0;</b></p><p>  sec=0;TR0=0;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void displa

70、y(void)//數(shù)碼管每位動態(tài)顯示</p><p><b>  {</b></p><p>  P2 = 0xfe;</p><p>  P0 = table[min/10]; </p><p><b>  Delay(2);</b></p><p>  P2 =

71、 0xfd; </p><p>  P0 = table_d[min%10]; </p><p><b>  Delay(2);</b></p><p>  P2 = 0xfb;</p><p>  P0 = table[sec/10];</p><p><b>  Delay(

72、2);</b></p><p>  P2 = 0xf7;</p><p>  P0 = table[sec%10]; </p><p><b>  Delay(2);</b></p><p><b>  P2=0XF0;</b></p><p><b>

73、  delay();</b></p><p><b>  } </b></p><p>  void key1() //按鍵功能函數(shù) </p><p><b>  {</b></p><p>  if(K1==0||K2==0||K3==0) //判斷是否有按鍵按下 <

74、/p><p>  {display(); /*調用顯示函數(shù)*/</p><p><b>  if(K3==0)</b></p><p><b>  { </b></p><p>  if(K3==0) </p><p><b>  {

75、 </b></p><p>  if(fs==0) /*如果K3按下判定如果fs為0,開始計時*/</p><p><b>  { </b></p><p><b>  TR0 = 1;</b></p><p><b>  }</b></p>

76、<p>  else /*如果fs為1,計時器復位*/</p><p><b>  {</b></p><p><b>  min=10;</b></p><p><b>  sec=0;</b></p><p><b>  TR0=0;</b

77、></p><p><b>  } </b></p><p>  while(!K3) ;/*按鍵消抖,每按一次只執(zhí)行一次*/</p><p>  Delay(10);</p><p>  while(!K3) ;</p><p><b>  fs=(!fs);</b&g

78、t;</p><p><b>  }</b></p><p><b>  } </b></p><p>  else if (K1==0) /*按鍵K1判定函數(shù)*/</p><p><b>  { </b></p><p><b> 

79、 if(K1==0)</b></p><p><b>  { </b></p><p>  if(TR0!=1)</p><p><b>  {min++;</b></p><p>  if(min==100)</p><p><b>  {&

80、lt;/b></p><p><b>  min=0;</b></p><p><b>  } </b></p><p>  while(!K1); 、/*按鍵K1消抖*/</p><p><b>  delay();</b></p><p>

81、  while(!K1);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  } </b></p><p>  else /*按鍵K2判定函數(shù)*/</p><p>  { display

82、(); /*調用顯示函數(shù)*/</p><p><b>  if(K2==0)</b></p><p><b>  { </b></p><p>  if(TR0!=1)</p><p>  { min--; </p><p><b>  }</b

83、></p><p>  if(min==-1)</p><p><b>  {</b></p><p><b>  min=99;</b></p><p><b>  } </b></p><p>  while(!K2); /*按鍵K2消抖*

84、/</p><p>  delay(); </p><p>  while(!K2);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  } </b></p><p>

85、<b>  }</b></p><p>  void main()//主函數(shù) </p><p>  { BELL = 0;</p><p>  Time0_Init();</p><p><b>  while(1)</b></p><p><b>

86、  { </b></p><p>  display();</p><p><b>  key1();</b></p><p><b>  if(K3==0)</b></p><p><b>  { </b></p><p><b>

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論