摘要:當(dāng)前在工科類專業(yè),高職單片機(jī)課程是專業(yè)基礎(chǔ)核心課,在案例學(xué)習(xí)、智能家電、電路開發(fā)等方面有著廣泛的應(yīng)用。單片機(jī)作為MCU常見的微型控制器,通過基于單片機(jī)函數(shù)信號(hào)發(fā)生器設(shè)計(jì),對(duì)于教學(xué)實(shí)踐和初學(xué)程序人員幫助較大,一方面便于理解單片機(jī)及外圍硬件電路的集成應(yīng)用,另一方面也助于理解keil軟件程序的編寫、庫(kù)函數(shù)的設(shè)計(jì)及程序的調(diào)試,對(duì)于后期單片機(jī)的綜合應(yīng)用提供了參考依據(jù)和指導(dǎo)思想。
關(guān)鍵詞:?jiǎn)纹瑱C(jī);函數(shù)信號(hào)發(fā)生器
單片機(jī)目前仍是廣泛使用的微型控制器之一,采用AT89C51型號(hào)的8位單片機(jī)設(shè)計(jì)函數(shù)信號(hào)發(fā)生器,對(duì)單片機(jī)硬件和軟件電路綜合應(yīng)用的理解和掌握有較深刻的認(rèn)識(shí),是單片機(jī)應(yīng)用經(jīng)典案例。該案例設(shè)計(jì)函數(shù)信號(hào)發(fā)生器硬件電路涵蓋DAC0832模數(shù)轉(zhuǎn)換電路、lm358運(yùn)算放大電路、LCD1602液晶顯示電路、獨(dú)立按鍵電路。整個(gè)硬件電路以單片機(jī)為核心,實(shí)現(xiàn)單片機(jī)與外圍電路的數(shù)據(jù)轉(zhuǎn)換、通信。該案例設(shè)計(jì)要求掌握常用的電路知識(shí)和電路圖識(shí)別,會(huì)使用proteus軟件仿真模擬電路和數(shù)字電路。通過該案例設(shè)計(jì),學(xué)生掌握了函數(shù)信號(hào)發(fā)生器的設(shè)計(jì)思路、設(shè)計(jì)原理和設(shè)計(jì)方法,為學(xué)生設(shè)計(jì)其他較為復(fù)雜的控制電路提供了思路和方法。
該案例設(shè)計(jì)包含硬件電路連接(見圖1)和軟件程序設(shè)計(jì)兩個(gè)部分。
1硬件電路連接
1.1任務(wù)1獨(dú)立按鍵連接
該設(shè)計(jì)采用獨(dú)立按鍵控制波形和頻率。在該設(shè)計(jì)中,使用6個(gè)按鍵分別接P1口。P1.0口控制波形信號(hào)頻率的加操作,P1.1口控制波形信號(hào)的減操作,頻率范圍是0~100 Hz。P1.2口控制正弦波信號(hào)變換,P1.3口控制三角波信號(hào)變換,P1.4口控制矩形波信號(hào)變換,P1.5口控制鋸齒波信號(hào)變化。
1.2任務(wù)2LCD1602液晶屏連接
LCD1602電路數(shù)據(jù)顯示當(dāng)前信號(hào)波形和頻率,其有14個(gè)引腳,其中D0~D7為數(shù)據(jù)/地址輸入端。該設(shè)計(jì)中,將單片機(jī)P0.0口~P0.7口分別接至D0~D7。PO段外加上拉電阻,單相供電5 V直流電壓,提高輸出電流,增強(qiáng)帶負(fù)載能力,保證信號(hào)的穩(wěn)定輸出。上拉電阻不宜太大,1~10 K范圍即可[1]。
此外,LCD1602的RS、R/W、E端口分別接到單片機(jī)P2口的P2.5、P2.6、P2.7端口。其中RS端口是控制LCD1602的數(shù)據(jù)命令選擇端,當(dāng)RS=0是命令狀態(tài),當(dāng)RS=1為數(shù)據(jù)狀態(tài)。R/W是讀寫狀態(tài),R/W=1是讀狀態(tài),R/W=0是寫狀態(tài)。本設(shè)計(jì)中都是寫命令和寫數(shù)據(jù),因此可以將R/W=0直接接入。E作為使能端,當(dāng)E=1,單片機(jī)P0口數(shù)據(jù)寫入,之后將E置0,也就是信號(hào)下降沿有效。
1.3任務(wù)3DAC0832連接
DAC0832是常見的8位DAC,其轉(zhuǎn)換時(shí)間是1 us,工作電壓是+5~+15 V,8位分辨率。數(shù)據(jù)輸入可采用雙緩沖、單緩沖和直通模式。該設(shè)計(jì)采用直通模式。DAC0832具有20個(gè)端口,其中D10~D17接至單片機(jī)P3口的P3.0~P3.7,作為數(shù)字信號(hào)輸入端。有兩個(gè)輸出端口,分別是I01和I02,I01和I02相加為一個(gè)常數(shù)。Rfb反饋電阻端,一般與運(yùn)算放大器輸出端連接,其內(nèi)部與I01端口連接一個(gè)15 K電阻。本設(shè)計(jì)輸出端只需要I01端口,I02接地。
1.4任務(wù)4運(yùn)算放大器lm358連接
運(yùn)算放大器Lm358具有高增益和內(nèi)部頻率補(bǔ)償?shù)淖饔?,單雙電源供電。該設(shè)計(jì)采用雙電源供電,電壓分別是+15、-15 V。DAC0832的I01輸出端口接至lm358的反相輸入端,lm384的同相輸入端與I02一同接地。同時(shí)Rfb反饋電接至lm358輸出端,致使lm384的輸出電壓在0~5 V變化[2]。
2軟件程序設(shè)計(jì)
單片機(jī)程序使用C語言程序編程,該設(shè)計(jì)程序從main主函數(shù)開始執(zhí)行。主函數(shù)中TMOD定時(shí)器工作模式設(shè)置為T1,定時(shí)器工作方法1,16位二進(jìn)制計(jì)數(shù),分為高8位和低8位。主函數(shù)程序執(zhí)行首先是LCD1602的初始化操作,初始化波形是正弦波,頻率是1 Hz。使用定時(shí)器1中斷,4 000 us中斷1次,總共中斷250次,時(shí)間為1 s,頻率是1 Hz,之后重新計(jì)數(shù)。最小時(shí)間40 us中斷1次,總過250次,時(shí)間為10 ms,頻率是100 Hz。通過按鍵的加減操作完成1~100 Hz頻率變化情況。軟件設(shè)計(jì)分為主函數(shù)和多個(gè)函數(shù),通過4個(gè)程序完成設(shè)計(jì)的整體架構(gòu)。
2.1程序1波形字庫(kù)應(yīng)用
波形數(shù)字信號(hào)提取需要特殊軟件完成,建立4個(gè)波形信號(hào)數(shù)組,分別是正弦波、三角波、方波和鋸齒波信號(hào)。每個(gè)數(shù)組有256個(gè)單元,通過256個(gè)單元完成波形信號(hào)的采集,波形信號(hào)數(shù)據(jù)是8位二進(jìn)制數(shù),程序編寫中轉(zhuǎn)換為16進(jìn)制數(shù)。波形字符通過字模提取V2.2軟件完成。將提取的字模信息分別存儲(chǔ)于4個(gè)波形信號(hào)數(shù)組中。將最終的4個(gè)波形信號(hào)數(shù)組統(tǒng)一建立字庫(kù)函數(shù),以便主程序調(diào)用各個(gè)不同的波形。需要注意的是調(diào)用的波形數(shù)組名和字庫(kù)中的波形數(shù)目名必須一致,否則無法調(diào)用[3]。
2.2程序2LCD1602液晶屏的庫(kù)函數(shù)設(shè)計(jì)
LCD1602液晶屏程序設(shè)計(jì)主要執(zhí)行3個(gè)操作:(1)LCD1602的寫命令操作。寫命令操作完成的是LCD1602的初始化。第一顯示兩行,代碼為0X38,第二字符開顯示,代碼是0XC0,第三寫完一個(gè)字符后,地址指針自動(dòng)加1操作,代碼是0X06,最后顯示清0,代碼是0X01。(2)寫數(shù)據(jù)操作。寫命令和寫數(shù)據(jù)都是從P0端口寫入。寫命令主要是顯示字符地址,第一行字符地址是0X80,第二行地址0X80+0X40。寫數(shù)據(jù)主要寫入波形和頻率的動(dòng)態(tài)變化過程。(3)建立一個(gè)函數(shù),函數(shù)包括4個(gè)主要變量,第1個(gè)變量分別是行的選擇,通過數(shù)字1和2選擇第1行和第2行;第2個(gè)變量是從哪個(gè)位置開始字符,再確定從哪行開始,就可以確定從哪列開始;第3個(gè)變量是波形調(diào)用的數(shù)組名,通過數(shù)組名調(diào)用在LCD1602上顯示波形名稱,是主程序調(diào)用函數(shù)的關(guān)鍵;第4個(gè)變量是數(shù)組名的長(zhǎng)度,根據(jù)波形長(zhǎng)度確定數(shù)組的長(zhǎng)度,以便完成顯示整個(gè)波形名稱。
LCD1602動(dòng)態(tài)顯示波形的頻率變化情況,頻率變化通過頻率數(shù)組調(diào)用顯示。頻率數(shù)組由按鍵加減控制,在程序主函數(shù)中和按鍵控制程序中體現(xiàn)出來。
2.3程序3switch多條件波形頻率和波形變換
波形信號(hào)選擇,使用switch作為多條件選擇語句。該語句在主程序中有兩次使用,一次是在按鍵程序中,switch語句用在波形的選擇,選擇0為正弦波;選擇1為三角波;選擇2為方波;選擇3為鋸齒波信號(hào)。第二次在主程序中再次使用switch語句通過case選擇0,1,2,3分別調(diào)用波形字庫(kù)中對(duì)應(yīng)的正弦波數(shù)組、三角波數(shù)組、方波數(shù)組和鋸齒波數(shù)組。
2.4按鍵程序設(shè)計(jì)
按鍵程序在獨(dú)立設(shè)計(jì)時(shí),按鍵起到兩個(gè)作用。既改變波形的頻率,又改變波形的信號(hào)輸出。通過P1端口輸入按鍵信號(hào)。其中波形頻率的加減操作用2個(gè)按鍵完成,4個(gè)按鍵控制波形信號(hào)的變換。按鍵之間沒有優(yōu)先級(jí),都是并列關(guān)系。按鍵不能同時(shí)按下,通過switch選擇。6個(gè)按鍵對(duì)應(yīng)P1.0~P1.5端口,多余兩個(gè)端口懸空,按鍵初始化代碼為0X3f。當(dāng)波形頻率進(jìn)行加操作,按鍵代碼是0X3e;當(dāng)波形頻率進(jìn)行減操作時(shí),按鍵代碼是0X3d;按鍵切換正弦波,此時(shí)按鍵代碼是0X3b;當(dāng)波形信號(hào)變換為三角波時(shí),按鍵代碼是0X37;當(dāng)波形信號(hào)變換為方波時(shí),按鍵代碼是0X2f;當(dāng)波形信號(hào)變換為鋸齒波時(shí),按鍵代碼是0X1f;最終完成按鍵對(duì)函數(shù)信號(hào)的控制。
該案例程序設(shè)計(jì)通過keil uvision5軟件編寫,完成程序的最終調(diào)試,之后生成hex文件,加載到proteus仿真電路完成測(cè)試,效果良好[4]。
3實(shí)施效果
3.1充分應(yīng)用理實(shí)一體化,提升學(xué)生綜合能力
通過該案例的設(shè)計(jì),學(xué)生在掌握知識(shí)和技能的層面上,能夠充分發(fā)揮學(xué)生主觀能動(dòng)性,讓學(xué)生自主獨(dú)立完成,優(yōu)化了學(xué)習(xí)方法,提升了學(xué)習(xí)能力,將知識(shí)和技能進(jìn)一步融會(huì)貫通,逐漸培養(yǎng)學(xué)生的創(chuàng)新意識(shí)。
3.2形成嚴(yán)謹(jǐn)細(xì)致的良好習(xí)慣,提升學(xué)生的綜合素養(yǎng)該案例設(shè)計(jì)培養(yǎng)了學(xué)生嚴(yán)謹(jǐn)細(xì)致的學(xué)習(xí)作風(fēng),提升學(xué)生分析、解決問題的能力和團(tuán)隊(duì)協(xié)作能力。樹立了學(xué)生的自信心,形成了面對(duì)問題不退縮,營(yíng)造迎難而上的良好風(fēng)氣。
3.3優(yōu)化案例,拓展資源
通過該案例,以點(diǎn)帶面,補(bǔ)充完善不足的知識(shí)點(diǎn)和程序設(shè)計(jì)。該案例可以繼續(xù)拓展延伸深度和難度,特別是頻率范圍的擴(kuò)大,波形幅度的改變,進(jìn)一步培養(yǎng)學(xué)生的創(chuàng)新意識(shí)、創(chuàng)新方法和創(chuàng)新能力。
3.4鞏固基礎(chǔ),強(qiáng)化訓(xùn)練,提升技能
單片機(jī)程序設(shè)計(jì)對(duì)于學(xué)生的要求最高,難度也最大。必須熟練掌握函數(shù)調(diào)用、函數(shù)嵌套運(yùn)用、庫(kù)函數(shù)的創(chuàng)建、多函數(shù)的使用。程序的優(yōu)化設(shè)計(jì)需要大量的案例去摸索、分析、總結(jié)。因此,程序設(shè)計(jì)通過長(zhǎng)時(shí)間經(jīng)驗(yàn)的積累、反復(fù)不斷的練習(xí),從而提升學(xué)生的綜合技能。
3.5開拓創(chuàng)新,勇于進(jìn)取
創(chuàng)新對(duì)于學(xué)好單片機(jī)至關(guān)重要。單片機(jī)擁有豐富的案例,掌握其方法可以一通百通。從設(shè)計(jì)上看就是電路的創(chuàng)新、程序的優(yōu)化。從學(xué)生角度出發(fā)是思路的創(chuàng)新、方法的創(chuàng)新。除了堅(jiān)持不懈的努力,還需要堅(jiān)韌不屈的精神和勇于面對(duì)挑戰(zhàn)的勇氣[5]。
4總結(jié)
高職單片機(jī)應(yīng)用課程綜合性強(qiáng),應(yīng)用范圍廣泛,更應(yīng)注重實(shí)踐中的應(yīng)用。以案例形式分解課程知識(shí)和技能,對(duì)每個(gè)案例再分解任務(wù),進(jìn)行任務(wù)教學(xué),可以有效提升學(xué)生綜合能力和職業(yè)素養(yǎng)。同時(shí),單片機(jī)應(yīng)用中對(duì)于程序設(shè)計(jì)要求較高,只有持續(xù)通過大量的案例分析,對(duì)每個(gè)案例內(nèi)容分解再分解,細(xì)化再細(xì)化,以團(tuán)隊(duì)協(xié)作方式共同完成任務(wù),逐步理解程序,設(shè)計(jì)程序,才能由量變到質(zhì)變,進(jìn)一步提升學(xué)生的編程能力。并且該案例也為類似的單片機(jī)案例設(shè)計(jì)提供重要的參考和依據(jù),能夠繼續(xù)鞏固基礎(chǔ)知識(shí)和技能,不斷為單片機(jī)案例積累經(jīng)驗(yàn)、豐富方法。
參考文獻(xiàn):
[1]霍海波.單片機(jī)技術(shù)在智能電子產(chǎn)品中的應(yīng)用探討[J].山東工業(yè)技術(shù),2019(20):48,131.
[2]趙圓圓,唐緒偉,唐晨光.基于信息化單片機(jī)技術(shù)應(yīng)用課程教學(xué)設(shè)計(jì)[J].教育教學(xué)論壇,2019(31):268-269.
[3]紀(jì)峰,徐壯,郝靜.基于單片機(jī)PIC18F87J11串行通信模塊驅(qū)動(dòng)LCD1602的設(shè)計(jì)與實(shí)現(xiàn)[J].電子世界,2019(13):145-146.
[4]李虹靜,李升輝.基于STC8系列單片機(jī)的繼電器控制電路設(shè)計(jì)[J].科技與創(chuàng)新,2019(13):3738.
[5]王紅茹,唐煒.基于課程思政的微機(jī)原理與應(yīng)用課程教學(xué)改革與實(shí)踐探索[J].科教文匯(下旬刊),2019(6):84-85,90.
基金項(xiàng)目:2023年武威職業(yè)學(xué)院課程思政教學(xué)改革研究項(xiàng)目“思課融通,促進(jìn)課程建設(shè)深度融合的研究與實(shí)施-以單片機(jī)應(yīng)用技術(shù)為例”(WKT23037)
作者簡(jiǎn)介:陸興旺,男,甘肅武威人,副教授,本科,研究方向:通信與自動(dòng)控制方向。