前言
本人曾在第十三届蓝桥杯大赛单片机组中获得国一,以下是我在准备比赛过程中的一些记录,希望能给大家带来帮助
本人持续分享更多关于嵌入式和单片机的知识,如果大家喜欢,别忘点个赞加个关注哦,让我们一起共同进步~
用一个小题目来演示数码管的显示:
蓝桥杯的单片机平台上一共有八个数码管,我们依次让他们显示0-7 8个数字
一、基础
LED数码管其实就是几个led灯组合而成的,如图a,b,c都是一个个独立的小灯,我们通过控制LED的亮暗组合来形成数字。
分析一个陌生器件的功能,我们首先要看明白它的原理图。
com1~8就是使能显示数码管的位置
a1~dp1用来控制显示的数字内容
2.这部分我们就很熟悉了a1~8和com1-8受到两个锁存器的控制,锁存器又受到1个译码器的控制。
我们利用译码器打开锁存器,然后输入想要使能的位置和显示的内容。就能实现想要的效果了。
二、代码部分
1.数码管数字显示部分
unsigned char num[18]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,
0xbf,0x7f};
// 写了一个数组包含了0-16
这一串数字我们不需要记忆的,虽然很好推导,在比赛的时候官方会提供数码管显示的文档,直接拿来用就可以了。
2.译码器的选择部分
void InitHC138(unsigned char n) // 38译码器,控制对应n的口
{
switch(n)
{ // 4,5,6,7分别开启的是4个对应的锁存器
case 4:
P2 = (P2 & 0x1f) | 0x80;
break;
case 5:
P2 = (P2 & 0x1f) | 0xa0;
break;
case 6:
P2 = (P2 & 0x1f) | 0xc0;
break;
case 7:
P2 = (P2 & 0x1f) | 0xe0;
break;
}
}
我们只用到了P2的5 6 7 三个IO口,P2 & 0x1f 是为了保持其他5个IO口的状态不会改变,然后进行或的运算进行相应的设置,这一部分仔细思考一下应该比较容易理解吧。
3.数码管的显示
void ShowSMG_Bit(unsigned char dat, unsigned int pos)
{
InitHC138(6); //数码管的位置
P0 = 0x01 << pos;
InitHC138(7); //数码管的内容
P0 = dat;
}
比如说我们想要第7个数码管显示1
ShowSMG_Bit(num[1],7)
好了之后我们只需要打开译码器对应的位置,然后写入对应的数据就ok了。
4.代码
#include "reg52.h"
unsigned char code SMG_duanma[18]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,
0xbf,0x7f};
// 写了一个数组包含了0-16
void Delay(unsigned int t) //延时
{
while(t--);
while(t--);
}
void InitHC138(unsigned char n) // 38译码器,控制对应n的口
{
switch(n)
{ // 4,5,6,7分别开启的是4个对应的锁存器
case 4:
P2 = (P2 & 0x1f) | 0x80; // 0x1f = 0001 0000 0x80: 1000 0000
break;
case 5:
P2 = (P2 & 0x1f) | 0xa0;
break;
case 6:
P2 = (P2 & 0x1f) | 0xc0;
break;
case 7:
P2 = (P2 & 0x1f) | 0xe0;
break;
}
}
void ShowSMG_Bit(unsigned char dat, unsigned pos)
{
InitHC138(6); //数码管的位置
P0 = 0x01 << pos;
InitHC138(7); //数码管的内容
P0 = dat;
}
void system_init(){
InitHC138(5);
P0=0x00;
InitHC138(4);
P0=0xff;
}
void SMG_Static()
{
unsigned char i;
for(i=0;i<8;i++){
ShowSMG_Bit(SMG_duanma[i],i);
}
Delay(60000);
}
void main()
{ system_init ();
while(1)
{
SMG_Static();
}
}
更多相关资源
【全套完结】蓝桥杯单片机— 从省赛到国赛
https://blog.csdn.net/amimax/article/details/128749109?spm=1001.2014.3001.5501