電子跑表單片機開發(fā)與設計工程師考試文檔_第1頁
電子跑表單片機開發(fā)與設計工程師考試文檔_第2頁
電子跑表單片機開發(fā)與設計工程師考試文檔_第3頁
電子跑表單片機開發(fā)與設計工程師考試文檔_第4頁
電子跑表單片機開發(fā)與設計工程師考試文檔_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機開發(fā)與設計工程師考試文檔題目:電子跑表學 校: 湖南人文科技學院 學生姓名: 朱亞錕 龍新茂 起止日期: 2010年6月12日 2010年6月22日摘 要本設計利用單片機實現(xiàn)的電子跑表具有編程靈活,精確度高等特點,便于其他功能的擴充,即可為該電子跑表實現(xiàn)更多的顯示功能。由單片機AT89C52芯片和LED數(shù)碼管以及按鍵電路為核心,輔以必要的電路,構成了一個單片機電子跑表。利用C語言進行軟件設計,增加了程序的可讀性和可移植性,利用AT89C52單片機制成電子跑表電路,采用軟件和硬件結合的方法,控制LED數(shù)碼管輸出。利用按鍵實現(xiàn)時鐘顯示和秒表顯示兩大功能,其中秒表還可以利用按鍵來進行暫停、復位

2、功能。利用C51系列單片機的最大特點是:硬件電路簡單,安裝方便易于實現(xiàn),顯示直觀,功能多樣,成本低廉等諸多優(yōu)點,符合電子儀器儀表的發(fā)展趨勢,具有廣闊的市場前景。關鍵詞:電子跑表;AT89C52單片機;LED數(shù)碼管;按鍵電路;C語言目 錄設計要求11 方案論證與對比11.1 方案一11.2 方案二21.3 方案對比與選擇22 單元電路設計與計算32.1 按鍵電路的設計32.2 計時模塊的設計42.3 可編程并行口I/O芯片擴展設計42.4 顯示電路的設計53 系統(tǒng)軟件設計流程圖63.1 主函數(shù)設計63.2 時鐘函數(shù)的設計83.3 秒表函數(shù)的設計94 詳細儀器清單11參考文獻12附錄一:程序13電

3、子跑表設計要求利用單片機作為控制核心,設計一個電子跑表。具體要求如下:基本部分:1、具有電時鐘和跑表功能;2、做時鐘時在4位LED 顯示器上顯示分、秒;3、做跑表時顯示范圍000.0秒999.9秒;4、當按下啟動按鈕跑表開始計時,按下停止按鈕停止計時,當按下復位按鈕跑表回零。1 方案論證與對比1.1 方案一此方案以MCS-51系列單片機為核心,計時單元由單片機內(nèi)部的定時器/記數(shù)器來實現(xiàn),時間顯示功能通過LED數(shù)碼管動態(tài)掃描來實現(xiàn),表的模式轉換、復位/清零功能由三個按鍵來實現(xiàn)。原理框圖如圖1所示:圖 1方案一系統(tǒng)方框圖1.2 方案二此方案也是以MCS-51系列單片機為核心,計時單元由單片機編程軟

4、件延時來實現(xiàn),時間顯示功能通過LED數(shù)碼管動態(tài)掃描來實現(xiàn),表的啟動/復位/清零功能由PC機通過串口輸入命令來實現(xiàn)。原理框圖如圖2所示:圖 2 方案二系統(tǒng)方框圖該方案有以下兩個缺點:1. 需要一個大型外部設備:PC機。2. 軟件延時計時不精確。1.3 方案對比與選擇以上方案大致思路是一樣的,都是以MCS-51系列單片機為核心,加上計時模塊、選擇模塊和顯示模塊。方案一:通過單片機內(nèi)部的定時器/記數(shù)器來實現(xiàn)方案一的計時單元,外部中斷0來實現(xiàn)方案一的選擇單元,按鍵電路實現(xiàn)電子跑表的暫停、清零功能。方案二:通過單片機編程軟件利用循環(huán)限時來實現(xiàn)方案二的計時單元,PC機由串口輸出命令來實現(xiàn)方案二的選擇單元。

