




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本文格式為Word版,下載可任意編輯——單片機(jī)課程設(shè)計(jì)報(bào)告
電氣工程學(xué)院
單片機(jī)課程設(shè)計(jì)報(bào)告
班級(jí):姓名:學(xué)號(hào):
設(shè)計(jì)題目:設(shè)計(jì)時(shí)間:
評(píng)定成績(jī):評(píng)定教師:電132袁吉收1312023047直流電機(jī)調(diào)速系統(tǒng)設(shè)計(jì)2023.12.22~12.28
摘要
本文設(shè)計(jì)的直流電機(jī)調(diào)速系統(tǒng)以AT89C51單片機(jī)為核心控制單元,掃描鍵盤后,通過(guò)改變定時(shí)器的定時(shí)長(zhǎng)短調(diào)理PWM波的占空比來(lái)實(shí)現(xiàn)電機(jī)調(diào)速的目的,使用L298芯片為電機(jī)驅(qū)動(dòng)芯片,并通過(guò)LCD1602來(lái)顯示轉(zhuǎn)速實(shí)現(xiàn)人機(jī)交互界面。
關(guān)鍵字:AT89c51、PWM、L298、LCD1602
2
目錄
一、題目要求
1.1題目介紹
1.2模塊分解二、方案設(shè)計(jì)
2.1方案介紹
三、硬件設(shè)計(jì)
3.1硬件原理圖3.2各部分介紹
四、軟件設(shè)計(jì)
4.1流程圖4.2時(shí)序圖4.3部分程序說(shuō)明
五、調(diào)試過(guò)程
5.1軟硬件調(diào)試及其問(wèn)題和解決方法5.2仿真與實(shí)際的區(qū)別即仿真的局限性
六、設(shè)計(jì)總結(jié)七、化控制。采用微處理器控制,使整個(gè)調(diào)速系統(tǒng)的數(shù)字化程度、智能化程度大大提高;采用微處理器控制也使得調(diào)速系統(tǒng)在結(jié)構(gòu)上簡(jiǎn)單化,可靠性提高,操作維護(hù)變得簡(jiǎn)單,電機(jī)穩(wěn)定運(yùn)行時(shí)轉(zhuǎn)速精度達(dá)到較高水平。2.1.1直流電機(jī)的工作原理
直流電機(jī)里邊固定有環(huán)狀永磁體,電流通過(guò)轉(zhuǎn)子上的線圈產(chǎn)生安培力,當(dāng)轉(zhuǎn)子上的線圈與磁場(chǎng)平行時(shí),再繼續(xù)轉(zhuǎn)受到的磁場(chǎng)方向?qū)⒏淖?,因此此時(shí)轉(zhuǎn)子末端的電刷跟轉(zhuǎn)換片交替接觸,從而線圈上的電流方向也改變,產(chǎn)生的洛倫茲力方向不變,所以電機(jī)能保持一個(gè)方向轉(zhuǎn)動(dòng)。直流發(fā)電機(jī)的工作原理就是把電樞線圈中感應(yīng)的交變電動(dòng)勢(shì),
直流電機(jī)(圖1)
靠換向器協(xié)同電刷的換向作用,使之從電刷端引出時(shí)變?yōu)橹绷麟妱?dòng)勢(shì)的原理。
感應(yīng)電動(dòng)勢(shì)的方向按右手定則確定(磁感線指向手心,大拇指指向?qū)w運(yùn)動(dòng)方向,其他四指的指向就是導(dǎo)體中感應(yīng)電動(dòng)勢(shì)的方向)。
導(dǎo)體受力的方向用左手定則確定。這一對(duì)電磁力形成了作用于電樞一個(gè)力矩,這個(gè)力矩在旋轉(zhuǎn)電機(jī)里稱為電磁轉(zhuǎn)矩,轉(zhuǎn)矩的方向是逆時(shí)針?lè)较?,企圖使電樞逆時(shí)針?lè)较蜣D(zhuǎn)動(dòng)。假使此電磁轉(zhuǎn)矩能夠戰(zhàn)勝電樞上的阻轉(zhuǎn)矩(例如由摩擦引起的阻轉(zhuǎn)矩以及其它負(fù)載轉(zhuǎn)矩),電樞就能按逆時(shí)針?lè)较蛐D(zhuǎn)起來(lái)。
6
2.1.2直流電動(dòng)機(jī)的調(diào)速原理
根據(jù)勵(lì)磁方式不同,直流電機(jī)分為自勵(lì)和他勵(lì)兩種類型。不同勵(lì)磁方式
的直流電機(jī)機(jī)械特性曲線頭所不同。對(duì)于直流電機(jī)來(lái)說(shuō),人為機(jī)械特性與額定電壓、額定磁通量有關(guān),還和電樞電阻有關(guān)。
分別改變其中的額定電壓、磁通量、電阻可以實(shí)現(xiàn)對(duì)速度的調(diào)理。
通過(guò)改變磁
n通量的大小可以達(dá)到變磁通調(diào)速的目的。但由于勵(lì)磁線圈發(fā)熱和電機(jī)磁通飽和的限制,只能弱磁調(diào)速。對(duì)于調(diào)理電樞
外加電阻是,會(huì)使電機(jī)特性變軟,導(dǎo)致電機(jī)帶負(fù)載能力減弱。對(duì)于他勵(lì)直流電機(jī)來(lái)書,當(dāng)改變電樞電壓是可得到人為機(jī)械特性曲線。
0圖(2)他勵(lì)直流電機(jī)降壓的人為機(jī)械特性曲線T7
理想空載轉(zhuǎn)速點(diǎn)隨電樞電壓升降而發(fā)生的相應(yīng)的升降變化。不同的電樞電壓機(jī)械特性曲線平行,說(shuō)明挺度不隨電樞電壓的變化而變化,電機(jī)帶負(fù)載能力恒定。當(dāng)我們平滑的調(diào)理他勵(lì)直流電機(jī)的電樞電壓時(shí),可實(shí)現(xiàn)電機(jī)的無(wú)極調(diào)速?;谝陨咸匦?,改變電樞電壓,實(shí)現(xiàn)對(duì)直流電機(jī)調(diào)速的方法被廣泛采用。改變電樞電壓可以通過(guò)多種途徑實(shí)現(xiàn),如晶閘管供電速度調(diào)理系統(tǒng)、大功率晶體管速度控制系統(tǒng)、直流發(fā)電機(jī)控制系統(tǒng)及晶閘管直流脈寬調(diào)速系統(tǒng)等。調(diào)壓條數(shù)法具有平滑度高、能耗少、精度高等優(yōu)點(diǎn)。在工業(yè)生產(chǎn)中,廣泛使用脈寬調(diào)制(PWM)法。
調(diào)速方法特點(diǎn)晶閘管供電調(diào)速系統(tǒng)穩(wěn)定性較好,可以同大電流大功率晶體管速度控制脈寬調(diào)制能耗大,耐壓高平滑度高,能耗小,精度高脈寬調(diào)制利用一個(gè)固定的頻率來(lái)控制電源的開(kāi)通或管段,并通過(guò)改變一
個(gè)周期內(nèi)接通和關(guān)斷時(shí)間的長(zhǎng)短,即改變直流電機(jī)電樞上電壓的占空比來(lái)改變平均電壓的大小,從而改變電機(jī)的轉(zhuǎn)速,因此,PWM又被稱為“開(kāi)關(guān)驅(qū)動(dòng)裝置〞。電樞占空比和平均電壓的關(guān)系如圖3
8
脈沖信號(hào)tt圖3電樞占空比和平均電壓的關(guān)系假使電機(jī)始終接通電源,電機(jī)最大轉(zhuǎn)速為N,占空比為入=t/T,可見(jiàn)只要改變占空比,就可以得到不同的轉(zhuǎn)速,從而達(dá)到調(diào)速的目的。
與傳統(tǒng)的直流調(diào)速想比較,PWM直流調(diào)速系統(tǒng)具有較大的優(yōu)越性:主
線路簡(jiǎn)單,需要的功率元件少;開(kāi)關(guān)頻率高;電流簡(jiǎn)單連續(xù),諧波少,電機(jī)損耗和發(fā)熱都較?。坏退傩阅芎?,穩(wěn)速精度高,因而調(diào)速范圍寬;系統(tǒng)頻帶寬,快速相應(yīng)性能好,抗干擾能力強(qiáng)。
2.1.3基于AT89C51的PWM信號(hào)產(chǎn)生
PWM信號(hào)可以通過(guò)硬件方法或軟件方法產(chǎn)生,如采用NE555可以產(chǎn)生
控制信號(hào)?;趩纹瑱C(jī)的調(diào)速系統(tǒng)可以分為定寬調(diào)頻法、調(diào)寬調(diào)頻法及定頻調(diào)寬法。其中定寬調(diào)頻法、調(diào)寬調(diào)頻法改變了周期(頻率),當(dāng)控制脈沖與系統(tǒng)的固有頻率接近時(shí),會(huì)引起震蕩,因此常采用定頻調(diào)寬法。
9
設(shè)PWM信號(hào)波的周期為T,則T=Tl+Th,占空比入=Th/T。本次設(shè)計(jì)
采用單片機(jī)定時(shí)器作為脈沖寬度調(diào)制的定時(shí)方式2。本次定時(shí)t=250us.周期為10t=2.5ms,高電平持續(xù)時(shí)間為t,低電平就為9t,基于at89c51的PWM信號(hào)流程圖如下
開(kāi)始定時(shí)器賦初值定時(shí)時(shí)間到?Y循環(huán)次數(shù)>t?NPWM=1YNPWM=0
2.1.4基于L298直流電機(jī)驅(qū)動(dòng)
由于單片機(jī)驅(qū)動(dòng)能力有限,因此不能將電機(jī)直接接到單片機(jī)的輸出引腳。驅(qū)動(dòng)芯片有好多譬如
SA60,LMD18245,L298,LG9110,BTS7710GP01,TA7257P,SN754410,A3988等等。表2列出常用芯片的區(qū)別。
10
芯片SA60L29846LMD1824555最大輸出電壓80(V)峰值電流(A)價(jià)格(元)特點(diǎn)10暫無(wú)資料該芯片還可以外接一個(gè)可兼容的TTL型的PWM的信號(hào)來(lái)同步四象限模式的幅值和方向。SA60主要應(yīng)用在310內(nèi)涵高電壓、大電流雙630-60芯片中集成了四位D/全橋驅(qū)動(dòng)器,接受標(biāo)準(zhǔn)A轉(zhuǎn)換器和電機(jī)電流傳TTL電瓶信號(hào),可以驅(qū)感器、固定切斷時(shí)間的動(dòng)46v,2A以下電機(jī);斬波放大器等電路,所此芯片可以有單片機(jī)直以LMD18254很簡(jiǎn)單完成對(duì)電機(jī)電流的數(shù)字控制,實(shí)現(xiàn)步進(jìn)電機(jī)的微步驅(qū)動(dòng)。因此,該芯片主要用于小型直流電機(jī)特別是步進(jìn)電機(jī)的控制和驅(qū)動(dòng)上。驅(qū)動(dòng)中小型直流電機(jī),D接提供驅(qū)動(dòng)信號(hào)。類功率放大,軸承鼓舞等場(chǎng)合。綜合考慮L298更適合用在此次課程設(shè)計(jì)中
首先,Vss(9)是工作電源,最小要4.5V,最大可達(dá)36V;VS(4)為驅(qū)動(dòng)電壓,最大也是36V,但最好是取Vs大于Vss;GND(8)是接地,ISENA(1)、ISENB(15)好像是用來(lái)作反饋的,一般是接地就行;IN1(5)、IN2(7)、IN3(10)、IN4(12)分別對(duì)應(yīng)OUT1(2)、OUT2(3)、OUT3(13)、OUT4(14),即輸入高低電平對(duì)應(yīng),(例如IN1為高則OUT1為高),當(dāng)然這要是建立在使能端滿足的狀況下才可以;ENA(6)、ENB(11)為使能端,ENA控制OUT1、OUT2,ENB控制OUT3、OUT4,高電平有效,即在低電平狀況下,無(wú)論輸入為何信號(hào),輸出都為低電平;它
11
的管腳功用及聯(lián)系大約是這樣
圖4L298原理圖封裝形式
D95IN240A-L298的封裝形式
12
表3
引腳IN10011IN20101停反轉(zhuǎn)正轉(zhuǎn)停L298的部分規(guī)律功能表一般來(lái)說(shuō),應(yīng)用于顯示屏的LED發(fā)光材料有以下幾種形式:電機(jī)A精力有限只列舉課程設(shè)計(jì)用到的2.1.5顯示屏的選擇①LED發(fā)光燈(或稱單燈)一般由單個(gè)LED晶片,反光杯,金屬陽(yáng)極,金屬陰極構(gòu)成,外包具有透光聚光能力的環(huán)氧樹(shù)脂外殼??捎靡粋€(gè)或多個(gè)(不同顏色的)單燈構(gòu)成一個(gè)基本像素,由于亮度高,多用于戶外顯示屏。②LED點(diǎn)陣模塊由若干晶片構(gòu)成發(fā)光矩陣,用環(huán)氧樹(shù)脂封裝于塑料殼內(nèi)。適合行列掃描驅(qū)動(dòng),簡(jiǎn)單構(gòu)成高密度的顯示屏,多用于戶內(nèi)顯示屏。③貼片式LED發(fā)光燈(或稱SMDLED)就是LED發(fā)光燈的貼焊形式的封裝,可用于戶內(nèi)全彩色顯示屏,可實(shí)現(xiàn)單點(diǎn)維護(hù),有效戰(zhàn)勝馬賽克現(xiàn)象。LED之所以受到廣泛重視而得到迅速發(fā)展,是與它本身所具有的優(yōu)點(diǎn)分不開(kāi)的。這些優(yōu)點(diǎn)概括起來(lái)是:亮度高、工作電壓低、功耗小、大型化、壽命長(zhǎng)、耐沖擊和性能穩(wěn)定。LED的發(fā)展前景極為廣闊,正朝著更高亮度、更高耐氣候性、更高的發(fā)光密度、更高的發(fā)光均勻性,可靠性、全色化方向發(fā)展。LED顯示屏廣泛應(yīng)用[2]在體育場(chǎng)館、商業(yè)應(yīng)用、銀行、證劵、郵政、碼頭、商場(chǎng)、車站、郵政、電訊、機(jī)關(guān)、監(jiān)控、學(xué)校、餐廳、酒店、消遣、等不同戶外場(chǎng)所的廣告宣傳。就本次課程設(shè)計(jì)來(lái)說(shuō)LCD1602、12864、LCD5110都是可以選擇的,我們著重比較他們的價(jià)格。芯片價(jià)格(元)穩(wěn)定性可靠性這就是選擇LCD1602的原因
LCD16025穩(wěn)定可靠LCD1286423穩(wěn)定可靠LCD511050+穩(wěn)定可靠602采用標(biāo)準(zhǔn)的16腳接口,其中:第1腳:GND為電源地
第2腳:VCC接5V電源正極
13
第3腳:V0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高(對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影〞,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度)。
第4腳:RS為寄放器選擇,高電平1時(shí)選擇數(shù)據(jù)寄放器、低電平0時(shí)選擇指令寄放器。
第5腳:RW為讀寫信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,
以51為例的簡(jiǎn)單原理圖
低電平(0)時(shí)進(jìn)行寫操作。
第6腳:E(或EN)端為使能(enable)端,高電平(1)時(shí)讀取信息,負(fù)跳變時(shí)執(zhí)行指令。
第7~14腳:D0~D7為8位雙向數(shù)據(jù)端。第15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負(fù)極。特性
3.3V或5V工作電壓,對(duì)比度可調(diào)
內(nèi)含復(fù)位電路
提供各種控制命令,如:清屏、字符閃爍、光標(biāo)閃爍、顯示移位等多種功能有80字節(jié)顯示數(shù)據(jù)存儲(chǔ)器DDRAM
內(nèi)建有192個(gè)5X7點(diǎn)陣的字型的字符發(fā)生器CGROM8個(gè)可由用戶自定義的5X7的字符發(fā)生器CGRAM特征應(yīng)用
微功耗、體積小、顯示內(nèi)容豐富、超薄便捷,常用在袖珍式儀表和低功耗應(yīng)用系統(tǒng)中。
操作控制注:關(guān)于E=H脈沖——開(kāi)始時(shí)初始化E為0,然后置E為1。字符集
1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,譬如大寫的英文字母“A〞的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來(lái),我們就能看到字母“A〞。
在單片機(jī)編程中還可以用字符型常量或變量賦值,如'A?。由于CGROM儲(chǔ)存的字符代碼與我們PC中的字符代碼是基本一致的,因此我們?cè)谙駾DRAM寫C51字符代
14
碼程序時(shí)甚至可以直接用P1=?A?這樣的方法。PC在編譯時(shí)就把'A'先轉(zhuǎn)換為41H代碼了。CGROM中字符碼與字符字模關(guān)系對(duì)照表字符代碼0x00~0x0F為用戶自定義的字符圖形RAM(對(duì)于5X8點(diǎn)陣的字符,可以存放8組,5X10點(diǎn)陣的字符,存放4組),就是CGRAM了。0x20~0x7F為標(biāo)準(zhǔn)的ASCII碼,0xA0~0xFF為日文字符和希臘文字符,其余字符碼(0x10~0x1F及0x80~0x9F)沒(méi)有定義。以下是1602的16進(jìn)制ASCII碼表地址:讀的時(shí)候,先讀上面那行,再讀左邊那列,如:慨嘆號(hào)!的ASCII為0x21,字母B的ASCII為0x42(前面加0x表示十六進(jìn)制)。指令集指令碼功能令:清顯示RSR/WD70D60D50D40D30D20D10D01說(shuō)明將DDRAM填滿\并且設(shè)定DDRAM的地址計(jì)數(shù)器(AC)到\歸位000000001*設(shè)定DDRAM的地址計(jì)數(shù)器(AC)到\并且將游標(biāo)移到開(kāi)頭原點(diǎn)位置;這個(gè)指令不改變DDRAM的內(nèi)容顯示開(kāi)關(guān)控制指令進(jìn)入模式設(shè)置指令0000001DCB[D=1:整體顯示ON],[C=1:游標(biāo)ON],[B=1:游標(biāo)位置反白允許]00000001I/DSI/D=1,光標(biāo)或閃爍向右移動(dòng),AC增加1。I/D=0,光標(biāo)或閃爍向左移動(dòng),AC減少1,S整個(gè)顯示移動(dòng)0015
光標(biāo)或顯示移位指令功能設(shè)定000001S/CR/L**光標(biāo)或顯示移位指令可使光標(biāo)或顯示在沒(méi)有讀寫數(shù)據(jù)的狀況下,向左或向右移動(dòng),指令不改變DDRAM的內(nèi)容00001DLNF**[DL=0/1:4/8位數(shù)據(jù)],[N=0/1,單行/雙行顯示],[F=0/1,5*8/5*10點(diǎn)陣顯示模式]設(shè)置CGRAM地址0001AC5AC4AC3AC2AC1AC0CGRAM地址設(shè)置指令設(shè)置CGRAM地址指針,設(shè)定DDRAM地址0010AC5AC4AC3AC2AC1AC0DDRAM地址設(shè)置指令設(shè)置DDRAM地址。一行地址范圍00H~4FH,兩行DDRAM地址第一行00H~27H,其次行40H~67H,加上高2位,[一行:80H-A7H],[二行:C0H-E7H]讀忙標(biāo)志和地址01BFAC6AC5AC4AC3AC2AC1AC0BF:忙標(biāo)志位,BF=1,模塊正在進(jìn)行內(nèi)部操作,此時(shí)模塊不接受任何外部指令和數(shù)據(jù)。BF=0,模塊可以接受外部的指令和數(shù)據(jù);同時(shí)可以讀出地址計(jì)數(shù)器(AC)的值。寫RAM指令10D7D6D5D4D3D2D1D0將數(shù)據(jù)D7-D0寫入到內(nèi)部的RAM(DDRAM/CGRAM/IRAM/GRAM),將用戶自定義的字符寫入CGRAM中,D7~D5為000,D4~D0為5點(diǎn)的字模數(shù)據(jù)讀RAM指令11D7D6D5D4D3D2D1D0從內(nèi)部RAM讀取數(shù)據(jù)D7——D0(DDRAM/CGRAM/IRAM/GRAM)16
三、硬件設(shè)計(jì)
3.1基于L298的直流電機(jī)調(diào)速系統(tǒng)硬件設(shè)計(jì)
3.2對(duì)系統(tǒng)的各部分功能描述
器件選型及電路結(jié)構(gòu)
電機(jī)驅(qū)動(dòng)芯片控制端IN1、IN2連接AT89c51的P3.0、P3.1使能端連接P3.7輸出端連接電機(jī)和四個(gè)二極管,驗(yàn)收時(shí),陳老師問(wèn)了這四個(gè)二極管的作用。那我現(xiàn)在就詳細(xì)寫一下其作用。由于電機(jī)是電感負(fù)載,當(dāng)電機(jī)開(kāi)關(guān)時(shí)勢(shì)必就會(huì)產(chǎn)生感應(yīng)電動(dòng)勢(shì),我們成為反向峰壓,為了給反向峰壓提供通道,就接了四個(gè)二極管。還有就是L298的高驅(qū)動(dòng)能力彌補(bǔ)了單片機(jī)本身的驅(qū)動(dòng)能力,由于單片機(jī)本身驅(qū)動(dòng)能力有限,所以,使用L298是明智的
17
選擇。其他端口依照原理圖來(lái)。詳見(jiàn)2.2.4
LCD1602的rs、r/w、E控制端口分別接p2.2,p2.1,p2.0功能詳見(jiàn)2.4.5
我只說(shuō)一下接P0口是要接上拉電阻,由于P0口內(nèi)部是漏及開(kāi)路輸出。
P1口分派為按鍵接口。
整個(gè)電路圖分派如上,并留有余地,還可以擴(kuò)展功能。便利進(jìn)一步開(kāi)發(fā),
這也是好的工程師必備的素質(zhì)。
四、軟件設(shè)計(jì)4.1流程圖
4.1.1主程序流程圖
18
開(kāi)始硬件初始化軟件初始化LCD初始化LCD顯示鍵盤掃描是否有按鍵按下?N按鍵處理Y
19
4.1.2硬件初始化
4.1.3軟件初始化
開(kāi)始電機(jī)停轉(zhuǎn)指示燈全滅終止開(kāi)始定時(shí)器初始化中斷初始化終止20
4.1.4LCD初始化
4.1.5按鍵掃描
開(kāi)始功能設(shè)置顯示設(shè)置輸入設(shè)置終止開(kāi)始正轉(zhuǎn)?正傳處理反轉(zhuǎn)?反轉(zhuǎn)處理中止?停轉(zhuǎn)處理加速?加速處理減速?減速處理終止21
4.2LCD部分時(shí)序圖
LCD1602的時(shí)序圖解釋
不同公司生產(chǎn)的1602液晶的時(shí)序圖差不多都一樣,所以MCU控制程序也差不多,一般都是通用的。下面來(lái)看一下它的時(shí)序圖
4.3PWM產(chǎn)生程序
/*************************FunctionName:
*Description:定時(shí)器中斷產(chǎn)生PWM波*ENtryparaenter:*REturnValue:
**************************/voidt0()interrupt1using0{if(tp!=0){if(count>10)count=0;
22
{}
if(count>tp)Me=0;elseMe=1;}
if(tp==0)if(count>10)count=0;if(count>=tp)Me=0;elseMe=1;}
count++;
程序說(shuō)明:產(chǎn)生可調(diào)的PWM波信號(hào),通過(guò)改變占空比改變PWM信號(hào)。
五、調(diào)試過(guò)程
5.1軟硬件調(diào)試及調(diào)試問(wèn)題和解決方法
本次軟件調(diào)試采用Keiluvision4軟件,配置采用默認(rèn)配置(12MHz晶
振)默認(rèn)的編譯器,仿真器。剛開(kāi)始使用內(nèi)部仿真器,后來(lái)用外部仿真器(Proteus仿真聯(lián)調(diào))并使用單步、斷點(diǎn)、全速運(yùn)行等多種手段調(diào)試。
硬件仿真使用Proteus仿真,在Proteus中畫原理圖并仿真。下面介紹一下解決聯(lián)調(diào)的方法
1:把VDM51.dll這個(gè)文件分別復(fù)制到Proteus安裝文件下的MODELS目錄下,以及keil安裝文件下的C51\\BIN目錄下2:keil設(shè)置步驟:
(1)用記事本開(kāi)啟C:\\ProgramFiles\\keil中toolS.INI文件,添加TDRV9=BIN\\VDM51.DLL(\其中“TDRV9〞中的“9〞要根據(jù)實(shí)際狀況寫,不要和原來(lái)的重復(fù)。(2):keil開(kāi)啟DEBUG選項(xiàng)卡如圖設(shè)置:
23
a:在出現(xiàn)的對(duì)話框里在右欄上部的下拉菜單里選中“ProteusVSMMonitor一51Driver〞。并且還要點(diǎn)擊一下“Use〞前面說(shuō)明選中的小圓點(diǎn)
b:再點(diǎn)擊“Setting〞按鈕,設(shè)置通信接口,在“Host〞后面添上“127.0.0.1〞,假使使用的不是同一臺(tái)電腦,則需要在這里添上另一臺(tái)電腦的IP地址(另一臺(tái)電腦也應(yīng)安裝Proteus)。
在“Port〞后面添加“8000〞。設(shè)置好的情形如下圖,點(diǎn)擊“OK〞按鈕即可。最終將工程編譯,進(jìn)入調(diào)試狀態(tài),并運(yùn)行3:protues設(shè)置:
進(jìn)入Proteus的ISIS,鼠標(biāo)左鍵點(diǎn)擊菜單“Debug〞,選中“useromotedebugermonitor〞,如下圖。此后,便可實(shí)現(xiàn)KeilC與Proteus連接調(diào)試。
5.2調(diào)試效果
5.2.1效果圖
24
啟動(dòng)初始化初始化:顯示設(shè)計(jì)者顯示設(shè)計(jì)者。當(dāng)然也可以顯當(dāng)然可以顯示其他(根據(jù)需要)示其他(根據(jù)需要)。
25
沒(méi)輸入的狀況
26
正轉(zhuǎn)
27
反轉(zhuǎn)
停轉(zhuǎn)
28
5.2.2仿真與實(shí)際的區(qū)別及仿真的局限性
仿真有如下幾個(gè)特點(diǎn),也是仿真的局限性所在:
a)仿真芯片不用接電源也可以,電源默認(rèn)接。譬如LCD模塊,電機(jī)驅(qū)動(dòng)模塊芯片
b)仿真不用接晶振電路。而實(shí)際中必需接上,否則不可以使。c)仿真不考慮驅(qū)動(dòng)能力。意思就是你直接把電機(jī)連到單片機(jī)上也可以驅(qū)動(dòng)。而這在實(shí)際中是不可能的。也會(huì)造成我們的誤會(huì)。
六、設(shè)計(jì)總結(jié)
其實(shí)這次課程設(shè)計(jì)還是有很大的收獲的,首先還是從對(duì)單片機(jī)的認(rèn)識(shí)談
起吧,每一次課堂上的學(xué)習(xí),包括前兩次的大作業(yè),都會(huì)使我對(duì)51單片機(jī)有了更深一步的認(rèn)識(shí),有時(shí)候會(huì)有這么一種感覺(jué):?jiǎn)纹瑱C(jī)還能這么玩!程序還能這么寫!我覺(jué)得每一次的感悟就有每一次的提高。下面談?wù)勎覍?duì)各個(gè)軟件的理解,再談?wù)勎覍?duì)51的淺談以及本次課設(shè)的理解。
先來(lái)談?wù)凱roteus仿真軟件,從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍
電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。當(dāng)然本次課設(shè)只用到了原理圖仿真。當(dāng)然了此次課設(shè)我還使用了keil與proteus聯(lián)調(diào)的方式來(lái)進(jìn)一步確切的調(diào)試。當(dāng)然我也學(xué)到了一些快捷鍵的使用,譬如統(tǒng)一給接口做標(biāo)號(hào)就可以按“a〞后,輸入“net=p0.#〞來(lái)依次標(biāo)p0口
的網(wǎng)絡(luò)標(biāo)號(hào)。
再說(shuō)說(shuō)對(duì)keiluvisin4的理解,當(dāng)然keil也是一個(gè)功能十分強(qiáng)大的軟件,
29
不管是對(duì)程序的編寫還是調(diào)試,都是相當(dāng)有效,本次課設(shè)用到的并不多,只是用來(lái)編寫C代碼,和調(diào)試,keil本身帶有51的內(nèi)部調(diào)試器,當(dāng)然我這次也用了和proteus聯(lián)調(diào)的手段,是調(diào)試更便利,更具有目的性。
除了對(duì)軟件熟練把握以外,算法思想顯得尤為重要,老譚說(shuō)過(guò):“一
個(gè)好的算法是程序的靈魂〞。寫這個(gè)程序就表達(dá)了這一點(diǎn),對(duì)于LCD1602的程序部分我是下了功夫,主要是對(duì)字符的輸入轉(zhuǎn)變,具體實(shí)現(xiàn)請(qǐng)參照代碼。按鍵的掃描也是用的兩個(gè)數(shù)組比較來(lái)實(shí)現(xiàn)檢測(cè)按鍵的按下,對(duì)此還是頗為高傲。
還有就是編程的思想,在編程的時(shí)候應(yīng)當(dāng)想到如何是代碼更具有可
移植性,這讓我皺起了眉頭,在對(duì)代碼整理的時(shí)候我意思到了這個(gè)問(wèn)題。定義放到預(yù)編譯中1.變量盡量在函數(shù)中定義
2.還有變量的名稱盡量用英文而不是拼音,也可以放在H文件中包含進(jìn)來(lái)
3.變量和函數(shù)的書寫格式也是固定的還可以把模塊放到另一個(gè)c文件中然后在主文件中包含就可以了具體實(shí)現(xiàn)請(qǐng)參照代碼。
30
#include#include#include#include
#defineucharunsignedchar#defineuintunsignedint#defineLCD_COMMAND0
#defineLCD_DATA1#defineLCD_CLEAR_SCREEN0X01#defineLCD_HOMING0X02#defineLCD_SHOW0X04#defineLCD_HIDE0X00#defineLCD_CURSOR0X02#defineLCD_NO_CURSOR0X00#defineLCD_FLASH0X01#defineLCD_NO_FLASH0X00#defineLCD_AC_UP0X02#defineLCD_AC_DOWN0X00#defineLCD_MOVE0X01
#defineLCD_NO_MOVE0X00sbitSW0=P1^0;sbitSW1=P1^1;
sbitSW2=P1^2;sbitSW3=P1^3;sbitSW4=P1^4;sbitMz=P3^0;sbitMf=P3^1;sbitMe=P3^7;sbitzheng=P1^5;sbitfan=P1^6;sbitting=P1^7;sbitLcdRs=P2^2;
sbitLcdRw=P2^1;sbitLcdEn=P2^0;ucharlast_val[5]={1,1,1,1,1},cur_val[5]={1,1,1,1,1};uinti;uintcount=0;
32
//包含頭文件
//寫指令//寫數(shù)據(jù)//清屏//回原地//開(kāi)顯示//關(guān)顯示//顯示光標(biāo)//不顯示光標(biāo)//光標(biāo)閃動(dòng)//光標(biāo)不閃動(dòng)//地址計(jì)數(shù)器加
//畫面可平移
//正轉(zhuǎn)開(kāi)關(guān)
//反轉(zhuǎn)開(kāi)關(guān)//中止開(kāi)關(guān)//加速開(kāi)關(guān)//減速開(kāi)關(guān)//L298芯片控制口
//PWM波輸出口//正轉(zhuǎn)指示燈//反轉(zhuǎn)指示燈//LCD控制口
//停轉(zhuǎn)指示燈
//決定按鍵變化數(shù)組//周期計(jì)數(shù)
uchartp=5;ucharstr[7];uchardis[1];
voidkeyscan(void);//占空比計(jì)數(shù)
//按鍵掃描voiddelay1(void);voidjust(void);voidturn(void);voidmotorstop(void);voidspeedup(void);voidspeeddown(void);voiddelay2();
/*************************FunctionName:delay*Description:LCD延時(shí)程序*ENtryparaenter:z*REturnValue:無(wú)
**************************/
voiddelay(uintz){uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}
/*************************FunctionName:LCD_Write
*Description:當(dāng)style=1時(shí)寫數(shù)據(jù),等于0時(shí)寫指令*ENtryparaenter:style,input*REturnValue:無(wú)
**************************/voidLCD_Write(bitstyle,ucharinput){
LcdRs=style;P0=input;delay(5);LcdEn=1;delay(5);LcdEn=0;
33
//10ms延時(shí)//正轉(zhuǎn)程序//反轉(zhuǎn)程序//停車程序//加速程序//減速程序//100ms延時(shí)
}
/************************
*FunctionName:LCD_SetDisplay*Description:
*ENtryparaenter:displaymode*REturnValue:
**************************/
voidLCD_SetDisplay(uchardisplaymode){LCD_Write(LCD_COMMAND,0x08|displaymode);}
/************************
*FunctionName:LCD_SetInput*Description:
*ENtryparaenter:InputMode*REturnValue:
**************************/
voidLCD_SetInput(ucharInputMode){LCD_Write(LCD_COMMAND,0x04|InputMode);}
/*************************FunctionName:LCD_initial*Description:LCD1602初始化*ENtryparaenter:*REturnValue:
**************************/voidLCD_initial(){LcdEn=0;LCD_Write(LCD_COMMAND,0x38);行顯示LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);}
/*************************FunctionName:GotoXY*Description:LCD坐標(biāo)定位*ENtryparaenter:x,y*REturnValue:
**************************/
34
//設(shè)置功能,8為數(shù)據(jù)線兩
//開(kāi)顯示,無(wú)光標(biāo)//清屏
//AC遞增畫面不動(dòng)
voidGotoXY(ucharx,uchary){if(y==0)LCD_Write(LCD_COMMAND,0x80|x);地址80-8FHif(y==1)LCD_Write(LCD_COMMAND,0x80|(x-0x40));//由于DB7位1所以第一行
//其次行C0-CFH
}
/*************************FunctionName:Print*Description:寫字符*ENtryparaenter:*str*REturnValue:
**************************/voidPrint(uchar*str){while(*str!='\\0'){LCD_Write(LCD_DATA,*str);str++;}}
/*************************FunctionName:Dataconv*Description:
*ENtryparaenter:dat*REturnValue:
**************************/voidDataconv(uchardat){uchartemp;temp=dat;dis[0]=temp+0x30;}
/*************************FunctionName:welcome*Description:歡迎界面*ENtryparaenter:*REturnValue:
**************************/voidwelcome(){
35
//輸出有效字符
LCD_initial();GotoXY(0,0);Print(\Designed\GotoXY(0,1);Print(\delay(200);delay2();}
/*************************FunctionName:
*Description:主程序:*ENtryparaenter:*REturnValue:
**************************/voidmain(){Mz=0;Mf=0;TMOD=0x02;TH0=0x06;TL0=0x06;TR0=1;ET0=1;EA=1;LcdRw=0;welcome();收delay1();delay2();LCD_initial();while(1){GotoXY(6,0);Print(\GotoXY(13,0);Print(\GotoXY(12,0);Dataconv((uchar)tp);Print(dis);GotoXY(0,1);
36
//電機(jī)停轉(zhuǎn)
//定時(shí)器0方式2定時(shí)//開(kāi)啟定時(shí)器//允許定時(shí)器中斷//總中斷允許//寫使能//顯示設(shè)計(jì)者:袁吉//延時(shí)
//LCD初始化//大循環(huán)
Print(\GotoXY(11,1);Print(\keyscan();}}
/*************************FunctionName:
*Description:主程
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【高一】【志存高遠(yuǎn)踏新程 腳踏實(shí)地創(chuàng)未來(lái)】開(kāi)學(xué)第一課 -文字稿
- 分?jǐn)?shù)的初步認(rèn)識(shí)復(fù)習(xí)(教案)2024-2025學(xué)年數(shù)學(xué)三年級(jí)上冊(cè) 蘇教版
- 六年級(jí)下冊(cè)數(shù)學(xué)教案-總復(fù)習(xí)18 數(shù)形結(jié)合思想 青島版
- 三年級(jí)下冊(cè)數(shù)學(xué)教案-第七單元小數(shù)的初步認(rèn)識(shí) 青島版
- 第23課《孟子三章:得道多助失道寡助》教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版語(yǔ)文八年級(jí)上冊(cè)
- 2025年學(xué)習(xí)雷鋒精神六十二周年主題活動(dòng)方案 匯編3份
- Unit 4 Position Lesson 1 The Magic Show(教學(xué)設(shè)計(jì))-2024-2025學(xué)年北師大版(三起)英語(yǔ)五年級(jí)上冊(cè)
- 2025年河北省石家莊市單招職業(yè)傾向性測(cè)試題庫(kù)參考答案
- 2025年黑龍江冰雪體育職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)1套
- 2025年杭州職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)附答案
- 兒科課件:急性細(xì)菌性腦膜炎
- 《紐約國(guó)際介紹》課件
- 部編版語(yǔ)文七年級(jí)下冊(cè)期中專項(xiàng)復(fù)習(xí)-標(biāo)點(diǎn)符號(hào) 試卷(含答案)
- 更年期綜合癥研究白皮書
- 《學(xué)習(xí)共同體-走向深度學(xué)習(xí)》讀書分享
- 互聯(lián)網(wǎng)視域下微紀(jì)錄片情感化敘事研究-以《早餐中國(guó)》為例
- 芋頭種植技術(shù)要點(diǎn)
- 【基于近五年數(shù)據(jù)的鴻星爾克財(cái)務(wù)報(bào)表分析15000字】
- 公司員工獎(jiǎng)懲制度流程
- 靜脈炎預(yù)防和處理課件
- 船舶種類與特點(diǎn)
評(píng)論
0/150
提交評(píng)論