




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目錄1、設(shè)計(jì)課題介紹2 1.1 設(shè)計(jì)課題任務(wù)2 1.2 功能要求說(shuō)明2 1.3總體方案介紹及工作原理說(shuō)明22、硬件系統(tǒng)的設(shè)計(jì)52.1 硬件系統(tǒng)模塊功能介紹52.2 原理圖、PCB圖、元器件布局圖82.3 元器件清單83、軟件系統(tǒng)的設(shè)計(jì)93.1 使用單片機(jī)資源的情況93.2 軟件系統(tǒng)各模塊功能簡(jiǎn)要介紹93.3 軟件系統(tǒng)程序流程框圖133.4 軟件系統(tǒng)程序清單154、總結(jié)244.1 設(shè)計(jì)結(jié)論及使用說(shuō)明244.2 仿真結(jié)果254.3 誤差分析254.4 設(shè)計(jì)體會(huì)27考文獻(xiàn)27致謝28附錄291、設(shè)計(jì)課題介紹1.1 設(shè)計(jì)課題任務(wù)學(xué)生通過(guò)理論設(shè)計(jì)和實(shí)物制作解決相應(yīng)的實(shí)際問(wèn)題,鞏固和運(yùn)用在單片機(jī)技術(shù)中所學(xué)
2、的理論知識(shí)和實(shí)驗(yàn)技能,掌握單片機(jī)應(yīng)用系統(tǒng)的一般設(shè)計(jì)方法,提高設(shè)計(jì)能力和實(shí)踐動(dòng)手能力,為以后從事電子電路設(shè)計(jì)、研發(fā)電子產(chǎn)品打下良好的基礎(chǔ)。1.2 功能要求說(shuō)明設(shè)計(jì)一個(gè)具有特定功能的電子鐘。該電子鐘上電或按鍵復(fù)位后能自動(dòng)顯示系統(tǒng)提示符“P.”, 進(jìn)入時(shí)鐘準(zhǔn)備狀態(tài);第一次按電子鐘啟動(dòng)/調(diào)整鍵,電子鐘從0時(shí)0分0秒開(kāi)始運(yùn)行,進(jìn)入時(shí)鐘運(yùn)行狀態(tài);再次按電子鐘啟動(dòng)/調(diào)整鍵,則電子鐘進(jìn)入時(shí)鐘調(diào)整狀態(tài),此時(shí)可利用各調(diào)整鍵調(diào)整時(shí)間,調(diào)整結(jié)束后可按啟動(dòng)/調(diào)整鍵再次進(jìn)入時(shí)鐘運(yùn)行狀態(tài)。1.3總體方案介紹及工作原理說(shuō)明1.3.1 AT89S52芯片介紹VCC:電源。GND:接地。P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O
3、口,每腳可吸收8TTL門(mén)電流。當(dāng)P1口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。P0能夠用于外部程 序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門(mén)電流。P1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作 輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門(mén)
4、電流,當(dāng)P2口被寫(xiě)“1”時(shí),其管腳被內(nèi)部上拉電阻 拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存 儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出其特殊功能寄存器 的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。圖1.3-1AT89S52單片機(jī)P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門(mén)電流。當(dāng)P3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部
5、下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:口管腳 備選功能P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(記時(shí)器0外部輸入)P3.5 T1(記時(shí)器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于
6、鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE 端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器 時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。EA
7、/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí), /EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。1.3.2方案選擇本方案完全用軟件實(shí)現(xiàn)數(shù)字時(shí)鐘。在單片機(jī)內(nèi)部存儲(chǔ)器設(shè)三個(gè)字節(jié)分別存放時(shí)鐘的時(shí)、分、秒信息。利用定時(shí)器與軟件結(jié)合實(shí)現(xiàn)1秒定時(shí)中斷,每產(chǎn)生一次中斷,存儲(chǔ)器內(nèi)相應(yīng)的秒值加1;若秒值達(dá)到60,則將其清零,并將相應(yīng)的分字節(jié)值加1;若分值達(dá)到60,則清零分字節(jié),并將時(shí)字節(jié)值加1;若時(shí)值達(dá)到24,則將十字節(jié)清零。K0鍵為啟動(dòng)/調(diào)整
8、鍵,K1鍵為是調(diào)節(jié),K2鍵為分調(diào)節(jié),K3鍵為秒調(diào)節(jié)。該方案具有硬件電路簡(jiǎn)單的特點(diǎn)。顯示器采用動(dòng)態(tài)顯示,一位一位的輪流點(diǎn)亮各個(gè)位,對(duì)于顯示器的每一位來(lái)說(shuō),每隔一段時(shí)間點(diǎn)亮一次。保證掃描速度足夠快,利用人的視覺(jué)暫留功能可以看到整個(gè)顯示,字符才不閃爍。節(jié)省了I/O口,降低了能耗。2、硬件系統(tǒng)的設(shè)計(jì)2.1 硬件系統(tǒng)模塊功能介紹2.1.1 單片機(jī)芯片的選擇通過(guò)對(duì)多種單片機(jī)性能的分析,最終認(rèn)為89S51是最理想的電子時(shí)鐘開(kāi)發(fā)芯片。AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧
9、的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。AT89S52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門(mén)狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。2.1.2 系統(tǒng)方案設(shè)計(jì)利用單片機(jī)(AT89S52)制作簡(jiǎn)易電子時(shí)鐘,由八個(gè)LED數(shù)碼管分別顯示小時(shí)十位、小時(shí)個(gè)位、橫杠、分鐘十位、分鐘個(gè)位、橫杠、秒鐘十位、秒鐘個(gè)位。6個(gè)PNP管(9012)分別控
10、制六個(gè)數(shù)碼管的亮滅,一個(gè)按鍵用于時(shí)間調(diào)整。顯示部分控制部分單片機(jī)(AT89S52)按鍵S2復(fù)位電路電源部分直流電源5V8個(gè)七段共陰極數(shù)碼管顯示秒,分鐘及小時(shí)位位選部分8個(gè)PNP圖2.1.1 系統(tǒng)設(shè)計(jì)總圖2.1.2 時(shí)鐘電路單片機(jī)本身是一個(gè)復(fù)雜的同步時(shí)序系統(tǒng),為了保證同步工作方式的思想,單片機(jī)必須有時(shí)鐘信號(hào),以使其系統(tǒng)在時(shí)鐘信號(hào)的控制下按時(shí)序協(xié)調(diào)工作。本設(shè)計(jì)采用單片機(jī)片內(nèi)時(shí)鐘電路結(jié)合外部晶振、電容產(chǎn)生。圖 所示為時(shí)鐘電路原理圖,在at89s52芯片內(nèi)部有一個(gè)高增益方相剛大器,其輸入端為芯片引腳XTAL1,輸出端魏應(yīng)交XTAL2。而在內(nèi)部,XTAL1和XTAL2之間跨接晶體振蕩器。時(shí)鐘電路產(chǎn)生的震
11、蕩脈沖為單片機(jī)提供時(shí)鐘脈沖信號(hào) 圖2.1.2 時(shí)鐘電路2.1.3 鍵盤(pán)電路圖 所示為鍵盤(pán)原理圖,本系統(tǒng)采用的是獨(dú)立鍵盤(pán)結(jié)構(gòu),每個(gè)按鍵單獨(dú)占用一根I/O口線,每個(gè)按鍵的工作不會(huì)影響其它I/O口線的狀態(tài)。他軟件是采用查詢結(jié)構(gòu),首先逐位查詢每根I/O口線的輸入狀態(tài),如某根I/O口線輸入為低電平,則可確認(rèn)該口線所對(duì)應(yīng)的按鍵已按下,然后,在轉(zhuǎn)向該鍵功能處理程序。圖2.1.3 鍵盤(pán)電路2.1.3 復(fù)位電路圖2.1-3所示為復(fù)位電路原理圖,復(fù)位是單片機(jī)的初始化操作,其主要功能是吧PC初始化為0000H,是單片機(jī)從0000H單元開(kāi)始執(zhí)行程序,復(fù)位電路采用的是按鍵復(fù)位,他是通過(guò)復(fù)位端經(jīng)電阻與VCC電源接通而實(shí)現(xiàn)
12、的,它兼具上電復(fù)位功能。2.1.4 復(fù)位電路2.1.4 數(shù)碼管電路數(shù)碼管是一種把多個(gè)LED顯示段集成在一起的顯示設(shè)備。動(dòng)態(tài)顯示的原理是,各個(gè)數(shù)碼管的相同段連接在一起,共同占用8 位段引管線;每位數(shù)碼管的陽(yáng)極連在一起組成公共端。利用人眼的視覺(jué)暫留性,依次給出各個(gè)數(shù)碼管公共端加有效信號(hào),在此同時(shí)給出該數(shù)碼管加有效的數(shù)據(jù)信號(hào),當(dāng)全段掃描速度大于視覺(jué)暫留速度時(shí),顯示就會(huì)清晰顯示出來(lái)。本設(shè)計(jì)采用兩個(gè)四位共陽(yáng)數(shù)碼管實(shí)現(xiàn)。位控線通過(guò)八個(gè)PNP接在8951P2口,段控線接至P0口線。數(shù)碼管電路2.2 設(shè)計(jì)課題電路原理圖2.2.1 電路原理圖見(jiàn)附錄一PCB圖見(jiàn)附錄二2.1.3 元器件布局圖見(jiàn)附錄三2.3 設(shè)計(jì)課
13、題元器件清單見(jiàn)附錄四3、軟件系統(tǒng)的設(shè)計(jì)3.1 使用單片機(jī)資源的情況K0-K3鍵分別連接P0.0-P0.3,當(dāng)有鍵按下時(shí)P0.0-P0.3的某一位為低電平,反之,則為高電平;兩個(gè)八位數(shù)碼管位控線分別連接P2口的P2.0-P2.7,其段控線分別接至P1口的P1.0-P1.7。采用共陽(yáng)數(shù)碼管,當(dāng)控制位為低電平時(shí),LED相應(yīng)段點(diǎn)亮。3.2軟件系統(tǒng)各模塊功能簡(jiǎn)要介紹本系統(tǒng)的軟件系統(tǒng)主要可分為主程序、定時(shí)計(jì)數(shù)中斷程序、時(shí)間調(diào)整程序、延時(shí)程序四大模塊(1)定時(shí)計(jì)數(shù)中斷程序MOVTMOD,#01HMOVTH0,#03CH;定時(shí)器初始化,50msMOVTL0,#0B0HSETBEASETB ET0(2)時(shí)間調(diào)整
14、程序:HOU0: ACALL DIRINC HOU ;時(shí)加1MOV A, HOUMOV B, #10DIV ABMOV 7FH, A ;在顯示緩沖區(qū)放數(shù)MOV 7EH, BMOV A, HOUCJNE A, #24, Q_0 ;時(shí)加到24時(shí)否?是,清零MOV 7EH, #00HMOV 7FH, #00HCLR AQ_0: MOV HOU, ARET /*/MIN0: ACALL DIRINC MIN ;分加1MOV A, MINMOV B, #10DIV ABMOV 7CH, A ;在顯示緩沖區(qū)放數(shù)MOV 7BH, BMOV A, MIN CJNE A, #60, Q_1 ;分加到60時(shí)否?是
15、,清零MOV 7BH, #00HMOV 7CH, #00HCLR AQ_1: MOV MIN, ARET /*/SEC0: ACALL DIRINC SEC ;秒加1MOV A, SECMOV B, #10DIV ABMOV 79H, A ;在顯示緩沖區(qū)放數(shù)MOV 78H, BMOV A, SECCJNE A, #60, Q_2 ;秒加到60時(shí)否?是,清零MOV 78H, #00HMOV 79H, #00HCLR AQ_2: MOV SEC, ARET (3)中斷TASK2: PUSH ACCPUSH BPUSH PSWLOOP03: MOV TH0, #03CH ;50msMOV TL0,
16、#0B0HINC 47HMOV A, 47HCJNE A, #20, LOOP06;中斷執(zhí)行20次MOV 47H, #0 INC SEC ;秒加1 MOV A, SEC MOV B, #10DIV ABMOV 79H, AMOV 78H, B MOV A, SECCJNE A, #60, LOOP06 ;加60次MOV SEC, #00H ;秒歸零MOV 79H, #00H MOV 78H, #00HINC MIN ;分加一MOV A, MINMOV B, #10DIV ABMOV 7CH, AMOV 7BH, BMOV A, MIN CJNE A, #60, LOOP06;加60次MOV M
17、IN, #00HMOV 7BH, #00H ;分歸零MOV 7CH, #00H INC HOU;時(shí)加一MOV A, HOU MOV B, #10DIV ABMOV 7FH, AMOV 7EH, BMOV A, HOU CJNE A, #24, LOOP06;加24次MOV HOU, #00H;歸零MOV 7EH, #00HMOV 7FH, #00HMOV MIN, #00HMOV SEC, #00HLOOP06:POP PSWPOP BPOP ACCRETI (4)延時(shí)子程序DL:MOVR7, #02H ;延時(shí)1msDL1:MOVR6, #0FFHDL2:DJNZR6, DL2DJNZR7,
18、DL1RET3.3 軟件系統(tǒng)程序流程框圖圖3.3.1 主程序流程圖 圖 3.3.2 中斷處理流程圖圖3.3.3 鍵掃子程序流程圖圖3.3.4 加一子程序流程圖3.4 軟件系統(tǒng)程序清單;*:;項(xiàng)目名稱:數(shù)字電子鐘的設(shè)計(jì);設(shè)計(jì)者:朱團(tuán);設(shè)計(jì)日期:2010年12月29日;*;堆棧棧底90H;*;LED數(shù)碼管顯示器設(shè)定;P0.7-P0.0段控線,接LED的顯示段dp,g,f,e,d,c,b,a;P2.7-P2.0位控線,從左至右(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0);顯示緩沖區(qū)設(shè)定從左至右依次為7FH,7EH,7DH,7CH,7BH,7AH,79H,78H;
19、*;獨(dú)立式鍵盤(pán)設(shè)定;8個(gè)按鍵S2至S9分別依次接在P1.0至P1.7口線; ;*;鍵功能程序;KEY0;KEY1;KEY2;KEY3;*;子程序;DIR(數(shù)碼管顯示子程序);DL(1毫秒延時(shí)子程序,晶振頻率12MHz);加一子程序:; HOU0(時(shí)加一); MIN0(分加一); SEC0(秒加一);KEY 鍵掃描子程序;KEYCHULIP1口數(shù)據(jù)處理子程序 ;*;中斷服務(wù)程序; TASK2;*;常數(shù)表格;TAB(共陽(yáng)數(shù)碼管字型代碼表);TAB11(系統(tǒng)提示符P.字型代碼序號(hào)表);TAB22(系統(tǒng)開(kāi)啟00-00-00);*;數(shù)據(jù)存儲(chǔ)器變量及常量單元定義;偽指令區(qū)HOU EQU 4AH MIN E
20、QU 4BH SEC EQU 4CH;*; ;系統(tǒng)起始程序區(qū) ;*;ORG 0000HSTART: LJMP MAIN ORG 000BHLJMP TASK2/*/; 系統(tǒng)監(jiān)控程序區(qū) ;/*/ORG0050HMAIN: MOV HOU, #00H MOV MIN, #00HMOV SEC, #00H MOVSP,#80HMOVPSW,#00HMOVTMOD,#01HMOV TH0,#03CH;定時(shí)器初始化,50msMOVTL0,#0B0HSETBEASETB ET0/*/; 顯示P.鍵盤(pán)掃描 ;/*/P_1: MOV R0, #78H MOV R7, #00HMOV DPTR, #TAB11F
21、IND1:MOV A, R7MOVC A, A+DPTRMOV R0, AINCR0 INCR7CJNE R7, #8,FIND1 TASK1:LCALL DIR;顯示P.,調(diào)用DIR顯示子程序,動(dòng)態(tài)顯示 LCALL KEY;鍵掃,掃描值存入20H單元中JB 20H.0, KEY0;判斷K0鍵是否按下AJMP TASK1/*/;鍵功能程序 ;/*/KEY0: ;顯示00-00-00 MOV 20H, #0 ;清鍵值 MOV R0, #78H ;緩沖區(qū)MOV R2, #0 ;數(shù)據(jù)表格的位數(shù)CLR AFIND2:MOV DPTR, #TAB22MOV A, R2MOVC A, A+DPTRMOV
22、R0, AINC R0INC R2CJNE R2,#8, FIND2 ;判斷8個(gè)緩沖區(qū)是否傳送完閉KDS: SETB TR0SETB EASETB ET0 MOV 20H,#00H DI: ACALL DIR ACALL KEY JB 20H.0, TS_0 ;判按鍵K0,按下進(jìn)入調(diào)試狀態(tài) LJMP DI/*/TS_0: CLR TR0 ;關(guān)定時(shí)器 CLR EACLR ET0TS_1: LCALLDIRLCALLKEYJB20H.0, KDS ;K0按下,返回計(jì)時(shí)JB20H.1, KEY1 ;K1按下,調(diào)整點(diǎn)JB20H.2, KEY2 ;K2按下,調(diào)分JB20H.3, KEY3 ;k3按下,調(diào)
23、秒LJMP TS_1/*/KEY1: MOV 20H, #0 ;清鍵值LCALLHOU0 ;調(diào)時(shí)LC1:LCALLDIR LCALLKEYJB20H.0, KDS;K0按下,返回計(jì)時(shí)JB20H.1, KEY1;K1按下,調(diào)整點(diǎn)JB20H.2, KEY2;K2按下,調(diào)分JB20H.3, KEY3;k3按下,調(diào)秒LJMPLC1/*/KEY2: MOV 20H, #0 ;清鍵值LCALLMIN0 ;調(diào)分LC2:LCALLDIR LCALLKEYJB20H.0,KDS ;K0按下,返回計(jì)時(shí)JB20H.1,KEY1 ;K1按下,調(diào)整點(diǎn)JB20H.2,KEY2 ;K2按下,調(diào)分JB20H.3,KEY3 ;
24、k3按下,調(diào)秒LJMPLC2/*/KEY3: MOV 20H, #0 ;清鍵值LCALLSEC0 ;調(diào)秒LC3:LCALLDIRLCALLKEYJB20H.0, KDS ;K0按下,返回計(jì)時(shí)JB20H.1,KEY1 ;K1按下,調(diào)整點(diǎn)JB20H.2,KEY2 ;K2按下,調(diào)分 JB20H.3,KEY3 ;k3按下,調(diào)秒LJMPLC3 /*中轉(zhuǎn)站*/LOOP: LJMP SEC0LOOP0: LJMP KEY/*/ ; 加1調(diào)時(shí)子程序 ;/*/HOU0: ACALL DIR INC HOU ;時(shí)加1 MOV A, HOUMOV B, #10DIV ABMOV 7FH, A ;在顯示緩沖區(qū)放數(shù)MO
25、V 7EH, B MOV A, HOU CJNE A, #24, Q_0 ;時(shí)加到24時(shí)否?是,清零 MOV 7EH, #00HMOV 7FH, #00HCLR AQ_0: MOV HOU, A RET /*/MIN0: ACALL DIR INC MIN ;分加1 MOV A, MINMOV B, #10DIV ABMOV 7CH, A ;在顯示緩沖區(qū)放數(shù)MOV 7BH, BMOV A, MIN CJNE A, #60, Q_1 ;分加到60時(shí)否?是,清零MOV 7BH, #00HMOV 7CH, #00H CLR AQ_1: MOV MIN, A RET /*/SEC0: ACALL DI
26、R INC SEC ;秒加1 MOV A, SECMOV B, #10DIV ABMOV 79H, A ;在顯示緩沖區(qū)放數(shù)MOV 78H, BMOV A, SEC CJNE A, #60, Q_2 ;秒加到60時(shí)否?是,清零 MOV 78H, #00HMOV 79H, #00HCLR AQ_2: MOV SEC, A RET /*/LOOP00:LJMP TS_0/*/; 顯示子程序 ;/*/DIR:PUSH DPHPUSH DPLPUSH ACCPUSH PSWSETB RS0SETB RS1MOV R0,#78HMOV R3,#0FEHMOV R5,#8 ;循環(huán)次數(shù)LOOP01:MOV A
27、,R0MOV P2,R3; ;位控MOV DPTR,#TAB MOVC A,A+DPTRMOV P0,A; LCALL DL ; ;調(diào)延時(shí)MOV A,R3RL AMOV R3,AINC R0DJNZ R5,LOOP01POP PSWPOP ACCPOP DPLPOP DPHRET/*/ ; 延時(shí)子程序 ;/*/DL:MOVR7, #02H ;延時(shí)1msDL1:MOVR6, #0FFHDL2:DJNZR6, DL2DJNZR7, DL1RET/*/; 中斷服務(wù)程序 ;/*/TASK2: PUSH ACC PUSH BPUSH PSWLOOP03: MOVTH0, #03CH ;50msMOVTL
28、0, #0B0HINC47HMOVA, 47H CJNE A, #20, LOOP06 ;中斷執(zhí)行20次MOV47H, #0 INC SEC ;秒加1 MOV A, SEC MOV B, #10DIV ABMOV 79H, AMOV 78H, B MOV A, SEC CJNE A, #60, LOOP06 ;加60次 MOV SEC, #00H ;秒歸零MOV 79H, #00H MOV 78H, #00H INC MIN ;分加一MOV A, MINMOV B, #10DIV ABMOV 7CH, AMOV 7BH, BMOV A, MIN CJNE A, #60, LOOP06;加60次
29、MOV MIN, #00H MOV 7BH, #00H ;分歸零MOV 7CH, #00H INC HOU ;時(shí)加一MOV A, HOU MOV B, #10DIV ABMOV 7FH, AMOV 7EH, BMOV A, HOU CJNE A, #24, LOOP06;加24次MOV HOU, #00H;歸零MOV 7EH, #00HMOV 7FH, #00HMOV MIN, #00HMOV SEC, #00HLOOP06:POP PSWPOP BPOP ACCRETI /*/; 鍵掃描子程序 ;/*/KEY:LCALL KEYCHULI;調(diào)P1口數(shù)據(jù)處理子程序 JZ EXIT;沒(méi)有鍵按下,
30、轉(zhuǎn)返回LCALLDIR ;調(diào)顯示子程序去抖動(dòng)LCALLDIR LCALL KEYCHULI;調(diào)P1口數(shù)據(jù)處理子程序 JZ EXIT;沒(méi)有鍵按下,轉(zhuǎn)返回MOVB,20H;保存取反后的鍵值KEYSF:LCALLKEYCHULI;調(diào)P1口數(shù)據(jù)處理子程序JZKEY11;鍵釋放,轉(zhuǎn)恢復(fù)鍵值LCALLDIR ;調(diào)顯示子程序延時(shí) LJMP KEYSF;等待釋放KEY11:MOV 20H,B;鍵值送20H保存EXIT:RET;子程序返回/*/; P1口數(shù)據(jù)處理子程序 ;/*/KEYCHULI:PUSH PSW;保護(hù)現(xiàn)場(chǎng)CLRRS1;改變當(dāng)前寄存器組為組1SETBRS0MOVP1,#0FFH;先向P1口寫(xiě)1MO
31、VA,P1;讀P1口數(shù)據(jù)CPLA;P1口數(shù)據(jù)取反MOV20H,A;保存取反后的鍵值CLRRS1;恢復(fù)當(dāng)前寄存器組為組0CLR RS0POPPSW;恢復(fù)現(xiàn)場(chǎng)RET ;子程序返回/*/; 常數(shù)表格區(qū) ; /*/TAB: DB 0C0H, 0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H ;0-8 DB 90H, 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0BFH ;9,A,B,C,D,E,F,滅,p.,-TAB11: DB 11H,10H,10H,10H,10H,10H,10H,10H ;提示符“P.”字符序號(hào)TAB22:DB00H,00H,12H
32、,00H,00H,12H,00H,00H ;00-00-00 RET/*/ END4、總結(jié)4.1 設(shè)計(jì)結(jié)論及使用說(shuō)明該電子鐘上電或按鍵復(fù)位后能自動(dòng)顯示系統(tǒng)提示符“P.”, 進(jìn)入時(shí)鐘準(zhǔn)備狀態(tài);第一次按電子鐘啟動(dòng)/調(diào)整鍵,電子鐘從0時(shí)0分0秒開(kāi)始運(yùn)行,進(jìn)入時(shí)鐘運(yùn)行狀態(tài);再次按電子鐘啟動(dòng)/調(diào)整鍵,則電子鐘進(jìn)入時(shí)鐘調(diào)整狀態(tài),此時(shí)可利用各調(diào)整鍵調(diào)整時(shí)間,調(diào)整結(jié)束后可按啟動(dòng)/調(diào)整鍵再次進(jìn)入時(shí)鐘運(yùn)行狀態(tài)。K0鍵為啟動(dòng)/調(diào)整鍵,K1鍵為時(shí)調(diào)節(jié),K2鍵為分調(diào)節(jié),K3鍵為秒調(diào)節(jié)。操作步驟如下:(1) 將+5V電源接到電子鐘電源插口上,接通電源開(kāi)關(guān)。(2) 把電子鐘電路板上的ISP程序下載線連接到計(jì)算機(jī)USB接口,
33、在計(jì)算機(jī)上通過(guò)avr_fighter軟件把電子鐘程序下載到單片機(jī)內(nèi)。(3) 電子鐘程序下載到單片機(jī)以后,電子鐘進(jìn)入命令狀態(tài),顯示“P.”。(4) 按下K0鍵,電子鐘從0開(kāi)始運(yùn)行,此時(shí)LED7、LED6、LED4、LED3、LED1、LED0分別顯示時(shí)、分、秒。(5) 再次按下K0鍵,電子鐘進(jìn)入調(diào)時(shí)狀態(tài),此時(shí)通過(guò)K2鍵、K3鍵、K4鍵分別調(diào)整電子鐘的時(shí)、分、秒。按一下對(duì)應(yīng)的值加一。調(diào)整到想要的時(shí)間后,再次按下K0鍵,電子鐘將以用戶調(diào)整時(shí)間為起點(diǎn)進(jìn)入運(yùn)行狀態(tài)。4.2 仿真結(jié)果(1)上電進(jìn)入命令預(yù)備狀態(tài),顯示“P.”。(2)按下K0鍵,電子鐘從0開(kāi)始運(yùn)行,此時(shí)LED7、LED6、LED4、LED3、
34、LED1、LED0分別顯示時(shí)、分、秒。(3)再次按下K0鍵,電子鐘進(jìn)入調(diào)時(shí)狀態(tài),此時(shí)通過(guò)K2鍵、K3鍵、K4鍵分別調(diào)整電子鐘的時(shí)、分、秒。按一下對(duì)應(yīng)的值加一。調(diào)整到想要的時(shí)間后,再次按下K0鍵,電子鐘將以用戶調(diào)整時(shí)間為起點(diǎn)進(jìn)入運(yùn)行狀態(tài)。4.3 誤差分析功能太過(guò)單調(diào),只能實(shí)現(xiàn)時(shí)分秒的顯示,設(shè)計(jì)比較簡(jiǎn)單。電路圖的設(shè)計(jì)過(guò)于單調(diào),用的器件太少,實(shí)現(xiàn)調(diào)節(jié)時(shí)間的按鈕太少,不能很好的實(shí)現(xiàn)時(shí)間的調(diào)節(jié)。在測(cè)試過(guò)程中,六位數(shù)碼顯示管只顯示五位數(shù)字,有一位數(shù)字不亮,通過(guò)多次的修改程序并在PROTEUS軟件環(huán)境中進(jìn)行仿真,最終解決了這個(gè)問(wèn)題,同時(shí)也透露出本人在單片機(jī)電路設(shè)計(jì)和程序設(shè)計(jì)方面的不足。4.4 設(shè)計(jì)體會(huì)這次單片機(jī)課程設(shè)計(jì)我們歷經(jīng)一個(gè)學(xué)期。從開(kāi)始接觸單片機(jī)開(kāi)始,就在王老師的要求下學(xué)會(huì)了prote
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高速項(xiàng)目公司組建方案
- 高溫防治對(duì)策措施方案
- 住宅拆遷補(bǔ)償安置房產(chǎn)權(quán)轉(zhuǎn)讓協(xié)議
- 應(yīng)急醫(yī)療物資運(yùn)送方案
- 鐵路安全面試題及答案
- 柑橘銷(xiāo)售獎(jiǎng)勵(lì)方案
- 項(xiàng)目預(yù)測(cè)方案么
- 余杭社工面試題及答案
- 客戶分類(lèi)文件管理方案
- 產(chǎn)品實(shí)物生產(chǎn)定制方案
- 測(cè)評(píng)體系建設(shè)工作通知303
- DL∕T 1100.3-2018 電力系統(tǒng)的時(shí)間同步系統(tǒng) 第3部分:基于數(shù)字同步網(wǎng)的時(shí)間同步技術(shù)規(guī)范
- 采石場(chǎng)工程勞務(wù)分包合同范本
- 外科學(xué)課件換藥及拆線
- 2024年高考英語(yǔ)讀后續(xù)寫(xiě)真題試題分析及范文講義
- DZ/T 0462.8-2023 礦產(chǎn)資源“三率”指標(biāo)要求 第8部分:硫鐵礦、磷、硼、天然堿、鈉硝石(正式版)
- 子宮脫垂護(hù)理
- 果農(nóng)指南:釋迦果病蟲(chóng)害防治手冊(cè)
- DL/T5315-2014水工混凝土建筑物修補(bǔ)加固技術(shù)規(guī)程(完整)
- 蘭州彤輝商貿(mào)有限公司肅南縣博懷溝一帶銅鐵礦礦產(chǎn)資源開(kāi)發(fā)與恢復(fù)治理方案
- 零星維修項(xiàng)目服務(wù)方案
評(píng)論
0/150
提交評(píng)論