5、顯然由于方案一的計時模塊相對于方案二計時模塊更為精確,而選擇方式更加靈活、方便。故選用方案一作為本次設計的方案。2 單元電路設計與計算2.1 按鍵電路的設計根據(jù)設計要求,采用矩陣式鍵盤,這樣可以更合理地利用硬件資源。矩陣式鍵盤是只有若干個按鍵組成的開關矩陣。4行4列矩陣式鍵盤由圖3所示。這種鍵盤適合采取動態(tài)掃描的方式進行識別,即如果采取低電平掃描,回送線必須被上拉為高電平;如果采取高電平掃描,回送線必須被下拉為低電平。圖3給出了低電平掃描的電路。這種鍵盤的優(yōu)點是使用較少的I/O口線可以實現(xiàn)對較多鍵的控制。實際上,我們是利用此原理,但只是設置了3個開關,開始和暫停由一個開關控制。當鍵盤上的某一鍵

6、閉合時,則該鍵所對應的掃描線和回送線被短路。若X0X3均為高電平,說明無鍵閉合;任一條回送線變?yōu)榈碗娖?,則說明該回送線上有鍵閉合。與此鍵相連的掃描線也一定處于低電平(正在掃描)。由此可以確定掃描線與回送線的編號,這樣閉合按鍵的位置就確定了。圖 3 4行4列矩陣式鍵盤的連接圖CPU對鍵盤掃描可以采用以下方式:a) 程序控制隨機方式,CPU空閑時掃描鍵盤。b) 定時控制方式,每隔一段時間,CPU對鍵盤掃描一次,CPU可以定時響應鍵輸入情況c) 中斷方式,當鍵盤上有間閉合時,向CPU請求中斷,CPU響應鍵盤輸入中斷,對鍵盤掃描,以識別哪一個鍵處于閉合狀態(tài),并對輸入的信息的進行處理。CPU對鍵盤上閉合

7、鍵的鍵號的確定,可以根據(jù)掃描線和回送線的狀態(tài)計算求得也可以根據(jù)行線和列線的狀態(tài)查表求得。2.2 計時模塊的設計由單片機內(nèi)部的定時器/記數(shù)器來實現(xiàn)。若設單片機系統(tǒng)主頻為12MHz,則各種工作防守定時器的最大定時時間為:工作方式0:Tmax=213×1s=8.192ms工作方式1:Tmax=216×1s=65.536ms工作方式2和工作方式3:Tmax=28×1s=0.256ms本次設計使用了計時器T0、T1,工作方式為方式均為1,計時基本單位是50ms,其初始值的設定是:TH0 = (6553650000)256; TL0 = (6553650000)%256;TH

8、1 = (6553650000)256; TL1 = (6553650000)%256;2.3 可編程并行口I/O芯片擴展設計單片機系統(tǒng)常用的8255A芯片是一個典型的可編程通用并行接口芯片,用來擴展單片機的端口,它具有三個八位的并行口,有三種工作方式,可作為單片機與各種外部設備連接的接口電路。在本次設計中,共陽極七段數(shù)碼管和4行4列矩陣開關就是由這個芯片連接的。其操作狀態(tài)表如表1示:表 1 8255A的操作狀態(tài)A1A0操 作說明00010A口 數(shù)據(jù)總線輸入操作(讀)01010B口 數(shù)據(jù)總線10010C口 數(shù)據(jù)總線00100數(shù)據(jù)總線 A口輸出操作(寫)01100數(shù)據(jù)總線 B口10100數(shù)據(jù)總線

9、 C口11100數(shù)據(jù)總線 控制寄存器XXXX1數(shù)據(jù)總線三態(tài)禁止操作11110非法操作XX110數(shù)據(jù)總線三態(tài)8255A有三種工作方式:方式0(基本輸入輸出方式):這種方式不需要任何選通信號,適合無條件傳輸數(shù)據(jù)的設備,數(shù)據(jù)輸出有鎖存功能,數(shù)據(jù)輸入有緩沖功能。方式1(選通輸入/輸出方式):這種方式A組包括A口和C口的高四位(PC7PC4),A口可由程序設定為輸入口和輸出口,C口的高四位則用來作為輸入/輸出操作的控制和同步信號;B組包括B口和C口的第四位(PC3PC0),功能和A組相同。方式2(雙向I/O口方式):僅有A口有這種工作方式,B口無這種工作方式。此方式下,A口為8位雙向I/O口,C口的PC

