51单片机点亮LED灯、流水灯

发布者:runaway2000最新更新时间:2022-09-27 来源: csdn关键字:51单片机  点亮LED灯  流水灯 手机看文章 扫描二维码
随时随地手机看文章

2-1点亮一个LED灯

 1.首先在keil中新建一个工程,这里需要注意,将所写的工程可以统一一个地方进行存储,这样方便查找。之后再右击添加新文件

 

2.首先右击代码行,引用文件

 3.之后再编写主函数

 4.以其中亮一个LED灯为例,编写程序如下:


 P2=0xFE;//1111 1110    转换成十六进制0x表示前缀代表的是十六进制数


 P2=0xFE;//1111 1110 

 下载程序后到STC-ISP中选择单片机的型号,串口号,打开相应的程序文件,进行下载编程


5.实现效果

 6.当然,也可以加上循环语句表示让其一直循环下去,实现效果是一样的

 通过点亮第一个LED灯,可以知道以八个一组为例改变0101......的位置可以转换灯的亮灭情况


例如:

实现效果为:

 2-2闪烁LED灯

闪烁LED灯是在2-1的基础上加上延时函数


void main()

{

while(1)

{

P2=0xFE;

Delay500ms();

P2=0xFF;

Delay500ms();

}

}

 这里引用了延时函数,所以在此之前需要调用延时函数


这里可以用STC-ISP生成相应的代码复制过来

 之后进行编译,会发现


 这是需要添加头文件,不然会报错


#include

添加头文件是因为复制过来的代码中含有以下内容是包含在另一个库里的


_nop_();

程序下载,烧录后实现效果为

 2-2闪烁LED灯


2-3 LED流水灯

在2-2的基础上实现第三步LED流水灯


主要变化是在主函数中改变进制的位数,添加延时,具体如下:


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=0xBF; //1011 1111

Delay500ms();

P2=0x7F; //0111 1111

Delay500ms();

}

}


上述代码中0的位数依次向左边移动


实现效果如下:

2-3 LED流水灯


2-4 LED流水灯

2-4写代码的方式较之前而言较为灵活,当实现不同毫秒的延时时不需要依次生产代码复制过来,而是灵活使用


#include

 

void Delay1ms(unsigned int xms) //@12.000MHz

{

unsigned char i, j;

  while(xms)

{

i = 2;

j = 239;

do

{

while (--j);

} while (--i);

xms=xms-1;  //xms--;

}

}

 

 

 

void main()

{

while (1)

{

P2=0xFE; //1111 1110

Delay1ms(1000);

P2=0xFD; //1111 1101

Delay1ms(1000);

P2=0xFB; //1111 1011

Delay1ms(100);

P2=0xF7; //1111 0111

Delay1ms(100);

P2=0xEF; //1110 1111

Delay1ms(100);

P2=0xDF; //1101 1111

Delay1ms(100);

P2=0xBF; //1011 1111

Delay1ms(100);

P2=0x7F; //0111 1111

Delay1ms(100);

}

}

 


1.在调用的延时函数使用了定义int型的变量xms,使用了while循环,在主函数中设置十六进制数的0依次向左移,实现了流水灯的效果,但是这种方法更实用,灵活


实现效果:


2-4 LED流水灯


总结:


51单片机实现流水灯是入门的第一课,主要熟悉以下要点 


进制转换

C51数据类型

关键字:51单片机  点亮LED灯  流水灯 引用地址:51单片机点亮LED灯、流水灯

上一篇:51单片机~流水灯的四种演示方法
下一篇:51单片机实现独立按键控制LED灯

推荐阅读最新更新时间:2024-11-18 19:44

