基于Keil C51与Proteus仿真联合的单片机应用研究
作者:于博 杨晓庆
来源:《软件工程师》2015年第09期
摘 要:传统单片机技术教学中,采用的理论教学与实验让学生感到难以入门,针对教学中存在的这个问题,采用Keil C51和Proteus进行仿真教学,这种教学方法给学生创造一个直观的形象,更有利于学生对单片机技术的掌握,从而提高了教学质量。 关键词:软件调试;单片机;KEILC51;PROTEUS;硬件仿真 中图分类号:TP399 文献标识码:A 1 引言(Introduction)
单片机技术在各行各业中得到广泛的应用,同时单片机技术应用课程是一门实践性很强的软硬件结合的技术,需要通过大量的实践才能理解和掌握程序设计方法与硬件结构设计。同时在目前的教学中,单片机开发Keil C51与Proteus软件的联合仿真在实际的单片机系统开发中被普遍应用。为此,在单片机课程教学过程中,教师一定要结合工程实际做到软件和硬件相结合,实现理论教学与工程实践紧密结合,在传授理论知识的同时,教会学生如何使用实际工程所应用的相关软件进行单片机系统开发。
2 PROTEUS与KEIL C51介绍(Introduction of PROTEUS与KEIL C51) 2.1 程序编译软件Keil C51
Keil C51软件是德国Keil Software公司开发的51系列单片机开发软件。Keil μVison系列是该公司推出的51系列兼容单片机软件开发系统。μVison是集成的可视化Windows操作界面,其提供了丰富的库函数和各种编译工具,能够对51系列单片机以及和51系列兼容的绝大部分类型的单片机进行设计[1]。Keil μVison系列可以支持单片机C51程序设计语言,也可以直接进行汇编语言的设计与编译。 2.2 仿真软件Proteus
为了验证设计程序的正确性,单片机程序设计与开发往往采用软件仿真与硬件仿真相结合的形式。软件仿真只能验证程序的正确性,不能仿真具体的硬件环境。硬件仿真常用的软件是英国Labcenter Electronics公司研发的电路设计与仿真平台Proteus。Proteus具有原理图编辑、
龙源期刊网 http://www.qikan.com.cn
印刷电路板(PCB)设计及电路仿真功能,该软件由ISIS和ARES两部分构成,其中ISIS是一款便捷的电子系统原理设计和仿真平台软件,ARES是一款高级的PCB布线编辑软件。 3 硬件电路设计(Hardware circuit design) 3.1 运用Proteus进行的硬件电路设计原理
LED发光管控制就是通常所说的流水灯控制,这是单片机控制技术入门的基本控制项目。通过花样繁多的流水灯控制任务,可以学习和应用基本的单片机和C语言程序设计的知识与技术,积累丰富的单片机项目开发与程序设计的经验与技巧,为进一步提高单片机技术水平打下坚实的基础[2]。本项目采用的流水灯实际上是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管D1—D8、晶振Xl、电源VCC、单片机AT89C51和程序等组成的系统。如果让接在P1.0口的D1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的D1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1—P1.7口的其他七只发光二极管点亮和熄灭的方法同D1。因此,要实现流水灯功能,只要将发光二极管D1—D8依次点亮、熄灭,八只发光二极管便会一亮一暗的做流水灯了[3]。在此还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,在控制二极管亮灭的时候应该延时一段时间,否则就看不到“流水”效果了。 3.2 KEIL C语言序的编程
单片机的应用系统由硬件和程序组成,上述硬件原理图搭建完成上电之后,还不能看到流水灯循环点亮的现象,要实现流水灯循环点亮,还要告诉单片机该怎么进行工作,即编写程序控制单片机管脚电平的高低变化,以实现发光二极管的一亮一灭。下面以八个发光二极管循环点亮来介绍两种。采用数组控制与运算符控制两种编程[4]方法实现。 (1)数组控制P0口流水灯 #include
void delay(unsigned char x) {
unsigned char m,n; for(m=0;m for(n=0;n }
龙源期刊网 http://www.qikan.com.cn
void main(void) {
unsigned char i;
unsigned char a[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; while(1) //无限循环 {
for(i=0;i { P0=a[i]; delay(200); } } }
(2)运算符控制P2口流水灯 #include
void delay(void) {
unsigned char m,n; for(m=0;m for(n=0;n ; }
void rightmove_LED(void)
龙源期刊网 http://www.qikan.com.cn
{
unsigned char i;
P2=0xff; //P2=1111 1111,关闭所有LED delay(); for(i=0;i {
P2=P2>>1; //P2每次右移一位 delay(); } }
void zizeng_LED(void) {
unsigned char i; for(i=0;i { P2=i; delay(); } }
void main(void) {
while(1) //无限循环
龙源期刊网 http://www.qikan.com.cn
{
rightmove_LED(); delay(); zizeng_LED(); delay(); } }
4 程序仿真与Proteus 联合调试(Program simulation and proteus debug)
4.1 在Proteus硬件仿真电路图单片机中加载HEX文件
打开先前设计好的Proteus设计文件“项目1.DSN”,右键单击AT89C51单片机,从弹出的快捷菜单中选择“编辑属性”命令;或者直接双击AT89C51单片机,弹出“编辑元件”对话框,在“Program File”文本框中载入在编译生成的“项目1.hex”HEX文件,在“Clock Frequency”文本框中输入“11.0592MHz”,单击“确定”按钮返回到Proteus设计文件“项目1.DSN”工作界面。 4.2 运用Proteus硬件仿真电路图进行仿真实验
执行菜单“调试”→“执行”命令,或者直接点击仿真工具栏中的仿真启动按钮,或者直接按下“F12”功能键,均能启动功能仿真。仿真效果如图1所示。
从图中可见,接至P1.0的发光二极管D1处于点亮状态,其他二极管处于熄灭状态。从仿真效果上看,设计的C语言程序实现了对单片机的预期控制。要停止电路的仿真运行,可以点击工具栏中的仿真停止按钮,要暂停电路的仿真运行,可以点击仿真暂停按钮。要对电路进行单步运行仿真,可以点击帧进仿真按钮。 5 结论(Conclusion)
单片机开发Keil C51与Proteus软件的联合仿真应用于单片机接口技术的课程教学,收到了良好的教学效果,教学质量得到明显提高,学生对单片机学习兴趣明显增强。在教学过程中,每个实例都采用单片机开发Keil C51与Proteus软件联合仿真、调试,学生可以直观地看到电路输出状态从而方便的进行开发练习。
龙源期刊网 http://www.qikan.com.cn
参考文献(References)
[1] 徐磊,申红军,蔡亚永.单片机开发Keil C51与Proteus仿真联合 应用研究[J].电子设计工程,2013,(9):178-181.
[2] 杨暾.单片机技术及应用:基于Proteus仿真的C语言程序设计 [M].北京:电子工业出版社,2012.
[3] 周灵彬,张靖武.PROTEUS的单片机教学与应用仿真[J].单片 机与嵌入式系统应用,2008(1):76-79.
[4] 杜树春.基于Proteus和Keil C51的单片机设计与仿真[M].北 京:电子工业出版社,2012. 作者简介:
于 博(1981-),男,硕士,讲师.研究领域:嵌入式开发,图 像处理技术.
杨晓庆(1980-),女,硕士,讲师.研究领域:网络技术开发.
龙源期刊网 http://www.qikan.com.cn
因篇幅问题不能全部显示,请点此查看更多更全内容