方 淼
(安徽大學江淮學院 理工部, 安徽 合肥 230039)
單片機課程是電子類專業(yè)開設(shè)的一門重要的應(yīng)用實踐類課程, 該課程不僅要求學生理解單片機的架構(gòu)、 工作原理, 還要熟練掌握單片機的編程方法, 在實踐教學的過程中培養(yǎng)學生的工程實踐能力和自主創(chuàng)新能力[1-2]. 因此在單片機課程的實踐教學中, 教師應(yīng)考慮從工程應(yīng)用的角度設(shè)計實驗案例, 并且案例應(yīng)體現(xiàn)綜合性、 階段性和創(chuàng)造性, 進而指導(dǎo)學生完成資料查閱, 并確定設(shè)計方案和系統(tǒng)的軟硬件實現(xiàn), 這樣才能有效地提高實踐教學的質(zhì)量[3-5].
本文設(shè)計了一種適合于單片機綜合設(shè)計要求的實驗項目——基于STC89C52單片機的函數(shù)信號發(fā)生器設(shè)計實驗, 其要求學生通過Altium Designer 19軟件完成硬件電路的設(shè)計并制作PCB板, 并針對功能需求和硬件條件進行軟件設(shè)計, 從而完成一個完整的單片機系統(tǒng)的設(shè)計和調(diào)試. 該實驗不僅能幫助學生理解DAC的工作原理和應(yīng)用, 還能掌握單片機應(yīng)用系統(tǒng)的軟硬件設(shè)計和實現(xiàn)方法[6].
函數(shù)信號發(fā)生器實驗系統(tǒng)主要由STC89C52單片機、 D/A轉(zhuǎn)換模塊、 模擬信號處理電路、 按鍵輸入模塊以及LCD顯示模塊等部分構(gòu)成, 實驗系統(tǒng)的原理圖如圖1所示.
圖1 實驗系統(tǒng)原理圖
單片機的I/O口用于D/A轉(zhuǎn)換, 實驗要求實現(xiàn)至少三種以上波形輸出, 同時采用獨立按鍵實現(xiàn)各功能的切換, 包括切換輸出波形、 信號峰峰值和頻率, LCD顯示模塊用于顯示輸出波形的相關(guān)信息.
實驗項目的設(shè)計充分考慮學生對課程的掌握情況, 采用層次化的教學方式. 實驗要求包括基礎(chǔ)部分、 提高部分和創(chuàng)新部分. 基礎(chǔ)部分要求學生編程實現(xiàn):包括實現(xiàn)3種波形輸出(正弦波、 矩形波和鋸齒波); 輸出波形的頻率范圍為10 Hz~1kHz之間, 輸出的波形及頻率可以通過按鍵進行調(diào)節(jié); 還要求在LCD顯示器上顯示輸出波形的類型、 頻率及峰值. 提高部分要求學生增加輸出波形的類型, 對于增加低通濾波器模塊, 需要對DAC0832輸出的波形進行濾波獲取純凈的波形; 對于擴展輸出波形的頻率范圍, 最高頻率達到20 kHz. 其要求學生根據(jù)自身水平, 進一步提高輸出波形的質(zhì)量, 擴展輸出頻率范圍及幅度范圍, 并增加其他模塊實現(xiàn)自動控制和多路同步信號輸出等.
實驗的硬件系統(tǒng)以STC89C52單片機為主控芯片, 結(jié)合D/A轉(zhuǎn)換模塊、 模擬信號處理電路, 按鍵輸入模塊和LCD顯示模塊實現(xiàn)波形輸出. 硬件電路的設(shè)計采用Altium Designer 19軟件, 學生需利用該軟件繪制相應(yīng)的電路原理圖以及PCB板圖, 并自作電路板, 以完成元器件的焊接和硬件電路的調(diào)試.
本實驗選用的是宏晶公司的STC89C52單片機, 該單片機基于8051微處理器, 片內(nèi)集成了8 kB的flash ROM和512 B的RAM, 支持在系統(tǒng)編程(ISP), 是基礎(chǔ)的入門級單片機, 其具有高速、 低功耗、 強抗干擾能力以及價格低等優(yōu)點[6].
單片機最小系統(tǒng)是讓單片機正常工作的最小配置電路, 包括單片機、 電源電路、 復(fù)位電路和時鐘電路, 其是整個函數(shù)信號發(fā)生器的核心, 控制系統(tǒng)和其他模塊協(xié)調(diào)工作. 為了保證系統(tǒng)的穩(wěn)定性, 本實驗選用了12 MHz晶振構(gòu)建時鐘電路[7]. 單片機所需工作電壓為5 V, 其可以通過USB口供電, 也可以由穩(wěn)壓電源供電, 設(shè)計USB口供電的方式是為了便于和各種具有USB接口的設(shè)備進行連接. 此外, 單片機還支持上電復(fù)位和按鍵復(fù)位兩種復(fù)位方式. Altium Designer繪制的最小系統(tǒng)原理圖如圖2所示.
圖2 單片機最小系統(tǒng)
實驗系統(tǒng)選用8位的D/A轉(zhuǎn)換芯片DAC0832將單片機輸出的數(shù)字量轉(zhuǎn)換為模擬量, 模擬量的建立時間只需要1μs左右, 故此能夠快速地實現(xiàn)D/A轉(zhuǎn)換并產(chǎn)生輸出波形. DAC0832和STC89C52單片機的連接方式有三種:直通方式, 單緩沖方式和雙緩沖方式. 基礎(chǔ)部分實驗只要求輸出單路的模擬信號, 因此基礎(chǔ)部分可采用單緩沖方式將DAC0832接在單片機的P2口上, 使得DAC0832的輸出在單片機的控制下隨P2口輸出的數(shù)字量的變化而變化, 提高部分或創(chuàng)新部分實驗, 學生須根據(jù)設(shè)計需要采用雙緩沖方式.
DAC0832芯片轉(zhuǎn)換后輸出信號為電流信號, 需采用相應(yīng)的電路將電流信號轉(zhuǎn)換為電壓信號, 因此在DAC0832的輸出端選用LM324芯片進行電流-電壓信號轉(zhuǎn)換和電壓信號的放大. LM324芯片內(nèi)部集成了4個獨立的運放, 其中一路運放接DAC0832的Iout1輸出端, 其利用芯片內(nèi)部自帶的反饋電阻構(gòu)建反想放大器, 以實現(xiàn)電流-電壓信號轉(zhuǎn)換, 同時可將輸出的電壓信號接另一路運放, 構(gòu)成二級放大[8], 以實現(xiàn)波形輸出, 波形產(chǎn)生電路如圖3所示.
圖3 波形產(chǎn)生電路
為了顯示輸出波形的相關(guān)信息, 實驗系統(tǒng)還加入了LCD1602液晶顯示器. 該顯示器屬于點陣型液晶顯示器, 可顯示16(每行)×2(行)個5×10或5×7點陣漢字. 圖4為LCD1602模塊的驅(qū)動電路圖, 液晶顯示模塊通過8位并行數(shù)據(jù)總線和3條位控制總線實現(xiàn)和單片機的通信, 數(shù)據(jù)總線接單片機的P0口, 控制引腳由單片機的P2.0~2.2引腳控制.
圖4 LCD1602驅(qū)動電路圖
本實驗設(shè)計的軟件設(shè)計[7]包括系統(tǒng)初始化、 按鍵掃描程序設(shè)計、 3種波形輸出程序設(shè)計以及LCD液晶屏顯示程序的實現(xiàn). 系統(tǒng)的工作流程圖如圖5所示.
圖5 系統(tǒng)軟件流程圖
本實驗系統(tǒng)采用3個獨立按鍵S1~S3, 分別連接STC89C52單片機的P3.2~P3.4引腳, 用于進行各種功能的切換. 其中S1增加輸出信號的幅值; S2用于增加信號頻率; S3進行波形切換, 采用按鍵掃描方式獲取按鍵狀態(tài), 以切換不同波形存儲數(shù)據(jù)的輸出, 從而實現(xiàn)波形切換. 而P3.2和P3.3引腳復(fù)用位外部中斷0和外部中斷1的請求信號輸入端, 因此可采用中斷方式處理S1和S2按鍵閉合.
波形的控制輸出由軟件實現(xiàn), 對需要輸出的波形進行采樣取點, 每個周期內(nèi)取若干采樣點并以數(shù)組的形式存儲, 當需要輸出某種波形時, 單片機會根據(jù)地址信息搜索對應(yīng)的數(shù)組, 并將數(shù)組中的數(shù)值送到相應(yīng)的I/O端口. 本實驗要求至少設(shè)計輸出3種信號波形, 包括正弦波、 三角波和矩形波, 各波形的采樣點可以通過計算直接獲取. 以正弦波為例, 直接定義數(shù)組sin[N]來存儲正弦波信號的采樣值:
圖6 按鍵流程圖
sin[N]=v*(sin(2*pi*i/N)+1),i=0:1:64
(1)
其中N為采樣點數(shù),v是8位二進制數(shù), 最大為FFH. 取100個采樣點, 輸出波形周期設(shè)為100 ms,v=FFH時, 每個點的采樣時間
(2)
而STC89C52的VREF為5 V, 因此輸出正弦波的峰值也為5 V.
在實驗過程中, 應(yīng)根據(jù)班級人數(shù)靈活安排分組, 通常2~3人一組, 以完成函數(shù)信號發(fā)生器的軟硬件設(shè)計及實現(xiàn), 共同的是使得學生掌握單片機系統(tǒng)的設(shè)計方法及步驟, 并學會進行系統(tǒng)設(shè)計(包括需求分析、 硬件設(shè)計、 原理圖設(shè)計、 PCB設(shè)計及制作、 硬件調(diào)試以及模塊化的源程序設(shè)計和調(diào)試等), 從而有效地提高學生的工程設(shè)計能力和動手能力, 同時培養(yǎng)學生的團隊協(xié)作意識和創(chuàng)新能力.
實驗采用層次化的教學方式, 考慮學生的理論水平和綜合能力, 要求所有學生必須完成基礎(chǔ)實驗, 并至少選擇并一項提高實驗. 教師在實驗過程中應(yīng)幫助學生分析遇到的問題, 同時鼓勵能力較強的學生選擇性地完成創(chuàng)新性實驗部分.
本文完成了一種基于STC89C52單片機的函數(shù)信號發(fā)生器的設(shè)計及實現(xiàn). 學生在實驗過程中使用Altium Designer 19進行硬件電路原理圖的設(shè)計, 并制作PCB板, 焊接元器件, 以及配合相應(yīng)軟件實現(xiàn)函數(shù)信號發(fā)生器的設(shè)計. 學生可根據(jù)自身能力以及興趣層次化地完成實驗設(shè)計, 并對函數(shù)信號發(fā)生器的功能進行拓展和改善. 該實驗項目具有啟發(fā)性, 開放性, 能有效地提高學生的實踐動手能力及創(chuàng)新性, 在實踐教學中取得了較好的效果.