寧志剛,尹軍利,李圣,夏云芝
(南華大學(xué) 電氣工程學(xué)院,湖南 衡陽)
單片機原理及應(yīng)用是理論性和實踐性都較強的一門課程。通過該課程的學(xué)習(xí),讓學(xué)生熟悉單片機的內(nèi)部結(jié)構(gòu)和工作原理,掌握單片機軟、硬件設(shè)計方法和技巧,提高學(xué)生的實踐動手能力,為單片機系統(tǒng)開發(fā)奠定基礎(chǔ)。為了達(dá)到這門課程的培養(yǎng)目標(biāo),必須重視實踐教學(xué)環(huán)節(jié),構(gòu)建適合該課程實踐培養(yǎng)需求的實驗教學(xué)模式[1]。單片機實驗通常采用實驗箱教學(xué)方式。實驗箱教學(xué)模式采用模塊連線方式,學(xué)生做完實驗后往往弄不清楚電路實際接線圖[2]。一個實驗通常在2個課時內(nèi)完成。在有限的實驗時間內(nèi),學(xué)生要弄清楚實驗工作原理、編寫程序代碼、調(diào)試程序和完成系統(tǒng)調(diào)試,相當(dāng)一部分同學(xué)不能按時保質(zhì)保量完成。虛實結(jié)合的實驗?zāi)J侥芸朔@種實驗?zāi)J降谋锥?。虛擬實驗不受時間、空間和實驗設(shè)備的限制,學(xué)生可以充分利用課余時間隨時隨地搭建虛擬的實驗電路圖、編寫和調(diào)試程序、完成軟硬件聯(lián)調(diào)。虛擬實驗是理想化的實驗?zāi)J剑瑢嵨飳嶒炌@一模式不完全一致[3]。通過實物實驗,能夠提高學(xué)生的調(diào)試能力和排除實際故障能力[4]。虛實結(jié)合的實驗?zāi)J侥軌蚪Y(jié)合虛擬實驗和實物實驗的優(yōu)勢,提高實驗的教學(xué)效果[6]。本文以虛實結(jié)合的串行A/D轉(zhuǎn)換實驗為例,對虛實結(jié)合的實驗?zāi)J竭M行探索和實踐。
TLC549時序圖如圖1所示。TLC549具有I/O CLOCK時鐘信號和片選兩個控制輸入端。tsu是下降沿到I/O CLOCK上升沿的最小間隔時間,大約為1.4μs。ten是下降沿到DATA OUT輸出數(shù)據(jù)的最小間隔時間,大約為1.2μs。
圖1 TLC549時序圖
TLC549是8位逐次逼近式串行A/D轉(zhuǎn)換器。內(nèi)部包含系統(tǒng)時鐘、采樣、保持、A/D轉(zhuǎn)換器、數(shù)據(jù)寄存器及控制邏輯電路。TLC549每25us重復(fù)一次“輸入—轉(zhuǎn)換—輸出”。當(dāng)片選信號為高電平時,DATA OUT處于高阻態(tài),此時I/O時鐘被禁止。當(dāng)片選信號從高電平跳變?yōu)榈碗娖綍r,前次A/D轉(zhuǎn)換結(jié)果的最高有效位MSB(A7)從DATA OUT端輸出。在接下來的7個I/O CLOCK周期的下降沿依次輸出前次A/D轉(zhuǎn)換結(jié)果的后7位(A6~A0),前7個I/O CLOCK周期結(jié)束后8位數(shù)據(jù)已經(jīng)全部輸出。從第4個I/O CLOCK周期的下降沿開始進行本次A/D轉(zhuǎn)換采樣,采樣持續(xù)到第8個I/O CLOCK周期的下降沿。從第8個I/O CLOCK周期的下降沿開始進入保持狀態(tài),開始進行本次A/D轉(zhuǎn)換。這時,片選信號必須變?yōu)楦唠娖?。該高電平至少保?7us,直到A/D轉(zhuǎn)換結(jié)束。否則,片選信號從高電平跳變?yōu)榈碗娖?,引起系統(tǒng)復(fù)位。
TLC549串行A/D轉(zhuǎn)換虛擬實驗主要包括搭建虛擬實驗平臺、編寫程序代碼、程序代碼分析、程序調(diào)試、軟硬件聯(lián)調(diào)等步驟。這部分工作在課前預(yù)習(xí)實驗時完成。
搭建的串行A/D轉(zhuǎn)換虛擬實驗平臺如圖2所示。實驗平臺主要包括主控模塊、TLC549串行A/D轉(zhuǎn)換模塊和顯示模塊。主控模塊控制器選用AT89C51單片機。AT89C51的引腳P20、P21和P22分別接TLC549串行A/D轉(zhuǎn)換器的數(shù)據(jù)輸出端SDO、時鐘信號SCLK和片選信號。A/D轉(zhuǎn)換器的VREF+接+5V電壓,VREF-接地;AIN為模擬信號輸入端,外接電壓變化范圍為0~5V。顯示模塊由6位數(shù)碼管、LED驅(qū)動芯片74LS245和緩沖器7407組成。6位數(shù)碼管采用動態(tài)顯示,由AT89C51的P1口提供段碼,P3口提供位選信號。
圖2 TLC549串行A/D轉(zhuǎn)換虛擬實驗平臺
根據(jù)TLC549時序圖,參照教材中TLC2543串行A/D轉(zhuǎn)換程序代碼[6],編寫TLC549串行A/D轉(zhuǎn)換程序代碼。這里主要介紹關(guān)鍵函數(shù)A/D轉(zhuǎn)換函數(shù),其代碼如下:
因為TLC549是8位串行A/D轉(zhuǎn)換器,所以A/D轉(zhuǎn)換函數(shù)中的n取8。_nop_()是單周期指令。如果單片機的晶振頻率是12MHz,運行一條_nop_()指令,需要1us。時鐘信號高電平和低電平都采用兩條_nop_()指令進行延時,時鐘周期信號高電平寬度和低電平寬度都是2us。TLC549進行A/D轉(zhuǎn)換時,高電平至少保持17us。程序中變?yōu)楦唠娖胶螅捎?7條_nop_()指令進行延時。ADC函數(shù)和AD函數(shù)的數(shù)據(jù)類型是unsigned int,它對應(yīng)的數(shù)據(jù)長度是16位。若A/D轉(zhuǎn)換結(jié)果是166,對應(yīng)的二進制數(shù)是10100110。下面詳細(xì)分析A/D轉(zhuǎn)換結(jié)果串行輸出過程:1)片選信號下降沿,輸出A/D轉(zhuǎn)換結(jié)果最高位第8位A7(1),再左移1位,輸出二進制串變?yōu)?0。2)第1個時鐘下降沿,輸出A/D轉(zhuǎn)換結(jié)果次高位第7位數(shù)據(jù)(0)。因為輸出數(shù)據(jù)位是0,輸出二進制串不變,還是10。然后左移1位,輸出二進制串變?yōu)?00。3)第2個時鐘下降沿,輸出A/D轉(zhuǎn)換結(jié)果第6位數(shù)據(jù)(1),即100與0x01進行或運算,輸出二進制串變?yōu)?01。然后左移1位,輸出二進制串變?yōu)?010。4)第3個時鐘下降沿,輸出A/D轉(zhuǎn)換結(jié)果第5位數(shù)據(jù)(0)。輸出二進制串不變,還是1010。然后左移1位,輸出二進制串變?yōu)?0100。5)第4個時鐘下降沿,輸出A/D轉(zhuǎn)換結(jié)果第4位數(shù)據(jù)(0)。輸出二進制不變,還是10100。然后左移1位,輸出二進制串變?yōu)?01000。6)第5個時鐘下降沿,輸出A/D轉(zhuǎn)換結(jié)果第3位數(shù)據(jù)(1),即101000與0x01進行或運算,二進制串變?yōu)?01001。然后左移1位,輸出二進制串變?yōu)?010010。7)第6個時鐘下降沿,輸出A/D轉(zhuǎn)換結(jié)果第2位數(shù)據(jù)(1),即1010010與0x01進行或運算,二進制串變?yōu)?010011。然后左移1位,輸出二進制串變?yōu)?0100110。8)第7個時鐘下降沿,輸出A/D轉(zhuǎn)換結(jié)果第1位數(shù)據(jù)(0)。輸出二進制串不變,還是10100110。然后左移1位,輸出二進制串變?yōu)?01001100。這時候,A/D轉(zhuǎn)換結(jié)果已全部輸出,數(shù)據(jù)長度為9位。因為AD函數(shù)的數(shù)據(jù)長度是16位,9位數(shù)據(jù)還處于有效數(shù)據(jù)長度范圍之內(nèi)。最終輸出數(shù)據(jù)還需要進行一次右移操作,輸出結(jié)果變?yōu)?位,對應(yīng)地輸出二進制串為10100110(166)。
利用Keil C51軟件對程序代碼進行調(diào)試,將生成的.hex文件下載到AT89C51處理器當(dāng)中,進行軟硬件聯(lián)調(diào),運行的結(jié)果如圖2所示。
實物實驗采用浙江天煌科技實業(yè)有限公司研制的THGMU-1型多種單片機開發(fā)綜合實驗箱完成。實驗時利用實驗箱上的TLC549 A/D轉(zhuǎn)換器進行A/D轉(zhuǎn)換實驗,將THKL-C51單片機仿真器插到模塊的鎖緊插座中。采用USB線連接計算機與仿真器,計算機與單片機實驗系統(tǒng)之間采用串行通信方式。實驗系統(tǒng)的電位器提供模擬量輸入,模擬輸入電壓的取值范圍是0~5V左右。調(diào)節(jié)電位器旋鈕,顯示值隨著變化。旋鈕順時針旋轉(zhuǎn)時,可調(diào)電壓值增大。模擬量轉(zhuǎn)換成數(shù)字量后,采用LED數(shù)碼管顯示數(shù)字量。采用8P排線將單片機系統(tǒng)的P1和P3口分別連接8位數(shù)碼管段選端口JD1和位選端口JD2,8位數(shù)碼管采用動態(tài)顯示方式。單片機系統(tǒng)的P20、P21和P22引腳分別連接A/D轉(zhuǎn)換器的DATA、CLK和CS-549,A/D轉(zhuǎn)換器的模擬信號輸入端AIN連接電位器的可調(diào)電壓輸出端口。Proteus仿真系統(tǒng)與實驗箱單片機系統(tǒng)的位選地址分布不相同。只要修改位選地址,就可將程序代碼移植到單片機實驗箱實物實驗當(dāng)中。實物實驗時,要嚴(yán)格按照實驗步驟進行實驗。否則,就會出現(xiàn)數(shù)據(jù)通信擁塞現(xiàn)象。實物實驗圖如圖3所示。
圖3 實物實驗圖
這種虛實結(jié)合的單片機實驗?zāi)J揭殉晒?yīng)用于我校單片機實驗教學(xué)過程當(dāng)中,是一種成功的實踐教學(xué)模式。在新冠疫情期間網(wǎng)絡(luò)在線教學(xué)過程當(dāng)中,學(xué)生可先在家中完成虛擬實驗,返校后再補做實物實驗。這種實驗?zāi)J桨l(fā)揮了虛擬實驗和實物實驗的優(yōu)勢,充分考慮學(xué)生的學(xué)習(xí)時間和學(xué)習(xí)空間,最大限度提高了實驗的教學(xué)效果,培養(yǎng)了學(xué)生的工程實踐能力和創(chuàng)新能力。