使用STM32寄存器点亮LED
事先声明哦,我也是最近才开始学32的,不过我会尽可能详细的讲解这些小知识点 我们口中常说的LED灯其实是指LED发光二极管,关于这一点涉及到的知识点,我已经在51单片机教程中提及(同点亮LED灯),故而不再详述。 刚开始接触STM32的时候,觉得他的操作明显区别于51,比如我们点亮一个LED灯,直接控制相应的IO口即可;但32不一样,我们需要先设置时钟控制寄存器 RCC_APB2ENR|=1 4; //一共32位 然后设置它的工作方式,输出速度。 GPIOC_CRL&=~(0x0f (4*i)); //控制第i+1个led GPIOC_CRL|=(3 (4*i)); //3可以表示为0011,然后在它的前面补零,凑
[单片机]
使用STM32寄存器<font color='red'>点亮</font><font color='red'>LED</font><font color='red'>灯</font>
51单片机STC89C52矩阵键盘之扫描法检测
程序源码 /*-----------------------包含头文件区域-------------------------*/ #include reg52.h //单片机头文件 /*-----------------------数据类型定义区域-----------------------*/ typedef unsigned char u8; //定义类型unsigned char别名为u8 typedef unsigned int u16; //定义类型unsigned int别名为u16 /*-----------------------用户自定义数据区域---------------------*/
[单片机]
<font color='red'>51</font><font color='red'>单片机</font>STC89C52矩阵键盘之扫描法检测
AT89S51/52单片机的最小系统电路原理图
单片机最小系统统是指能让单片机运行起来的所需的最少器件构成的电路系统。如果您构建的最小系统作为研究、学习使用,应该满足以下要求:1.有电源;2.有单片机主芯片;3.有程序下载电路;4.有时钟源电路;5.有复位电路;6.有I/O口的负载电路。这样的系统才能满足您下载程序和调试程序的要求。 下图是AT89S51/52单片机的最小系统电路原理图。 电源部分:从电脑USB接口DC5V取电,C4和C5构成USB接口电源的简单滤波电路。开关电源的输出电压往往波纹较大,不像线性稳压器输出的电压那么稳定,所以进行必要的滤波。如果需要接一个电源开关应接在C4和C5的前面,在您接通开关的瞬间产生的抖动能被这两个电容吸收。 复位电路
[单片机]
AT89S<font color='red'>51</font>/52<font color='red'>单片机</font>的最小系统电路原理图
将EM-18 RFID与8051微控制器连接并显示RFID卡号
射频识别 (RFID)使用射频来读取存储在 RFID 卡或标签中的信息。在这个项目中,我们将连接EM-18 RFID阅读器与8051微控制器,并在16* 2 LCD显示屏上显示RFID卡号。这种无线射频识别用于许多系统,如基于RFID的考勤系统,安全系统,投票机等。 所需组件: 8051微控制器 EM-18 无线射频识别读写器 16*2液晶显示屏 射频识别卡/标签 电位计 跳线 电路图: 8051 微控制器: 8051微控制器是一款8位微控制器,具有128字节的片上RAM,4K字节的片上ROM,两个定时器,一个串行端口和四个8位端口。8052微控制器是微控制器的扩展。下表显示了8051名家庭成员的比较。 特征 8
[单片机]
将EM-18 RFID与8051<font color='red'>微控制器</font>连接并显示RFID卡号
51单片机倒计时发声器
设计要求: 1:上电后二位数码管显示88 2:单击按钮,倒计时开始从20秒开始,到0时喇叭发声。 3:双击按钮开关:倒计时从0开始正常记时,到20秒后发声。 4:记数结束从开始状态重新开始下一轮. 基本器件和管脚: 1)数码管: 2)74译码器 SN 74LS47 将BCD 码转换成数码管显示的数. 单片机及其接口电路: 程序代码: 本次晶振12MHZ SW EQU P1.0; 按钮开关指定为P1.0位 BUZZER EQU P3.7; 喇叭指定为P3.7位 ORG 00H; 程序起始地址00H开始 START:
[单片机]
<font color='red'>51</font><font color='red'>单片机</font>倒计时发声器
51单片机制作脉冲发生器
要求 1.在Keil IDE(u Vision2)中完成应用程序设计,并编译 2.在ISIS 7 Professional 中完成电路设计、调试与仿真 /** I use a timer in my code to control the time **/ #include reg51.h #define uint unsigned int #define uchar unsigned char uchar code tab ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar second=0,counter=0,second_1=0,second
[单片机]
<font color='red'>51</font><font color='red'>单片机</font>制作脉冲发生器
56-基于51单片机的IC卡智能水表设计
具体实现功能 系统由STC89C52单片机+LCD1602+电磁阀+继电器+流量计+IC卡读写模块模块构成。 具体功能: (1)第一行显示IC卡ID号码,此时未读到IC卡,所以ID显示为0,第二行显示的依次是剩余的水量和IC卡内的余额。若水量余额大于0,电磁阀得电,用户可以用水。 (2)当智能水表检测到IC卡时,第一行显示IC卡ID号码,第二行显示的是剩余的水量和IC卡内的余额。卡片内的余额可以充值到水表里。此时水表内有水量,电磁阀开启,按下用水按钮,模拟流量计旋转,用水信号输入到单片机,单片机将水的余量在屏幕的第二行显示出来,当水的余量小于等于10时,发光二极管点亮,提示余额不足,当水的余量等于0时,继电器断开,切断
[单片机]
56-基于<font color='red'>51</font><font color='red'>单片机</font>的IC卡智能水表设计
基于ADC0809和51单片机的多路数据采集系统设计
摘要:给出了采用8051单片机为核心来实现多路数据采集与通信控制的设计方法。该方法将8路被测电压通过通用ADC0809模数转换来实现对采集到的数据进行模拟量到数字量的转换,然后由单片机对数据进行处理,再将数据通过串行口传输到PC机上,同时采用MAX232接口芯片来实现MCU与PC机间的电平匹配,最后由PC机完成数据的接收和显示。 关键词:多路数据采集;单片机;模数转换;串行通信 “数据采集”是指将温度、压力、流量、位移等模拟物理量采集并转换成数字量后,再由计算机进行存储、处理、显示和打印的过程,相应的系统称为数据采集系统。 本文的主要任务是对0~5V的直流电压进行测量并送到远端的PC机上进行显示。由于采集的是直流信号,对于
[工业控制]
基于ADC0809和<font color='red'>51</font><font color='red'>单片机</font>的多路数据采集系统设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved