基于Proteus和Keil的项目式单片机教学改革

2022-08-16 10:23
商丘师范学院学报 2022年9期
关键词:秒表数码管按键

李 媛

(商丘师范学院 电子电气工程学院,河南 商丘 476000)

单片机课程是电子信息工程、自动化专业的一门实践性比较强的专业课程,目前我校的教学模式仍然是理论加实验课的教学形式,而且实验通常需要理论的支撑,由于课时限制,往往理论内容和实践不能有效地结合,难以培养学生的实践能力.为满足我校培养应用型人才要求,在单片机教学实践中,提出了利用超星泛雅平台为学生提供录制视频资源,并通过小组合作形式,基于Proteus和Keil软件结合实现项目式的教学改革,加强对学生的实践能力培养.

1 传统教学的不足

1.1 单片机教学理论和实验融合度不高

以商丘师范学院为例,单片机的理论和实践是分开教学,理论课上多以讲解单片机的结构、汇编语言设计、指令等理论知识,而实验课只是对一些程序设计进行验证.由于教学课时的限制,能开展的实验也有限,实验课要先对汇编程序进行讲解,导致学生在理论知识理解不透彻和动手实践的时间有限的情况下,做过基础实验并不能更好地理解单片机的工作原理,反而会有更多的疑惑,感觉入不了门,实验效果不是很理想.导致学生兴趣不高,学习效果比较差.

1.2 综合性实验难以开展

实验教学基本是侧重软件编写和调试,对单片机的硬件设计及外部扩展电路设计涉及很少.单片机课程本身是需要软硬件结合的课程,由于硬件开发设计及接口电路设计实验很难开设,导致综合性实验开设效果不理想,学生的自主设计电路的能力比较差,并且工程实践能力的培养也很难实现,难以调动学生学习的积极性和学习兴趣,教学效果比较差.

2 改革教学内容

为了提高学生的学习兴趣,确保教学效果良好,采用基于Proteus和Keil的项目式教学方法[1-3]开展单片机课程的教学,将C51的教学与单片机教学融合在一起,削弱汇编教学内容的学习.本着让学生学习内容够用,实用,将单片机的课程内容进行整合,划分为6个模块:单片机最小系统、单片机IO口的应用、中断系统的应用、定时器/计数器的应用、串行口的应用、键盘及显示接口的应用.并将6个模块细化为12个项目,项目的划分如表1所示.从表1可以看出,教学过程首先让学生认识单片机的开发工具,学会使用Proteus和Keil软件,接着由浅入深讲述单片机开发的流程,从而让学生先感性认识单片机并产生兴趣,再进行各个模块的应用介绍.每个模块设计一个或者多个项目,以项目制作为导向,围绕项目开展知识点讲解,配合Proteus和Keil将硬件、软件的设计过程展示给学生,完成项目的调试与运行,并将仿真过程录制成视频,上传超星泛雅平台,供学生课下参考.在此基础上进行扩展,让学生在课下以小组合作的方式,从硬件设计、软件设计和PPT汇报和撰写报告几个方面进行合理分工,要求学生自主完成一些项目的设计与仿真.

表1 模块化项目划分表

3 项目式教学方法在教学中的应用

由于单片机课程的应用性特点,要求教学过程要体现理论与实践的融合,但受课时的限制,实物的制作过程在理论课程中难以完成.利用Proteus仿真软件进行硬件设计,配合Keil软件进行联调,可实现在课堂中演示单片机从硬件设计、软件设计到软硬件联调的全过程,使抽象的课程变得生动有趣.下面以简易秒表为例,说明基于Proteus与Keil的项目式教学方法在教学中的应用.一个项目的实施过程包括5个部分[5-6]:

图1 简易秒表电路仿真图

(1)项目导入.通过公共场合的电子手表、手机秒表、计时秒表等图片引入项目.

(2)项目功能分析与设计.根据预定的人机接口确定需要进行按键和显示装置的控制要求,确定单片机的IO口如何控制数码管和按键,使用数码管的公共端是共阴还是共阳,按键的闭合和弹起状态,讲解硬件设计方案.

(3)项目相关知识.由于数码管显示的内容固定,通过数组实现比较方便,对数组知识进行讲解;按键的去抖动知识讲解,数码管动态显示的消隐问题讲解.

(4)项目实现.通过对实现功能的分析,进行流程图的设计,利用Keil进行软件编程的设计,并配合Proteus进行联调.

(5)项目拓展.根据现有的两位数码管秒表进行改进,拓展为6位数码管秒表,实现启动、复位和暂停按键控制功能.

