单片机型号说明:IAP15F2K61S2
新建工程时单片机型号选择STC15F2K60S2
本开发板支持的显示器件:
LED灯、数码管、点阵屏、LCD1602、LCD12864
数码管工作原理
蓝桥杯单片机开发板所用的数码管是共阳极的,给0就亮
假设想用一位数码管显示一个0,那个就g和dp给1,使其灭
其他都给0,从dp到g到f到e.....0.到a这样数1和0,
就是1100 0000 = 0xC0
其他的可以自己推导
51单片机中数码管码表推导文章链接:
不懂得可以查看上面这篇文章
共阳极数码管段码表
将数码管段码表推导一下,存放在数组里,用的时候非常方便
1. /*共阳极码表 ABCDEF都是大写*/ 2. unsigned char tab[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x80, 0xC6, 0xC0, 0x86, 0x8E, 0xBF, 0xFF}; 3. //0 1 2 3 4 5 6 7 8 9 A B C D E F - 灭
共阴极数码管段码表
1. //共阴极数码管段码表 2. char NixieTable[20]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00}; 3. //number 0 1 2 3 4 5 6 7 8 9 A B C D E F // 空 0x00 4. 5. //共阴极数码管段码或上一个0x80,就带小数点了( |0x80 ) 6. //带小数点 共阴数码管段码 7. unsigned char code Pnumber[] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1};
程序部分:0、1、2、3间隔0.5s循环显示
1. #include <STC15F2K60S2.H> 2. 3. void Delay_ms(int xms) //15单片机延时函数 4. { 5. int i; 6. long a; 7. for (i = xms; i > 0; i --) 8. for(a = 810; a > 0; a --); 9. } 10. 11. void main() 12. { 13. P2 = 0xA0; P0 = 0x00; P2 = 0xC0; P0 = 0xFF; P2 = 0xFF; //初始化,P0控制数码管 14. while(1) 15. { 16. P0 = 0xC0; 17. Delay_ms(500); 18. P0 = 0xF9; 19. Delay_ms(500); 20. P0 = 0xA4; 21. Delay_ms(500); 22. P0 = 0xB0; 23. Delay_ms(500); 24. } 25. }
效果是啥玩意啊,八个数码管全亮了,而且延时时间也不是0.5s,感觉不太专业的样子
矩阵键盘&数码管综合应用
现在将矩阵键盘和数码管静态显示结合起来,实现按键,显示对应的数值
数码管部分 在上面
矩阵按键部分 上一篇文章有源码 有需要的童靴直接粘贴了
主控部分 将按键数值依次对应1234567890ABCDEF
1. #include <STC15F2K60S2.H> 2. #include "juzhen.h" 3. #include "smg.h" 4. 5. #define uchar unsigned char 6. 7. uchar keynum; 8. 9. void main() 10. { 11. P2 = 0xA0; P0 = 0x00; P2 = 0xC0; P0 = 0xFF; P2 = 0xFF; //初始化,P0控制数码管 12. 13. while(1) 14. { 15. keynum = KeyJZ_16(); 16. 17. if (keynum == 7) P0 = tab[1]; 18. else if (keynum == 11) P0 = tab[2]; 19. else if (keynum == 15) P0 = tab[3]; 20. else if (keynum == 19) P0 = tab[4]; 21. else if (keynum == 6) P0 = tab[5]; 22. else if (keynum == 10) P0 = tab[6]; 23. else if (keynum == 14) P0 = tab[7]; 24. else if (keynum == 18) P0 = tab[8]; 25. else if (keynum == 5) P0 = tab[9]; 26. else if (keynum == 9) P0 = tab[0]; 27. else if (keynum == 13) P0 = tab[10]; 28. else if (keynum == 17) P0 = tab[11]; 29. else if (keynum == 4) P0 = tab[12]; 30. else if (keynum == 8) P0 = tab[13]; 31. else if (keynum == 12) P0 = tab[14]; 32. else if (keynum == 16) P0 = tab[15]; 33. } 34. }