C51单片机学习_01LED

 一、Keil和STC-ISP软件的使用

一、Keil软件的使用基础

在菜单栏project选项中选择第一个选项新建项目

再在菜单栏下面菜单栏中选择第一个空白页按钮新建文件

右击新建的项目点“添加已经存在的文件”选择刚刚新建的文件,也可以点“添加新文件”直接新建并添加

写完代码右击项目点设置再点“output”设置勾选“创建HEX文件”生成要下载在开发板上的HEX文件,设置完成后点击“编译”按钮编译文件并生成对应HEX文件

编译完代码并且生成HEX文件后使用STC-ISP软件将HEX文件下载到开发板上

1、先选择单片机型号,如图

2、将开发板和电脑连接并且点击“扫描”让其自己识别连接的串口号

3、“打开程序文件”选择生成好的HEX文件

4、点击“下载/编程”

5、开启/重启开发板

二、点亮LED灯

一、点亮一个LED灯

代码

#include<reg52.h> //52系列单片机头文件
sbit led1 = P1^0; //声明单片机P1口的第一位

void main()       //主函数
{

	led1 = 0;     //让P1口的第一位为零即可以点亮第一个LED灯
}

二、LED灯亮的原理:

单片机LED灯电路图如图

8个发光二极管接在P2和锁存器573之间,所有二极管的正极均供电,所以这块开发板上的二极管是低有效的,故只要将和74HC573输入端相连的8位P1口所有位置为高电平1LED灯即可发光。

三、点亮所有LED灯

一、代码

#include<reg52.h> //头文件

void main() //主函数
{
    P1 = 0x0; //将8位P1口全部置为0,8个发光二极管即可被点亮
}

三、延时语句

一、代码

void delay_ms(xms) //xms即为延时时间,xms为500时约延时为0.5s
{
    unsigned int i, j;
    for (i = xms ; i > 0 ; i --)
        for (j = 110 ; j > 0 ; j --);
}

//使用该函数时可以延时引用函数语句上个操作的时间

二、运用延时语句让小灯亮一会

#inlcude<reg52.h>

void delay_ms(xms) //延时函数
{
    unsigned int i, j;
    for (i = xms ; i > 0 ; i --)
        for (j = 110 ; j > 0 ; j --);
}

void main()
{
    P1^0 = 0; //第一个灯亮
    delay_ms(500); //延时0.5s
    P1^0 = 1; //灯灭
    while(1);
}

四、移位语句

//使用移位语句时需要引用头文件intrins.h
#include<intrins.h>

```

一、左移和右移

二、循环左移和循环右移

三、代码

#include<reg52.h>

void delay_ms(xms)
{
    unsigned int i, j;
    for (i = xms ; i > 0 ; i --)
        for (j = 110 ; j > 0 ; j --);
}

unsigned char a = 0xaa;

void main()
{
    while (1)
    {
        P1 = a;
        delay_ms(1000);
        a = a << 1; //a左移一位
        P1 = a;
        delay_ms(1000);

        a = 0xaa;
        P1 = a;
        delay_ms(1000);
        a = a >> 1; //a右移一位
        P1 = a;
        delay_ms(1000);
        
        a = 0xaa;
        P1 = a;
        delay_ms(1000);
        a = _crol_(a, 1) //a循环左移一位
        P1 = a;
        delay_ms(1000);

        a = 0xaa;
        P1 = a;
        delay_ms(1000);
        a = _cror_(a, 1) //a循环左移一位
        P1 = a;
        delay_ms(1000);        
        
    }
    
}

五、流水灯

/*该跑马灯先给P1赋值0xfe也就是11111110点亮第一个灯也就是最上面的灯,
再循环左移让灯从上到下依次闪烁实现从上到下的跑马灯效果*/

#include<reg52.h>
#include<intrins.h>

//延时函数
void delay_ms(xms)
{
    unsigned int i, j;
    for (i = xms ; i > 0 ; i --)
        for (j = 110 ; j > 0 ; j --);
}

unsigned char aa; //声明一个无符号字符变量给P1口赋值

void main()
{
    aa = 0xfe; //aa初值 11111110
    while (1)
    {
        P1 = aa; //点亮
        delay_ms(500); //延时500ms
        aa = _crol_(aa, 1); //aa循环左移 
    }    
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值