51单片机入门学习(二)


前言

今天学习了循环点亮一个LED和LED流水灯。


一、基础知识

  1. 头文件名称不区分大小写,但标识符区分大小写
  2. C51数据类型
    注意和计算机的数据类型区分,计算机里的int是32位。
    在这里插入图片描述

二、具体示例

1.循环点亮一个LED

根据电路图,LED的另一端是VCC,控制P2.0引脚循环输出高低电平就可以循环点亮。
单片机的频率这里是11.059MHz,如果直接只放两句代码,那循环点亮的间隔是微秒级的,眼睛观察不到,所以需要另外写一个延时程序。这里使用do_while循环生成延时程序。
PS:STC-ISP串口调试助手可以生成延时代码。要先声明包含用到的函数、寄存器、变量等的头文件。

部分代码如下:

#include <REGX52.H>
void main()
{
	while(1)
	{
		P2=0xFE;
		Delay500ms();
		P2=0xFF;
		Delay500ms();
	}
}

2.流水灯

依次循环点亮每一个LED,直接给P2引脚循环、延迟赋值,代码和循环点亮一个LED类似。
PS:刚开始使用STC-ISP生成的固定500ms的延时程序,为了实现可控的延时时间,而不用每次都去另外生成,使用调试助手生成1ms的延迟程序,定义一个参数实现可控的时间,其实就是do_while循环再乘了一个外循环。

部分代码如下:

#include <REGX52.H>
void main()
{
	while(1)
	{
		P2=0xFE; //1111 1110
		Delay500ms();
		P2=0xFD; //1111 1101
		Delay500ms();
		P2=0xFB; //1111 1011
		Delay500ms();
		P2=0xF7; //1111 0111
		Delay500ms();
		P2=0xEF; //1110 1111
		Delay500ms();
		P2=0xDF; //1101 1111
		Delay500ms();
		P2=0xBE; //1011 1111
		Delay500ms();
		P2=0x7F; //0111 1111
		Delay500ms();
	}
}

总结

提示:8.1号,每天学习51单片机的第二天,学习一小时。
从生成延时函数这里有点感悟:代码是一点一点可以优化和升级的,先从简单的思维和书写开始。比如这个时间:直接生成,固定的时间——>可控的时间,直接生成“1”,使用“1”×常数,就实现了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值