您的当前位置:首页基于PROTEUS仿真的数字电子钟设计

基于PROTEUS仿真的数字电子钟设计

2022-03-02 来源:爱问旅游网


基于PROTEUS仿真的数字电子钟设计

单片机技术是现代电子工程领域一门迅速发展的技术,它的应用已经渗透到各种嵌入式系统中。随着计算机技术的普及,采用Proteus软件与Keil软件整合构建单片机虚拟实验平台。可以使教师在讲述理论的同时,利用Proteus软件进行仿真、演示,使学生消除“抽象感”增加学习的兴趣。使课堂教学更生动、直观使单片机课程中一些基本理论和基本概念更加容易理解。

标签:虚拟 模拟 仿真

0 引言

Proteus软件是英国Labcenter electronice公司开发的电路分析与实物仿真软件。它不仅具有其他EDA工具软件的仿真功能。还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件工具。该软件的特点是:①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。②支持主流单片机系统的仿真。目前支持的单片机类型有:8051系列、AVR系列、ARM系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。

1 数字钟电路设计

数字钟的原理框图如图1所示。它由以下几个部件组成:单片机AT89S52、电源、时分显示部件。

时分显示采用动态扫描,可以降低对单片机I/O口数的要求,同时也降低系统的功耗。时分显示模块以及显示驱动都通过AT89S52的I/O口控制。

电源部分:两种方法:一种是由220V的市电通过变压、整流稳压(主要用7805稳压块)来得到+5V电压,维持系统的正常工作。另一种是用USB接口取+5V电压。

2 利用Proteus仿真软件进行电路图绘制

如图2所示。电路的核心是单片机AT89S52。单片机的P3口八个引脚接LED显示器的段选码(a、b、c、d、e、f、g、dp)的引脚上,单片机的P1口六个引脚接LED显示器的位选码(2、3、4、5、6、7)的引脚上,在实际电路中P1口需要接1K的上拉电阻,电阻起限流作用。

3 系统的软件构成及功能

本系统的软件系统主要可分为主程序(图3所示)和定时器中断程序两大模块。在程序过程中,加入了抗干扰措施。中断程序(图4所示)完成时间计数,时间调整,误差消除等功能。中断采用AT89S52内部T0中断实现,定时时间为125ms,当时间到达125ms×8,即1分钟时,分计数缓冲器增加1,到达1小时,则时计数缓冲器自动增加1,并将分、时的个位、十位放入显示缓冲器。当分计数缓冲器和时计数缓冲器分别到达60min、24h时,则对它们清零,以便从新计数。在中断设计中,还通过软件实现了累计误差消除功能,使整个系统时间的精确度得到保证。

4 Keil C与Proteus连接调试

4.1 假若KeilC与Proteus均已正确安装在D:\\Program Files的目录里。

4.2 安装Keil C与Proteus的连接插件vdmagdi.exe。

4.3 进入KeilC μVision2开发集成环境,创建一个新项目(Project),并为该项目选定合适的单片机CPU器件(如:Atmel公司的AT89S52)。并为该项目加入KeilC源程序。

部分源程序如下:

#include

int count=0;int count2hz=0;

int second=55,min=59,hour=23;

int dp=0x80;int led[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}

void main (void)

{ int b;init();

TMOD=0x01;TH0 =(65536-50000)/256;TL0 =(65536-50000)%256;

ET0 =1;EA=1;TR0=1;

while (1)

{

display(keyscan());

P1=0xff; //all led off

P3=led[second%10]; //秒個位置数

P1_7=0; //动态刷新显示开1

for(b=0;b<=10;b++); // delay and keep

P1=0xff; //all led off

P3=led[second/10]; //秒十位置数

P1_6=0; //动态刷新显示开2

for(b=0;b<=10;b++); // delay and keep

P1=0xff; //all led off

P3=led[min%10]|(dp&0x80); //分 个位置数

P1_5=0; //动态刷新 显示开3

for(b=0;b<=10;b++); // delay and keep

P1=0xff; //all led off

P3=led[min/10]; //分 十位置数

P1_4=0; //动态刷新 显示开4

for(b=0;b<=10;b++); // delay and keep

P1=0xff; //all led off

P3=led[hour%10]|0x80; //时 个位置数

P1_3=0; //动态刷新 显示开5

for(b=0;b<=10;b++); // delay and keep

P1=0xff; //all led off

P3=led[hour/10]; //时 十位置数

P1_2=0; //动态刷新 显示开6

for(b=0;b<=10;b++); // delay and keep

}

}

4.4 单击“Project菜单Options for Target”选项或者点击工具栏的“option for ta rget”按钮■,弹出窗口,点击“Debug”按钮,出现如图所示页面。

在出现的对话框里在右栏上部的下拉菜单里选中“Proteus VSM Driver”。并且还要点击一下“Use”前面表明选中的小圆点。

4.5 roteus的设置

进入Proteus的ISIS,鼠标左键点击菜单“Debug”,选中“use romote debuger monitor”,如图所示。此后,便可实现KeilC与Proteus连接调试。

4.6 KeilC与Proteus连接仿真调试

单击仿真运行开始按钮■,我们能清楚地观察到每一个引脚的电频变化,红色代表高电频,蓝色代表低电频。在LED显示器上显示23.5955。

5 结束语

上述电子钟,无论在外观上还是功能上都实现了较为完善的设计。特别值得一提的是本系统在精度上的设计,突破传统的方法,对可能产生的积累误差采用“抵消法”,从而有效地降低了时间误差。

采用Proteus软件与Keil软件整合构建单片机虚拟实验平台。学生首先在PC上利用Proteus软件自己搭建硬件电路,并利用系统提供的功能完成电路分析、系统调试和输出显示的硬件设计部分;同时在Keil软件中编制程序,进行相应的编译和仿真,完成系统的软件设计部分。当系统的设计工作完成后,学生可以在PC上看到最终的运行效果。最后再通过proteus设计PCB,再完成真正硬件的调试。

参考文献:

[1]赵嘉蔚.单片机原理与接口技术,清华大学出版社,2010.2.

[2]刘建清.51单片机C语言非常入门,电子工业出版社,2010.5.

[3]朱清慧.Proteus教程:电子线路设计、制版与仿真,2008.

因篇幅问题不能全部显示,请点此查看更多更全内容