利用Proteus仿真点亮LED

51单片机架构及汇编指令

一、Proteus简介

1、创建工程

(1)创建一个新工程。

image-20240309155756524

(2)自定义工程名、工程存储路径

image-20240309155903584

(3)创建原理图(如果不需要创建原理图,可以勾选 Do not create a schematic),然后默认选择 DEFAULT ,再点击 Next 。

image-20240309160051067

(4)创建 PCB(如果不需要创建PCB,可以勾选Do not create a PCB layout),默认选择 DEFAULT ,再点击 Next

image-20240309160134488

(5)连续点击“下一步”,勾选创建固件项目,选择芯片AT89C51,再点击下一步。

image-20240309160227157

(6)点击Finish工程创建完毕。

image-20240309160448071

2、界面简介

原理图设计界面,主要是包含预览窗口方向工具栏元件列表模型选择工具栏仿真测试按钮原理图编辑窗口

image-20240309161000639

模型选择工具栏:

image-20240309161341494 image-20240309161605433

image-20240309161723188

3、绘制流水灯原理图

**设计原理:**查阅资料AT89C51单片机上电I/O口为高电平,因此将8个LED灯的阳极接在其I/O口上,LED另一端接地,从原理上该8个LED灯均可点亮。从实际出发为电路加上限流电阻,防止电流过大损坏LED灯。

原理图:

image-20240309162309064

二、Keil C51程序设计

进行程序设计的过程中需要用到Keil C51来编写程序。

1、创建工程

(1)打开Keil软件,点击 Project → New uVision Project …

image-20240309162802634

(2)给新建的工程命名。

image-20240309163012208

(3)在搜索框内输入 AT89C51 ,再选中 AT89C51 芯片,然后点击 OK

image-20240309163110131

(4)意思为复制A51启动代码到项目并添加文件到项目。这里我选择否。

image-20240309163132975

(5)添加一个新的文件(.c/.cpp/.asm等等)

image-20240309163619218 image-20240309163903147

(6)编写代码

image-20240309164010184

2、C语言仿真点亮流水灯

(1)用C语言编写流水灯代码

#include <REGX51.H>
//延时函数
void Delay(unsigned char xms)		//@12.000MHz
{
	unsigned char i, j;
 while(xms--)
 {i = 2;
	j = 239;
	do
	{while (--j);} 
	while (--i);
 }
}

void main()
{
	while(1)
	{
		P2=0x01;	//0000 0001
		Delay(100);
		P2=0x02;
		Delay(100);
		P2=0x04;
		Delay(100);
		P2=0x08;
		Delay(100);
		P2=0x10;
		Delay(100);
		P2=0x20;
		Delay(100);
		P2=0x40;
		Delay(100);
		P2=0x80;
		Delay(100);
	}
}

image-20240309164314527

(2)保存所写代码,点击魔法棒,在弹出的窗口中选择Output,再勾选Creat HEX File,然后点击OK,最后点击编译。

image-20240309164656794

3、汇编语言仿真点亮一个LED灯

ORG 0000h
LJMP MAIN

ORG 0100H
MAIN:
MOV A,#20H
MOV P2,A
LOOP:
LJMP LOOP

END
image-20240309170726089

4、汇编语言仿真点亮流水灯

代码如下:

ORG 0000H        
LJMP MAIN    	

ORG 0100H 
MAIN:
MOV A,#80H  	

LOOP:
MOV P2,A   			
LCALL DELAY		
RR A  			
LJMP LOOP		 

DELAY: 			
MOV R2,#255 	
D1:MOV R3,#250		
D2:DJNZ R3,D2      
DJNZ R2,D1			
RET					

END

image-20240309165912937

编译生成HEX文件步骤照上述C语言过程。

三、Proteus加载.HEX文件进行仿真

(1)上述程序代码编写完毕,编译生成.HEX文件后,返回到Proteus软件中给芯片加载程序进行仿真

image-20240309165057416

image-20240309165121089

(2)加载程序结束后,点击仿真调试。

image-20240309165200523

四、仿真结果

  • C语言流水灯仿真结果(从低位开始点亮)

  • 汇编语言点亮一个LED(第六个LED亮)
image-20240309170746114
  • 汇编语言流水灯仿真结果(从高位开始点亮)

五、总结

通过本次仿真实验,前期查阅有关8051单片机的相关资料,基本了解单片机的工作原理,在设计的过程中使用同一个原理图编写不同的代码,采用C与汇编语言两种方式,分别由低位和高位进行流水灯点亮,更深刻的理解了点亮流水灯的原理。通过此次实验,让我对单片机的兴趣大大提升,我坚信一定能学好并熟练掌握这门技术。

  • 22
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值