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