单片机虚拟试验箱设计与研究
单片机是一门实践性很强的学科,目前单片机的课堂及实验教学中存在诸多问题。一方面,实验内容和实验形式要根据院校不同年级学生能力不断更新,不能以不变应万变;另一方面实验所需的软硬件设备和经费的保障压力越来越大,这在一定程度上影响了教学质量的提高和学生创新能力的培养。
在此之前很多相关论文中都提到使用Proteus软件建立单片机虚拟实验室[4-5],让学生通过Proteus软件自行去设计实验电路图并完成实验。这种方法自然能大大提高学生的实践动手能力,但对于民办本专科级别的院校学生来说,由于他们的基础和理解力相对薄弱等因素,刚开始接触单片机很难自行进行电路设计并完成实验。
因此,结合我院电子系现有的实际教学情况,本文设计开发了一套基于Proteus的虚拟试验箱,该试验箱不仅能够完成单片机教学基础实验内容,并可以解决传统真实试验箱诸多弊端,而且学生可以在网站下载该试验箱进行实验操作,从而极大地增强了学生做实验的便利性,也给学生提供了一个良好的开发性实验平台。
1 Proteus软件简介
Proteus 是英国Lab center 公司开发的电路分析与实物仿真软件,是一款集单片机和SPICE分析于一身的仿真软件,功能强大。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路实验平台。
利用计算机、KEIL C51仿真器和Proteus软件可创建一个可视化虚拟单片机类实验室, 通过操作这些虚拟的实验仪器或设备, 完成各种验证性、设计性和综合性实验。利用仿真技术达到与真实效果相一致的教学要求和目标,从而在不增加硬件投入的基础上, 提高学生的创新能力。
Proteus与其他单片机仿真软件不同的是, 它不仅能仿真单片机CPU的工作情况, 也能仿真单片机外围电路或没有单片机参与的其他电路的工作情况。因此在仿真和程序调试时, 关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验, 从某种意义上讲, 解决了实验与工程应用脱节的问题。
2 虚拟实验箱特点
本虚拟试验箱除了具备相关论文中提到的使用Proteus软件建立单片机虚拟实验室的优点之外,还具备以下典型优势:
(1) 给教学设计过程带来了很大的灵活性,有利于教学模式的革新。教师可以根据形势的发展,无须资金投入就可以在虚拟试验箱中增减反映新技术新成果的新实验内容。
(2) 试验箱挂网,打破空间和时间的限制。学生可以零成本随时随地使用该试验箱,只要学生能够上网,学生便可以在网上下载该试验箱进行实验练习与设计。
(3) 可以构建开发性的教学环境 ,有助于学生进行开发性实验。学生可以在没有实际硬件电路的情况下完成项目先期大量的验证工作及大部分程序的编制及调试工作,帮助学生提高工程应用能力。
但是,虚拟试验箱可能使学生淡化对基本技能训练的重视程度,忽视规范掌握仪器操作,减少学生应对突发事件的机会、缺乏教学的艺术性等。因而,为了尽量避免上述弊端的发生,在实际的教学过程中要加强虚实的相互结合,采用虚实互补的原则安排教学,并加强教师的实验指导作用。
3 基于Proteus的单片机虚拟试验箱的设计
单片机虚拟试验箱的设计应根据学生实际能力的水平制定相关实验内容。实验内容要在满足单片机基础教学基础上简单易懂、从易到难、循序渐进、环环相扣,使学生能通过虚拟单片机试验箱很好地掌握单片机原理,并学会单片机外围系统扩展及接口电路的设计和基础应用。
根据本院某年级情况,现使用Proteus设计如图1所示的51单片机虚拟试验箱,此试验箱可完成如下基础及综合实验内容。
3.1 基础实验
(1) 点亮一个发光管;
(2) 流水灯设计、蜂鸣器发声、继电器控制;
(3) 数码管的动、静态显示;
(4) 独立键盘、矩阵键盘的检测原理及实现;
(5) 1602液晶显示;
(6) DA、AD的工作原理及实现;
(7) 串口通讯原理及RS232接口的使用;
(8) I2C总线扩展存储器AT24C1024芯片。
3.2 综合实验
(1) 利用51单片机的定时器设计一个时钟系统;
(2) I2C总线扩展DS1307时钟芯片设计一个高精度时钟系统;
(3) I2C总线扩展DS1621温度芯片设计一个实时温度报警的时钟系统。
4 单片机虚拟试验箱实现教学使用实例
下面就以六位数码管动态显示实验为例说明基于Proteus的单片机虚拟试验箱的使用。
实验内容:六位共阴数码管动态扫描显示数123456;
实验目的:理解数码管动态显数原理并学会单片机控制数码管动态显数。
实验电路图说明:使用了两个74HC573锁存器,取名为段锁存器和位锁存器,分别控制数码管(共阴极)的段选端和位选端,两个锁存器都使用P0口送数;并分别使用P2.0和P2.1来控制两锁存器的LE锁存控制端,LE=1时选通,LE=0时锁存。
实验操作步骤:(1)根据实验电路图使用Keil C51 uVision2编写代码;(2)将编写好的代码编译生成HEX格式文件加载到试验箱中的51单片机中;(3)点击试验箱左下角运行按键即可完成实验。
本实验部分C51语言代码如下:
uchar code d_table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d}; //共阴0~6段码
uchar code w_table []={
0xff/*空选*/,0xfe/*选中第一位*/,0xfd,0xfb,0xf7,0xef,
0xdf}; //1~6位选码
sbit duan=P2^0; //段锁存器选通/锁存端
sbit wei=P2^1; //位锁存器选通/锁存端
void Display_123456() //动态显示123456函数
{
for(num=1;num<7;num++)
{
P0=w_table[num];
//送位码(选中相应数码管)
wei=1; //选通
wei=0; //锁存
P0=d_table[num];
//送段码(即字型码)
duan=1;
duan=0;
delay(5); //延迟5 ms
}
}
实验效果:如图2所示,六位数码管同时显示123456。
- 基于PROTEUS技术的ARM7显示系统设计与仿真实现(11-22)
- 基于PROTEUS软件的数字电压表印刷电路板设计(05-01)
- 基于51单片机的数字电压表仿真设计(05-29)
- Proteus在单片机教学和科技制作中的应用与实践(03-02)
- Proteus软件仿真与Keil的单片机系统设计(09-08)
- 基于AT89C51单片机的量程自切换频率计(01-25)