數(shù)字電子鐘課程設計報告_第1頁
數(shù)字電子鐘課程設計報告_第2頁
數(shù)字電子鐘課程設計報告_第3頁
數(shù)字電子鐘課程設計報告_第4頁
數(shù)字電子鐘課程設計報告_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目錄 摘要 3 關(guān)鍵詞 3 一、設計任務與要求 4 、方案設計與論證 方案一 方案二 三、硬件單元電路設計與參數(shù)計算 5 1. 電源電路 5 2. 按鍵電路 5 3. 時鐘電路 4. 驅(qū)動電路 5 5. LED顯示電路 5 6. 單片機電路 6 四、軟件設計與流程圖 10 10 五、總原電路及元器件清單 1 .總原理圖 10 2 . PCB制板圖 11 3 整體電路仿真圖 12 4 .元件清單 12 六、安裝與調(diào)試 13 1. 電路安裝 13 2. 電路調(diào)試 13 3. 軟件調(diào)試 13 七、性能測試與分析 14 八、結(jié)論與心得 14 九、參考文獻 15 十、致謝 15 十一、程序清單 15 摘

2、要:本論文基于單片機原理技術(shù)介紹了一款于 AT89C52芯片作為核心控制器的 單片機數(shù)字電子鐘的設計與制作, 包括硬件電路原理的實現(xiàn)方案設計、 軟件程序 編輯的實現(xiàn)、數(shù)字電子鐘正常工作的流程、 原理圖仿真實現(xiàn)、 硬件實物的安裝制 作與硬件實物的調(diào)試過程。該單片機數(shù)字電子鐘采用 LED 數(shù)碼管能夠準確顯示 時間(顯示格式為:時時,分分,秒秒),可隨時進行時間調(diào)整, 時間可采用 12 小 時制顯示或24小時制顯示,采用12小時顯示時可在標志位數(shù)碼管上顯示 A (表 示上午)或B (表示下午),可暫停時間的變動,暫停時一位數(shù)碼管上顯示字母H, 可按自己的要求設置擴展的小鍵盤個數(shù)。 關(guān)鍵詞: 單片機

3、;數(shù)字電子鐘 ;數(shù)碼管 ;AT89C52 設計任務與要求 1、設計任務 用單片機設計一個數(shù)字電子鐘,采用 LED數(shù)碼管來顯示時間。 2、設計要求 (1)顯示格式為:XX XX XX 即:時:分:秒。 (2)時間可采用12小時制顯示或24小時制顯示,采用12小時顯示時必須 在另外一個數(shù)碼管上顯示 A (表示上午)或B (表示下午)。 (3)設置一個按鍵用于時間顯示方式的切換。 (4)系統(tǒng)上電后從上電時初始化顯示:12-00-00 開始計時。 (5)能進行時間的調(diào)整,可暫停時間的變動,暫停時一位數(shù)碼管上顯示字母 H 可按自己的要求設置擴展的小鍵盤個數(shù)。 電 源 模 塊 驅(qū) 動 模 塊 LED顯示模

4、塊 單片機模塊 方案設計與論證 時鐘模塊 按 鍵 模 塊 圖1系統(tǒng)整體框圖 整個系統(tǒng)用單片機作為中央控制器,由單片機執(zhí)行采集芯片內(nèi)部時鐘信號, 時鐘信號通過單片機I/O 口傳給單片機,單片機模塊控制驅(qū)動模塊驅(qū)動顯示模 塊,通過顯示模塊來實現(xiàn)信號的輸出、LED的顯示及相關(guān)的控制功能。系統(tǒng)設有 按鍵模塊用于對時間進行調(diào)整及擴展多個小鍵盤,系統(tǒng)整體框圖如圖1所示。 1、單片機芯片選擇方案 方案一 :AT89S52是一個低功耗,高性能CMOS位單片機,片內(nèi)含4k Bytes ISP(In-system programmable) 的可反復擦寫1000次的Flash只讀程序存儲器。 主要性能有:與MCS

