通過本次訓(xùn)練的實(shí)施,增進(jìn)對單片機(jī)的感性認(rèn)識,加深對單片機(jī)理論方面的理解,掌握單片機(jī)的內(nèi)部功能模塊的應(yīng)用,如定時(shí)器/計(jì)數(shù)器、中斷、片內(nèi)外存貯器、I/O口、串行口通訊等,了解和掌握單片機(jī)應(yīng)用系統(tǒng)的軟硬件設(shè)計(jì)過程、方法及實(shí)現(xiàn),為以后設(shè)計(jì)和實(shí)現(xiàn)單片機(jī)應(yīng)用系統(tǒng)打下良好基礎(chǔ)。通過設(shè)計(jì)練習(xí),以此達(dá)到鞏固、充實(shí)和綜合運(yùn)用所學(xué)知識解決實(shí)際問題的目的。
(1)繪制系統(tǒng)原理圖;
(2)編制軟件框圖;
(3)完成詳細(xì)完整的程序清單和注釋;
(4)寫出設(shè)計(jì)小結(jié),對在完成以上文件過程中所進(jìn)行的有關(guān)步驟、設(shè)計(jì)思想、指標(biāo)論證、方案確定、元器件選擇、原理分析等作出說明,并對所完成的設(shè)計(jì)作出評價(jià),對自己整個(gè)設(shè)計(jì)工作中經(jīng)驗(yàn)教訓(xùn),總結(jié)收獲和今后的研修方向。
1.3設(shè)計(jì)課題選題及任務(wù)要求
本次單片機(jī)開發(fā)設(shè)計(jì)課題選題為:整數(shù)計(jì)算器
課題要求:1、實(shí)現(xiàn)整數(shù)的加減乘除運(yùn)算;
用LCD1602顯示;
運(yùn)算支持混合運(yùn)算,考慮加減乘除的計(jì)算優(yōu)先級;
使用Proteus軟件仿真實(shí)現(xiàn)
如圖1所示,選用單片機(jī)STC90C52RC作為本課題設(shè)計(jì)的核心元件,利用單片機(jī)靈活的編程設(shè)計(jì)和IO端口,及其控制的準(zhǔn)確性。單片機(jī)的最小系統(tǒng)包括電源、時(shí)鐘電路、復(fù)位電路,搭建最小系統(tǒng)是實(shí)現(xiàn)單片操作的最基本的硬件電路要求。時(shí)鐘信號通常用兩種電路形式電路得到:內(nèi)部震蕩方式和外部中斷方式。在引腳XTAL1和XTAL2外部接晶振電路器(簡稱晶振)或陶瓷晶振器,就構(gòu)成了內(nèi)部晶振方式。由于單片機(jī)內(nèi)部有一個(gè)高增益反相放大器,當(dāng)外接晶振后,就構(gòu)成了自激振蕩器并產(chǎn)生振蕩時(shí)鐘脈沖。內(nèi)部振蕩方式的外部電路的起振電容值一般在5~30pf, 晶振頻率的典型值為12MHz,采用6MHz的情況也比較多。由于程序上需要使用串口工作在11920的波特率,為了更好地匹配該波特率,晶振采用11.0592MHz的晶振而不是常用的12MHz晶振。內(nèi)部振蕩方式所得的時(shí)鐘信號比較穩(wěn)定實(shí)用。顯示部分則用用PO口接上拉電阻再接LCD液晶顯示器,用P2.0接使能端EN,P2. 1接讀寫信號RW, P2.2接寄存器選擇端口RS,再接.上一個(gè)滑動(dòng)變阻器來調(diào)節(jié)LCD。按鍵部分實(shí)際上就是把每個(gè)按鍵所對應(yīng)的值經(jīng)過處理后發(fā)給單片機(jī),再在單片機(jī)內(nèi)把數(shù)字當(dāng)作指針指向所對應(yīng)的數(shù)字或運(yùn)算符。
2.2 具體功能模塊電路設(shè)計(jì)1)LCD1602液晶顯示電路 
圖2 LCD液晶顯示電路 如圖2所示,為了便于計(jì)算器的計(jì)算過程以及結(jié)果的顯示,方案采用了LCD1602的液晶來顯示。使用液晶比數(shù)碼管的優(yōu)勢很多,占用較少的I0口、更低的功耗、更簡單的控制過程、更強(qiáng)大的顯示能力。由于液晶顯示器每一一個(gè)點(diǎn)在收到信號后就一直保持那種色彩和亮度,恒定發(fā)光,而不像陰極射線管顯示器(CRT)那樣需要不斷刷新新亮點(diǎn)。因此,液晶顯示器畫質(zhì)高且不會(huì)閃爍,通過顯示屏上的電極控制液晶分子狀態(tài)來達(dá)到顯示的目的,在重量上比相同顯示面積的傳統(tǒng)顯示器要輕得多,相對而言,液晶顯示器的功耗主要消耗在其內(nèi)部的電極和驅(qū)動(dòng)IC上,因而耗電量比其它顯示器也要要少得多。原理是利用液晶的物理特性,通過電壓對其顯示區(qū)域進(jìn)行控制,有電就有顯示,這樣即可以顯示出圖形。 2)矩陣鍵盤輸入 
圖3 矩陣鍵盤 鍵盤是單片機(jī)系統(tǒng)中最常用的人機(jī)對話輸入設(shè)備,用戶通過鍵盤向單片機(jī)輸入數(shù)據(jù)或指令。鍵盤控制程序需完成的任務(wù)有:監(jiān)測是否有鍵按下,有鍵按下時(shí),在無硬件去抖的動(dòng)電路時(shí),應(yīng)用軟件延時(shí)方法消除按鍵抖動(dòng)影響;當(dāng)有多個(gè)鍵同時(shí)按下時(shí),只處理一一個(gè)按鍵,不管一次按鍵持續(xù)多長時(shí)間,僅執(zhí)行一次按鍵功能程序。 矩陣按鍵掃描程序是一種節(jié)省I0口的方法,按鍵數(shù)目越多節(jié)省I0口就越可觀,思路:先判斷某一列(行)是否有按鍵按下,再判斷該行(列)是那-一只鍵按下。但是,在程序的寫法上,采用了最簡單的方法,使得程序效率最高。本程序中,如果檢測到某鍵按下了,就不再檢測其它的按鍵,這完全能滿足絕大多數(shù)需要,又能節(jié)省大量的CPU時(shí)間。 本鍵盤掃描程序的優(yōu)點(diǎn)在于:不用專門的按鍵延時(shí)程序,提高了CPU 效率,也不用中斷來掃描鍵盤,節(jié)省了硬件資源。另外,本鍵盤掃描程序,每次掃描占用CPU時(shí)最短,不論有鍵按下或者無鍵按下都可以在很短的時(shí)間完成一次掃描。 6)最小單片機(jī)系統(tǒng) 
圖4 最小單片機(jī)系統(tǒng) STC89C52單片機(jī)性能穩(wěn)定,擁有1.4KBytc程序存儲器,內(nèi)置兩個(gè)16位定時(shí)計(jì)數(shù)器,利用單片機(jī)周期工作,方便控制且可靠性高,無需再擴(kuò)展外部存儲器,并且可將4個(gè)并行口全部作為輸入/輸出接口使用。CPU模塊主要依靠 AT89C52單片機(jī)強(qiáng)大的I/O口讀寫功能通過地址線和數(shù)據(jù)線實(shí)現(xiàn)對其他各模塊工作的管理。包含了全雙工串行接口,方便與電腦或其它終端通信。STC89C52有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,2 個(gè)讀寫口線,AT89C52可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和Flash存儲器結(jié)合在一起,特別是可反復(fù)擦寫的 Flash存儲器可有效地降低開發(fā)成本。 3. 程序設(shè)計(jì)3.1 程序結(jié)構(gòu) 圖5 程序結(jié)構(gòu)框圖 程序過程為:開始時(shí),LCD初始化,LCD右邊顯示“0.”,接下來向液晶屏輸入命令子函數(shù)以及數(shù)據(jù)子函數(shù),通過在液晶屏上顯示數(shù)組元素和字符串子函數(shù),把數(shù)據(jù)顯示出來,然后判斷數(shù)據(jù)是否顯示完,若顯示完則返回,若沒有則繼續(xù)傳送命令和數(shù)據(jù)。該系統(tǒng)程序主要由輸入模塊、運(yùn)算模塊和顯示模塊組成。編程是分模塊來調(diào)試,這樣方便調(diào)試方面修改,最后把各個(gè)模塊集合起來聯(lián)調(diào)。這也是編程調(diào)試中最重要的一個(gè)環(huán)節(jié)也是最耗時(shí)的。
3.2具體功能程序設(shè)計(jì) 1)主程序     圖6 主程序結(jié)構(gòu)框圖 系統(tǒng)主程序主要處理各模塊程序,開始時(shí)先執(zhí)行初始化,將顯示模塊和按鍵模塊初始化。接著當(dāng)按鍵按下去時(shí)進(jìn)行判斷如果有按鍵按下則一方面輸出按下的數(shù)字一方面將信息傳遞給數(shù)字、字符處理模塊,接著由處理模塊輸出給顯示器。 圖7 運(yùn)算子程序結(jié)構(gòu)框圖運(yùn)算模塊是根據(jù)你輸入的運(yùn)算符來運(yùn)算你輸入數(shù)據(jù)的結(jié)果。此系統(tǒng)有三個(gè)運(yùn)算符(平方、開方和階乘)只要就按下運(yùn)算符就直接得到運(yùn)算結(jié)果,剩下的運(yùn)算都是等“=”按下之后才顯示出結(jié)果。其中開方和X的n次方是調(diào)用了集成環(huán)境的math函數(shù)。此系統(tǒng)的運(yùn)算只在整數(shù)的基礎(chǔ)上運(yùn)算。流程圖如上。 4.系統(tǒng)運(yùn)行或調(diào)試4.1功能電路調(diào)試 1)加法的運(yùn)算調(diào)式 
圖8 加法運(yùn)算示例 當(dāng)正常開機(jī)后直接按鍵依次輸入“15+6=”之后即可顯示“=21”的字樣。如果輸入錯(cuò)誤需要重新輸入的話按鍵盤上對應(yīng)的“C”鍵即可清除。 圖9 乘法運(yùn)算示例 和加法的運(yùn)算過程相同,當(dāng)正常開機(jī)后直接按鍵依次輸入“56*8=”之后即可顯示“=448”的字樣。如果輸入錯(cuò)誤需要重新輸入的話按鍵盤上對應(yīng)的“C”鍵即可清除。
4.2系統(tǒng)綜合調(diào)試
圖10 實(shí)物圖 由于只支持整數(shù)的運(yùn)算,當(dāng)在進(jìn)行除法時(shí)運(yùn)算結(jié)果為小數(shù)時(shí)會(huì)報(bào)錯(cuò)顯示“ERROR”的字樣。這是一個(gè)不足之處,此后需要再代碼中完善此功能。當(dāng)給此單片機(jī)輸入hex工程文件后單片機(jī)內(nèi)的ROM會(huì)將程序保存下來。也就是說第一次運(yùn)行成功之后每次需要用時(shí)只需接通電源即可自動(dòng)運(yùn)行。 總結(jié) 通過這次單片機(jī)設(shè)計(jì)實(shí)訓(xùn),讓我更加深刻掌握了51單片機(jī)的原理和做實(shí)物PCB板的過程,同時(shí)也讓我學(xué)習(xí)了做一個(gè)完整的項(xiàng)目所需要的知識與技能。本次實(shí)訓(xùn)我選擇的是計(jì)算器項(xiàng)目。剛拿到這項(xiàng)目時(shí)我還沒有太多的想法,后來查閱了一下相關(guān)資料,就慢慢地有自己的思路和想法。后來就開始著手于這次的設(shè)計(jì)。為了提高效率和成功率了,先通過軟件來仿真調(diào)試電路及軟件。在軟件.上就比較容易完成電路的連接和調(diào)試,編寫的程序也可以在仿真電路上調(diào)試,方便快捷。有了調(diào)好的仿真圖及程序,再做PCB板來,根據(jù)實(shí)物再調(diào)試。這樣會(huì)有事半功倍的效果。此項(xiàng)目的程序讓我最費(fèi)時(shí)的是變化的顯示位數(shù),即根據(jù)你輸入數(shù)的位數(shù)或運(yùn)算出來的結(jié)果判定其數(shù)的位數(shù)來動(dòng)態(tài)掃描顯示。經(jīng)過反復(fù)的調(diào)試,最后發(fā)現(xiàn)問題出在兩行程序的位置處,只更換這兩行的位置就有不一樣的效果。所以,有些時(shí)候不單看程序的邏輯、指令等,也要換一下思維,從別的方面考慮考慮,要各方面都要想好,要嚴(yán)謹(jǐn)行事。調(diào)好了軟件就開始做硬件了,由于之前有過做硬件的檢驗(yàn),所以做起硬件來就很嫻熟。最后就是實(shí)物的調(diào)試了。有個(gè)很現(xiàn)實(shí)的問題,就是軟件仿真的板子不能完成仿真出實(shí)物的情況。所以最后面還是要結(jié)合實(shí)物來調(diào)一下程序。 這次實(shí)訓(xùn)我真的學(xué)到了很多知識,也更清楚地知道實(shí)踐要有扎實(shí)的理論基礎(chǔ),這樣才能引導(dǎo)實(shí)踐,更快地完成項(xiàng)目。 附錄A完整電路圖圖11 完整電路圖 完整程序
以上的Word格式文檔51黑下載地址:
單片機(jī)開發(fā)技能訓(xùn)練51hei.doc
(867.38 KB, 下載次數(shù): 11)
2021-7-5 00:08 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|