簡易秒表LED數(shù)碼管顯示接口技術(shù)應用_第1頁
簡易秒表LED數(shù)碼管顯示接口技術(shù)應用_第2頁
簡易秒表LED數(shù)碼管顯示接口技術(shù)應用_第3頁
簡易秒表LED數(shù)碼管顯示接口技術(shù)應用_第4頁
簡易秒表LED數(shù)碼管顯示接口技術(shù)應用_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 單片機原理及應用課程設計 設計題目: 簡易秒表LED數(shù)碼管顯示接口技術(shù)應用 姓 名: 廖承潤 學 號: 110105011118 專 業(yè) 班 級: 11級光信1班 指導教師: 葉念渝 2014年 5月 目錄1 內(nèi)容及要求12 設計思路13 工作原理24 硬件設計25 軟件設計36 調(diào)試87 修改意見98 源程序99 收獲及體會12 簡易秒表LED數(shù)碼管顯示接口技術(shù)應用1, 內(nèi)容及要求(1) 內(nèi)容n 如何運用單片機實現(xiàn)計時;n 如何顯示時間;n 如何利用按鍵實施對秒表的控制。n 定時器T0 或Tl 的定時時間作為時鐘計時的基準n 啟動與停止定時器工作實現(xiàn)計時。n 先用兩個數(shù)碼管動態(tài)顯示時間,時

2、間范圍為0-60sn 用三個獨立式按鍵實現(xiàn)秒表的啟動、停止和復位功能。n A機發(fā)送,B機接收*(2) 要求n 通過簡易秒表的制作,熟悉LED 數(shù)碼管與單片機的接口方式; n 定時計數(shù)器、中斷技術(shù)的綜合應用; n 學會簡易鍵盤的使用。 n 利用按鍵構(gòu)成鍵盤實現(xiàn)秒表的啟動、停止與復位, n 利用LED 數(shù)碼管顯示時間。 n *進行簡單的串行通信。2, 設計思路(1)硬件n 采用P0 口輸出并聯(lián)控制兩個數(shù)碼管的8 個段選控制端。n 用P2.0、P2.1分別控制兩個LED 數(shù)碼管的位選控制端。n 這是典型的動態(tài)顯示電路接法,LED 采用共陽極數(shù)碼n 三個按鍵采用獨立式鍵盤接法,n 兩個按鍵連接到外部中

3、斷INT0 、INT1 的輸人引腳P3.2和P3.3,n S4按鍵接到T1的外部脈沖輸入引腳P3.5,以中斷方式實現(xiàn)鍵盤輸入狀態(tài)的掃描。n 其中S2為啟動按鈕,S3為停止按鈕,S4 清零按鈕。n K1為復位鍵 (2)軟件n 根據(jù)設計的總體要求劃分出各功能程序模塊,分別確定主程序、子程序及中斷服務程序結(jié)構(gòu)。 n 對各程序模塊占用的單片機資源進行統(tǒng)一調(diào)配。 n 對各模塊間的邏輯關(guān)系進行細化,優(yōu)化程序結(jié)構(gòu); n 設計出各模塊程序結(jié)構(gòu)流程圖。 n 最后依據(jù)流程圖編制具體程序。n 將整個程序劃分為主程序、鍵盤掃描程序、秒計時程序三大模塊。 n 其中主程序除完成初始化外,主要由動態(tài)顯示程序構(gòu)成。 n 秒計

4、時程序由定時器0中斷服務子程序構(gòu)成, n 鍵盤掃描程序也由各中斷服務子程序來實現(xiàn)。 3工作原理(1) 原理圖 4硬件設計(1) 板子焊接根據(jù)電路圖焊接板子如下圖:5軟件設計 (1)流程圖 主程序流程圖開 始S2,S2,S3置高電位 T0,T1中斷初始化秒,分,時單元初始化調(diào)用鍵盤掃描子程序調(diào)用顯示子程序六位顯示完? Y 主程序void main()s2=1;s3=1;s4=1;TMOD=0x41;TH1=0xff;TL1=0x1f;TH0=0x3C;TL0=0xB0;EA=1;ET0=1;ET1=1;TR1=1;IT0=1;IT1=1;s=0,m=0,h=0;while(1)keyscan()

5、;display(); 定時器1中斷程序流程圖開 始 重置計數(shù)初置 秒,分,時置零 返 回 timer1() interrupt 3 using 1 /定時1中斷S4清零TH1=0xff;TL1=0x1f;s=0;m=0;h=0; 定時器0中斷程序流程圖開 始重設定時器初值 1秒到? N 再定時1秒 秒加1 Y1分鐘到? N秒置0 分加1 Y 1小時到? N Y 分置0 小時加1返 回定時器0中斷程序timer0() interrupt 1 using /定時中斷 T0 TH0=0x3C; TL0=0xB0; time+; if(time=20) time=0; s+ ; if(s=60) s

