用51汇编语言与c语言实现LED点灯和流水灯电路

本文详细介绍了如何在Proteus和Keil环境下创建AT89C51工程,实现点灯功能以及使用51汇编语言和C语言制作流水灯的步骤。包括创建工程、连接硬件、编写代码及调试过程。
摘要由CSDN通过智能技术生成

目录

1、创建工程

(1)创建proteus工程

(2)创建keil工程

2、点灯

3、流水灯

(1)51汇编语言实现流水灯

(2)c语言实现流水灯

4、小提示


1、创建工程

(1)创建proteus工程

打开proteus软件

点击新建程序

设置文件名与保存路径

勾选DEFAULT原理图

勾选模板

一直下一步,直到选择AT89C51

最后点完成即可

(2)创建keil工程

打开keil软件,新建工程

1-选择提前下载好的Legacy库

2-输入AT89C51

然后点ok

点击魔术棒

勾选生成HEX文件

点击ok就建立完成了

2、点灯

打开提前建立好的proteus文件,打开原理图,点击左侧原件

添加LED灯(led)与电阻(res)

然后将原理图设计成下图状,地线的选择在下图左侧

点击运行,如果led灯亮了就表示成功

3、流水灯

(1)51汇编语言实现流水灯

按照proteus创建工程步骤再创建并打开一个工程

打开源码文件

把红框区域替换成下属代码

org   0100h
Start:	
LJMP MAIN     ;跳转到MAIN

MAIN:
MOV A,#80H    ;将数80H移动到寄存器A中
LOOP:
MOV P2,A      ;将寄存器A的值移动到P2端口//循环中的意义是刷新P2中的位置
LCALL DELAY   ;调用DELAY函数
RR A          ;将寄存器A中的内容向右循环移位
LJMP LOOP     ;跳转到LOOP

DELAY:        ;通过循环次数的控制来实现一定的演示效果
MOV R2,#255   
D1:MOV R3,#250
D2:DJNZ R3,D2       ;寄存器减1,不为0 则转移
DJNZ R2,D1
RET

再将原理图设计成下图样式

提示:总线连接后得将应连接得两端命名相同的网络标号

点击运行,若流水灯显示正常即为成功。

(2)c语言实现流水灯

打开先前创建的keil工程,创建新文件

将下属代码复制到文件中

	#include <reg51.h>
	#include <intrins.h>
	//延迟函数
	void delay_ms(int a)
	{
		int i,j;
		for(i=0;i<a;i++)//利用多次循环来实现延迟
		{
			for(j=0;j<1000;j++) _nop_();
	
		}
	}
	
	void main(void)
	{
		while(1)
		{
			P2=0x01;
			delay_ms(50);
			P2=0x02;
			delay_ms(50);
			P2=0x04;
			delay_ms(50);
			P2=0x08;
			delay_ms(50);
			P2=0x10;
			delay_ms(50);
			P2=0x20;
			delay_ms(50);
			P2=0x40;
			delay_ms(50);
			P2=0x80;
			delay_ms(50);
		}
	}

点击保存

保存文件并命名为led.c

右键文件夹,添加已有文件

选择刚刚保存的文件添加

点击编译

没显示错误则编译成功

再打开标题3-(1)的proteus文件,右键51单片机,编辑属性

改变源码地址

找到keil工程生成的hex文件并选择

如果实现了流水灯则表示成功

4、小提示

如果想重新改回使用汇编语言则只需要源码处点一下构建工程即可

  • 16
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值