資源描述:
《四位電子鐘電路和匯編源程序.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、四位電子鐘設(shè)計(jì)與制作電路原理圖:此作品為四位電子鐘,主要由單片機(jī)編程實(shí)現(xiàn)其功能,所以分有兩部分一個(gè)硬件,一個(gè)是軟件,硬件方面的電路圖如上圖,單片機(jī)采用ATMEL公司生產(chǎn)的芯片AT89C2051里面有2K字節(jié)的可反復(fù)擦寫的Flash程序存儲(chǔ)器和128字節(jié)的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器。顯示部分為0.56共陽(yáng)極四位數(shù)碼管,在電路中P1口輸出段碼數(shù)據(jù)送入四位數(shù)碼管,P3口做掃描控制,控制數(shù)碼管的顯示。Q1、Q2、Q3為8550三極管,信號(hào)經(jīng)過放大送入P1、P2、P3、P4也就是數(shù)碼管顯示部分,AN1調(diào)整小時(shí),AN2為調(diào)整分鐘它們都接10腳然后接地.10腳接地,20
2、腳接正電源,它們由3-6V電源供電,可以用兩節(jié)1.5V的電池供電,也可以接USB接口5V供電.軟件方面,程序里先定義兩個(gè)中斷定時(shí)器T0和T1,一個(gè)作為秒記數(shù)用,另一個(gè)作為調(diào)整時(shí)閃爍用,編程時(shí)先將P1和P3口數(shù)據(jù)清零,然后P1和P3作為動(dòng)態(tài)掃描顯示,由于人的眼睛有延遲性,當(dāng)掃描頻率非常高時(shí)人就感覺數(shù)碼管一直亮著,而同時(shí)計(jì)數(shù)器在遵循時(shí)間的變化方式執(zhí)行著分到了60分鐘加1,時(shí)間為24小時(shí)制,就是到了24小時(shí)后自動(dòng)為00:00.元件清單:名稱型號(hào)數(shù)量單片機(jī)AT89C20511數(shù)碼管0.56四位共陽(yáng)極1三極管85504電阻4.7K410K12208電容30P
3、F210uf11041石英晶體振蕩器12M1電子鐘源程序(匯編):MIAOBITP2.0;秒點(diǎn)位HOU_SBITP3.0;時(shí)十位HOU_GBITP3.1;時(shí)個(gè)位MIN_SBITP3.2;分十位MIN_GBITP3.3;分個(gè)位H_KEYBITP3.4;時(shí)調(diào)整鍵M_KEYBITP3.5;分調(diào)整鍵SHANBIT0;秒點(diǎn)閃爍LEDBUSEQUP1;顯示數(shù)據(jù)總線SECONDEQU30H;秒寄存器MINUTEEQU31H;分寄存器HOUREQU32H;時(shí)寄存器TIM_1EQU33H;定時(shí)器0中斷次數(shù)TIM_2EQU34H;定時(shí)器0中斷次數(shù);**********
4、**********************ORG0000H;程序開始LJMPINITORG000BH;定時(shí)器0中斷入口地址LJMPTIMER0ORG0030H;程序從30H開始;********************************;單片機(jī)初始化INIT:MOVSECOND,#0;秒置0MOVMINUTE,#0;分置0MOVHOUR,#0;開機(jī)后顯示0點(diǎn)MOVTIM_1,#10;中斷10次為0.5秒MOVTIM_2,#2;0.5*2=1秒MOVSP,#60H;堆棧指針指向60HMOVTMOD,#01H;定時(shí)器0為模式1(16位)MOVT
5、H0,#03CHMOVTL0,#0B0H;50毫秒初值(晶振12M)SETBET0;定時(shí)器0中斷允許SETBTR0;啟動(dòng)定時(shí)器0SETBEA;開總中斷;********************************;主程序MAIN:JNBH_KEY,HT;時(shí)調(diào)整鍵按下轉(zhuǎn)到HTJNBM_KEY,MT;分調(diào)整鍵按下轉(zhuǎn)到MTACALLDISP;調(diào)用顯示子程序AJMPMAIN;轉(zhuǎn)LOOP繼續(xù)檢測(cè)按鍵狀態(tài);********************************;時(shí)間調(diào)整;-----分調(diào)整-----------------MT:ACALLDISP;
6、調(diào)用顯示子程序JNBM_KEY,MT;判斷按鍵是否松開INCMINUTE;分加一MOVA,MINUTECJNEA,#60,MAIN;判斷分是否加到60MOVMINUTE,#0;分到60變?yōu)?MOVSECOND,#0;秒置0AJMPMAIN;-----時(shí)調(diào)整-----------------HT:ACALLDISP;調(diào)用顯示子程序JNBH_KEY,HT;判斷按鍵是否松開INCHOUR;時(shí)加1MOVA,HOURCJNEA,#24,MAINMOVHOUR,#0;判斷時(shí)是否到24,時(shí)到24變0AJMPMAIN;***********************
7、*********;顯示子程序DISP:MOVDPTR,#LEDTAB;數(shù)碼管段碼表首地址送DPTRMOVA,MINUTE;分放入ACCMOVB,#10;B放入10DIVAB;A/B,商在A余數(shù)在BMOVCA,@A+DPTR;查表取分十位段碼MOVLEDBUS,A;段碼送LEDBUS口顯示MOVC,SHANMOVMIAO,C;秒點(diǎn)閃爍CLRMIN_S;打開分十位顯示ACALLD1MS;延時(shí)1毫秒SETBMIN_S;關(guān)閉分十位顯示MOVA,BMOVCA,@A+DPTR;查表取分個(gè)位段碼MOVLEDBUS,AMOVC,SHANMOVMIAO,C;秒點(diǎn)閃
8、爍CLRMIN_G;打開分個(gè)位顯示ACALLD1MS;延時(shí)1毫秒SETBMIN_G;關(guān)閉分十位顯示MOVA,HOURMOV