下面对简易秒表的实现过程进行说明.如图1所示,简易秒表的硬件原理图通过Proteus进行设计,图中AT89C51单片机构成最小系统,注意由于是仿真硬件设计,电源和地引脚没有显示,实际系统中AT89C51需要5 V供电,图中使用共阳极数码管,按键可实现秒表0-10 s的计数、复位和暂停功能.

软件在KeilC51中完成编译生成timer.hex文件,然后将timer.hex文件添加到AT89C51中即可实现联调.源程序如下:

#include

sbit KEY=P3^7;//位定义

unsigned char code Table[]={0xC0,0xf9,0xA4,0x0B0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳极数码管段码

unsigned char i=0;count=0;key_flag=0;flag=0;

bit Key_State;

void key_Handle();//按键处理函数声明

void delay(unsigned int ms)

{unsigned char j;

while(ms-—)for(j=0;j<120;j++);}

void main()

{P0=0xff;//初始显示0

P2=0x00;//位选关闭

TMOD=0x01;//T0定时器,工作模式1

TH0=(65536-50000)/256;//50ms定时初值

TL0=(65536-50000)%256;

Key_State=1;//用于有按键按下的记录

while(1)

{if(Key_State!=KEY)//判断是否有按键按下

{

delay(5);

Key_State=KRY;//按键的状态值赋给 Key_State

key_Handle();}

if(flag==1)

{P0=Table[count/10]&0x7f;//显示十位数和小数点

P2=0x01;

delay(5);

P0=0xff;

P0=Table[count%10];//显示个位数

P2=0x02;

delay(5);

P0=0xff;

if(count==100)//计数满100次,10 s显示00

count=0;} } }

void key_Handle()

{if(Key_State==0)

{key_flag=(key_flag+1)%3;//记录按的次数后处理为1,2,0

switch(key_flag)

{case 1:EA=1;ET0=1;TR0=1;break;//开中断,启动定时器,50 ms进入中断

case 2:EA=0;ET0=0;TR0=0;break;//关中断,停止定时器

case 0:P0=0xC0;P2=0x00;i=0;count=0;break;//全部清零} } }

void DSY_refresh()interrupt 1

{TMOD=0x01;//T0定时器,工作模式1

TH0=(65536-50000)/256;//50 ms定时初值

TL0=(65536-50000)%256;

if(++i==2) //每0.1 s计数一次,并刷新数据

{i=0;

count++;

flag=1;} }

4 课程考核方式改革

为了保证过程管理的有效性,对单片机课程的考核方式进行改革,采用考勤和作业评价(占比20%)、项目实施过程性评价(占比30%)与期末考试(占比50%)相结合的方式.其中,考勤和作业评价主要是针对平时对单片机理论知识学习和学习态度考核,过程性评价注重项目设计过程和实践能力的考核,期末考试以考核课程的基础理论知识为主.项目完成后要进行PPT演示和实物演示,PPT演示锻炼学生对设计内容的语言表达能力,实物演示要求能够展示硬件及调试过程,并要求提交设计报告,其中PPT报告占10%,硬件设计与功能实现占50%,设计报告占40%,旨在考核学生对所学知识的应用能力、实践能力、合作能力及语言表达能力.该考核方式已在2015级工科各专业、2017级自动化专业和2018级电子信息工程专业进行实施,改革效果良好,学生实践能力大幅提高,得到学生一致好评.

5 结 语

改革后的单片机教学真正做到了转换教师为主导的传统教学方式,实现以学生为中心的“教、学、做”一体的教学方式.基于Proteus和Keil的项目教学法可以让学生很好地掌握单片机开发流程的工程实践能力,而且由于Proteus是纯软件系统,通过对51控制系统的电路搭建,辅以Keil软件进行仿真,只需电脑就可建立虚拟实验室,学生可以在课下独立完成实验、作业或者课程设计.学生在实践过程中获得成就感,自然会更好激发学习兴趣,更好实现以学生为中心的“教、学、做”三位一体的教学法.阶段性的考核也可以培养学生的语言组织能力、团队合作能力和实践能力,使学生综合素质锻炼得到有效提高,满足社会对应用人才的需求,以便于今后能快速的适应工作岗位.

猜你喜欢
秒表数码管按键
基于有限状态机的按键检测程序设计
微课教学设计之“数码管动态显示”
时间测量用秒表 秒表用法我来谈
无时无刻不在冲刺的人生
玩转秒表
Arduino编程
MC9S08FL16单片机数码管静态显示分析
单片机控制的四位数码管动态显示编程
按键消抖在单片机和FPGA实验教学中的应用
基于CC2500 的无线电子秒表系统