proteus仿真汇编流水灯
- 格式:docx
- 大小:30.53 KB
- 文档页数:1
单片机流水灯的Protues仿真摘要本文详细介绍了利用proteus仿真软件仿真单片机流水灯实验的具体操作和调试过程,叙述了proteus仿真软件的使用方法,对学习 proteus 的仿真有一定的指导意义。
关键词 protues;at89c51;仿真中图分类号tp368.1 文献标识码a 文章编号 1674-6708(2013)87-0202-021电路的基本功能在单片机p0口接有8个发光二极管,要求8个发光二极管每次点亮一个二极管,按照相同的时间间隔从左向右,即从p0.0到p0.7依次点亮,然后再返回p0.0依次循环,如图1所示。
2 硬件电路的构建实现流水灯电路功能的主体元件是89c51单片机,需在protues 电路窗口中绘制如图2所示的单片机流水灯电路原理图,首先启动protues软件中的protues isis模块,单击文件菜单中的“新建”“新建设计”“另存为”在弹出的对话框中输入“流水灯”,并选择文件的路径,再单击确定按钮,即在指定文件夹建立名为“流水灯.dsn”文件。
在protues主界面中单击“”图标,然后单击“”按钮,在弹出的“pick devices”窗口里按照表1中的路径选择相应的元件并单击,将所选元件添加到元件列表,再选中元件放置到绘图区,重复以上操作将所需元件逐一添加到绘图区,通过编辑元件,修改元件的参数并调整好各元件位置,按下工具栏中的“”按钮,将两个元件用导线连接起来,依次操作,建立如图2所示的电路图[1]。
3程序设计及装载3.1程序的设计通过电路功能的分析,结合单片机电路图,设计出单片机工作流程图如图3所示,再根据流程图写出源程序,演示程序及说明如下:3.2程序的装载在protues主界面中单击“源代码”菜单下的“添加/删除源文件”在弹出的“添加/移除源代码”对话框如图4所示,“目标处理器栏”选择“u1-at89c51”,“代码生成工具”栏选择“asem51”,然后单击新建,在弹出的对话框文件名栏中输入“liushuideng.asm”,单击“打开”按钮,返回“添加/移除源代码”对话框,单击“确定”按钮,返回protues主界面,单击“源代码”菜单,选择“liushuideng.asm”选项,打开source editor 窗口,将设计好的汇编程序粘贴到窗口中,单击“保存”按钮,关闭该窗口。
流水灯(电路和汇编)-P r o t e u s和K e i l仿真演示实例示例要求:在80C51单片机的P2口连接8个发光二极管指示灯,编程实现流水灯的控制,轮流点亮指示灯。
在KEIL 51中编程序,形成HEX文件;在PROTEUS中设计硬件,下载HEX文件,运行看结果。
第1篇:PROTEUS电路设计1、打开PROTEUS的ISIS软件,如图1所示。
新建电路图文件,将文件保存到E:\projectio (新建文件夹projectio)下面,文件基本名为io,扩展名默认。
选择元图1 ISIS窗口图2、在component mode模式下单击选择元件按钮P,打开元件选择对话框,如图2所示。
图2 元件选择窗口在元件选择对话框的keywords窗口中输入元件关键字可换搜索元件,找到元件后,双击元件则可选中元件,添加元件到图3的device列表栏。
在这里依次添加元件单片机80C51、电阻RES、电容CAP、按键BUTTON、晶振CRYSTAL、发光二极管LED-RED,如图3所示。
图3 添加元件的device列表栏3、选择devices元件列表中的元件放到工作窗口,注意放置在工作窗口合适的位置,在元件放置时可对元件进行移动、旋转等操作;如图4所示。
电源(POWER)与地(GROUND):(右键-放置-终端里选)。
图4 放置元件图4、连接导线,如图5所示。
连接后存盘。
图5 连接元件图5、在Keil软件中设计软件程序,形成HEX文件(具体过程见第2篇Keil软件编程)。
保存软件项目到电路文件相同的文件夹E:\projectio下。
6、在PROTEUS电路图中,单击单片机80C51芯片,选中,再次单击打开单片机80C51的属性对话框,在属性对话框中的program file框中选择下载到80C51芯片中的程序。
这里是同一个文件夹下面的shili.hex文件。
如图6所示。
图6 下载程序到单片机7、单击仿真运行按钮play,运行程序。
基于proteus的单片机流水灯设计与仿真发表时间:2019-05-06T10:10:02.773Z 来源:《电力设备》2018年第31期作者:裴潇湘[导读] 摘要:本文设计了利用proteus仿真软件中AT89C51 单片机控制8个发光二极管的点亮系统,该系统可以通过改变设计程序实现二极管不同的点亮顺序,实现流水灯的多样性。
(天津铁道职业技术学院天津市 300240)摘要:本文设计了利用proteus仿真软件中AT89C51 单片机控制8个发光二极管的点亮系统,该系统可以通过改变设计程序实现二极管不同的点亮顺序,实现流水灯的多样性。
关键词:单片机;流水灯; proteus引言随着城市的发展,都市夜文化也发展起来,随处可见的绚烂的灯光,如流水般闪烁的霓虹灯,多样变换使得夜文化活泼灵动,而这些美丽的光景可以利用单片机来控制来实现。
本文通过proteus 软件设计编程仿真实现不同流水灯的形式。
1.整体设计利用proteus仿真软件中AT89C51芯片,控制8个发光二极管的有序亮灭,呈现流水灯的效果,以依次顺序亮灭为例进行设计仿真。
单片机实现控制功能设计包含硬件系统设计与软件系统设计,硬件系统设计有单片机最小控制系统,单片机最小控制系统即是能实现单片机功能的最简单的电路,有复位电路、时钟电路、电源等。
硬件系统还有灯光控制电路的设计,即是能实现单片机对灯光亮灭的设计。
软件系统设计即是利用proteus本身功能利用汇编语言编写程序进行编译实现控制。
2.硬件系统设计首先打开proteus软件,在图形编辑窗口将AT89C51单片机芯片放好,接下来画出复位电路、始终电路等构成的最小系统,在此基础上,选择输入输出引脚控制二极管,选择P1口的8个引脚控制8个发光二极管。
二极管另一端接电源,在这里需要注意的是,二极管的特性是单向导通,即是正偏导通,反偏截止。
设计二极管阳极接电源,那么要想让二极管“亮”该二极管对应的引脚的输出信号需为低电平,“灭”相反,硬件电路设计需与软件电路设计相对应。
一、实验目的1. 熟悉单片机的基本原理和组成,掌握51单片机的编程方法。
2. 理解单片机I/O口的使用,学会利用单片机控制LED灯的流水灯效果。
3. 提高动手实践能力,培养团队协作精神。
二、实验环境1. 实验设备:51单片机开发板、LED灯、面包板、电源、连接线等。
2. 实验软件:Proteus仿真软件、Keil uVision5集成开发环境。
三、实验原理流水灯实验是单片机入门级实验之一,通过控制单片机的I/O口输出高低电平,使LED灯依次点亮,形成流水灯效果。
实验中,利用单片机的定时器产生定时中断,每隔一定时间改变I/O口的输出状态,实现LED灯的流水灯效果。
四、实验步骤1. 打开Proteus软件,新建一个工程项目,添加51单片机开发板和LED灯等元件,绘制电路图。
2. 打开Keil uVision5,新建一个C51工程项目,选择对应的单片机型号。
3. 编写程序:(1)初始化I/O口:将P0口设置为输出模式,将P1口设置为输出模式。
(2)设置定时器:选择合适的定时器,设置定时时间,使其产生定时中断。
(3)编写中断服务程序:在中断服务程序中,改变I/O口的输出状态,实现LED灯的流水灯效果。
(4)编写主程序:在主程序中,启动定时器,进入中断服务程序。
4. 编译程序,生成HEX文件。
5. 将生成的HEX文件导入Proteus软件,运行仿真实验。
6. 观察实验现象,检查LED灯的流水灯效果是否正常。
五、实验结果与分析1. 实验现象:在Proteus软件中,LED灯依次点亮,形成流水灯效果。
2. 实验分析:通过设置定时器,每隔一定时间改变I/O口的输出状态,实现LED 灯的流水灯效果。
实验过程中,可以调整定时器的定时时间,改变流水灯的速度。
六、实验总结1. 本实验使我们对单片机的基本原理和组成有了更深入的了解。
2. 通过编写程序,掌握了51单片机的编程方法,提高了编程能力。
3. 实验过程中,我们学会了利用单片机控制LED灯,实现了流水灯效果。
Proteus基本操作与8051最小系统利用Proteus平台搭建一个“8051最小系统”的仿真电路(流水灯为例)一、Proteus基本操作(一)启动Proteus仿真软件:双击“isis”图标,出现isis操作页面。
(二)搭建单片机系统仿真电路:分“器件选取”、“器件放置”和“电路连接”三大步来操作。
〖第一步器件选取〗:isis操作页面的左侧中下部分是电路和器件操作的导航区域,器件选取前“Devices”栏目下为空,器件选取操作的目的是将从器件库中分拣出需要的器件,这些器件排列在“Devices”栏目下。
A:先选择“器件和仪器工具栏”的“放大器符号样”图标(该工具栏的第一个图标),再单击“P”键即弹出“Pick Devices”窗口。
Pick Devices窗口左侧可以输入器件类型名称,或者选择器件类型,窗口中部即出现相应类型的器件,若鼠标选中器件,窗口右侧会出现该器件的引脚图和封装图。
B:在Pick Devices窗口中,先选中器件,后点击窗口右下脚的“确定”按钮,即将器件排列在“Devices”栏目下了。
或者直接双击被选的器件,也能收到同样的操作结果。
C:对于电源、地、输入和输出端等特殊器件,不在“Pick Devices”窗口中选取而在“Pick Terminals”窗口中选取。
只要选择“器件和仪器工具栏”的“输入输出符号样”图标(该工具栏的第八个图标),即变“Devices”栏目为“Terminals”栏目,“Terminals”栏目下已经将电源、地、输入和输出端等特殊器件列出了一部分,如还要增加时,单击“P”键即弹出“Pick Terminals”窗口供选取。
〖第二步器件放置〗:isis操作页面的中右侧是搭建硬件电路系统原理图和显示系统运行状态的区域。
器件放置前或选择“New Design”文件后,器件放置区域同导航区一样栏目内容为空,器件放置操作是把导航区的器件排列在放置区的适当位置,以便于搭建硬件电路系统原理图。
实验一软件仿真工具应用及流水灯程序设计一、实验目的熟悉并掌握μVision4.0仿真软件以及proteus的基本使用方法,并据已知电路和设计要求编写、编译、仿真运行程序。
二、实验内容1、熟悉掌握软件仿真工具的基本使用方法(包括仿真平台的设置、源代码输入、编译和调试方法)以及proteus的基本使用方法;2、用汇编语言设计流水灯程序,采用软件延时的方法,灯闪烁1s左右。
3、改变8个LED显示方式,让其反复显示00-29的BCD码(读表方式),每次显示2s左右。
三、实验原理单片机芯片:LED灯电路部分如图所示:8个LED发光二极管阳极的接法相同,都经过排阻后连接在一起,为公共端,接电源。
阴极连接到单片机的P2接口,那么8个LED发光二极管变化只随P2接口状态变化而变化,给P2接口不同数据,显示8个LED发光二极管的不同状态。
四、实验方法与步骤实验方法:在μVision4.0软件仿真平台、针对电路图设计实验要求的程序,编译运行程序,并在proteus平台检验、比照试验结果。
实验步骤:μVision4.0仿真软件的使用:1、按照电路图上的MCU芯片设置μVision4.0平台。
操作是点击Keil uVision4,单击主菜单的“project”的“new project”选项,选择工程保存路径(假设保存在“LED”文件夹中),输入工程名“LED”;在弹出的对话框里选择Atmel的80C51,单击“确定”;2、单击主菜单的“File”的“New”选项,在编辑窗口里编写源代码,代码见附录1。
编写结束后,单击单击主菜单的“File”的“Save”选项,输入要保存的文件名,以及扩展名(用C51语言编写则扩展名为“.c”,用汇编语言扩展名为.asm,这里保存为led.asm);3、回到编辑界面,单击“Target1”前面的“+”号,在“Source Group1”选项上右击,选择“Add Files to Group’ Source Group1”,选择“led.c”,单击“Add”,然后单击“Close”;4、单击左边“Project”窗口的“Target1”,然后选择菜单“Project /Option for Target ’Target1’,选择“Output”,勾选”Creat HEX File”,点击“确定”;5、编译连接与调试。
《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例第01 篇基础程序设计01 闪烁的LED/* 名称:闪烁的LED说明:LED按设定的时间间隔闪烁*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit LED=P1^0;//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){while(1){LED=~LED;DelayMS(150);}}02 从左到右的流水灯/* 名称:从左到右的流水灯说明:接在P0口的8个LED从左到右循环依次点亮,产生走马灯效果*/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){P0=0xfe;while(1){P0=_crol_(P0,1); //P0的值向左循环移动DelayMS(150);}}03 8只LED左右来回点亮/* 名称:8只LED左右来回点亮说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){uchar i;P2=0x01;while(1){for(i=0;i<7;i++){P2=_crol_(P2,1); //P2的值向左循环移动DelayMS(150);}for(i=0;i<7;i++){P2=_cror_(P2,1); //P2的值向右循环移动DelayMS(150);}}}04 花样流水灯/* 名称:花样流水灯说明:16只LED分两组按预设的多种花样变换显示*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar code Pattern_P0[]={0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe, 0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};uchar code Pattern_P2[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0xff,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){uchar i;while(1){ //从数组中读取数据送至P0和P2口显示for(i=0;i<136;i++){P0=Pattern_P0[i];P2=Pattern_P2[i];DelayMS(100);}}}05 LED模拟交通灯/* 名称:LED模拟交通灯说明:东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮,红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁5此后变红灯,东西向变绿灯,如此重复。