用74LS164驅動(dòng)數碼管
(1)第一天上午:布置任務(wù)、分組、確定題目。
本文引用地址:http://dyxdggzs.com/article/201611/323275.htm(2)第一天下午和晚上:查找資料確定方案,畫(huà)出系統組成框圖、硬件電路圖、軟件流程圖。
(3)第二天上午:同步進(jìn)行元件購買(mǎi)和軟件設計
(4)第二天下午和晚上:同步進(jìn)行軟件設計與電路焊接
(5)第三天上午:同步進(jìn)行軟件設計與電路焊接
(6)第三天下午和晚上:同步進(jìn)行軟件仿真調試和電路調試
(7)第四天上午:軟硬件聯(lián)調
(8)第四天下午和晚上:軟硬件聯(lián)調,撰寫(xiě)實(shí)訓報告(每組一份)
(9)第五天上午和下午:產(chǎn)品測試與答辯
通過(guò)本次課程設計的實(shí)踐,進(jìn)一步學(xué)習、掌握單片機應用系統的有關(guān)知識,加深了解單片機的工作原理。也進(jìn)一步掌握簡(jiǎn)單單片機應用系統的設計、制作、調試的方法。同時(shí)還提高自身的動(dòng)手實(shí)踐能力和科學(xué)的思維能力。
同時(shí)值得一提的是,在此設計過(guò)程中,就對時(shí)分之間的點(diǎn)閃爍體現是用查表輸出形式實(shí)現的,由于本系統設計是采用74LS164驅動(dòng)數碼管,只有一個(gè)數據信號輸入口,所以不能對數碼管進(jìn)行“位”控,只能對數碼管的整體顯示進(jìn)行控制。所以每秒內至少需兩次數據輸出并顯示,第一次輸出顯示的數的小數點(diǎn)都不亮,第二次輸出顯示的數(數的值不變)中第三個(gè)數碼管的數的小數點(diǎn)亮,兩者交替輸出顯示,即可實(shí)現點(diǎn)時(shí)分之間的點(diǎn)閃爍。在具體實(shí)現過(guò)程中是用查表方式實(shí)現,即在第二次輸出顯示時(shí),把R3的值加10,既R3查表所得的值是TAB表格中第二排數值(參看程序清單),而第二排數值所對應顯示的數都是小數點(diǎn)亮的,在此次輸出顯示完成后,再把R3減10,返回原來(lái)的值并繼續進(jìn)行計時(shí)。另外在設計按鈕時(shí),一開(kāi)始遇到的難題是:按一下按鈕,時(shí)或分所加的數值并不為1,加的數為不確定值,最后經(jīng)過(guò)研究,使設計程序在查詢(xún)P1.2,P1.3端口時(shí),若檢測到高電平時(shí)需延遲20ms左右后,再進(jìn)行二次檢測,以消除按鈕的抖動(dòng)干擾,使之按一下能正確調節時(shí)分進(jìn)行加1調整(參看程序清單)。最后值得總結的是,在程序設計過(guò)程中還存在很多細節上的問(wèn)題,如因為沒(méi)有對進(jìn)位標志位CY清零,在其他程序都正確的情況下卻始終調不出正確滿(mǎn)意的結果,最后費了很多時(shí)間精力去查找尋錯,才得以解決,這使我認識到在程序設計過(guò)程中,平時(shí)必須加強對一些細小環(huán)節的重視,這樣才能在真正程序設計時(shí)能做到正確快速的調試成功??偟恼f(shuō)來(lái),這次課程設計收益匪淺,通過(guò)認真思考、查找資料,以及和同學(xué)、老師的探討,解決了很多問(wèn)題,同時(shí)也增長(cháng)了很多在課堂上學(xué)不到的知識。
;中斷向量程序段org 0000hajmp start org 000bh ;定時(shí)器T0中斷向量地址ajmp dingshi org 001bh ;定時(shí)器T0中斷向量地址ajmp ds;*********************************************;初始化程序段org 0030h start: mov sp,#30h mov tmod,#11h ;定時(shí)器設置mov th0,#3ch ;定時(shí)1秒mov tl0,#0b0hmov iE,#8ah ;打開(kāi)定時(shí)中斷mov p1,#00hsetb tr0;*********************************************;主程序段main: mov p1,#00hmov a,p1jb acc.3,proc3 ;查詢(xún)P1.3端口電壓jb acc.2,proc2 ;查詢(xún)P1.2端口電壓ajmp main;*********************************************;二次檢測P1.3,P1.2端口電平proc3: acall delay0 ;延時(shí)20ms mov p1,#00hmov a,p1jb acc.3,jiafenretproc2: acall delay0 ;延時(shí)20msmov p1,#00hmov a,p1jb acc.2,jiashiret;*********************************************;調節分子程序jiafen: clr p1.3mov ie,#00hclr tr0inc r1cjne r1,#0ah,xianshi0 ;十進(jìn)位mov r1,#00hinc r2cjne r2,#06h,xianshi0 ;六進(jìn)位mov r2,#00hxianshi0:acall showmov ie,#8ah ;打開(kāi)TO,T1中斷setb tr0 ;使T0開(kāi)始計時(shí)ret;*********************************************; 調節時(shí)子程序jiashi: clr p1.2mov ie,#00hclr tr0cjne r4,#02h,sjw ;判斷R4是否為2;*******;二十四清零inc r3 cjne r3,#04h,xianshi1 ;四進(jìn)位mov r3,#00hinc r4cjne r4,#03h,xianshi1 ;三進(jìn)位mov r4,#00hajmp xianshi1;********sjw: inc r3 cjne r3,#0ah,xianshi1 ; 十進(jìn)位mov r3,#00hinc r4cjne r4,#03h,xianshi1 ;三進(jìn)位mov r4,#00hxianshi1:acall showmov ie,#8ah ;打開(kāi)TO,T1中斷setb tr0 ;使T0開(kāi)始計時(shí)ret;*********************************************;TO產(chǎn)生中斷計時(shí)子程序dingshi:mov th1,#0ffh ;T1賦初值(可任意值)mov tl1,#0fehmov th0,#3ch ;T0賦初值(定時(shí)0.1s)mov tl0,#0b0h inc r6cjne r6,#0ah,dings0 ; 十進(jìn)位mov r6,#00hsetb et1setb tr1inc r5cjne r5,#3ch,dings4 ; 60進(jìn)位mov r5,#00hinc r1cjne r1,#0ah,dings4 ; 十進(jìn)位mov r1,#00hinc r2cjne r2,#06h,dings4 ; 六進(jìn)位mov r2,#00hcjne r4,#02h,sjw ;判斷R4是否為2
評論