C51#学习笔记02#| 点亮一个LED灯

  • 更改字体设置:【编辑】-【配置】-【颜色和字体】
  • 新建项目
  • 新建.c文件(添加源代码组)
  • 配置.hex文件
  • 测试代码:
#include<reg52.h>

void  main()
{

	while(1)	
	{
		;
	}


}
  • 编译
    编译按钮在工作区的左上角,编译成功之后,发现main.c前面会有一个“+”号,包含的头文件 #inlude<reg52.h> 也会显示在下方。
    在这里插入图片描述

点亮LED灯

  • 电路图
    默认情况下LED灯为高,因为流水灯P1.0 - P1.7设置了上拉电阻,当程序设置IO口为低时,LED点亮。
    在这里插入图片描述
    第一种方法

P1 = 0xf0; //p1.0亮

  • 寄存器设置规则

P1在系统中头文件中可见,代表sfr P1 = 0x90;八位寄存器,如何用十六进制代表IO口呢?下面以P1~P7的八位寄存器为例:

转换步骤为:【八位二进制】-【十进制.十进制】-【十六进制】

寄存器编号 八位寄存器 十进制 十六进制
P1^0 1111 1110 15、14 0xfe
P1^1 1111 1101 15 、13 0xfd
P1^2 1111 1011 15 、11 0xfb
P1^3 1111 0111 15 、7 0xf7
P1^4 1110 1111 14、15 0xef
P1^5 1101 1111 13、15 0xdf
P1^6 1011 1111 11、15 0xbf
P1^7 0111 1111 7、15 0x7f

注意:流水灯电路原理图中默认上拉为灯灭;若要点亮 LED则只需设置寄存器为即可。如:P1.0引脚为低,从低位到高位,从右往左 1111 1110

  • 程序
#include<reg52.h>

void  main()
{

	while(1)	
	{
		P1 = 0xf0; //p1.0亮
		
		//八位二进制 十进制转换  十六进制
		//1111 1110    15 14      0xfe
		
		//P1 = 0;//  0000 0000   全亮
		//P1 = 0xff//  1111 1111  全灭
	}


}

第二种方法

sbit led1 = P1^0; //定义led1 为 p1.0

 #include<reg52.h>

 sbit led1 = P1^0;//


 void  main()
 {
 	while(1) {
	
	led1 = 0 ;//

	
	}
 }

烧录程序

  • 配置

关於单片机型号:请选择“STC89C52”,在“STC89C51 系列”里面可选。

注意:系统兼容性的问题,可能会出现烧录软件点开后闪退的情况,我的解决办法是去 STC 官网下载最新的烧录软件。

在这里插入图片描述

  • 烧录步骤

插上USB 数据线后,没有灯亮,然后点击烧录软件的 “下载/编程”,L1亮了,这时立刻按下板子的电源开关,然后 L2 亮了,这样就开始烧录了。

在这里插入图片描述
在这里插入图片描述
拓 展

  • 新建延时头文件delay.h

#define uchar unsigned char //8 0-255
#define uint unsigned int   //16  0-65535
 
void delay(uint xms);
 
void delay(uint xms)				
{
	uint i,j;
	for(i=xms;i>0;i--)		      //i=xms即延时约xms毫秒
		for(j=112;j>0;j--);
}
  • 主函数
#include<reg52.h>
#include"delay.h"

 sbit led7 = P1^7 ; //p1.7

 void  main()
 {
 	while(1) {
	
	led7 = 0 ;//打开

	delay(500);

	led7 = 1;	  //关闭

	delay(500);

	
	}
 }

参考资料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章