實(shí)例分析!單片機(jī)最小系統(tǒng)開(kāi)發(fā)運(yùn)行的全過(guò)程
01確定任務(wù)
開(kāi)發(fā)單片機(jī)最小系統(tǒng)
02任務(wù)分析
該系統(tǒng)具有的功能:(1)具有2位LED數(shù)碼管顯示功能。(2)具有八路發(fā)光二極管顯示各種流水燈。(3)可以完成各種奏樂(lè),報(bào)警等發(fā)聲音類實(shí)驗(yàn)。(4)具有復(fù)位功能。
03功能分析
(1)兩位LED數(shù)碼管顯示功能,我們可以利用單片機(jī)的P0口接兩個(gè)數(shù)碼管來(lái)現(xiàn)這個(gè)功能;(2)八路發(fā)光二極管顯示可以利用P1口接八個(gè)發(fā)光二極管實(shí)現(xiàn)這個(gè)功能;(3)各種奏樂(lè)、報(bào)警等發(fā)聲功能可以采用P2.0這個(gè)引腳接一蜂鳴器來(lái)實(shí)現(xiàn)。(4)利用單片機(jī)的第9腳可以設(shè)計(jì)成復(fù)位系統(tǒng),我們采用按鍵復(fù)位;利用單片機(jī)的18、19腳可以設(shè)計(jì)成時(shí)鐘電路,我們利用單片機(jī)的內(nèi)部振蕩方式設(shè)計(jì)的。
04設(shè)計(jì)框圖
05硬件電路設(shè)計(jì)
根據(jù)本系統(tǒng)的功能,和單片機(jī)的工作條件,我們?cè)O(shè)計(jì)出下面的電路圖。
06元件清單的確定
數(shù)碼管:共陰極2只(分立)電解電容:10UF的一只30PF的電容2只220歐的電阻9只4.7K的電阻一只1.2K的電阻一只4.7K的排阻一只,12MHz的晶振一只有源5V蜂名器一只AT89S51單片機(jī)一片常開(kāi)按鈕開(kāi)關(guān)1只緊鎖座一只(方便芯取下來(lái)的,綠色的)發(fā)光二極管(5MM紅色)8只萬(wàn)能板電路版15*17CMS8550三極管一只4.5V電池盒一只,導(dǎo)線若干。
07硬件電路的焊接
按照原理圖把上面的元件焊接好,詳細(xì)步驟省略。
08相關(guān)程序編寫(xiě)
針對(duì)上面的電路原理圖,設(shè)計(jì)出本系統(tǒng)的詳細(xì)功能:(1)、第一個(gè)發(fā)光二極管點(diǎn)亮,同時(shí)數(shù)碼管顯示“1”。(2)、第二個(gè)發(fā)光二極管點(diǎn)亮,同時(shí)數(shù)碼管顯示“2”。(3)、依次類推到第八個(gè)發(fā)光二極管點(diǎn)亮,同時(shí)數(shù)碼管顯示“8”。以上出現(xiàn)的是流水燈的效果(4)、所有的發(fā)光二極管滅了,同時(shí)數(shù)碼管現(xiàn)實(shí)“0”。(5)、數(shù)碼管顯示“1”。(6)、數(shù)碼管顯示“2、……”直到“9、A、B、C、D、E、F、Y”。(7)、蜂鳴器發(fā)出九聲報(bào)警聲后重復(fù)上面所有步驟。(8)程序如下:ORG 0000H;偽指令,定義下面的程序代碼(機(jī)器代碼)從地址為0000H的單元存放。LJMP START;跳轉(zhuǎn)到標(biāo)號(hào)為START的地方去執(zhí)行。ORG 0030H;偽指令,定義下面的程序代碼(機(jī)器代碼)從地址為0030H的單元存放。START:MOV P1,#0FEH ;點(diǎn)亮第一個(gè)發(fā)光二極管。CLR P2.7 ;送低電平到第一個(gè)數(shù)碼管,開(kāi)啟數(shù)碼管。CLR P2.6 ;送低電平到第二個(gè)數(shù)碼管,開(kāi)啟數(shù)碼管。MOV P0,#06H;讓數(shù)碼管顯示“1” 。LCALL DELAY;調(diào)用延時(shí)子程序,起到延時(shí)的目的。MOV P1,#0FDH;點(diǎn)亮第二個(gè)發(fā)光二極管。MOV P0,#5bH;讓數(shù)碼管顯示“2” 。LCALL DELAY;調(diào)用延時(shí)子程序,起到延時(shí)的目的。MOV P1,#0FBH;點(diǎn)亮第三個(gè)發(fā)光二極管。MOV P0,#4fH;讓數(shù)碼管顯示“3” 。LCALL DELAY;調(diào)用延時(shí)子程序,起到延時(shí)的目的。MOV P1,#0F7H;點(diǎn)亮第四個(gè)發(fā)光二極管。MOV P0,#66H;讓數(shù)碼管顯示“4” 。LCALL DELAY;調(diào)用延時(shí)子程序,起到延時(shí)的目的。MOV P1,#0EFH;點(diǎn)亮第五個(gè)發(fā)光二極管。MOV P0,#6dH;讓數(shù)碼管顯示“5” 。LCALL DELAY;調(diào)用延時(shí)子程序,起到延時(shí)的目的。MOV P1,#0DFH;點(diǎn)亮第六個(gè)發(fā)光二極管。MOV P0,#7dH;讓數(shù)碼管顯示“6” 。LCALL DELAY;調(diào)用延時(shí)子程序,起到延時(shí)的目的。MOV P1,#0BFH;點(diǎn)亮第七個(gè)發(fā)光二極管。MOV P0,#07H;讓數(shù)碼管顯示“7” 。LCALL DELAY;調(diào)用延時(shí)子程序,起到延時(shí)的目的。MOV P1,#7FH;點(diǎn)亮第八個(gè)發(fā)光二極管。MOV P0,#7fH;讓數(shù)碼管顯示“8” 。LCALL DELAY;調(diào)用延時(shí)子程序,起到延時(shí)的目的。MOV P1,#00H;滅了所有的發(fā)光二極管。MOV P0,#3FH;讓數(shù)碼管顯示“0” 。LCALL DELAY;調(diào)用延時(shí)子程序,起到延時(shí)的目的。MOV P0,#06H;讓數(shù)碼管顯示“1” 。LCALL DELAY;調(diào)用延時(shí)子程序,起到延時(shí)的目的。MOV P0,#5bH;讓數(shù)碼管顯示“2” 。LCALL DELAY;調(diào)用延時(shí)子程序,起到延時(shí)的目的。MOV P0,#4fH;讓數(shù)碼管顯示“3” 。LCALL DELAY;調(diào)用延時(shí)子程序,起到延時(shí)的目的。MOV P0,#66H;讓數(shù)碼管顯示“4” 。LCALL DELAY;調(diào)用延時(shí)子程序,起到延時(shí)的目的。MOV P0,#6dH;讓數(shù)碼管顯示“5” 。LCALL DELAY;調(diào)用延時(shí)子程序,起到延時(shí)的目的。MOV P0,#7dH;讓數(shù)碼管顯示“6” 。LCALL DELAY;調(diào)用延時(shí)子程序,起到延時(shí)的目的。MOV P0,#07H;讓數(shù)碼管顯示“7” 。LCALL DELAY;調(diào)用延時(shí)子程序,起到延時(shí)的目的。MOV P0,#7fH;讓數(shù)碼管顯示“8” 。LCALL DELAY;調(diào)用延時(shí)子程序,起到延時(shí)的目的。MOV P0,#6fH;讓數(shù)碼管顯示“9” 。LCALL DELAY;調(diào)用延時(shí)子程序,起到延時(shí)的目的。MOV R4,#9;送蜂鳴器的報(bào)警次數(shù)。LOOP:SETB P2.0;不發(fā)聲LCALL DELAY;調(diào)用延時(shí)子程序,起到延時(shí)的目的。CLR P2.0;發(fā)聲。LCALL DELAY;調(diào)用延時(shí)子程序,起到延時(shí)的目的。DJNZ R4,LOOP;發(fā)聲九次后向下執(zhí)行。SETB P2.0;關(guān)閉發(fā)聲LJMP START;跳轉(zhuǎn)到標(biāo)號(hào)為START處執(zhí)行,循環(huán)本程序。DELAY:MOV R7,#200;這是延時(shí)子程序。D1:MOV R6,#200D2:MOV R5,#200D3:DJNZ R5,D3DJNZ R6,D2DJNZ R7,D1RET;延時(shí)子程序返回指令。END;結(jié)束偽指令。
09調(diào)試和編譯
利用KEIL C51 軟件對(duì)上面的程序進(jìn)行調(diào)試和編譯,產(chǎn)生*.HEX文件,以便用編程器寫(xiě)入單片機(jī)芯片中。
10編程器的使用
用編程器把電腦里生成的*.HEX文件寫(xiě)到芯片中。
11產(chǎn)品調(diào)試
通上4.5V(三節(jié)電池)的電源,可以調(diào)試本系統(tǒng),如果沒(méi)有錯(cuò)誤就可以正常工作了。
版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系刪除。