




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、單片機課程設(shè)計題目 電 子 鐘 設(shè) 計 專業(yè) 電子信息科學(xué)與技術(shù) 班級 2011級電子2班 學(xué)號 姓名 21 目錄一、課程設(shè)計任務(wù)及要求二、電子鐘設(shè)計方案三、AT89C52單片機介紹四、74HC573鎖存器介紹五、數(shù)碼管工作原理介紹六、程序代碼七、Proteus仿真圖八、心得體會九、參考文獻(xiàn)一、 課程設(shè)計任務(wù)及要求1、設(shè)計一個電子時鐘,要求可以顯示時、分、秒。2、用戶可以設(shè)置時間3、實現(xiàn)秒表功能。二、電子鐘設(shè)計方案 這個電子鐘由AT89C52、74HC573、共陰極數(shù)碼管及部分按鍵構(gòu)成??梢詫崿F(xiàn)顯示時分秒,用戶也可以通過按鍵來設(shè)置時間,也可以通過按鍵來調(diào)模式切換到秒表模式,秒表可以停止和歸零。
2、二、 AT89C52單片機介紹AT89C52是美國Atmel公司生產(chǎn)的低電壓、高性能CMOS 8位單片機,片內(nèi)含8KB的可反復(fù)檫寫的程序存儲器和12B的隨機存取數(shù)據(jù)存儲器(RAM),器件采用Atmel公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)配置通用8位中央處理器(CPU)和Flash存儲單元,功能強大的AT89C52單片機可靈活應(yīng)用于各種控制領(lǐng)域。AT89C52單片機屬于AT89C51單片機的增強型,與Intel公司的80C52在引腳排列、硬件組成、工作特點和指令系統(tǒng)等方面兼容。其主要工作特性是:片內(nèi)程序存儲器內(nèi)含8KB的Flash程序存儲器,可擦寫壽命為1000
3、次;片內(nèi)數(shù)據(jù)存儲器內(nèi)含256字節(jié)的RAM;具有32根可編程I/O口線;具有3個可編程定時器;中斷系統(tǒng)是具有8個中斷源、6個中斷矢量、2個級優(yōu)先權(quán)的中斷結(jié)構(gòu);串行口是具有一個全雙工的可編程串行通信口;具有一個數(shù)據(jù)指針DPTR;低功耗工作模式有空閑模式和掉電模式;具有可編程的3級程序鎖定位;AT89C52工作電源電壓為5(1+0.2)V,且典型值為5V;AT89C52最高工作頻率為24MHz。單片機正常工作時,都需要有一個時鐘電路和一個復(fù)位電路。本設(shè)計中選擇了內(nèi)部時鐘方式和按鍵電平復(fù)位電路,來構(gòu)成單片機的最小電路。VCC:電源;GND:接地。 P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸
4、收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程 序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗時,P0輸出原碼,此時P0外部必須被拉高。 P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作 輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P
5、2口被寫“1”時,其管腳被內(nèi)部上拉電阻 拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存 儲器進(jìn)行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2口輸出其特殊功能寄存器 的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。 圖1 AT89C51單片機 P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平
6、,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(記時器0外部輸入)P3.5 T1(記時器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)P3口同時為閃爍編程和編程校驗接收一些控制信號。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLA
7、SH編程期間,此引腳用于輸入編程脈沖。在平時,ALE 端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器 時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。 PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。EA/VPP:當(dāng)/EA保持低電
8、平時,則在此期間外部程序存儲(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時, /EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。四、74HC573鎖存器介紹八進(jìn)制 3 態(tài)非反轉(zhuǎn)透明鎖存器74HC573 高性能硅門 CMOS 器件 SL74HC573 跟 LS/AL573 的管腳一樣。器件的輸入是和標(biāo)準(zhǔn) CMOS 輸出兼容 的;加上拉電阻,他們能和 LS/ALSTTL 輸出兼容。 當(dāng)鎖存使能端LE為高時,這些器件的鎖存對于數(shù)據(jù)是透明的(也就是說輸出同 步)。當(dāng)
9、鎖存使能變低時,符合建立時間和保持時間的數(shù)據(jù)會被鎖存。 ×u36755X出能直接接到 CMOS,NMOS 和 TTL 接口上 ×u25805X作電壓范圍:2.0V6.0V ×u20302X輸入電流:1.0uA ×CMOS 器件的高噪聲抵抗特性 OE120Vcc1D2191Q2D3182Q3D4173Q4D5164Q5D6155Q6D7146Q7D8137Q8D9128QGND1011LE 1腳三態(tài)允許控制端低電平有效1D8D為數(shù)據(jù)輸入端1Q8Q為數(shù)據(jù)輸出端74HC573引腳圖LE為鎖存控制端五、數(shù)碼管工作原理介紹 我們最常用的是七段式和八段式
10、LED數(shù)碼管,八段比七段多了一個小數(shù)點,其他的基本相同。所謂的八段就是指數(shù)碼管里有八個小LED發(fā)光二極管,通過控制不同的LED的亮滅來顯示出不同的字形。數(shù)碼管又分為共陰極和共陽極兩種類型,其實共陰極就是將八個LED的陰極連在一起,讓其接地,這樣給任何一個LED的另一端高電平,它便能點亮。而共陽極就是將八個LED的陽極連在一起。其原理圖如下。 其中引腳圖的兩個COM端連在一起,是公共端,共陰數(shù)碼管要將其接地,共陽數(shù)碼管將其接正5伏電源。一個八段數(shù)碼管稱為一位,多個數(shù)碼管并列在一起可構(gòu)成多位數(shù)碼管,它們的段選線(即a,b,c,d,e,f,g
11、,dp)連在一起,而各自的公共端稱為位選線。顯示時,都從段選線送入字符編碼,而選中哪個位選線,那個數(shù)碼管便會被點亮。數(shù)碼管的8段,對應(yīng)一個字節(jié)的8位,a對應(yīng)最低位,dp對應(yīng)最高位。所以如果想讓數(shù)碼管顯示數(shù)字0,那么共陰數(shù)碼管的字符編碼為00111111,即0x3f;共陽數(shù)碼管的字符編碼為11000000,即0xc0。可以看出兩個編碼的各位正好相反。如下圖。共陽極的數(shù)碼管0f的段編碼是這樣的:unsigned char code table= /共陽極0f數(shù)碼管編碼0xc0,0xf9,0xa4,0xb0,/030x99,0x92,0x82,0xf8,/470x80,0x90,0x88,0x83,
12、/8b0xc6,0xa1,0x86,0x8e /cf;共陰極的數(shù)碼管0f的段編碼是這樣的:unsigned char code table=/共陰極0f數(shù)碼管編碼0x3f,0x06,0x5b,0x4f, /030x66,0x6d,0x7d,0x07, /470x7f,0x6f,0x77,0x7c, /8b0x39,0x5e,0x79,0x71 /cf;這里我們采用共陰極數(shù)碼管。六、程序代碼頭文件:public.h
13、#ifndef _PUBLIC_H_#define_PUBLIC_H_#include<reg52.h> # define DP P0 #define KeyPort P1sbit LATCH1=P22 ; /段 sbit LATCH2=P23 ;/位sbit KEY_MOD=P24;sbit KEY_SLC=P25;sbit KEY_ADD=P26;sbit KEY_DEC=P27;void DelayUs2x(unsigned char t);/延時函數(shù)void DelayMs(unsigned char t);void keypro(void);unsigned char k
14、eyscan(void);void Display(unsigned char FirstBit,unsigned char Num);void Init_Timer0(void);#endifglobal.h#ifndef _GLOBAL_H_#define_GLOBAL_H_#ifdef GLOBAL#define EXT#else#define EXT extern#endifEXT unsigned char temp8;EXT unsigned char F,c,h,m,s;EXT unsigned char mod;EXT unsigned char flag,count2,ms,
15、fen;#endif主程序:clock#define GLOBAL#include "public.h" #include "global.h"void main() /主函數(shù)F=0Xff;c=1;Init_Timer0();while(1)keypro();Display(0,8);Delay#include "public.h"#include "global.h"void DelayUs2x(unsigned char t)/延時函數(shù) while(-t);void DelayMs(unsigned char
16、t) while(t-) DelayUs2x(245); DelayUs2x(245); Display#include "public.h"#include "global.h"unsigned char code weima8=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;void Display(unsigned char FirstBit,unsigned char Num)static unsigned char i=0;DP=0; /清空數(shù)據(jù),防止有交替重影LATCH1=1; /段鎖存LATCH1=0;DP=
17、weimai+FirstBit; /取位碼 LATCH2=1; /位鎖存LATCH2=0;DP=tempi; /取顯示數(shù)據(jù),段碼LATCH1=1; /段鎖存LATCH1=0;i+;if(i=Num)i=0;Keyscan#include "public.h"#include "global.h"unsigned char keyscan(void)KEY_SLC=1; /按鍵 KEY_ADD=1; KEY_DEC=1;KEY_MOD=1;if(KEY_MOD=0) /按鍵按下 DelayMs(10); /延時去抖,一般10-20ms if(KEY_MOD
18、=0) /再次確認(rèn)按鍵是否按下,沒有按下則退出 while(KEY_MOD=0); return 0; if(KEY_SLC=0) DelayMs(10); if(KEY_SLC=0) while(KEY_SLC=0); return 1; if(KEY_ADD=0) DelayMs(10); if(KEY_ADD=0) while(KEY_ADD=0); return 2; if(KEY_DEC=0) DelayMs(10); if(KEY_DEC=0) while(KEY_DEC=0);return 3; return 5;Process#include "public.h&qu
19、ot;#include "global.h"unsigned char code duanma10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;void select();/調(diào)時還是調(diào)分void add();void reduce();void mod_();void keypro(void) switch(keyscan()case 0:mod_();break;/模式case 1:select();break;/選擇case 2:add();break;/加case 3:reduce();break;/減defau
20、lt: break; if(mod=0)/正常走時temp0=duanmah/10;temp1=duanmah%10;temp2=0x40;temp3=duanmam/10;temp4=duanmam%10;temp5=0x40; temp6=duanmas/10;temp7=duanmas%10;if(mod=1)/控制閃爍if(c=1)temp0=(duanmah/10)&F;/閃爍temp1=(duanmah%10)&F;temp2=0x40;temp3=duanmam/10;temp4=duanmam%10;temp5=0x40; temp6=duanmas/10;te
21、mp7=duanmas%10;if(c=2)temp0=duanmah/10;temp1=duanmah%10;temp2=0x40;temp3=(duanmam/10)&F;temp4=(duanmam%10)&F;temp5=0x40; temp6=duanmas/10;temp7=duanmas%10;if(mod=2)/秒表temp0=duanmafen/10;temp1=duanmafen%10;temp2=0x40;temp3=duanmams/10;temp4=duanmams%10;temp5=0x40; temp6=duanmacount2/10;temp7=
22、duanmacount2%10;void mod_()/選擇模式 mod+;if(mod=3)mod=0;void select()/選擇調(diào)時調(diào)分 c+;if(c=3)c=1;void add()if(mod=1)if(c=1)h+;if(h=23)h=0; if(c=2) m+; if(m=59) m=0; if(mod=2)/秒表開始停止flag=flag0xff;void reduce()if(mod=1)if(c=1) if(h>0)h-;elseh=23;if(c=2) if(m>0)m-;elsem=59; if(mod=2)/秒表清零flag=0;count2=0;m
23、s=0;fen=0;Timer#include "public.h"#include "global.h"void Init_Timer0(void) TMOD |= 0x01; EA=1; ET0=1; TR0=1; void Timer0_isr(void) interrupt 1 /定時器0中斷子程序 unsigned char k,count; TH0=(65536-10000)/256; TL0=(65536-10000)%256; k+;count+;if(k=50)F=F0Xff;k=0;if(flag=0xff)count2+;if(count
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 供貨產(chǎn)品運輸合同
- 項目合伙的協(xié)議書
- 買賣合同房屋買賣第三方合同
- 股權(quán)分配合作協(xié)議書
- 購買汽車融資租賃合同
- 護(hù)工合同協(xié)議書樣本
- 提高工作效率方案
- 解決方案-提高工作效率的舉措
- 新能源汽車動力電池研發(fā)合作協(xié)議
- 必修4 第一單元 唯物論-高中政治單元教學(xué)設(shè)計
- 傳感器與檢測技術(shù)(項目式)PPT完整全套教學(xué)課件
- 原神適合寫在作文里的句子80句
- 施工周報表(標(biāo)準(zhǔn)模版)
- 4.5MWp分布式光伏項目主要設(shè)備材料清單(建筑工程安裝工程)
- von frey絲K值表完整版
- 云南省普通初中學(xué)生成長記錄模板-好ok
- 人體解剖學(xué)試題庫及答案
- 學(xué)校幼兒花名冊模板
- SB/T 10415-2007雞粉調(diào)味料
- GB/T 6418-2008銅基釬料
- 考古繪圖基礎(chǔ)
評論
0/150
提交評論