手把手教学51单片机——LED灯篇

准备工作

        本教程51单片机开发应用程序使用Keil5stc-isp编译烧录,开发板型号使用STC89C52RC(购物APP搜索单片机开发板可找到),没有下载应用程序的我已经打包好可以通过下方链接进行下载,安装教程可以参考[1-2] 开发工具介绍及软件安装_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Mb411e7re/?spm_id_from=333.788.videopod.episodes&vd_source=5669e58ac53af251d4229e3a559e3a35&p=2
链接: https://pan.baidu.com/s/1XrVrhCB0-IVhywTkV_UN3w?pwd=1234 提取码: 1234

正片开始:

一.创建工程文件

        创建一个自己的代码文件夹用于存放所有代码,这里我取名为KeilProject。

        打开Keil5-->点击Project选择New uVision Project-->在KeilProject目录下创建“点亮一个LED”的文件夹,在“点亮一个LED”的文件夹下创建一个Project文件并打开-->创建完成之后会有一个弹窗,在Search中输入at89c52(不区分大小写,要不是跟我一样的单片机根据自己型号来选择),然后选中并点击OK-->创建好之后会有一个uVision弹窗,点击是或否都行,这里我选择点击否-->点击Target 1文件左边的+,在Source Group 1右键鼠标后选择Add New Item to Group'Source Group 1'-->选择.c文件类型并输入文件名,这里我取名为main-->点击add完成工程文件创建。

二.编写代码

   点亮一个LED灯:

#include 
void main(){
	P2=0xfe; //这里的P一定要大写,fe则不限制大小写
}

三.烧录

        Keil5:点击Options for Target 1-->点击Output,然后勾选Create HEX File选项-->点击OK-->点击Build(如果没有报错就可以去stc了)

        stc:打开stc-->选择单片机型号STC89C52RC(这里一定要选对自己的型号的,不然后面下载不成功)-->选择串口号点击扫描,这里我的是COM3,扫描不了的可以手动添加-->点击打开程序文件-->选择刚刚编译的.hex文件-->点击下载/编程-->关闭单片机再打开。

        视频教学:

51单片机--LED新手篇

四.与LED有关的其他代码

LED灯闪烁:

#include 
#include 
void Delay1000ms()		//@12.000MHz
{
	unsigned char i, j, k;

	_nop_();
	i = 8;
	j = 154;
	k = 122;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}
void main(){
	while(1){
		P2=0xfe;
		Delay1000ms();
		P2=0xff;
	}
}

        这里的Delay1000ms函数由stc生成,操作流程为:打开stc-->在右半边找到软件延时计时器,系统频率选择12.000,定时长度选择1000ms,8051指令集我选择STC-Y1(这个一定要根据适用系列有没有你的型号来选)-->点击生成c代码,然后点击复制代码。

LED流水灯:

#include 
void Delay1ms(unsigned int xms)		//@12.000MHz
{
	unsigned char i, j;
	while(xms){
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
		xms--;
	}
}

void main(){
	while(1){
		P2=0xfe;
		Delay1ms(500);
		P2=0xfd;
		Delay1ms(500);
		P2=0xfb;
		Delay1ms(500);
		P2=0xf7;
		Delay1ms(500);
		P2=0xef;
		Delay1ms(500);
		P2=0xdf;
		Delay1ms(500);
		P2=0xbf;
		Delay1ms(500);
		P2=0x7f;
		Delay1ms(500);
	}
}

        这里的Delay1ms(unsigned int xms)是由stc生成的Delay1ms()改写而成,由无参变成了有参,目的是可以随时根据自己想要延时多少就写个参数就可以了,不需要每次都去stc生成。

五.总结

        通过上面对LED灯的操作,可以熟悉使用Keil5和stc开发工具并学会用编程实现对LED灯的控制和延时函数Delay,有什么意见和疑惑欢迎各位在下面评论留言,我看到消息会第一时间回复。

你可能感兴趣的:(51单片机,51单片机,嵌入式硬件,单片机,笔记,经验分享)