|
一、確定任務 開發單片機最小系統 二、任務分析: 該系統具有的功能: (1)具有2位LED數碼管顯示功能。 (2)具有八路發光二極管顯示各種流水燈。 (3)可以完成各種奏樂,報警等發聲音類實驗。 (4)具有復位功能。 三、功能分析 (1)兩位LED數碼管顯示功能,我們可以利用單片機的P0口接兩個數碼管來現這個功能; (2)八路發光二極管顯示可以利用P1口接八個發光二極管實現這個功能; (3)各種奏樂、報警等發聲功能可以采用P2.0這個引腳接一蜂鳴器來實現。 (4)利用單片機的第9腳可以設計成復位系統,我們采用按鍵復位;利用單片機的18、19腳可以設計成時鐘電路,我們利用單片機的內部振蕩方式設計的。 四、設計框圖
五、硬件電路設計 根據本系統的功能,和單片機的工作條件,我們設計出下面的電路圖。
六、元件清單的確定: 數碼管:共陰極2只(分立) 電解電容:10UF的一只 30PF的電容2只 220歐的電阻9只 4.7K的電阻一只 1.2K的電阻一只 4.7K的排阻一只, 12MHZ的晶振一只 有源5V蜂名器一只 AT89S51單片機一片 常開按鈕開關1只 緊鎖座一只(方便芯取下來的,綠色的) 發光二極管(5MM紅色)8只 萬能板電路版15*17CM S8550三極管一只 4.5V電池盒一只,導線若干。 七、硬件電路的焊接 按照原理圖把上面的元件焊接好,詳細步驟省略。
八、相關程序編寫 針對上面的電路原理圖,設計出本系統的詳細功能: (1)、第一個發光二極管點亮,同時數碼管顯示“1”。 (2)、第二個發光二極管點亮,同時數碼管顯示“2”。 (3)、依次類推到第八個發光二極管點亮,同時數碼管顯示“8”。 以上出現的是流水燈的效果 (4)、所有的發光二極管滅了,同時數碼管現實“0”。 (5)、數碼管顯示“1”。 (6)、數碼管顯示“2、……”直到“9、A、B、C、D、E、F、Y”。 (7)、蜂鳴器發出九聲報警聲后重復上面所有步驟。
(8)程序如下:
ORG 0000H;偽指令,定義下面的程序代碼(機器代碼)從地址為0000H的單元存放。 LJMP START;跳轉到標號為START的地方去執行。 ORG 0030H;偽指令,定義下面的程序代碼(機器代碼)從地址為0030H的單元存放。 START:MOV P1,#0FEH ;點亮第一個發光二極管。 CLR P2.7 ;送低電平到第一個數碼管,開啟數碼管。 CLR P2.6 ;送低電平到第二個數碼管,開啟數碼管。 MOV P0,#06H;讓數碼管顯示“1” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P1,#0FDH;點亮第二個發光二極管。 MOV P0,#5bH;讓數碼管顯示“2” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P1,#0FBH;點亮第三個發光二極管。 MOV P0,#4fH;讓數碼管顯示“3” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P1,#0F7H;點亮第四個發光二極管。 MOV P0,#66H;讓數碼管顯示“4” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P1,#0EFH;點亮第五個發光二極管。 MOV P0,#6dH;讓數碼管顯示“5” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P1,#0DFH;點亮第六個發光二極管。 MOV P0,#7dH;讓數碼管顯示“6” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P1,#0BFH;點亮第七個發光二極管。 MOV P0,#07H;讓數碼管顯示“7” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P1,#7FH;點亮第八個發光二極管。 MOV P0,#7fH;讓數碼管顯示“8” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P1,#00H;滅了所有的發光二極管。 MOV P0,#3FH;讓數碼管顯示“0” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P0,#06H;讓數碼管顯示“1” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P0,#5bH;讓數碼管顯示“2” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P0,#4fH;讓數碼管顯示“3” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P0,#66H;讓數碼管顯示“4” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P0,#6dH;讓數碼管顯示“5” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P0,#7dH;讓數碼管顯示“6” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P0,#07H;讓數碼管顯示“7” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P0,#7fH;讓數碼管顯示“8” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P0,#6fH;讓數碼管顯示“9” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P0,#7fH;讓數碼管顯示“A” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P0,#7fH;讓數碼管顯示“b” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P0,#7fH;讓數碼管顯示“C” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P0,#7fH;讓數碼管顯示“d” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P0,#7fH;讓數碼管顯示“E” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P0,#7fH;讓數碼管顯示“F” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV P0,#7fH;讓數碼管顯示“Y” 。 LCALL DELAY;調用延時子程序,起到延時的目的。 MOV R4,#9;送蜂鳴器的報警次數。 LOOP:SETB P2.0;不發聲 LCALL DELAY;調用延時子程序,起到延時的目的。 CLR P2.0;發聲。 LCALL DELAY;調用延時子程序,起到延時的目的。 DJNZ R4,LOOP;發聲九次后向下執行。 SETB P2.0;關閉發聲 LJMP START;跳轉到標號為START處執行,循環本程序。 DELAY:MOV R7,#200;這是延時子程序。 D1:MOV R6,#200 D2:MOV R5,#200 D3:DJNZ R5,D3 DJNZ R6,D2 DJNZ R7,D1 RET;延時子程序返回指令。 END;結束偽指令。 九、利用KEIL C51 軟件對上面的程序進行調試和編譯,產生*.HEX文件,以便用編程器寫入單片機芯片中。 十、編程器的使用:用編程器把電腦里生成的*.HEX文件寫到芯片中。 十一、產品調試:通上4.5V(三節電池)的電源,可以調試本系統,如果沒有錯誤就可以正常工作了。
(以上程序在調試是會提示錯誤,錯誤原因正在調查中)
本篇文章來源于 電子開發網 轉載請以鏈接形式注明出處 網址:http://www.dzkfw.com.cn/Article/danpianji/226.html
|