第一篇:單片機課程設計說明書
目錄
引言 ?????????????????????????
第1章 設計目的及意義?????????????????
第2章 設計內(nèi)容及要求?????????????????
2.1 設備與器材??????????????????? 2.3 設計過程????????????????????
第3章 設計感想????????????????????
第4章 參考文獻????????????????????
附錄
程序編碼???????????????????????
引言
LED顯示屏是利用發(fā)光二極管點陣模式或像素單元組成的平面式顯示屏幕,廣泛應用于學校,銀行,商店等公共場所的信息發(fā)布和廣告宣傳
生活中可以看到各式各樣的廣告流水燈,有單一顏色的幾個燈按固定的次序點亮,有多個不同顏色的燈構成某一圖案依次點亮的,也有多排廣告燈按多種組合好的次序循環(huán)點亮的等。我們設計的廣告流水燈,就是這些廣告燈中的類型,我們雖然學習了單片機的一些基礎知識,做過一些小設計,但是沒有系統(tǒng)的總結,通過此次的課程設計,使自己的經(jīng)驗得到了理論上的升華。
為了實現(xiàn)用單片機對廣告燈實行控制,我們先進行編程,畫出接線圖,流程圖和寫出指令再運行程序,然后根據(jù)實際情況對程序進行調(diào)試和完善。
第1章 設計目的及意義
1.1 設計是對《電工學》和《單片機原理與應用系統(tǒng)設計》課程理論知識的理解和應用,培養(yǎng)動手能力和解決實際問題的經(jīng)驗; 1..2 通過實驗提高對單片機的認識;
1.3 通過實驗提高電路焊接,合理布局,電路檢查的能力; 1.4 進一步熟悉和掌握單片機的結構及工作原理; 1.5 提高軟件調(diào)試的能力;
1.6 掌握AT89S5單片機系統(tǒng)中各個管腳的作用;
1.7 通過系統(tǒng)的設計過程,提高分析問題,解決問題的能力; 1.8 培養(yǎng)團隊意識和協(xié)同合作能力;
第2章 設計內(nèi)容及要求
2.1 設備與器材
AT89S51簡介
AT89S51是一個低功耗,高性能8位單片機,片內(nèi)含4k Bytes的可反復擦寫1000次的只讀程序存儲器,器件采用高密度、非易失性存儲技術制造,兼容標準MCS-51指令系統(tǒng)及80C51引腳結構,芯片內(nèi)集成了通用8位中央處理器和ISP Flash儲存單元,AT89S51在眾多嵌入式控制應用系統(tǒng)中得到廣泛應用。管腳說明
VCC:電源電壓輸入端。
GND:電源地。
P0口:P0口為一個8位級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。
PDIP封裝的AT89S51管腳圖
P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。
P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地
址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。
P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口除了作為普通I/O口,還有第二功能:
P3.0 RXD(串行輸入口)
P3.1 TXD(串行輸出口)
P3.2 /INT0(外部中斷0)
P3.3 /INT1(外部中斷1)
P3.4 T0(T0定時器的外部計數(shù)輸入)
P3.5 T1(T1定時器的外部計數(shù)輸入)
P3.6 /WR(外部數(shù)據(jù)存儲器的寫選通)
P3.7 /RD(外部數(shù)據(jù)存儲器的讀選通)
P3口同時為閃爍編程和編程校驗接收一些控制信號 發(fā)光二極管
發(fā)光二極管簡稱為LED。由鎵(Ga)與砷(AS)、磷(P)的化合物制成的二極管,當電子與空穴復合時能輻射出可見光,因而可以用來制成發(fā)光二極管。在電路及儀器中作為指示燈,或者組成文字或數(shù)字顯示。磷砷化鎵二極管發(fā)紅光,磷化鎵二極管發(fā)綠光,碳化硅二極
管發(fā)黃光
發(fā)光二極管是半導體二極管的一種,可以把電能轉化成光能;常簡寫為LED。發(fā)光二極管與普通二極管一樣是由一個PN結組成,也具有單向?qū)щ娦?。當給發(fā)光二極管加上正向電壓后,從P區(qū)注入到N區(qū)的空穴和由N區(qū)注入到P區(qū)的電子,在PN結附近數(shù)微米內(nèi)分別與N區(qū)的電子和P區(qū)的空穴復合,產(chǎn)生自發(fā)輻射的熒光。不同的半導體材料中電子和空穴所處的能量狀態(tài)不同。當電子和空穴復合時釋放出的能量多少不同,釋放出的能量越多,則發(fā)出的光的波長越短。常用的是發(fā)紅光、綠光或黃光的二極管。
發(fā)光二極管的核心部分是由P型半導體和N型半導體組成的晶片,在P型半導體和N型半導體之間有一個過渡層,稱為PN結。在某些半導體材料的PN結中,注入的少數(shù)載流子與多數(shù)載流子復合時會把多余的能量以光的形式釋放出來,從而把電能直接轉換為光能。PN結加反向電壓,少數(shù)載流子難以注入,故不發(fā)光。這種利用注入式電致發(fā)光原理制作的二極管叫發(fā)光二極管,通稱LED。當它處于正向工作狀態(tài)時(即兩端加上正向電壓),電流從LED陽極流向陰極時,半導體晶體就發(fā)出從紫外到紅外不同顏色的光線,光的強弱與電流有關。
2.2 設計要求
本設計使用AT89C51芯片作為控制芯片,利用P0、P1、P2、P3口
連接共4*8個發(fā)光二極管,各個端口電平的高低控制32個燈的亮或滅,以達到各種各樣的顯示效果。開始時所有燈全暗,通過燒錄軟件時開始跑馬燈,并要求有多種亮暗組合
2.3設計過程 2.31設計效果圖 2.32設計電路原理圖
將32個發(fā)光二極管組成4*8的矩形圖形,分別接到P0、P1、P2、P3引腳上。發(fā)光二極管有兩個引腳,較長的表示正極,較短的表示負極。32個發(fā)光二極管共陽極連接。具體連接見電路原理圖
2.33 按照電路原理圖焊接實際電路圖
焊接注意事項:
1.芯片與底座都是有方向的,焊接時,要嚴格按照PCB板上的缺口所指的方向,使芯片,底座與PCB三者的缺口都對應。2.焊接時,要使焊點周圍都有錫,將其牢牢焊住,防止虛焊。3.在焊接圓形的極性電容器時(一般電容值都是比較大的),其電容器的引腳是分長短的,以長腳對應“+”號所在的孔。
4.芯片在安裝前最好先兩邊的針腳稍稍彎曲,使其有利于插入底座對應的插口中。.取電阻時,找到所需電阻后,拿剪刀剪下所需數(shù)目電阻,并寫上電阻,以便查找。
6.裝完同一種規(guī)格后再裝另一種規(guī)格,盡量使電阻器的高低一致。
焊完后將露在印制電路板表面多余引腳齊根剪去。
7.焊接集成電路時,先檢查所用型號,引腳位置是否符合要求。焊接時先焊邊沿對腳的二只引腳,以使其定位,然后再從左到右自上而下逐個焊接。
8.對引腳過長的電器元件(如電容器,電阻等),焊接完后,要將其剪短。
9.焊接后用放大鏡查看焊點,檢查是否有虛焊以及短路的情況的發(fā)生。
10.當有連線接入時,要注意不要使連線深入過長,以至于將其旋在電線的橡膠皮上,出現(xiàn)斷路的情況。
12.當電路連接完后,最好用清洗劑對電路的表面進行清洗,以防電路板表面附著的鐵屑使電路短路。
13.當最后組轉時,應將連線扎起,以防線路混亂交叉。14.焊接上錫時,錫不宜過多,當焊點焊錫錐形時,即為最好
2.33 編寫程序 見附圖
2.4 最終效果圖 見附圖
第3章 設計感想
通過此次課程設計使我的理論與實際得到結合,擺脫了單純的理論知識學習,通過試驗加深了我對課本知識的理解,運用所學知識進行簡單的程序設計。了解了在單片機系統(tǒng)中擴展簡單I/O接口的方
法,外部中斷技術的基本使用方法,掌握了中斷處理程序的編程方法。在設計過程中,不斷調(diào)試和修改程序,提高了對單片機的應用能力,分析和解決問題的能力。此次課程設計鍛煉了我綜合運用所學的專業(yè)基礎知識,解決實際問題的能力,這次設計讓我積累了很多經(jīng)驗。能夠順利如期完成此次課程設計,有賴于小組成員的積極協(xié)同配合,在合作中提高了我們的合作意識和協(xié)同合作能力。盡管設計過程中困難很多,不斷的修改調(diào)試,但是最終達到了預期的目的
第4章 參考文獻
【1】 歐偉明等﹒單片機原理與應用系統(tǒng)設計.北京:電子工業(yè)出版社,2009
第二篇:單片機課程設計電子時鐘說明書
《電子時鐘》 課程設計說明書
專業(yè)班級:
11級自動化<3>班
姓
名: 歐陽明長 李徐軍
陳龍
指導教師:
郭
玉
設計時間:
2013--12--17
物理與電氣工程學院
2013年12月17日
摘要
電子鐘在生活中應用非常廣泛,而一種簡單方便的數(shù)字電子鐘則更能受到人們的歡迎。所以設計一個簡易數(shù)字電子鐘很有必要。本電子鐘采用STC公司的AT89S52單片機為核心,使用12MHz 晶振與單片機AT89S52 相連接,通過軟件編程的方法實現(xiàn)以24小時為一個周期,同時8位7段LED數(shù)碼管(兩個四位一體數(shù)碼管)顯示小時、分鐘和秒的要求,并在計時過程中具有定時功能,當時間到達提前定好的時間進行蜂鳴報時。該電子鐘設有四個按鍵S12、S13、S14和S15鍵,進行相應的操作就可實現(xiàn)小時調(diào)整、分鐘調(diào)整和啟停功能。具有時間顯示、整點報時、校正等功能。走時準確、顯示直觀、運行穩(wěn)定等優(yōu)點。
關鍵詞 電子鐘;AT89S52;硬件設計;軟件設計
目錄 設計課題任務、功能要求說明及方案介紹……………………………………3 1.1 設計課題任務………………………………………………………………3 1.2 功能要求說明………………………………………………………………3 1.3 設計總體方案介紹及原理說明……………………………………………3 2 設計課題硬件系統(tǒng)的設計………………………………………………………3 2.1 設計課題硬件系統(tǒng)各模塊功能簡要介紹…………………………………4 3 設計課題軟件系統(tǒng)的設計………………………………………………………4 3.1 設計課題軟件系統(tǒng)各模塊功能簡要介紹…………………………………4 3.2 設計課題軟件系統(tǒng)程序流程框圖…………………………………………4 4 設計結論、仿真結果、誤差分析………………………………………………7 4.1 設計課題的設計結論及使用說明…………………………………………4 4.2 設計課題的誤差分析………………………………………………………7 4.3 設計體會……………………………………………………………………7 參考文獻 ……………………………………………………………………………7 附 錄 ……………………………………………………………………………8 1 設計課題任務、功能要求說明及方案介紹
1.1 設計課題任務
設計一個具有特定功能的電子鐘。具有啟停、時間顯示、報時等功能。并有時間設定,時間調(diào)整功能。
1.2 功能要求說明
設計一個具有特定功能的電子鐘。電子鐘上電從12時0分0秒開始運行,按下啟停鍵進入時鐘運行狀態(tài);再按啟停鍵暫停運行,并且再次按下時能夠在原來的時間上繼續(xù)計時;運行到整點是能夠自動響鈴,通過外部按鍵可以進行實踐的調(diào)整,并且在運行時相應的LED燈等同步亮滅。
1.3 設計課題總體方案介紹及工作原理說明
本電子鐘主要由單片機、4*4獨立鍵盤、顯示接口電路和電源電路構成,設 計課題的總體方案如圖1.1所示:
圖1.1 總體設計方案圖
本電子鐘的所有的程序、參數(shù)均存放在AT89S52的內(nèi)部RAM中。鍵盤采用動態(tài)掃描方式。利用單片機定時器產(chǎn)生定時效果通過編程形成數(shù)字鐘效果,再利用數(shù)碼管動態(tài)掃描顯示單片機內(nèi)部處理的數(shù)據(jù),同時通過端口讀入當前外部控制狀態(tài)來改變程序的不同狀態(tài),實現(xiàn)不同功能。設計課題硬件系統(tǒng)的設計 2.1 設計課題硬件系統(tǒng)各模塊功能簡要介紹
本設計的硬件系統(tǒng)主要采用以下基本模塊來實現(xiàn),單片機最小系統(tǒng)模塊,輸入模塊、輸出模塊、電源模塊。
(1)單片機最小系統(tǒng)模塊:包括8位微控制器AT89S52;電源復位電路;晶振電路。本模塊AT89S52系統(tǒng)控制核心,單片機系統(tǒng)復位由電源上電完成。
(2)輸入模塊:本模塊共用到了4個按鍵(S12、S13、S14、S15),分別完成時間的調(diào)整、啟停。1個電源開關(具有復位功能)。
(3)輸出模塊:本次設計顯示為8位,采用兩個四位一體數(shù)碼管(共陽極)8個PNP三極管驅(qū)動,并且還有蜂鳴器模塊。(4)電源模塊:USB供電及下載器。
設計課題軟件系統(tǒng)的設計
3.1 設計課題軟件系統(tǒng)個模塊功能簡要介紹
本設計的軟件系統(tǒng)主要采用以下基本模塊來實現(xiàn),主程序、中斷服務程序、鍵盤輸入程序模塊、數(shù)碼管及其驅(qū)動模塊和延時模塊。
主程序:主要是用于對輸入信號的處理、輸出信號的控制和對各個功能程序模塊的控制。
中斷服務程序:主要是用于電子鐘的1S延時。鍵盤輸入程序模塊:主要是用于完成特定時間調(diào)整。
數(shù)碼管及其驅(qū)動模塊:主要是用于驅(qū)動數(shù)碼管及利用數(shù)碼管顯示時間。延時模塊:短延時用于數(shù)據(jù)的動態(tài)顯示,按鍵的判斷。
3.2 設計課題軟件系統(tǒng)程序流程框圖
系統(tǒng)程序采用匯編語言按模塊化方式進行設計,然后通過Keil軟件開發(fā)平臺將程序轉變成可燒寫文件。
主循環(huán)程序框圖如3.1所示;判斷進位程序如3.2所示; 計時一秒中斷程序如3.3所示; 啟停中斷框圖如3.4所示; 延時子程序框圖如3.5所示; 圖3.1 主循環(huán)程序 5
圖3.2 判斷進位子程序
圖3.3 計時一秒中斷
圖3.4 啟停中斷程序
圖3.5 延時子程序 設計結論、運行結果、誤差分析
4.1 設計課題的設計結論及使用說明
本設計為基于單片機的電子鐘的設計。剛開始,我們很多地方理不清頭緒,無從下手,只能從平時的實驗中得到一些方法,但通過認真研究設計課題,找書上網(wǎng)查資料,確定基本設計方案,對所用芯片功能進行查找、調(diào)試,設計中有四個按鍵,其中S12為分鐘加1調(diào)整,S13為小時加1調(diào)整,S14為外部響鈴按鍵,S15為啟停按鍵,另外當整點時間到時,蜂鳴器報警。這樣的結果與設計基本相符,基本上完成了設計任務。
4.2 設計課題的誤差分析
該電子鐘在運行中存在一定的誤差,誤差產(chǎn)生有三種原因,首先是采用的計時利用中斷來實現(xiàn)。而當電子鐘運行時間1秒時,又得去執(zhí)行中斷程序,這個過程需要幾個機器周期。第二,硬件系統(tǒng)有一定的影響。第三,設計用到12MHz晶振,計算是滿20次為一秒鐘,實際會慢很多。
4.3 設計體會
本次課程設計,讓我們?nèi)耸芤娣藴\,認識到了自己的許多缺點和不足,使我深深的感受到了理論聯(lián)系實際的必要性及其重要性。
參考文獻
[1] 李全利.單片機原理與接口技術[M].高等教育出版社.2009.1.[2] 劉文秀.單片機應用系統(tǒng)仿真的研究[J].現(xiàn)代電子技術.2005, 第286 期.[3] 胡學海.單片機原理及應用系統(tǒng)設計[M],北京:電子工業(yè)出版社,2005.[4] 李廣第.單片機基礎[M],北京航空航天大學出版社,2006.7.附錄
程序代碼為:
ORG 0000H LJMP START ORG 0003H LJMP INTT0 ORG 0013H LJMP INTT1 ORG 000BH LJMP INTT ORG 0100H START:SETB EA SETB ET0 SETB IT0 SETB EX0 SETB IT0 SETB EX1 SETB IT1 MOV R7,#16 MOV TMOD,#01H MOV TH0,#15536/256 MOV TL0,#15536 MOD 256 MOV R0,#12 MOV R1,#0 MOV R2,#0 MOV R6,0FEH CLR TR0 L1:
LCALL PANDUAN;*****************
;記秒
MOV A,R2
MOV B,#10
DIV AB
MOV P2,#0FDH
LCALL XIANSHI
LCALL DELAY
MOV A,B
MOV P2,#0FEH
LCALL XIANSHI
LCALL DELAY;***************
;調(diào)分
JB P3.0,L40 L41:JB P3.0,L42 LJMP L41 L42:INC R1
;計分
L40: MOV A,R1
MOV B,#10
DIV AB
MOV P2,#0EFH
LCALL XIANSHI
LCALL DELAY
MOV A,B
MOV P2,#0F7H
LCALL XIANSHI
LCALL DELAY
MOV P2,#0FBH
MOV P0,#0BFH
LCALL DELAY;******************
;調(diào)時
JB P3.1,L45 L47:JB P3.1,L46 LJMP L47 L46:INC R0
;計時
L45: MOV A,R0
MOV B,#10
DIV AB
MOV P2,#07FH
LCALL XIANSHI
LCALL DELAY
MOV A,B
MOV P2,#0BFH
LCALL XIANSHI
LCALL DELAY
MOV P2,#0DFH
MOV P0,#0BFH
LCALL DELAY
;*************************;判斷5分鐘鬧鈴
CJNE R1,#5,L51
CLR P3.5
MOV P1,R6
MOV A,R6
RL A
MOV R6,A
LJMP L52 L51:CJNE R1,#6,L52
SETB P3.5 L52: LJMP L1
;***************;執(zhí)行1秒鐘
INTT:DJNZ R7,L33
MOV R7,#16
INC R2
MOV P1,R6
MOV A,R6
RL A
MOV R6,A L33:RETI;*********************
;外部中斷
INTT0:CPL P3.5
MOV P1,#0
RETI;***********************
;啟停功能
INTT1:MOV P1,#0
LCALL DELAY
JB P3.3,L97
CPL TR0
L97: RETI;**********************
;顯示子程序
XIANSHI:MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
RET
;**********************
;延時子程序
DELAY:MOV R3,#20
DEL1:MOV R4,#50
DEL2:DJNZ R4,DEL2
DJNZ R3,DEL1
RET
;*******************
;判斷進位子程序
PANDUAN:
CJNE R2,#60,L31
MOV R2,#0
INC R1
L31:CJNE R1,#60,L32
MOV R1,#0
INC R0
L32:CJNE R0,#24,L35
MOV R0,#0
L35:RET
;********************
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H
END
第三篇:單片機課程設計說明書通用格式
單片機課程設計說明書通用格式
課程設計經(jīng)常做的題目:
可調(diào)節(jié)的時鐘
電子密碼鎖
計算器
鍵盤顯示
音樂播放器
紅外
液晶顯示
設計要求和條件
根據(jù)單片機開發(fā)板所提供的元件特性和硬件電路,編寫相關的程序,通過實驗開發(fā)板實現(xiàn)XXXXXXX功能。
1、搭建仿真電路圖,模擬單片機要實現(xiàn)的功能
2、焊接單片機開發(fā)板
3、編寫程序
4、下載并調(diào)試,實現(xiàn)功能
功能介紹:基本功能和擴展功能介紹(諸如按下什么按鍵顯示什么)
設計目的:(用到多少寫多少,也可以添加)
1、熟練掌握KEIL軟件的使用方法
2、熟練掌握PROTEUS軟件的使用方法
3、掌握單片機I/O接口的工作原理
4、掌握中斷系統(tǒng)的工作原理
5、掌握動態(tài)LED顯示器的工作原理及編程方法
6、掌握蜂鳴器的編程使用
7、掌握行列式鍵盤的工作原理及編程使用方法
8、掌握單片機的下載使用方法
設計方案論證:
方案一:XXXXXXXX。流程圖或者結構圖
方案二:XXXXXXXX流程圖或者結構圖
方案三:XXXXXXXXX流程圖或者結構圖
經(jīng)過對比,使用方案X。
設計結果分析:
編寫的程序能夠?qū)崿F(xiàn)預想的功能,具體功能實現(xiàn):XXXXXXXXX
設計過程中遇到的問題,怎么解決的。
設計體會:
通過課程設計,將前面所學的知識進行了綜合總結和運用,提高了知識的運用能力,培養(yǎng)了實際動手能力。Xxxxxxxxxxxxx
參考文獻:XXXXXXXX
附錄:仿真圖和程序
第四篇:單片機課程設計
設計題目: 單片機課程設計
學生姓名:
學
院: 電氣與信息工程學院
班
級: 電子111班 指導教師:
日 期: 2014年9月20日
一、課程設計目的:
了解電子元器件的功能與原理,掌握單片機的結構和原理,學會使用單片機應用開發(fā)技術的相關軟件如 keill、STC_ISP_V394等,能夠使用c語言的語言編程簡單的功能。
二、設計的思想:
利用所提供的單片機和開發(fā)板的原理圖用keill軟件編程程序以實現(xiàn)一些功能。然后用STC_ISP_V394.exe軟件將編譯完全正確的程序生成的hxe文件下載到開發(fā)板上,再調(diào)試編譯的程序能否實現(xiàn)其所設計的功能。
1、對蜂鳴器的了解:
蜂鳴器是一種一體化結構的電子訊響器,采用直流電壓供電,它由振蕩器、電磁線圈、磁鐵、振動膜片及外殼組成,接通電源后,振蕩器產(chǎn)生的音頻信號由電流通過電磁線圈,使電磁線圈產(chǎn)生磁場,振動膜片在電磁線圈和磁鐵的相互作用下,周期性的振動發(fā)聲。
2、設計:
我們所使用的開發(fā)板實物圖如圖一,單片機對右上角蜂鳴器的控制是加入三極管接入vcc,單片機的第22引腳和負極上,以此來控制蜂鳴器工作。單片機我們選擇STC89C52RC+1602液晶來實現(xiàn)對蜂鳴器的控制及顯示所需要的信息。
圖一 調(diào)試說明:
首先用Keil軟件創(chuàng)建一個工程,將程序源代碼輸入并編譯生成單片可執(zhí)行的.hex文件。其次,打開單片機實踐板的電源,接好串口線,用STC-ISP燒錄軟件,將.hex文件燒錄入單片機中。程序下載完畢后,單片機會自動執(zhí)行程序功能。最后,觀察程序功能的執(zhí)行情況,看是否達到了設計要求。
如果單片機實踐板硬件電路的執(zhí)行結果與設計結果一致,則說明設計過程及流程沒有問題,完全符合設計要求。否則,先檢查單片機實踐板的硬件電路是否完好,是否有斷點、漏焊、虛焊以及元器件是否完好等情況,排除故障重新連接后重新進行調(diào)試。如果仍然無法正
常實現(xiàn),則說明程序編寫有誤,需要認真檢查程序流程,然后經(jīng)過反復的修改與調(diào)試排除故障,實現(xiàn)設計要求的各項功能。編譯和燒寫該程序到單片機:
(1)用Keil編譯上面的代碼,并設置產(chǎn)生16進制代碼文件*.hex.(2)用專用下載線,連接好實驗板和電腦串口(DB9)(2)運行hex文件燒寫軟件STC_ISP_V394.exe
選單片機的型號,并打開編譯產(chǎn)生好的hex文件
點擊下載,給開發(fā)板上電。
3、實現(xiàn)的功能:使用單片機將歌曲《八月桂花》的調(diào)子通過蜂鳴器播放出來,用1602液晶將想要表達的信息有步驟地顯示在液晶顯示屏上,并且調(diào)子與顯示內(nèi)容可以任意通過修改的程序燒錄到單片機內(nèi),實現(xiàn)設計產(chǎn)品的使用性與靈活性。
三、實驗程序:
/************************************************************************
[主題] C51音樂程序《八月桂花》
[功能]
通過單片機演奏音樂,顯示一些內(nèi)容
/**********************************************************************/
#include
#include
//本例采用89C52, 晶振為11.0592MHZ
//關于如何編制音樂代碼, 其實十分簡單,各位可以看以下代碼.//頻率常數(shù)即音樂術語中的音調(diào),而節(jié)拍常數(shù)即音樂術語中的多少拍;
//所以拿出譜子, 試探編吧!
unsigned char i=0;sbit Beep = P2^7;
unsigned char p,m;
//m為頻率常數(shù)變量
unsigned char n=0;//n為節(jié)拍常數(shù)變量
unsigned char code music_tab[] ={
0x18, 0x30, 0x1C , 0x10, //格式為: 頻率常數(shù), 節(jié)拍常數(shù), 頻率常數(shù), 節(jié)拍常數(shù),0x20, 0x40, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x10,0x1C, 0x10, 0x18 , 0x40,0x1C, 0x20, 0x20 , 0x20,0x1C, 0x20, 0x18 , 0x20,0x20, 0x80, 0xFF , 0x20,0x30, 0x1C, 0x10 , 0x18,0x20, 0x15, 0x20 , 0x1C,0x20, 0x20, 0x20 , 0x26,0x40, 0x20, 0x20 , 0x2B,0x20, 0x26, 0x20 , 0x20,0x20, 0x30, 0x80 , 0xFF,0x20, 0x20, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x20, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x30, 0x1C , 0x10,0x18, 0x20, 0x15 , 0x20,0x1C, 0x20, 0x20 , 0x20,0x26, 0x40, 0x20 , 0x20,0x2B, 0x20, 0x26 , 0x20,0x20, 0x20, 0x30 , 0x80,0x20, 0x30, 0x1C , 0x10,0x20, 0x10, 0x1C , 0x10,0x20, 0x20, 0x26 , 0x20,0x2B, 0x20, 0x30 , 0x20,0x2B, 0x40, 0x20 , 0x15,0x1F, 0x05, 0x20 , 0x10,0x1C, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x30, 0x1C , 0x10,0x18, 0x20, 0x15 , 0x20,0x1C, 0x20, 0x20 , 0x20,0x26, 0x40, 0x20 , 0x20,0x2B, 0x20, 0x26 , 0x20,0x20, 0x20, 0x30 , 0x30,0x20, 0x30, 0x1C , 0x10,0x18, 0x40, 0x1C , 0x20,0x20, 0x20, 0x26 , 0x40,0x13, 0x60, 0x18 , 0x20,0x15, 0x40, 0x13 , 0x40,0x18, 0x80, 0x00
};
void int0()interrupt 1
//采用中斷0 控制節(jié)拍
{ TH0=0xd8;
TL0=0xef;
n--;
}
void delay(unsigned char m)
//控制頻率延時
{
unsigned i=3*m;
while(--i);
}
void delayms(unsigned char a)//豪秒延時子程序
{
while(--a);
//采用while(--a)不要采用while(a--);各位可編譯一下看看匯編結果就知道了!
}
typedef unsigned char BYTE;typedef bit BOOL;
sbit LCD_RS = P2^0;
sbit LCD_RW = P2^1;sbit LCD_EP = P2^2;
BYTE code dis1[] = {“
WLCOME TO
”};BYTE code dis2[] = {“
DanPianJi ”};BYTE code dis3[] = {“
111iZnaiD
”};BYTE code dis4[] = {“
eiXeiX ”};
delays(int ms){
// 延時子程序 int i;while(ms--){
for(i = 0;i< 250;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
} } }
BOOL lcd_bz(){
// 測試LCD忙碌狀態(tài) BOOL result;LCD_RS = 0;LCD_RW = 1;LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();result =(BOOL)(P0 & 0x80);LCD_EP = 0;return result;}
lcd_wcmd(BYTE cmd){
while(lcd_bz());LCD_RS = 0;LCD_RW = 0;LCD_EP = 0;_nop_();_nop_();P0 = cmd;_nop_();_nop_();_nop_();_nop_();LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();LCD_EP = 0;
}
lcd_pos(BYTE pos){
lcd_wcmd(pos | 0x80);
// 寫入指令數(shù)據(jù)到LCD //設定顯示位置
}
lcd_wdat(BYTE dat)
{
//寫入字符顯示數(shù)據(jù)到LCD while(lcd_bz());LCD_RS = 1;LCD_RW = 0;LCD_EP = 0;P0 = dat;_nop_();_nop_();_nop_();_nop_();LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();LCD_EP = 0;}
lcd_init(){
lcd_wcmd(0x38);
delays(1);lcd_wcmd(0x0c);
delays(1);lcd_wcmd(0x06);
delays(1);lcd_wcmd(0x01);
delays(1);}
void main()
{
BYTE j;
lcd_init();
delays(10);
//LCD初始化設定
//16*2顯示,5*7點陣,8位數(shù)據(jù)//顯示開,關光標 //移動光標 //清除LCD的顯示內(nèi)容
// 初始化LCD
lcd_wcmd(0x06);
//向右移動光標
lcd_pos(0);
//設置顯示位置為第一行的第1個字符
j = 0;
while(dis1[ j ]!= '