智能家居专业一体化课程研究
2019-11-16武志鹏焦红卫
武志鹏 焦红卫
摘 要:以STC单片机控制LED显示屏为例,阐述在智能家居及其相关专业开展单片机教学的特点与困境,分析LED显示屏的结构特点与控制方法,研究单片机C语言编写驱动程序的关键技术,探讨该课程一体化教学内容。最后在Proteus平台上进行软硬件交互仿真与调试,使一体化课程中的单片机模块教学更加形象具体。
关键词:教学研究;单片机;C语言;LED显示屏;智能家居;Proteus平台
中图分类号:TP393;G642.423文献标识码:A文章编号:2095-1302(2019)10-0-04
0 引 言
随着嵌入式系统与各类硬件设备的不断融合,尤其是物联网智能家居技术的逐步发展,以单片机为核心的计算机控制技术成为物联网智能家居相关专业学生的必修课。智能家居专业本质上属于系统集成应用,是多专业的有机融合。学生往往需要在有限的学年里完成趋于无限的课程,因而传统的教学方法与教学节奏难以满足需要。另外,单片机教学往往以单片机内部结构、单片机原理和汇编指令为核心,这种教学模式难以有效培养学生的应用技能,也难以激发学生的积极性,往往导致学生认为学习内容枯燥乏味,最终造成学生的应用能力不足。因此,单片机教学应该采用理论与实践有机结合的一体化教学方式,进而增强学生的感性认识和工程体验[1-4]。
1 LED屏结构特点及工作原理
基于发光二极管的数码管与点阵模块是一类重要的显示器件,其可靠性高,使用寿命长,环境适应能力强,操作使用方便灵活,且顯示屏面积可根据实际需求进行扩展,对控制系统性能要求低,因而在物联网智能家居产品中得到了广泛应用。根据LED的布局结构不同,常见的LED显示器可以分为数码管类与点阵类。智能家居LED显示器如图1所示。数码管显示字符的种类简单有限,主要用来显示温度、湿度、时间及少量字母组成的单词,如图1(a)所示。而点阵类可显示更加丰富的内容,如图1(b)所示。
教学中常采用8位8段数码管和8×8点阵屏,这两种显示屏成本低、显示内容灵活性强。数码管一般不具备内置字符取模器,通过查阅码表可实现对数码管显示内容的控制,而点阵屏则通常需要使用取模软件。LED显示屏如图2所示。
图2中两种显示器均以发光二极管为元件。外观上,数码管和点阵是两种不同的显示器,但是两者都通过对LED采取不同的布置方式组合而成,硬件连线与控制方法均相同,其原理如图3所示。两种显示屏各有64个LED,8个数码管共阳端即其位选线对应点阵的8根列线;8个数码管的段选并联组成8根段选线,对应点阵的8根行线。两者均可用多路复用技术即动态扫描法控制[5-6]。
开展教学时,可利用Proteus仿真软件搭建原理图,也可组织学生实际操作,采用分立元件搭建数码管与点阵,使学生加深对元件结构的认知。搭建完成后,首先带领学生使用单片机对显示屏进行简单规则的点亮与熄灭,待学生掌握控制规律后,再开展后续程序设计课程。
2 数码管滚动
数码管结构单一,显示内容有限,编码方法易于掌握,应首先开展数码管的滚动控制教学。
2.1 程序原理分析及设计
要求显示内容“HELLO”,自右至左滚动显示,周而复始。采用8位8段共阳型数码管显示5位字符,根据数码管动态扫描原理,需用3个空屏“0xFF”补足显示内容(0xFF,0xFF,0x89,0x86,0xC7,0xC7,0xC0,0xFF),若显示内容的字符数量大于8且不为8的整倍数,则应用空屏“0xFF”补足至8的整倍数。
经分析,本例滚动动画过程可分解为17帧,动画帧次分解见表1所列。将表中7帧数据循环发送至数码管即可显示滚动动态效果。由表易知,两个for循环即可满足数据的循环发送,但考虑到数据帧之间需保留一段时间使人眼能够识别,因此可通过增加一个for循环控制滚动速度[7],程序流程如图4所示。
2.2 编写程序及仿真
由上述原理,在Keil软件平台上编写C语言程序,仿真结果如图5所示,主要程序截取如下:
#define duanxuan P2//数码管段选
#define weixuan P3//数码管位选
uchar duan [] = {//字码数组
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//空屏
0xFF,0xFF,0x89,0x86,0xC7,0xC7,0xC0,0xFF,
//3个空屏补足8位显示内容
0xFF, 0xFF,0xFF,0xFF, 0xFF, 0xFF, 0xFF, 0xFF};//空屏
uchar wei [] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00};//共阳数码管位选
void main()
{while(1)
{uchar i,j,k;
for(i=0;i<17;i++)//循环发送17帧
{for(j=0;j<100;j++)//滚动速度
{for(k=0;k<8;k++)//8位数码管动态扫描
{duanxuan=duan[k+i];
//根据帧数选取8个段码发送至段选端口
weixuan=wei[k];
delay(50);//延时函数
weixuan=wei[8];//数码管消隐
} } } } }
在讲授此部分内容时,若采用逐个指令逐个语法讲解的教学方法,则极易造成学生难以跟上教学节奏,进而失去学习兴趣。一个较好的方法是,先让学生抄下所有程序代码,然后让学生亲自动手完成输入、编译、下载,目的是使学生对操作过程产生宏观认知。待学生能够完整正确地实现控制目标后,再逐个讲解知识点。如教给学生更换显示内容以及调整滚动速度的方法。值得注意的是,教师应注重传授给学生解决问题的“方法”,而非仅仅讲授解决问题的“知识”。
3 8×8点阵
3.1 滚动
在讲授点阵模块时,教师应注意强调点阵和数码管具有相似的动态扫描原理,因此可预设点阵列选对应数码管位选,点阵行选对应数码管段选。这种概念上的同义替换,有利于学生将先前所学知识应用于后续教学中。
此时应采用字模提取V2.2软件提取点阵显示字符的16进制数据,取模软件设置为纵向取模,将生成的数据复制到上述程序字码数组中对应位置,略加修改后即得到点阵滚动程序。仿真结果如图6所示,主要程序截取如下:
#define hangxuan P2//对应数码管段选
#define liexuan P3//对应数码管位选
uchar hang[]={//字码数组
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//空屏
0x00,0x3E,0x2A,0x7F,0xFF,0xAA,0xBE,0xC0,
//汉字“电”
0x00,0x09,0x09,0x89,0xFD,0x0F,0x0B,0x00,
//汉字“子”
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00//空屏
};
uchar lie[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//列选码,对应共阳数码管位选
void main()
{while(1)
{uchar i,j,k;
for(i=0;i<25;i++)//显示了两组字码,故有25帧数据
{for(j=0;j<50;j++)//滚动速度
{for(k=0;k<8;k++)
{liexuan=lie[k];//点阵列选
hangxuan=~hang[k+i];
//根据帧数选取8个段码发送至行选端口
delay(50);//延时函数
} } } } }
需要注意的是,取模方式、接线顺序及列选順序均会影响显示结果,不同的组合会产生如反向滚动、上下滚动、画面旋转或乱码等结果。此时可组织学生分组进行实验,通过归纳法总结出在取模软件中设置不同的参数对显示结果会有不同的影响。
3.2 翻页
将字码数组中的内容分为4帧显示4个画面(空屏-电-子-空屏)就形成了翻页效果。采用纵向取模,运行程序。当i=0时,从字码数组中依次取出成员[0~7]循环并行发送至8根行线上,列线0~7依次选通,即显示第1帧;当i=1时,取成员[8~15]数据置于列上,列线0~7依次选通,显示第2帧;依此循环4次至i<4。将上例程序修改两处即能实现翻页效果,仿真结果如图7所示,主要程序截取如下:
for(i=0;i<4;i++)//循环发送4帧画面
{for(j=0;j<200;j++)
{for(k=0;k<8;k++)
{liexuan=lie[k];
hangxuan=~hang[k+i*8];
//k*8根据帧次从数组中选择对应的8个程序
delay(50);
} } }
需要为学生总结的是,同是由64个LED构成,点阵显示的信息种类要比数码管多,而8×8点阵的分辨率决定了其无法显示笔画较多的汉字,常采用4块8×8点阵构成一块16×16点阵显示汉字,而16×16点阵的控制应作为另一个课题讲授。
4 结 语
物联网智能家居产业规模巨大,对相关人才需求逐步增加,以单片机为核心的嵌入式计算机系统对智能家居产业的发展意义重大。本文以LED显示屏控制教学内容为例详细介绍了两者的结构及控制原理,将显示需求分解为动画数据帧,把抽象需求量化为具体的数据表格再设计程序结构,编写51单片机C语言程序。同时,引入Proteus软件为实验平台开展理实一体化教学。开展教学时,应注意避免“教师讲的多,学生做的少”。通过这种将教学内容有机整合、有效压缩的教学方式,充分调动了学生的主观能动性,提高了学生对知识技能的综合运用能力,最终提高教学质量[8-10]。
参 考 文 献
[1]张承畅,吴孟林,张华誉,等.面向学生工程能力达成的“单片机技术”实验案例设计[J].实验技术与管理,2018,35(5):178-182.
[2]李秀滢,段晓毅,赵成,等.实践为主导的单片机课程立体化教学模式的探索[J].实验技术与管理,2018,35(1):190-193.
[3]安健,任东胜,桂小林,等.物联网实践能力培养的研究与探索[J].实验技术与管理,2018,35(10):15-18.
[4]万松峰.Proteus在单片机理实一体化教学的应用[J].实验科学与技术,2016,14(1):85-88.
[5]朱清慧,王志奎.Proteus在LED点阵滚动显示屏设计中的应用[J].液晶与显示,2009(2):232-237.
[6]谭筠梅,李玉龙,王履程.基于Proteus的单片机虚拟仿真实验案例设计[J].实验技术与管理,2018,35(5):122-125.
[7]谭浩强.C程序设计[M].2版.北京:清华大学出版社,1999:122-138.
[8]罗文平.学与做:教师培养的双轮驱动模式[J].教师教育论坛,2018,31(5):41-44.
[9]高同辉,刘东晓.智能家居实训平台开发与应用[J].实验技术与管理,2015,32(7):167-171.
[10]邓小龙,顾晓燕.“互联网+”背景下创新型复合技术技能型人才的培养[J].实验技术与管理,2018,35(2):17-20.