基于STC8單片機兼容傳統51開(kāi)發(fā)板設計及雙語(yǔ)言編程的教學(xué)探究*
*課題項目:2020年度西南科技大學(xué)城市學(xué)院校級教學(xué)質(zhì)量與改革項目課題2020XJXM03單片機原理及應用線(xiàn)上課程建設與教學(xué)改革項目研究實(shí)施。
2021年度西南科技大學(xué)城市學(xué)院校級教學(xué)研究與改革項目課題CC-JJ2120現代學(xué)徒制創(chuàng )新創(chuàng )業(yè)課程項目在高校職業(yè)教育教學(xué)的實(shí)施研究項目研究實(shí)施。
作者簡(jiǎn)介:劉光乾(1975-),男,四川廣元,工程師,講師,研究方向為智能電子設計,物聯(lián)網(wǎng)應用。
0 引言
單片機教學(xué)在很多高職院校的很多專(zhuān)業(yè)都有涉及,不同層次專(zhuān)業(yè)水平的學(xué)生,在學(xué)習單片機與實(shí)踐開(kāi)發(fā)應用中難以過(guò)渡,特別是單片機硬件結構和軟件編程基礎較差時(shí)更是難以入門(mén)。本文基于眾多單片機教學(xué)與應用研究及學(xué)徒制教學(xué)改革與探索,從單片機應用與教學(xué)現狀分析、STC8H8K64U 單片機簡(jiǎn)介、STC8H8K64U 兼容STC89C52 開(kāi)發(fā)板的核心系統設計及圖形化編程與仿真等五個(gè)方面進(jìn)行講述,供單片機教學(xué)教改及單片機愛(ài)好者學(xué)習研究之用。
1 單片機應用與教學(xué)模式及現狀簡(jiǎn)介
單片機作為智能電子產(chǎn)品開(kāi)發(fā)設計及嵌入式基礎,業(yè)內項目式入門(mén)資料包括:郭天祥老師的“新概念51單片機”,及相關(guān)的單片機開(kāi)發(fā)經(jīng)驗與分享[1];以51 單片機課程為例的創(chuàng )客式項目教學(xué)在編程類(lèi)課程中的應用研究[2];邵華[3]老師以項目為導向的課程創(chuàng )新機制,在《單片機編程與實(shí)訓》課程中的實(shí)踐和對比效果顯著(zhù);陳育群[4] 老師在面向單片機初學(xué)者的編程方法探究中采用基于編程字典的方法能使單片機初學(xué)者快速掌握單片機的編程。
單片機的編程模式也是日新月異,如基于傳統51單片機C 語(yǔ)言編程技巧探討[5],介紹了編程特點(diǎn)與技巧及模塊化編程設計;張華林[6] 老師在單片機編程模塊化設計研究中詳細講述了模塊化編程方法;黎民山[7] 老師的基于流程圖編程的單片機軟件系統開(kāi)發(fā),將程序代碼與直觀(guān)圖形相結合,以圖形化的編程改變對程序語(yǔ)法及句法的要求;黃睿[8] 老師在雙編程語(yǔ)言在單片機項目驅動(dòng)教學(xué)中的運用,分別運用匯編語(yǔ)言和C 語(yǔ)言實(shí)現功能,實(shí)現選擇與融合的對比教學(xué);基于互聯(lián)網(wǎng)+ 技術(shù)的大病術(shù)后吹氣練習儀的圖形化單片機編程項目設計[9],以及基于創(chuàng )新創(chuàng )業(yè)教學(xué)實(shí)踐項目的山地羊肚菌物聯(lián)網(wǎng)應用設計[10],也從項目設計和教學(xué)實(shí)踐等方面進(jìn)行了單片機應用的探究,可見(jiàn)單片機應用與教學(xué)資源已經(jīng)琳瑯滿(mǎn)目了。
2 STC8H8K64U單片機簡(jiǎn)介
宏晶科技的《STC8H 系列單片機技術(shù)參考手冊》顯示,STC8H 系列單片機是可以不需要外部晶振和外部復位的單片機,是以超強抗干擾、超低價(jià)、高速、低功耗為目標8051 單片機,在相同的工作頻率下,STC8H系列單片機比傳統8051 約快12 倍。依次按順序執行完全部的111 條指令,STC8H 系列單片機僅需147 個(gè)時(shí)鐘,而傳統8051 則需要1 944 個(gè)時(shí)鐘。STC8H 系列單片機是STC 生產(chǎn)的單時(shí)鐘/ 機器周期(1T) 的單片機,是寬電壓、高速、高可靠、低功耗、強抗靜電、較強抗干擾的新一代8051 單片機,超級加密,指令代碼完全兼容傳統 8051。
3 STC8H8K64U兼容STC89C52開(kāi)發(fā)板的核心系統設計
3.1 STC8H8K64U兼容STC89C52開(kāi)發(fā)板設計的意義
根據STC8H8K64U 和STC89C52 的功能特性和引腳定義,讓STC8H8K64U 核心板兼容傳統STC89C52的40P 開(kāi)發(fā)板,是既兼容以前大量基于STC89C52 教學(xué)開(kāi)發(fā)板資源,又保留STC8H8K64U 的64 引腳全功能,使擴展開(kāi)發(fā)資源利用最大化,在教學(xué)和應用上都具有很好的意義。
3.2 STC8H8K64U兼容STC89C52開(kāi)發(fā)板設計的引腳對應
按照STC8H8K64U 和STC89C52 的功能特性和引腳定義及保留STC8H8K64U 的64 引腳全功能的原則,進(jìn)行引腳及功能對應,如表1。
3.3 STC8H8K64U兼容STC89C52核心板設計原理圖(如圖1)
3.4 STC8H8K64U兼容STC89C52核心板設計說(shuō)明
按照STC8H8K64U 兼容STC89C52 傳統40P 底座開(kāi)發(fā)板及保留STC8H8K64U 的64 引腳全功能的原則,排列相關(guān)器件及引腳,如圖2 所示。
4 STC8H8K64U核心板圖形化編程與仿真
4.1 STC8H8K64U核心板圖形化編程軟件
目前,軟硬件都比較經(jīng)典的“天問(wèn)51”系列開(kāi)發(fā)板和圖形化編程軟件同時(shí)具備在線(xiàn)編程和脫機編程兩種編程環(huán)境。脫機編程可以直接進(jìn)行圖形編程,同時(shí)生成基于SDCC 的字符C 文件,也可以直接在字符編程窗口進(jìn)行字符編程;編程結果可以通過(guò)“天問(wèn)”下載器直接連接開(kāi)發(fā)板進(jìn)行在線(xiàn)運行,實(shí)現實(shí)物仿真效果,也可以直接編譯生成main.c 文件。在線(xiàn)編程環(huán)境還可以直接導出Keil C 的工程文件,非常方便?!疤靻?wèn)”圖形化編程軟件可以在其官方網(wǎng)站下載,目前是Block0.1.6 版本,安裝即可。
4.2 STC8H8K64U核心板圖形化編程方法
在“天問(wèn)”網(wǎng)站及論壇有很多關(guān)于該圖形化編程的教程和參考資料,在打開(kāi)天問(wèn)Block 軟件后,其界面內包含了相應的操作功能區及菜單按鈕,如圖3 所示。點(diǎn)擊左上角的文件夾圖標菜單按鈕,出現“新建項目”、“打開(kāi)項目”、“保存”、“項目另存”、“項目中心”、“提交作業(yè)”的菜單頁(yè)面,可進(jìn)行新建、打開(kāi)項目及保存等相關(guān)操作。
左邊各功能模塊及邏輯控制圖形化指令包括單片機內部模塊,如:系統配置、GPIO 模塊、PWM 模塊、ADC 模塊、定時(shí)器模塊、串口模塊、外部中斷設置、所有中斷設置、讀寫(xiě)寄存器。邏輯與控制模塊包括:控制、數學(xué)與邏輯、文本與數組、變量、函數。文本模塊包括:顯示器模塊(LED 流水燈、HC595 串入并出位移緩存器、數碼管、點(diǎn)陣LED、RGB 流水燈、OLED 屏幕、LCD1602 屏幕、LCD12864、TFT 彩屏、彩屏觸摸)、傳感器模塊、紅外、I2C、SPI、擴展等模塊。豐富的功能模塊及庫函數給項目開(kāi)發(fā)學(xué)習應用帶來(lái)很多便利,對初學(xué)者入門(mén),推進(jìn)教學(xué)應用更為有利。
圖形編程和字符編程分別位于界面主功能區左右兩個(gè)主窗口,以滿(mǎn)足編程窗口的最大化,兩個(gè)窗口大小可以用其交界面下部的三角按鈕拖動(dòng)改變相應窗口大小,以滿(mǎn)足圖形化編程或字符編程課程的需要。
未連接菜單表示沒(méi)有連接相應的開(kāi)發(fā)板,如果將開(kāi)發(fā)板用對應的編程下載器連接到電腦USB 口,則會(huì )顯示已連接設備,通過(guò)編程可進(jìn)行串口監視器的應用、運行程序進(jìn)行在線(xiàn)硬件仿真或編譯生成main.c 文件供,KeilC 環(huán)境使用。其中運行程序進(jìn)行在線(xiàn)硬件仿真突破了傳統Keil C 軟件仿真或通過(guò)STC-ISP 仿真的方式,更加直接地進(jìn)行隨時(shí)編程隨時(shí)運行并查看結果,非常方便。軟件右上角的“更多”菜單,提供了編程手冊、芯片手冊、視頻學(xué)習、開(kāi)發(fā)者論壇、購買(mǎi)、安裝驅動(dòng)等功能模塊,讓學(xué)習編程更加方便,其中編程手冊提供了初學(xué)者使用軟件的基本方法介紹,視頻學(xué)習通過(guò)各功能程序的編程使用操作視頻,更加直觀(guān)形象地展示該軟件的使用方法。
4.3 STC8H8K64U核心板圖形化編程技巧
雖然該軟件已經(jīng)把單片機編程變得很簡(jiǎn)單形象,但是對于初學(xué)者可能還是感覺(jué)無(wú)從下手, 這里作個(gè)引導和說(shuō)明。
1)“天問(wèn)”圖形化編程基于模塊化設計,相應的功能模塊已經(jīng)形成功能函數進(jìn)行封裝,編程者只需要根據功能需求進(jìn)行調用, 如圖4所示。
整個(gè)程序遵循一個(gè)主程序入口:
void main(void)
{
setup();
while(1){
loop();
}
}
在主程序中執行初始化和反復執行等功能子程序:
void setup()
{
twen_board_init();// 天問(wèn)51 初始化
}
void loop()
{
}
而STC8 的頭文件及系統時(shí)鐘初始化也在系統框架首部默認給出:
#include <STC8HX.h>uint32 sys_clk = 24000000;// 設置PWM、定時(shí)器、串口、EEPROM 頻率參數
#include “l(fā)ib/twen_board.h”
2)由“天問(wèn)”Block 圖形化編程框架可以看出,所有的初始化包括端口定義、變量和函數定義、定時(shí)器和中斷等初始化都在“初始化”框架模塊里面進(jìn)行,而主要功能程序全部放在“重復執行”框架模塊中。需要注意的是,初始化工作很重要,很多功能模塊操作前,要先看一下里面有沒(méi)有對應的初始化積木指令,如果有一定要放在初始化框架中進(jìn)行初始化。在“重復執行”框架里面放置功能程序,顯然將全部功能程序直接放置在此框架里面是不明智的,不僅可讀性差,也不方便調試和移植,最好是將各功能程序分解成子程序,再在“重復執行”框架中調用,根據程序功能的復雜程度,可以執行多級子程序(函數)模塊。
3)雖然功能程序要在“重復執行”框架中才能被執行,但是在此框架中執行的程序都是按照先后順序依次執行,很多時(shí)候有些功能程序是有規律地重復執行,可采用定時(shí)器模式進(jìn)行,這樣在定時(shí)器中既能按照設計的時(shí)間定時(shí)執行功能,同時(shí)也不會(huì )占用“重復執行”框架的資源。
4)對于圖形化編程,很多初學(xué)者要么難以掌握編程流程和思路,要么不知道該怎么調用合適的指令,或是程序邏輯銜接不合理,導致運行失敗或死機。采用流程圖和模塊化編程的思路,先將要實(shí)現的功能進(jìn)行流程化梳理,再將功能程序進(jìn)行資源分配,根據需要實(shí)現的功能對應于單片機硬件接口和相關(guān)電路元件。本項目設計的核心板也是為了兼容傳統STC89C52 開(kāi)發(fā)板,可以直接將其插在對應的40P 底座上,利用現有開(kāi)發(fā)板硬件資源如LED 燈、按鍵、數碼管或一些傳感器和繼電器燈,也可以根據需要單獨用杜邦線(xiàn)將組件按照組件使用手冊與核心板連接。
參考文獻:
[1] 劉玉秀.跟郭天祥學(xué)單片機[J].新課程·中旬,2015(10):218.
[2] 陳美坤,王保云,李燾燾.創(chuàng )客式項目教學(xué)在編程類(lèi)課程中的應用研究[J].中國教育信息化,2020(18):48-52.
[3] 邵華.以項目為導向的《單片機編程與實(shí)訓》課程改革[J].教育現代化,2019(6):106-108.
[4] 陳育群.面向單片機初學(xué)者的編程方法探究[J].單片機與嵌入式應用,2019(11):16-19.
[5] 葉曉龍.51單片機C語(yǔ)言編程技巧探討[J].信息與電腦,2019(4):66-67.
[6] 張華林.單片機編程模塊化設計研究[J].天工,2019(2):121.
[7] 黎民山.基于流程圖編程的單片機軟件系統開(kāi)發(fā)[J].產(chǎn)業(yè)與科技論壇,2019(3):81-82.
[8] 黃睿.雙編程語(yǔ)言在單片機項目驅動(dòng)教學(xué)中的運用[J].教育教法探討與實(shí)踐,2016(5):245-246.
[9] 劉光乾,劉桄序.基于互聯(lián)網(wǎng)+技術(shù)的大病術(shù)后吹氣練習儀設計[J].軟件工程與應用,2020(9)3:228-243.
[10] 劉光乾,陳丹,劉慶,等.山地羊肚菌種植的物聯(lián)網(wǎng)應用.現代農業(yè)科技,2021(1):95-96+102.
(本文來(lái)源于《電子產(chǎn)品世界》雜志2021年4月期)
評論