随着科学技术的发展,单片机技术在产品的人机交互设计中扮演着越来越重要的角色,而单片机仿真和PCB设计成为其重要分支。Proteus软件在单片机和外围器件方面卓越的仿真能力使其成为目前最好的仿真工具之一,而该软件还可在仿真原理图的基础上设计PCB。此论文以AT80C51为芯片的流水灯为实例,基于Proteus软件和Keil uVision2软件论述了整个电路原理图的绘制与仿真和PCB设计流程,旨在为单片机初学者提供一种有效地学习方法。
1.引言
单片机是将CPU芯片,存储器芯片,I/O接口芯片和简单的I/O设备装配在一块印刷电路板上,再配上存储在ROM中的监控程序,这便构成了一台单板微型计算机。传统的单片机开发都是采用硬件实验箱或实验板方式,硬件投资成本相对较高;这种定式的环境很容易将开发者的思维禁锢在小小的实验箱里,不利于创新思维实现,对于初学者还会造成认知上的误区,即所谓的单片机就是在一个箱子里穿针引线,这极不利于后续的开发。
目前,具有电路仿真功能的软件比较多,性能比较好的有Multisim、Protel、O r C A D等,但这些对单片机的仿真无能为力。到目前为止,只有Proteus软件能够提供完善的单片机芯片及嵌入式系统的仿真。
2.单片机仿真所需实验配置
2.1选用Proteus软件作为单片机仿真软件
Proteus软件是英国Lab Center Electronics公司开发的EDA工具软件。它不仅是模拟电路、数字电路、模/数混合电路的设计平台,更是目前世界上最先进,最完整的多种型号微处理器系统的设计与仿真平台,真正实现了在计算机上完成原理图设计,电路分析与仿真,微处理器程序设计与仿真,系统测试与功能验证,到形成PCB的完整电子设计、研发过程。
Proteus软件由ISIS和ARES两个软件构成,其中ISIS是一款智能原理图输入系统软件,可作为电子系统仿真平台,ARES是一款高级布线编辑软件,用于设计PCB.
2.2选用Keil uVision2软件对程序进行编译和调试
Proteus仿真中的单片机芯片,与单片机硬件的试验台中单片机芯片一样,需要下载编译好的机器语言文件,这样就需要汇编语言和C语言的编译器。KeiluVision2是51系列兼容单片机C语言软件开发系统,使用接近于传统C语言的语法来开发,它还能嵌入汇编,您可以在关键的位置嵌入,同时可移植性强,使程序达到接近于汇编的工作效率。此外,Keil uVision2软件还支持众多不同公司的单片机芯片,集编辑、编译和程序调试于一体,之后将生成的。HEX文件,下载到单片机芯片里,这就完成了程序的固化。
3.基于Proteus软件含有AT80C51芯片的流水灯仿真与PCB制作
3.1 Proteus单片机仿与PCB制作的实验流程(如图1所示)
3.2用ISIS软件绘制含有AT80C51单片机芯片的原理图
1)打开ISIS Professional软件,执行“File”→“New Design”,在弹出窗口中选择默认模板“DEFAULT”,点击“OK”,然后保存,命名为“liushuideng.DSN”。
2)“System”→“Set Sheet Sizes…”,弹出“Sheet Size Configuration”对话框,设定图纸为A4,单击“OK”。
3)添加元器件。
具体数值见图3.在工具栏中执行菜单命令“Library”→“Pick Device/Symbol…”,弹出对话框在“Keywords”栏里输入所需元器件,右侧栏将显示,此时只需选择自己需要的元器件,点击“OK”,然后在列表中选中元器件(所用元件如下表1所示),在原理图编辑窗口合适位置单击鼠标完成放置,按此方法将列表中的所有元器件添加进去。
4)放置电源和地:单击左侧工具箱中图标,在对象选择器中单击“POWER”,使其出现蓝色条,再在原理图编辑窗口合适位置单击鼠标,就将“电源”放置在原理图中;单击“GROUND”,用同样方法,将“地”放置在原理图中。
5)布线:在ISIS原理图编辑窗口中没有专门的布线按钮,但系统默认自动布线有效,因此,可直接画线,布线如图2所示。
4.C语言编程
4.1建立工程文件
1)打开K e i l u V i s i o n 2软件,点击“Project”→“New Project”,命名为“liushuideng”,然后保存,在弹出的对话框“Data base”栏中选择“Atmel”→“89C51”→“确定”;然后点击“File”
→“New File”。
2)点击“Save”→文件命名为“liushuideng.
c“→”保存“,本程序利用C语言编程后缀必须是”。c“。
3)点击“Target 1”→“Sour Group1”
→“Add Files to Group”Sour Group 1“”,在弹出的对话框中选择刚建的文件,然后点击“Add”,添加完成后点击“Close”;到此工程建立完毕。
4.2利用C语言编写流水灯的程序源代码
#include #include
#define uint unsigned int
#define uchar unsigned char
uchar temp;void delay(uint);
void main()
{temp=0xfe;P0=temp;while(1)
{temp=_crol_(temp,1);delay(600);
P0=temp;} }
void delay(uint z)
{ u i n t x , y ; f o r(x = 1 0 0 ; x > 0 ; x - -)
for(y=z;y>0;y-);}