10、7PC3用來作為輸入輸出的控制和同步信號。此時B口可工作在方式0或方式1。2.4 顯示電路的設計在本次設計中,使用了6個共陽極八段數(shù)碼管作為顯示部分,每個數(shù)碼管的八段是由芯片8255的PB口控制亮滅,每個數(shù)碼管的公共腳是由8255的PA0PA5經(jīng)三極管擴流后進行控制。采用動態(tài)掃描,可以同時顯示多個數(shù)碼管顯示時鐘和電子跑表中的不同部分。使共陽極七段數(shù)碼管時,要注意他的接法。為了顯示數(shù)字或字符,必須對數(shù)字或字符進行編碼。七段數(shù)碼管加上一個小數(shù)點,共計8段。以下是顯示16進制數(shù)的編碼:3 0xA0, /*0*/;0xBB, /*1*/;0x62, /*2*/;0x2A, /*3*/;0x39, /*

11、4*/4 0x2C, /*5*/;0x24, /*6*/;0xBA, /*7*/;0x20, /*8*/;0x28, /*9*/共陽極七段數(shù)碼管原理圖如圖6示:圖 3 共陽極七段數(shù)碼管原理圖動態(tài)顯示的特點是將所有位數(shù)碼管的段選線并聯(lián)在一起,由位選線控制是哪一位數(shù)碼管有效。所謂動態(tài)掃描顯示即輪流向各位數(shù)碼管送出字形碼和相應的位選,利用發(fā)光管的余輝和人眼視覺暫留作用,使人的感覺好像各位數(shù)碼管同時都在顯示。動態(tài)顯示的亮度比靜態(tài)顯示要差一些,所以在選擇限流電阻時應略小于靜態(tài)顯示電路中的。在本次設計中我們選擇了1K的限流電阻。3 系統(tǒng)軟件設計流程圖3.1 主函數(shù)設計1主程序開始后,經(jīng)過一輪按鍵掃描,執(zhí)行

12、標志位flag判斷,在返回到主程序,接著對flag進行一個判斷,若flag=1,進入秒表模式;若flag!=1,則進入時鐘模式。其原理框圖如圖4所示。圖 4 主函數(shù)的原理框圖2計時器初始化,先將計數(shù)器T0初始化:TMOD |= 0x01、EA = 1、ET0 = 1,TR0 = 1,并設定計時器T0的初始值:TH0 = (65536-50000)/256、TL0 = (65536-50000)%256。計數(shù)器T1初始化:TMOD |= 0x10、EA = 1、ET1 = 1,TR1 = 0(一開始秒表不用工作,故將TR1=0,即計時器1停止工作),并設定計時器T1的初始值:TH1 = (655

13、36-50000)/256、TL1 = (65536-50000)%256。3鍵盤掃描子函數(shù)。令8255芯片PA=0x01,再一次掃描PC上的電平。當PC=0x01時,進行時鐘與秒表的切換;當PC=0x02,暫停與開始秒表;當PC=0x04,秒表清零。程序如下,其原理框圖如圖5所示。void scan_keyboard() /鍵盤子函數(shù)uchar kdata; PA=0x01;kdata=PC;if(kdata=0x01) /秒表與時鐘切換鍵delay(5);kdata=PC;if(kdata=0x01)while(PC)PB=0xff;flag=!flag;if(kdata=0x02) /開

14、始和暫停秒表delay(5);kdata=PC;if(kdata=0x02)while(PC)display(miao4,miao3,miao2,miao1);TR1=!TR1;if(kdata=0x04)delay(5);kdata=PC;if(kdata=0x04) /清零秒表while(PC)display(miao4,miao3,miao2,miao1);TR1=0;miao1=0;miao2=0;miao3=0;miao4=0; 圖5 鍵盤掃描子函數(shù)的原理框圖4顯示子函數(shù)服務程序。void display(uchar a,uchar b,uchar c,uchar d)PA=0xff

15、;PB=0xff;PA=0xfb;PB=tablea;delay(5);PB=0xff; / 最低位顯示PA=0xf7;PB=tableb;delay(5);PB=0xff; / 第二位顯示PA=0xef;PB=tablec;delay(5);PB=0xff; / 第三位顯示PA=0xdf;PB=tabled;delay(5);PB=0xff; / 最高位顯示3.2 時鐘函數(shù)的設計1計時器T0中斷服務程序,再次設置計數(shù)器T0的初始值:TH0 = (65536-50000)/256、TL0 = (65536-50000)%256;設立標志位temp,執(zhí)行temp+,每當特,temp執(zhí)行20次,即

16、過1秒,temp=0,為時鐘顯示函數(shù)服務的標志位miao+。程序如下,其原理框圖如圖6所示。void time0() interrupt 1uchar temp;TH0=(65535-50000)/256; TL0=(65535-50000)%256; / 計時器設初值,0.05s為一個單元temp+;if(temp=20)/ temp自加20次為一秒temp=0; miao+;/ temp 置零,為顯示準備標志位miaoif(miao=60)/ miao 大于60,進位miao=0;fen+;/ miao 置零,為顯示準備標志位fenif(fen=60)fen=0;/ fen 大于60,置零

