蓝桥杯单片机组24号就要考试了,是时候把考试用到的每个模块做一个总结了。其实对于省赛来说用到的模块总共就那么几个:
1、数码管
2、按键(独立按键和矩阵按键)
3、DS18B20(温度传感器)
4、DS1302(时钟)
5、AD
6、EEPROM
7、蜂鸣器和继电器
8、LED灯
一共八个模块,在这八个模块里面每年都考的是:按键、数码管、LED灯。
下面就来一个一个模块的说一下(纯属个人总结,仅供参考):
1、数码管:
从往届的题目要求我们可以看出来,数码管要求显示的是:数字1~~9,、字母C(大写)、—(中斜杠),还有一个比较冷门的就是显示数字的时候第八段数码管也要求点亮(就是右下角那一点)。从这里我们可以看出来真正有困难的不在数码管的显示,而是数码管和按键结合的显示。当然了现在我们写的函数肯定都是封装好的了,具体如何封装就看你自己个个人习惯了。
下面给大家看一下我写的函数代码:
#include "shuma.h"
u8 shu_tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};//0XC6是英文C
uchar yi,er,san,si,wu,liu,qi,ba;
void Display1_2(uchar yi,uchar er)
{
P2=0XC0;
P0=0X01;
P2=0XFF;
P0=shu_tab[yi];
Delay1ms();Delay1ms();
P2=0XC0;
P0=0X02;
P2=0XFF;
P0=shu_tab[er];
Delay1ms();Delay1ms();
}
void Display4_5(uchar si,uchar wu)
{
P2=0XC0;
P0=0X08;
P2=0XFF;
P0=shu_tab[si];
Delay1ms();Delay1ms();
P2=0XC0;
P0=0X10;
P2=0XFF;
P0=shu_tab[wu];
Delay1ms();Delay1ms();
}
void Display3_6(uchar san,uchar liu)
{
P2=0XC0;
P0=0X04;
P2=0XFF;
P0=shu_tab[san];
Delay1ms();Delay1ms();
P2=0XC0;
P0=0X20;
P2=0XFF;
P0=shu_tab[liu];
Delay1ms();Delay1ms();
}
void Display7_8(uchar qi,uchar ba)
{
P2=0XC0;
P0=0X40;
P2=0XFF;
P0=shu_tab[qi];
Delay1ms();Delay1ms();
P2=0XC0;
P0=0X80;
P2=0XFF;
P0=shu_tab[ba];
Delay1ms();Delay1ms();
P2=0XFF;
P0=0XFF;
}
void Delay1ms() //@11.0592MHz
{
unsigned char i, j;
_nop_();
_nop_();
_nop_();
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
}
void Display3_4(uchar san,uchar si)
{
P2=0XC0;
P0=0X04;
P2=0XFF;
P0=shu_tab[san];
Delay1ms();Delay1ms();
P2=0XC0;
P0=0X08;
P2=0XFF;
P0=shu_tab[si];
Delay1ms();Delay1ms();
}
void Display5_6(uchar wu,uchar liu)
{
P2=0XC0;
P0=0X10;
P2=0XFF;
P0=shu_tab[wu];
Delay1ms();Delay1ms();
P2=0XC0;
P0=0X20;
P2=0XFF;
P0=shu_tab[liu];
Delay1ms();Delay1ms();
}