51单片机编程与仿真_1_流水灯

流水灯是一个很经典的入门项目,学单片机大部分都是从流水灯开始!

一、编程

先贴上代码:

#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)
	{
		P0=0xfe;
		delay_ms(50);
		P0=0xfd;
		delay_ms(50);
		P0=0xfb;
		delay_ms(50);
		P0=0xf7;
		delay_ms(50);
		P0=0xef;
		delay_ms(50);
		P0=0xdf;
		delay_ms(50);
		P0=0xbf;
		delay_ms(50);
		P0=0x7f;
		delay_ms(50);
	}
}
1.关于头文件

(1)51单片机编程的常用头文件有以下几个:
reg51.h,math.h,stdio.h,stdlib.h,absacc.h,intrins.h
(2)头文件里头是什么内容呢?
我们可以单击头文件的那一行,然后右键,选择“open document <xxx.h>”,然后我们就可以看看头文件里是什么内容了。
对于头文件<reg51.h>,我们打开后可以发现是这样的:
在这里插入图片描述
sfr 声明一位8位寄存器
sfr16 16位特殊功能寄存器
sbit 声明特殊功能位
bit 位变量的声明

2.关于延迟函数

首先我们得先来讲一下时钟周期,如果单片机的晶振是a MHz,那么时钟周期就是1/a微秒。而单片机执行一条语句的时间,也就是机器周期,为12个时钟周期,也就是12/a微秒。如果单片机的晶振是12MHz,那么一个机器周期就是1微秒,那么延时1微秒就只需要执行一个空语句。依次类推,延时1ms就要执行1000个空语句。

3.生成hex文件

不论是proteus仿真还是真正的单片机执行,要加载或下载的都是这个hex文件。那么如何生成hex文件呢?见以下的两步操作:
在这里插入图片描述
在这里插入图片描述
然后再编译一次就可以了。
在这里插入图片描述

二、仿真

先贴上仿真效果:
在这里插入图片描述

1.关于proteus的放置元器件

(1)放置元件和单片机
在这里插入图片描述
然后在框里打入关键字即可。
(2)放置电源和地

在这里插入图片描述
(3)放置总线
在这里插入图片描述
然后在图中想要的地方画上,结尾处要双击

2.关于总线

画上总线后,将单片机的各个引脚街道总线上,并把各个LED的引脚接到总线上,这个时候,系统是不知道单片机的哪个引脚和LED的引脚接在一起的,因此要使用网络标签,具有相同网络标签的引脚就是接在一起的。
在这里插入图片描述

3.画好原理图后怎么仿真呢?

在这里插入图片描述
在这里插入图片描述
然后找到刚刚保存的hex文件加载进去,就可以进行仿真了!
在这里插入图片描述

对流水灯的编程和仿真就讲到这里了,如有什么疑问或文章有什么纰漏,都欢迎留言交流呀!大家互相学习,共同进步!

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值