蓝桥杯——数码管静态显示
作者:互联网
一、原理部分
前面的原理和蜂鸣器差不多,不懂的可以参考如何控制蜂鸣器
下面讲解数码管部分的原理
数码管内部是8个小的LED按照一定顺序排列而成的,按照从低位到高位的顺序我们依次命名为a b c d e f g dp(小数点) 共8段,对应关系如上图。
例如要让共阴极数码管显示0,则要让abcdef为1,即对应的段码为 0011 1111 转化为16进制则为0x3f。如果为共阳极数码管则对0x3f取反即可。
上图为数码管部分原理图
二、代码部分
实验平台:CT107D
实验芯片:stc15f2k60s2
实验现象:8个数码管同时显示一样的数字,数字为0-9循环,频率为0.5ms。
代码如下
#include "stc15f2k60s2.h"
#include "intrins.h"
sbit buzz = P0^6; //位定义蜂鸣器
unsigned char display[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//定义0-9对应段选数组
void Delay500ms() //延时0.5ms函数
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 22;
j = 3;
k = 227;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void close_buzz() //蜂鸣器上电默认高电平,所以关闭蜂鸣器
{
P2=0xa0;
buzz = 0;
P2=0x00;
}
void main()
{
unsigned char i;
close_buzz();
while(1)
{
for(i=0;i<10;i++)
{
P2 = 0xe0; //打开段选锁存器
P0 = ~display[i];//数组定义为共阴极的段码,开发板上的为共阳极于是取反
P2 = 0x00;//关闭锁存器
Delay500ms();
}
}
}
天地神仙
发布了6 篇原创文章 · 获赞 9 · 访问量 1271
私信
关注
标签:蜂鸣器,静态,void,unsigned,蓝桥,数码管,while,buzz 来源: https://blog.csdn.net/FuckerGod/article/details/103985119