proteus下控制LED灯

更新时间:2023-10-29 23:22:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验课程: 单片机原理及应用

一、 实验目的

学习汇编語言指令系统的编程与调试方法

二、 实验内容

1、参照教材图A.21完成实验二电路原理图的绘制; 2、根据图A.22的程序流程图编写汇编语言程序;

3、利用ISIS的汇编工具查找并修正程序的语法错误和逻辑错误; 4、观察仿真结果,完成实验报告。

三、 实验要求

提交的实验报告中应包括:1、完成的电路图(含绘图过程简述);2、编写的汇编源程序(含程序简要说明);3、使用的程序调试方法;4、实现的仿真效果(含运行截图与文字说明);5、实验小结(结论与体会)。

提交实验报告主题及存盘文件名格式(学号+姓名+实验**),例如:2011041220张三实验一。

1、电路原理图

图1

如图1所示,从左往右、从上往下看,如图,

这是由晶体振荡器和电容组构成的并联谐振回路,产生单片机的时钟

信号。如图,当单片机出现死机时,可以利用它来复位。这

种叫上电复位,产生复位的条件为:在高电平状态下,时间等于系统时钟振荡周期建立时间和两个机器周期时间(一般小于10ms)。如图

,这是80c51芯片共有40个引脚,4只电源及

晶振引脚—Vcc,Vss,XTAL1,XTAL2。4只控制引脚—(PSEN)[注:用“()”括着的为低电平有效,下同],ALE,(EA),RST 。32只并行I/O引脚—P0.0~P0.7,P1.0~P1.7,P2.0~P2.7,P3.0~P3.7。如图

,这是外部Rom允许访问/编程电源输入,当连接高

电平时,cpu从片内rom读指令。如图和

,连接它们用于在80c51的控制

下,实现相应功能,这里是使led灯闪烁,并使开关能控制。

2、汇编源程序

mov R5,#3

lOOP1:MOV P2,#0

ACALL DELAY MOV P2,#0FFH ACALL DELAY

DJNZ R5,LOOP1

LOOP2:MOV P2,P1

SJMP LOOP2

DELAY:MOV R0,#100

DEL0:MOV R1,#50 DEL1:MOV R2,#25 DEL2:DJNZ R2,DEL2

END

DJNZ R1,DEL1 DJNZ R0,DEL0 RET

说明:首先设置循环变量为3(实现灯闪三次),LOOP1为第一个条件入口。给P2赋值0,然后调用DELAY,给P2赋值#0ffh,再调用DELAY。以此来实现三次循环。LOOP2为第二个条件入口,实现最终开关控制灯。DELAY在这里只是用于耗费时间,共0.1秒/单位。

3、程序调试方法

根据图1及汇编源程序实现8盏led灯先亮三下,然后根据图

控制灯的亮或灭。具体实现如下:

安装proteus软件及keil UV4软件,proteus可用于模拟电路图连接,UV4可用于编译汇编程序。汇编编译成功后,在proteus描绘的的80c51芯片中右击属性,选择汇编源程序生成的.hex文件,加载,确认,运行试试。

4、仿真运行效果

图2

分析:开始会闪烁三下(间隔时间根据自己而定),然后根据开关控制灯的亮灭。如图2,左下的开关1,4,5,7,8闭合,相应地右下角1,4,5,7,8亮。

5、实验小结

本次实验了解自己编写程序及了解汇编语言,话说如果不是四处寻找资料,我还真做不出来。感谢小伙伴和网友的贡献。还有希望老师下次做实验时给我们讲解详细一点或提供什么资料什么的。我觉得

本文来源:https://www.bwwdw.com/article/0pm2.html

Top