6、=0; m+; if(m=60) m=0; h+; if(h=24)h=0;鍵盤掃描程序流程圖檢測按鍵是否按下開 始哪個鍵按下? S3TR0取反 S2啟動定時器T0松手檢測返 回 void keyscan() /按鍵掃描 if(s3=0); /S3暫停 delay(10); if(s3=0) TR0=TR0; while(!s3); if(s2=0) /S2啟動 delay(10); if(s2=0) TR0=1; while(!s2); 顯示程序流程圖開 始顯示初始化 查表取字形碼段碼送P0口位碼送P2口延時顯示 六位顯示完? N Yvoid display() /顯示P0=tableh/1

7、0; P2=0x01;delay(2);P0=tableh%10;P2=0x02;delay(2);P0=tablem/10; P2=0x04;delay(2);P0=tablem%10;P2=0x08;delay(2);P0=tables/10; P2=0x10;delay(2);P0=tables%10;P2=0x20;delay(2);6調(diào)試n 輸人源程序。n 先調(diào)試主程序,實現(xiàn)基本的顯示功能n 當無鍵按下時,將一直顯示初值“00”。n 再分別調(diào)試4 個中斷服務子程序。 當按鍵S2按下時,程序?qū)M入對應INT1的中斷服務程序,啟動各定時器開始計時nn 若在不同的中斷服務程序中設置斷點,

8、全速運行程序后將會停在斷點處,表明程序運行狀態(tài)正確; n 當按鍵S3按下時,進入INT0中斷服務程序,停止定時器工作,秒表顯示內(nèi)容保持不變; n 當按鍵S4按下時,進入T1中斷服務程序,停止定時器工作,秒表顯示清零; n 最后將各模塊聯(lián)調(diào)實現(xiàn)全部功能。n 將調(diào)試好的程序固化至89C51 芯片中,脫機運行。7改進意見 在編寫程序時,運行遇到一些錯誤,經(jīng)過仔細修改,最終找出錯誤并改正。8,源程序#include<reg51.h> #define uint unsigned int #define uchar unsigned charuchar code table=0xc0,0xf9

9、,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; uint s,m,h,n=0;uint time=0;sbit s3=P33;sbit s2=P32;sbit s4=P35; void delay(uint z) /延時程序uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void keyscan() /按鍵掃描 if(s3=0); /S3暫停 delay(10); /延時 if(s3=0) TR0=TR0; / TR0取反 while(!s3); /松手檢測 if(s2=0) /S2啟動 delay(10);

10、if(s2=0) TR0=1; /啟動定時器T0 while(!s2); /松手檢測 void display() /顯示子程序P0=tableh/10; /取時針的十位 P2=0x01; /選右邊第一的數(shù)碼管delay(2); /延時P0=tableh%10; /取時針的個位P2=0x02; /選右邊第二的數(shù)碼管delay(2); /延時 P0=tablem/10; /取分針針的十位 P2=0x04; /選右邊第三的數(shù)碼管delay(2);P0=tablem%10; P2=0x08;delay(2);P0=tables/10; P2=0x10;delay(2);P0=tables%10;P2

11、=0x20;delay(2); timer0() interrupt 1 using /定時中斷 T0 TH0=0x3C; /重置定時初值 TL0=0xB0; time+; if(time=20) /1秒鐘到 time=0; /重新計數(shù)20次 s+ ; /秒鐘加1 if(s=60) /1分鐘到 s=0; /秒鐘置零 m+; /分鐘加1 if(m=60) /1分鐘到 m=0; /分鐘置零 h+; /時鐘加1 if(h=24) /一天到 h=0; /時鐘清零void main() /主程序s2=1; /按鍵初始設置為高電平s3=1;s4=1;TMOD=0x41; /定時器T0,T1初始化TH1=0

12、xff;TL1=0x1f;TH0=0x3C;TL0=0xB0;EA=1; /打開中端總開關(guān)ET0=1; /定時中端T0允許ET1=1; /定時中端T1允許TR1=1;IT0=1; /外部中斷T0采用下降沿觸發(fā)IT1=1; /外部中斷T1采用下降沿觸發(fā)s=0,m=0,h=0; /顯示管設置初值while(1)keyscan(); /調(diào)用按鍵掃描子程序display(); /調(diào)用顯示程序timer1() interrupt 3 using 1 /定時1中斷S4清零TH1=0xff; /重置計數(shù)初置TL1=0x1f;s=0; /顯示器清零m=0;h=0;9,收獲及體會 這次課程設計讓我受益匪淺,。因為這個簡易秒表的設計不僅檢驗了我們

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論