本文以STC8H8K64U单片机兼容STC89C52传统开发板及发挥引脚最大化资源配置设计核心板,结合与Keil C兼容的图形化编程语言,以项目开发和教学应用为基础讲解对51单片机的软硬件开发应用,以更好地推进单片机教学和项目开发实践应用。
0 引言
单片机教学在很多高职院校的很多专业都有涉及,不同层次专业水平的学生,在学习单片机与实践开发应用中难以过渡,特别是单片机硬件结构和软件编程基础较差时更是难以入门。本文基于众多单片机教学与应用研究及学徒制教学改革与探索,从单片机应用与教学现状分析、STC8H8K64U 单片机简介、STC8H8K64U 兼容STC89C52 开发板的核心系统设计及图形化编程与仿真等五个方面进行讲述,供单片机教学教改及单片机爱好者学习研究之用。
1 单片机应用与教学模式及现状简介
单片机作为智能电子产品开发设计及嵌入式基础,业内项目式入门资料包括:郭天祥老师的“新概念51单片机”,及相关的单片机开发经验与分享;以51 单片机课程为例的创客式项目教学在编程类课程中的应用研究;邵华老师以项目为导向的课程创新机制,在《单片机编程与实训》课程中的实践和对比效果显著;陈育群 老师在面向单片机初学者的编程方法探究中采用基于编程字典的方法能使单片机初学者快速掌握单片机的编程。
单片机的编程模式也是日新月异,如基于传统51单片机C 语言编程技巧探讨,介绍了编程特点与技巧及模块化编程设计;张华林老师在单片机编程模块化设计研究中详细讲述了模块化编程方法;黎民山老师的基于流程图编程的单片机软件系统开发,将程序代码与直观图形相结合,以图形化的编程改变对程序语法及句法的要求;黄睿老师在双编程语言在单片机项目驱动教学中的运用,分别运用汇编语言和C 语言实现功能,实现选择与融合的对比教学;基于互联网+ 技术的大病术后吹气练习仪的图形化单片机编程项目设计,以及基于创新创业教学实践项目的山地羊肚菌物联网应用设计,也从项目设计和教学实践等方面进行了单片机应用的探究,可见单片机应用与教学资源已经琳琅满目了。
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 灯、按键、数码管或一些传感器和继电器灯,也可以根据需要单独用杜邦线将组件按照组件使用手册与核心板连接。