51单片机学习笔记(二)点亮第一个LED

一、 从点亮LED开始的第一个程序

上一篇文章中介绍了51单片机相关软件及驱动的下载调试方法,而本次将正式进入实战教学。
在单片机学习中点亮LED相当于C语言中的HELLO WORLD,非常适合新手操作,同时也能对单片机有更好的认识。

1.建立工程

首先打开安装好的KEIL5,选择’Project’选项中的’New uVision Project’开始建立一个新的工程;
请添加图片描述
建议为每一个项目建立一个单独的文件夹,不要把所有项目直接建在同一个文件夹内,养成分类整理的好习惯( •̀ ω •́ )✧;
请添加图片描述
在选择芯片时要注意,在KEIL中STC89系的都变成了AT89xx的形式,直接搜索STC89C52是找不到的;
请添加图片描述
点击’OK’后会再出现一个对话框,会将一个启动文件加入工程,目前没有用处,可忽略。

2.添加文件

建立完工程后,我们就可以在这个工程中添加C文件了,右键点击工程文件夹,选择‘Add New Item to Group ···’
请添加图片描述
可以选择C语言、C++或者汇编语言(ASM),这里我选择C语言;
请添加图片描述
完成O(∩_∩)O。
请添加图片描述

3.调节字体

由于KEIL默认的字体较小,我们可能需要更改字体设定,可以直接点击工具栏中的红框中的按钮进行设置。
请添加图片描述

4.了解LED工作原理

在开始编写程序之前,我们需要先了解一下LED的工作原理:
LED的中文名称是发光二极管,在生活中有着广泛的应用,尤其在大屏幕中使用 最为频繁;

请添加图片描述
LED有两个引脚,分别是正极和负极,在实物图中,一般遵照长正短负的原则进行判断;
请添加图片描述
在电路图中,LED一般用带横线的箭头来表示,箭头上端为正极,下端为负极。
要想使LED发光,就必须在其两端加上电压,并且电流方向必须是从正极到负极
请添加图片描述
通过查阅单片机的原理图,我们可以知道,单片机的8个LED的正极都与供电电源VCC相连。也就是说,要想使某个LED发光,只要让对应的接口为低电平“0”就行了。
请添加图片描述
一般来说,我们写的程序是通过CPU对寄存器的读写来改变引脚的值,从而改变相对应的外设的状态。由此可知,只要改变P2 的值,就能控制相应的LED的亮灭。

5.编写程序

二进制十六进制二进制十六进制
0000010008
0001110019
001021010A
001131011B
010041100C
010151101D
011061110E
011171111F
#include <REGX52.H>

void main()
{
	while(1)
	{
		P2 = 0xFE;//即1111 1110,P20引脚为0,D1亮
	}
}
	

6.下载程序

经过“编译”和“组建”无误后,就可以进行程序的下载了,点击图中的按钮进入配置界面,
请添加图片描述
选择’Output’选项卡,勾选’Create HEX File’,点击‘OK’,再次进行组建,若下方对话框中出现‘creating hex file from “.\Objects\project”…’则表示HEX文件创建成功。
请添加图片描述
打开STC-ISP软件,选择好对应的芯片型号和串口,打开程序文件,选择刚刚创建的HEX文件,完成后点击下载。
请添加图片描述
下载时,若出现一直在检测单片机的提示时,应选择冷启动的方式,即先点击下载按钮,然后在打开单片机电源(全程都要保持单片机与计算机连接)。
请添加图片描述

二、改进程序

尝试编写流水灯程序:

#include <REGX52.H>

void Delay1ms(unsigned int xms)		//12.000MHz时钟频率时延时x毫秒
{
	while(xms)
	{
		unsigned char i, j;

		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
		xms--;
	}
}

void main()
{
	unsigned int time = 100;//延迟时间,可改变流水灯的速度
	while(1)
	{
		P2 = 0xFE;//1111 1110,依次打开各个LED
		Delay1ms(time);//延时timex1ms
		P2 = 0xFD;//1111 1101
		Delay1ms(time);
		P2 = 0xFB;//1111 1011
		Delay1ms(time);
		P2 = 0xF7;//1111 0111
		Delay1ms(time);
		P2 = 0xEF;//1110 1111
		Delay1ms(time);
		P2 = 0xDF;//1101 1111
		Delay1ms(time);
		P2 = 0xBF;//1011 1111
		Delay1ms(time);
		P2 = 0x7F;//0111 1111
		Delay1ms(time);
	}
}

TIP:
STC-ISP软件中有可以准确生成延时函数的功能,可以直接复制过来使用
请添加图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值