5、-51單片機產(chǎn)品兼容、全靜態(tài)操作:OHz33Hz、三級加密 程序存儲器、 32 個可編程 I/O 口線、三個 16 位定時器/計數(shù)器、八個中斷源、 全雙工UART串行通道、掉電后中斷可喚醒、看門狗定時器、雙數(shù)據(jù)指針、掉電 標識符、易編程。 方案二:AT89C52是一個低電壓,高性能CMOS位單片機,片內(nèi)含8k bytes 的可反復擦寫的 Flash 只讀程序存儲器和 256 bytes 的隨機存取數(shù)據(jù)存儲器 (RAM。主要性能有:兼容 MCS5指令系統(tǒng)、32個雙向I/O 口、256x8bit內(nèi)部 RAM、 3 個 16 位可編程定時 /計數(shù)器中斷、時鐘頻率 O-24MHz、 2個串行中斷、可

6、編程UART串行通道、2個外部中斷源、6個中斷源、2個讀寫中斷口線、3級加 密位、低功耗空閑和掉電模式、軟件設置睡眠和喚醒功能。 從單片機芯片主要性能角度出發(fā), 本數(shù)字電子鐘單片機芯片選擇設計采用方 案一。 2、數(shù)碼管顯示選擇方案 方案一:靜態(tài)顯示。靜態(tài)顯示,即當顯示器顯示某一字符時,相應的發(fā)光二 極管恒定導通或截止。該方式每一位都需要一個 8 位輸出口控制。靜態(tài)顯示時 較小電流能獲得較高的亮度, 且字符不閃爍。但因當所需顯示的位數(shù)較多時, 靜 態(tài)顯示所需的 I/O 口數(shù)較大,造成資源的浪費。 方案二:動態(tài)顯示。動態(tài)顯示,即各位數(shù)碼管輪流點亮,對于顯示器各位數(shù) 碼管,每隔一段延時時間循環(huán)點亮一

7、次。 利用人的視覺暫留功能可以看到整個顯 示,但須保證掃描速度足夠快,人的視覺暫留功能才可察覺不到字符閃爍。 顯示 器的亮度與導通電流、 點亮時間及間隔時間的比例有關(guān)。 調(diào)整參數(shù)可以實現(xiàn)較高 穩(wěn)定度的顯示。動態(tài)顯示節(jié)省了 I/O 口,降低了能耗。 從節(jié)省單片機芯片 I/O 口和降低能耗角度出發(fā), 本數(shù)字電子鐘數(shù)碼管顯示選 擇設計采用方案二。 3、數(shù)碼管驅(qū)動選擇方案 方案一:上拉電阻驅(qū)動方式。數(shù)碼管段碼與接有上拉電阻的單片機芯片 I/O 口相連,通過編程,單片機芯片即控制段碼電平的高低。該方式經(jīng)費低,但 實物制作較復雜。 方案二: 74LS245 芯片驅(qū)動方式。數(shù)碼管段碼與 74LS245 芯片

8、 B 口相連, 74LS245芯片A 口與單片機芯片I/O 口,通過編程,單片機芯片即可控制段 碼電平的高低。該方式實物制作簡單, 增強驅(qū)動數(shù)碼管段碼能力。 從實物制作簡易程度與驅(qū)動數(shù)碼管段碼能力角度出發(fā), 本數(shù)字電子鐘數(shù)碼 管驅(qū)動選擇設計采用方案二。 三、 硬件單元電路設計與參數(shù)計算 1、電源電路 本數(shù)字電子鐘設計所需電源電壓為直流、電壓值大小 5V 的電壓源 。從硬 件實物設計簡易程度與經(jīng)費方面考慮,用兩節(jié)電壓值大小 2.5V 干電池與電路電 壓源引腳相連接即可達到硬件設計要求。 即本數(shù)字電子鐘設計用兩節(jié)電壓值大小 2.5V 干電池做硬件電路電壓源。 2、按鍵電路 本數(shù)字電子鐘設計所需按鍵

9、用于進行顯示時間的調(diào)整與設置擴展的小鍵盤。 單片機芯片4個I/O 口可與按鍵直接相連,通過編程,單片機芯片即可控制按鍵 接口電平的高低,即按鍵的開與關(guān),以達到用按鍵進行顯示時間的調(diào)整與設置擴 展的小鍵盤的設計要求。 3、時鐘電路 單片機芯片可使用內(nèi)部時鐘電路和外部時鐘電路兩種方式產(chǎn)生電路所 需的時鐘脈沖,內(nèi)部時鐘電路實現(xiàn)可用石英晶體和微調(diào)電容外接即可達到, 外部時鐘電路實現(xiàn)需要一個外部脈沖源引入脈沖信號以保證個單片機之間 時鐘信號的同步。從硬件實現(xiàn)難易角度考慮,內(nèi)部時鐘電路的實現(xiàn)比外部時 鐘電路的實現(xiàn)更簡易。既本數(shù)字電子鐘設計所需的時鐘源采用內(nèi)部時鐘電路 實現(xiàn)。所用定時方式為工作方式1,石英晶

10、振為12M即最小定時時間為1us, 最大定時時間約為65.5ms,其電路圖如下圖2所示。 圖2時鐘電路圖 4、驅(qū)動電路 從實物制作簡易程度與驅(qū)動數(shù)碼管段碼能力角度出發(fā),本數(shù)字電子鐘設 計采用數(shù)碼管段碼與74LS245芯片B 口相連,74LS245芯片A 口與單片機芯片I/O 口,通過編程,單片機芯片即可控制段碼電平的高低的方式實現(xiàn)數(shù)碼管段碼控制, 74LS245芯片圖如下圖3所示。 DIR A0 A1 A2 A3 A4 A5 A6 A7 GND 雙向驅(qū) b74LS245 圖3 74LS245芯片圖 5、LED顯示電路 數(shù)字電子鐘設計的顯示模塊用 8個一位數(shù)碼管實現(xiàn),也可用兩個四位一 體數(shù)碼管實

11、現(xiàn)。兩種實現(xiàn)方式實現(xiàn)效果一樣。從實物制作的難易程度出,本數(shù)字 電子鐘設計采用兩個四位一體數(shù)碼管實現(xiàn)。即數(shù)碼管引腳與單片機芯片和 74LS245對應引腳相連接。 單片機電路 本數(shù)字電子鐘設計采用 AT89S52單片機芯片作為中央控制器,實現(xiàn)信號 的輸出、LED的顯示及相關(guān)的控制功能 四、軟件設計與流程圖 1、數(shù)字電子時鐘主程序流程圖 主程序流程圖如下圖圖4所示 裝載計數(shù)初值 等待定 時中斷 請求 圖4 數(shù)字電子時鐘主程序流程圖 2、中斷服務程序流程圖 5 所示。 中斷服務程序流程圖如下圖圖 圖5中斷服務程序流程圖 3、顯示子程序流程圖 顯示子程序流程圖如下圖圖6所示。 開始 圖6顯示子程序流程圖

12、 五、總原電路及元器件清單 1 總原理圖 最小系統(tǒng)控制原理圖如下圖圖7所示,數(shù)碼管原理圖如下圖圖8所示 PJrtPTi? 4 如i . 4 舊 u XTKXl LP XTAXi LE 7l TT o-tra I DAiVPP RFT 2冏 ATaftSK: Jll lLADURiisri Pl P I .;; T:I KTAJil XTAJiZ Pl ,|TL: pi Jirra*- vcc 浄- IBLXI叩。 TXDir? I AL unsigned char key_s, key_v; unsigned char code dis_code11=0 x3F, 0 x06,0 x5B,0

13、x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F,0 x00 ;/0,1,2,3 4, 5, 6, 7, 8, 9, off/ 共陰數(shù)碼管 unsigned char data dis_buf8; unsigned char data dis_index; unsigned char hour,min,sec; unsigned char sec100; unsigned char flag,flag1,flag2;/falg 用于時間停止和啟動標志, falg1 為 12小時和 24小時的切換標志, falg2 為1 2小時的上午和下午的切換標志 sbit K1

14、 = P1A0; sbit K2 = P1A1; sbit K3 = P1A2; sbit K4 = P1A3; 則開始計時 sbit K5 = P1A4; / 用于時的調(diào)整 / 用于分的調(diào)整 / 用于秒的調(diào)整 / 用于時間調(diào)整的開關(guān) , 按下一次暫停時間 , 再按一次時 / 用于 24小時制和 12小時制的切換 bit scan_key(); void proc_key(); void inc_sec(); void inc_min(); void inc_hour(); void inc_hour1(); void delayms(unsigned char ms); void main(

15、void) P0 = 0 xff; P2 = 0 xff; TMOD = 0 x11; / 定時器 0, 1 工作模式 1, 16 位定時方式 TH1 = 0 xd8;/使用12MHZ勺晶振,定時時間為:10ms TL1 = 0 xf0; TH0 = 0 xf8;/定時時間為2ms,用于數(shù)碼管的動態(tài)掃描 TL0 = 0 x30; hour = 12; min = 00; sec = 00; sec100 = 0; flag = 0; flag1 = 0; dis_buf0 = dis_codehour / 10; / dis_buf1 = dis_codehour % 10; / 時十位 時個

16、位 dis_buf2 = dis_codemin / 10; / dis_buf3 = dis_codemin % 10; / 分十位 分個位 dis_buf4 = dis_codesec / 10; / dis_buf5 = dis_codesec % 10; / 秒十位 秒個位 dis_buf6 = 0 x00; /關(guān)閉該位數(shù)碼管 dis_buf7 = 0 x7f; /顯示 B 表示下午 dis_digit = 0 xfe; dis_index = 0; TCON = 0 x01; /T1:TF1 TR1 T0:TF0 TR0 定時中斷: IE1 IT1 IE0 IT0 / 外部中斷 0

17、的觸發(fā)方式為下降沿觸發(fā) IE = 0 x8a;/ 使能 timer0,1 中斷, 控制 IE 寄存器的格式: EA - - ES ET1 EX1 ET0 EX0 / 1 0 0 0 1 0 1 TR0 = 1; / 開定時器 0 TR1 = 1; / 開定時器 1 key_v = 0 x1f;/ 定義為 K1,K2,K3,K4,K5 相應的按鍵 , 當沒有按下時則 while(1) if(scan_key() delayms(10); if(scan_key() key_v = key_s; proc_key(); 為 ,K1,K2,K3,K4,K5, 都為高電平 ,0 x1f / 先掃描一次

18、是否有按鍵按下 / 延時 / 再次掃描一次是否有按鍵 按下 / 將 key_s 的值傳給 key_v bit scan_key() / 設置 key_s 先為 0 key_s = 0 x00; key_s |=K5; key_s = 1; key_s |= K4; key_s = 1; key_s |= K3; key_s P1.1, 若 K2 按下則為 0,當 K2按下時 key_s 與 K2 或的結(jié)果會使得key_s為0 x00,未按下時K2則為1, key_s與K2或的結(jié)果會使 得 key_s 為 0 x01 key_s P1.0, 若 K1 按下則為 0,當 K1 按下時 key_s

19、與 K1或的結(jié)果會使得key_s為0 x00或是0 x02,沒有按下時則得到的結(jié)果為 0 x01 或是 0 x03 return(key_s A key_v);/進行邏輯異或運算,相同為0,不同為1. 已經(jīng)定義了變量 :key_v = 0 x1f; 如果兩個按鍵都沒有按下則是得到 0 x03, 異或 的結(jié)果是為 0 void proc_key() if(K4=0) /K4 是否按下 flag+; / 關(guān)閉定時器 TR1=0; / 關(guān)閉定時器 1 dis_buf6 = 0 x76; / 顯示 H, 用于表示設定時間的標志 if(K5=0) flag1+; /flag1 的初始值是 0,falg1

20、 為 12 小時和 24 小時的切換 標志 小時制 / 判斷是不是下午 / 關(guān)閉顯示 if(flag1=1) /24 if(dis_buf7=0 x7f) hour=hour+12; dis_buf7=0 x00; dis_buf7 = 0 x00; if(hour 23) hour = 0; if(hour 9) 時十位 dis_buf0 = dis_codehour / 10; / else dis_buf0 = 0 x00; / 當小時的十位為 0 時不顯示 dis_buf1 = dis_codehour % 10; /時個位 if(flag1=2) /12 小時制 flag1=0; i

21、f(hour12|hour=0) / 判斷是不是下午 , 并用于處理 24 小時 制的大于 13和等于 0 的處理 if(hour12) hour=hour-12; if(hour=0) hour=12; 顯示下午 B / 顯示 A 表示上午 dis_buf7=0 x7f; / else dis_buf7 = 0 x77; if(hour 9) 時十位 dis_buf0 = dis_codehour / 10; / else dis_buf0 = 0 x00; / 當小時的十位為 0 時不顯示 dis_buf1 = dis_codehour % 10; /時個位 if(key_v if(fla

22、g1=1) inc_hour1(); 當只有 K1 按下時,則 key_s 為 0 x02, else if(key_v if(min 59) min = 0; 分十位 分個位 dis_buf2 = dis_codemin / 10; / dis_buf3 = dis_codemin % 10; / else if(key_v 是否按下 if(sec 59) sec = 0; dis_buf4 = dis_codesec / 10; / dis_buf5 = dis_codesec % 10; / if(flag=2) flag=0; TR1=1; dis_buf6 = 0 x00; if(f

23、lag1=0) if(flag2) dis_buf7 = 0 x77;/ 秒十位 秒個位 顯示 A 表示上午 else dis_buf7 = 0 x7f; / 顯示 B 表示下午 void timer0() interrupt 1 / 定時器 0 中斷服務程序 , 用于數(shù)碼管的動態(tài)掃描 / dis_index -顯示索引 , 用于標識當前顯示的數(shù)碼管和緩沖區(qū)的偏移量 / dis_digit - 位選通值 , 傳送到 P0 口用于選通當前數(shù)碼管的數(shù)值 , 如等于 0 xfe 時 , / 選通 P2.0 口數(shù)碼管 / dis_buf - 顯于緩沖區(qū)基地址 TH0 = 0 xf8; TL0 = 0

24、x30; / 定時時間為 2ms P2 = 0 xff;/ 先關(guān)閉所有數(shù)碼管 P0 = dis_bufdis_index; /顯示代碼傳送到 P0 口 P2 = dis_digit; / dis_digit = _crol_(dis_digit,1); / 位數(shù)碼管 dis_index+; / 位選通值左移 , 下次中斷時選通下 dis_index / 8 個數(shù)碼管全部掃描完一遍之后,再回到第一個開 始下一次掃描 , 限定了只掃描 8 位, 當為超過 8 位時則開始清零 . 到8次 /0 x07=0000 0111 dis_index 在一個個加一時,則為加 / 定時器 1 的定時時間為 10ms void timer1() interrupt 3 TH1 = 0 xd8; TL1 = 0 xf0; sec100+; if(sec100 = 100) /定時 1 秒的時間 sec100 = 0; inc_sec(); v

溫馨提示

  • 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

提交評論