17、 圖 6 T0中斷服務程序原理框圖2顯示部分。對標志位miao 取余、miao取商分別賦給形參uchar a和uchar b;對標志位fen 取余、fen取商分別賦給形參uchar c和uchar d。即調(diào)用顯示子函數(shù)的時候,使用如下形式:display(a,b,c,d),其中a=fen/10,b=fen%10,c=miao/10,d=miao%10。3.3 秒表函數(shù)的設計1計時器T1中斷服務程序,再次設置計數(shù)器T1的初始值:TH1 = (65536-50000)/256、TL1 = (65536-50000)%256;設立標志位temp1,執(zhí)行temp1+,每當temp執(zhí)行20次,即過1秒,

18、temp1=0,為秒表顯示函數(shù)服務的標志位s+。程序如下,其原理框圖如圖7所示。void time1() interrupt 3uchar temp;TH1=(65535-50000)/256;TL1=(65535-50000)%256; / 計時器設初值,0.5s為一個計時單元temp+;if(temp=2) / temp每自加2次為0.1秒temp=0;miao1+;if(miao1=10)miao1=0;miao2+;if(miao2=10)miao2=0;miao3+;if(miao3=10)miao3=0;miao4+;/ 以上均逢十進一,且把原位置零if(miao4=10)miao

19、4=0;/ 當最高位大于10,全部歸零 圖 9 計時器T1中斷服務程序原理框圖2顯示部分。miao4,miao3,miao2,miao1分別賦給形參uchar a,uchar b,uchar c,uchar d。4 詳細儀器清單表格 1 儀器清單儀器名稱數(shù)量 STC89C52RC芯片1個 11.0592M晶振1個輕觸開關4個8255A芯片1個共陽極八段數(shù)碼管6個電阻 1K18個電容30pF2個參考文獻1 張鑫.單片機原理及應用.M 北京:電子工業(yè)出版社,2008 2 樓然苗,李光飛.單片機課程設計指導.M 北京:北京航天航空大學出版社,20073 朱定華,戴汝平.單片微機原理與應用.(M) 北

20、京:清華大學出版社,20034 田立.田清.代方震.51單片機C語言程序設計快速入門.M 北京:人民郵電出版社,20075 譚浩強.C程序設計.M 北京:清華大學出版社,20066 林銳.高質量C編程指南. Z 北京:電子工業(yè)出版社,20017 何立民.MCS-51 系列單片機應用設計.M 北京:航空航天大學出版社,1990 附錄一:程序#include<reg52.h>#include"ABSACC.H"#define uchar unsigned char#define uint unsigned int#define PA XBYTE0xD1FF /*PA

21、口地址*/#define PB XBYTE0xD2FF /*PB口地址*/#define PC XBYTE0xD5FF /*PC口地址*/#define CON XBYTE0xD7FF /*控制字地址*/ uchar fen,miao,miao1,miao2,miao3,miao4,a,b,c,d,flag;void delay(uchar z);uchar const table16= 0xA0, /*0*/ 0xBB, /*1*/ 0x62, /*2*/ 0x2A, /*3*/ 0x39, /*4*/ 0x2C, /*5*/ 0x24, /*6*/ 0xBA, /*7*/ 0x20, /*

22、8*/ 0x28, /*9*/ ; void delay(uchar z) /延時約Zmsuchar x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void init()/ 初始化CON=0x89;TMOD|=0X01;TMOD|=0x10;TR0=1;TR1=0; / 初始化先關閉定時器1(秒表)ET0=1;ET1=1;TH0=(65535-50000)/256;TL0=(65535-50000)%256;TH1=(65535-50000)/256;TL1=(65535-50000)%256;EA=1;void display(uchar a,ucha

23、r b,uchar c,uchar d) / 顯示子函數(shù)PA=0xff;PB=0xff;PA=0xfb;PB=tablea;delay(5);PB=0xff;PA=0xf7;PB=tableb;delay(5);PB=0xff;PA=0xef;PB=tablec;delay(5);PB=0xff;PA=0xdf;PB=tabled;delay(5);PB=0xff;void scan_keyboard() /鍵盤子函數(shù)uchar kdata;PA=0x01;kdata=PC;if(kdata=0x01) /秒表與時鐘切換鍵delay(5);kdata=PC;if(kdata=0x01)while(PC)PB=0xff;flag=!flag;if(kdata=0x02) /開始和暫停秒表delay(5);kdata=PC;if(kdata=0x02)while(PC)

溫馨提示

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

評論

0/150

提交評論