一、点亮
工作原理:
如图,二极管阳极连接电阻,二极管阴极连接单片机引脚。D0对应P20,D1对应P21,,,,,,,都通过P2孔进行控制。
二极管:
电源正极连接到二极管阳极,负极连接到阴极,二极管正常工作。所以,原理图中,引脚为低电平,连接的是二极管的阴极,阳极通过与电阻连接,电阻连接的是高电平,所以二极管正常工作。电阻的作用为保护二极管。
程序编写
#include"reg52.h"
sbit LED=P2^0; /*sbit用于定义变量。LED为自定义变量。将P2.0(注意不要写成P2.0,应写为P^0)孔赋给变量LED*/
void main()
{
while(1)
{
LED=0;/*由二极管的工作原理可得,二极管接P2.0孔,所以该孔为低电平,为0*/
}
}
二、闪烁
工作原理
在点亮LED灯的基础之上。
原理上基本与点亮LED灯工作原理相同。
自定义一个延时函数。
主函数先点亮灯,在调用延时函数,在熄灭灯,然后在调用延时函数,将这些放入循环一直执行。完成
代码
#include "reg52.h"
typedef unsigned char u8; //重定义字符型变量
typedef unsigned int u16; //重定义整型变量
/*自定义延时函数*/
void dealy(u16 i)
{
while(i--);
}
sbit led=P2^0;
void main()
{
while(1)
{
led=0; //点亮,阴极接低电平
dealy(50000);
led=1; //熄灭,阴极接高电平
dealy(50000);
}
}
三、流水灯
工作原理
1.在LED点亮、LED闪烁实验的基础之上。
2.移位函数
crol(a,b):循环左移函数,a为左移的值,b为左移的位数。
cror(a,b):循环右移函数,a为右移的值,b为右移的位数。
移位函数包含在instrins.h库函数里面。
3.c语言中十六进制的表示
Ox代表的是十六进制的前缀,不用读。例如OXaaOxbb,只看aa,bb就行。
十六进制到二进制转换
十六进制表示:每一位有不同的数码0~9,A(10),B(11),C(12),D(13),E(14),F(15)
十六进制转二进制:将十六进制的每一位转化为二进制即可。例如8FA,=>1000 1111 1010
运作过程
先看原理图
LED原理图(阳极解高电平),阴极通过电阻接接引脚
引脚默认接高电平,所以,初始时灯为熄灭状态。
流水实现
利用十六进制位位移函数实现左移和右移
_crol_(0xfe,1):0xfe转化为二进制为1111 1110;1代表位数
f代表原理图中的4个高位引脚,e代表4个低位引脚。
1111 1110 =>p0=0(低电平,灯亮)
1111 1101 =>左移,p1=0,第二个灯亮
1111 1011 =>p2
…………
_cror_(oxfe,1):与左移原理相同(从0111 1111 开始向右移)
代码实现
#include #include typedef unsigned char u8; //重定义全局字符型变量 typedef unsigned int u16; //重定义全局整型变量 #define led P2//宏定义LED为p2端口 /*延时函数*/ void dealy(u16 i) { while(i--); } void main() { u16 i; //定义变量i P2=0xfe; //点亮第一个LED灯,即1111 1110. dealy(50000); //延时450ms while(1) { for(i=0;i<7;i++) //8个LED灯,利用for循环一直执行 { led=_crol_(led,1); // 1111~1110~0111 1111,左移 dealy(50000); } for(i=0;i<7;i++) //8个LED灯,利用for循环一直执行 { led=_cror_(led,1); //0111 1111~1111 1110 ,右移 dealy(50000); } } }
上一篇:51单片机数码管静态显示和动态显示原理及实验 夜猫子
下一篇:用单片机AT89C51驱动两位数码管显示00--99依次循环程序代码
推荐阅读最新更新时间:2024-11-19 23:23
设计资源 培训 开发板 精华推荐
- 斯塔克反应堆(low)
- 光能使者PCB
- POE分离器(基于MP8007H-百兆-未验证)
- CB-20/D34,AT-501 系统模块的开发/载板 - SOM
- ATA8510-EK1,ATA5815 的开发套件用作基站中的 RF 收发器,并以轮询模式运行以检测数据电报并在 OLED 上显示接收到的消息
- CH340E
- DC1958,使用 LTC3633AEUFD-2、3A、20V 单片双通道同步降压稳压器的演示板
- 使用 LT1054IS8 基本电压逆变器的典型应用
- 使用 ROHM Semiconductor 的 BU4340 的参考设计
- ADR3420 2.048-Vout 微功率、高精度电压基准的典型应用