基于單片機的計數器設計_第1頁
基于單片機的計數器設計_第2頁
基于單片機的計數器設計_第3頁
基于單片機的計數器設計_第4頁
基于單片機的計數器設計_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質文檔-傾情為你奉上基于單片機的計數器設計學 校:實習單位: 姓 名: 目錄摘要計數器是通過對脈沖進行計數得到脈沖通過的個數,經過移位寄存器將得到的數值通過數碼管顯現,從而實現計數器的功能。本次設計共分:計數器、移位寄存器和顯示器三部分,以單片機AT89s52為核心,用74LS164移位寄存器,4連排8段共陽極數碼管來顯示相應數字。關鍵字:計數器,移位寄存器,數碼管1.方案論證1.1電路設計分析經分析,此次設計可用軟硬件結合,通過軟件控制、硬件實現的方式實現。1.2整體方案論證整個課程設計要求我們設計三個部分:計數器、BCD譯碼器、七段數碼管,系統(tǒng)原理方框圖如圖1所示。根據設計任務指出的

2、要求,我們照舊設計出相應的3個基本原理圖:計數部分原理圖;譯碼部分原理圖;顯示部分電路圖計數器移位寄存器顯示器控制鍵整個系統(tǒng)通過計算脈沖進入的個數,在計數器電路中進行計數,將得出的信息通過軟件設計使所得的二進制數據轉變?yōu)橐粋€十進制的數字并傳遞給下一級電路移位寄存器,并驅動顯示部分電路工作,即對七段數碼管接通相應的管腳電流。1.3設計步驟根據原理圖焊接電路板;檢測電路板焊接是否規(guī)范、電路能否導通、能否寫進程序;軟件編程設計,實現十進制計數;軟件編譯、調試、運行;觀察分析結果,保存數據2.硬件電路設計2.1系統(tǒng)搭建單片機最小系統(tǒng),或者稱為最小應用系統(tǒng),是指用最少的元件組成的單片機可以工作的系統(tǒng)。對

3、51系列單片機來說,最小系統(tǒng)一般應該包括:單片機、晶振電路、復位電路。單片機AT89s52原理圖及各元件接法:2.2計數器設計2.2.1原理89C51單片機有2個16位的定時/計數器,即定時器0(T0)和定時器1(T1)。T0由2個特殊功能寄存器TH0和TL0構成,T1則由TH1和TL1構成。這些功能都由特殊功能寄存器TMOD和TCON所控制。 當設置為定時工作方式時,定時器計數89C51片內振蕩器輸出經12分頻后的脈沖,即每個機器周期使定時器(T0或T1)的數值加1直至計滿溢出。當89C51采用12MHz晶振時,一個機器周期為1s,計數頻率為1MHz。當設置為計數工作方式時,通過引腳T0(P

4、3.4)和T1(P3.5)對外部脈沖信號計數,當輸入脈沖信號從1到0的下降沿時,定時器的值加1。 在每個機器周期的S5P2期間采樣T0和T1引腳的輸入電平,若前一個機器周期采樣值為1,下一個機器周期采樣值為0,則計數器加1。此后的機器周期S3P1期間,新的數值裝入計數器。所以,檢測一個1至0的跳變需要二個機器周期,故最高計數頻率為振蕩頻率的1/24。 對輸入信號的占空比無特殊要求,但為了確保某個電平在變化之前至少被采樣一次,要求電平保持時間至少是一個完整的機器周期,對輸入脈沖的基本要求如下圖所示,Tcy為機器周期。>Tcy>Tcy對輸入脈沖寬度的要求2.3移位寄存器2.3.1 移位

5、寄存器作用移位寄存器中的數據可以在移位脈沖作用下一次逐位右移或左移,數據既可以并行輸入、并行輸出,也可以串行輸入、串行輸出,還可以并行輸入、串行輸出,串行輸入、并行輸出,十分靈活,用途非常廣泛。2.3.2 74LS16474LS164為8位移位寄存器,其主要電特性:當清除端(CLEAR)為低電平時,輸出端(QAQH)均為低電平。 串行數據輸入端(A,B)可控制數據。當 A、B任意一個為,則禁止新數據輸入,在時鐘端(CLOCK)脈沖上升沿作用下Q0 為低電平。當A、B 有一個為高電平,則另一個就允許輸入數據,并在CLOCK 上升沿作用下決定Q0 的狀態(tài)。 功能:CLOCK :時鐘輸入端CLEAR

6、: 同步清除輸入端(低電平有效) A,B :串行數據輸入端QAQH: 輸出端74LS164封裝圖74LS164 內部邏輯圖極限值 電源電壓7V 輸入電壓 5.5V 工作環(huán)境溫度 54164 -55125 74164 -070 儲存溫度  -65150真值表H高電平 L低電平 X任意電平 低到高電平跳變 QA0,QB0,QH0 規(guī)定的穩(wěn)態(tài)條件建立前的電平 QAn,QGn 時鐘最近的前的電平 時序圖2.4顯示器設計顯示器工作原理:數碼管一種是半導體發(fā)光器件,其基本單元是發(fā)光二極管,通過對其不同的管腳輸入相對的電流,使其發(fā)亮,從而顯示出數字,能夠顯示時間、日期、溫度等所有可用數字

7、表示的參數的器件。七段LED顯示器內部由七個條形發(fā)光二極管和一個小圓點發(fā)光二極管組成,根據各管的極管的接線形式,可分成共陰極型和共陽極型。LED數碼管的ga七個發(fā)光二極管因加正電壓而發(fā)亮,因加零電壓而不以發(fā)亮,不同亮暗的組合就能形成不同的字形,這種組合稱之為字形碼,下面給出共陰極的字形碼見表數字對應數碼管顯示控制轉換字節(jié)(共陰編碼)顯示HGFE,DCBA編碼0 0011,11110x3F;1 0000,01100x06;2 0101,10110x5B;3 0100,11110x4F;4 0110,01100x66;5 0110,11010x6D;6 0111,11010x7D;7 0000,0

8、1110x07;8 0111,11110x7F;9 0110,11110x6F;七段數碼管驅動方式:直流驅動,即每個數碼管的每一個段碼都由一個單片機的I/O端口進行驅動,或者使用如BCD碼二-十進制譯碼器譯碼進行驅動。優(yōu)點是編程簡單,顯示亮度高,缺點是占用I/O端口多。數碼管結構:數碼管正面圖4連排8段數碼管2.5完整電路圖3.軟件設計#include <reg52.h>#define uint unsigned int#define uchar unsigned char /串行數據sbit led1=P11;sbit CLK =P20;sbit AB =P21;sbit c1=

9、P22;sbit c2=P23;sbit c3=P24;sbit c4=P25;sbit fmq=P37;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f ;/0-9unsigned int num,i,stt,g,s,h,m,i_g,i_s;i_h;i_m;uchar time_s;bit Crol;void delay(unsigned int t)unsigned int j; for(;t>0;t-) for(j=1000;j>0;j-) ;/實現一個字節(jié)的傳送 void B

10、yte(unsigned int t)unsigned int i;unsigned char Data;Data = tablet;for(i=0;i<8;i+)CLK = 0; /上升沿有效AB = Data & 0x01;/取最高位,移位寄存器,向右移動Q0,最先輸出最低位Data =Data >> 1;CLK = 1;main() TMOD=0x59; TH0=(65536-50000)/256; /高8位初始化 TL0=(65536-50000)%256; /低位初始化 EA = 1; /總中斷允許 ET0 = 1; /定時器允許 ET1 = 1; /定時器

11、1允許 EX0 = 1; /外部中斷允許 IT0 = 1; /邊沿觸發(fā)有效 TR0=1; /定時器啟動 TR1=1; /定時器啟動 while(1)if(i = 9999)i = 0;if(Crol) /判斷是否翻轉i = time_s; /執(zhí)行計數器 else i=TL1;i_s = i%10;i_g = i/10%10;i_h = i/100%10;i_m = i/1000;c1 = 0;c2 = 1;c3 = 1;c4 = 1;Byte(i_s);delay(1);c1 = 1;c2 = 0;c3 = 1;c4 = 1;Byte(i_g);delay(1); c1 = 1;c2 = 1;

12、c3 = 0;c4 = 1;Byte(i_h);delay(1);c1 = 1;c2 = 1;c3 = 1;c4 = 0;Byte(i_m);delay(1); void zd1(void) interrupt 0 /IT0中斷 Crol=Crol;/定時器翻轉void T0_Timer() interrupt 1 / 定時器中斷 num+; if(num=20) num=0;time_s+; TH0=(65536-50000)/256; TL0=(65536-50000)%256;4.項目測試圖表 1 實物圖圖表 2 效果圖5.小結這次實習設計使我懂得了理論知識和實踐相結合的重要,光有理論知

13、識是遠遠不夠的,只有把理論知識和實踐結合起來,用理論指導實踐,用實踐求證理論,才能真正做到學以致用、提升能力,為社會服務。實際動手能力和獨立思考不僅能夠快速提高自己的知識水平還能極大促進學習的興趣,看到自己親手設計的作品真是一件令人愉悅的事。在設計過程中遇到好多問題,同時發(fā)現了自己很多不足之處,對之前所學的理論知識掌握的不牢固或不完整。通過這次設計彌補了我之前的不足,更找到了改變的方法,對我自身提高和發(fā)展有非常大的幫助!最后,衷心感謝所有辛苦指導我們的老師!感謝幾位組員和所有幫助我的同學!附錄 程序代碼:#include <reg52.h>#define uint unsigned

14、 int#define uchar unsigned char /串行數據sbit led1=P11;sbit CLK =P20;sbit AB =P21;sbit c1=P22;sbit c2=P23;sbit c3=P24;sbit c4=P25;sbit fmq=P37;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f ;/0-9unsigned int num,i,stt,g,s,h,m,i_g,i_s;i_h;i_m;uchar time_s;bit Crol;void delay(u

15、nsigned int t)unsigned int j; for(;t>0;t-) for(j=1000;j>0;j-) ;/實現一個字節(jié)的傳送 void Byte(unsigned int t)unsigned int i;unsigned char Data;Data = tablet;for(i=0;i<8;i+)CLK = 0; /上升沿有效AB = Data & 0x01;/取最高位,移位寄存器,向右移動Q0,最先輸出最低位Data =Data >> 1;CLK = 1;main() TMOD=0x59; TH0=(65536-50000)/2

16、56; /高8位初始化 TL0=(65536-50000)%256; /低位初始化 EA = 1; /總中斷允許 ET0 = 1; /定時器允許 ET1 = 1; /定時器1允許 EX0 = 1; /外部中斷允許 IT0 = 1; /邊沿觸發(fā)有效 TR0=1; /定時器啟動 TR1=1; /定時器啟動 while(1)if(i = 9999)i = 0;if(Crol) /判斷是否翻轉i = time_s; /執(zhí)行計數器 else i=TL1;i_s = i%10;i_g = i/10%10;i_h = i/100%10;i_m = i/1000;c1 = 0;c2 = 1;c3 = 1;c4

17、 = 1;Byte(i_s);delay(1);c1 = 1;c2 = 0;c3 = 1;c4 = 1;Byte(i_g);delay(1); c1 = 1;c2 = 1;c3 = 0;c4 = 1;Byte(i_h);delay(1);c1 = 1;c2 = 1;c3 = 1;c4 = 0;Byte(i_m);delay(1); void zd1(void) interrupt 0 /IT0中斷 Crol=Crol;/定時器翻轉void T0_Timer() interrupt 1 / 定時器中斷 num+; if(num=20) num=0;time_s+; TH0=(65536-50000)/256; TL0=(65536-50000)%256;參考文獻1.胡漢才 單片機原理及其接口技術 清華大學出版社2.閻石 數字電子技術基礎(第五版) 高等教育出版社3.華成英 童詩白 模擬電子技術基礎 高等教育出版社4.文U皖,何道君,譚明FPGA設計與應用M北京,清華

溫馨提示

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

評論

0/150

提交評論