第九期(第9集《数码管》)
普中开发板上的数码管是由74HC138和74HC245两颗芯片共同控制的,和STC实验箱用一颗74HC595控制的情况不一样。
不过还是通过这集视频了解到ISP字库工具里居然有个LED数码管工具,可以用来生成数码管数组,这个以前一直都没发现。看起来ISP总能带一些惊喜。
- u8 nixie[]={
- 0x3F, /*'0', 0*/
- 0x06, /*'1', 1*/
- 0x5B, /*'2', 2*/
- 0x4F, /*'3', 3*/
- 0x66, /*'4', 4*/
- 0x6D, /*'5', 5*/
- 0x7D, /*'6', 6*/
- 0x07, /*'7', 7*/
- 0x7F, /*'8', 8*/
- 0x6F, /*'9', 9*/
- 0x77, /*'A', 10*/
- 0x7C, /*'B', 11*/
- 0x39, /*'C', 12*/
- 0x5E, /*'D', 13*/
- 0x79, /*'E', 14*/
- 0x71, /*'F', 15*/
- 0x3D, /*'G', 16*/
- 0x76, /*'H', 17*/
- 0x10, /*'I', 18*/
- 0x0E, /*'J', 19*/
- 0x7A, /*'K', 20*/
- 0x38, /*'L', 21*/
- 0x55, /*'M', 22*/
- 0x54, /*'N', 23*/
- 0x5C, /*'O', 24*/
- 0x73, /*'P', 25*/
- 0x67, /*'Q', 26*/
- 0x50, /*'R', 27*/
- 0x64, /*'S', 28*/
- 0x78, /*'T', 29*/
- 0x3E, /*'U', 30*/
- 0x62, /*'V', 31*/
- 0x6A, /*'W', 32*/
- 0x36, /*'X', 33*/
- 0x6E, /*'Y', 34*/
- 0x49, /*'Z', 35*/
- 0x40, /*'-', 36*/
- 0x00, /*' ', 37*/
- 0x80, /*'.', 38*/
- };
-
- void digit_show(u8 num, u8 digit, u8 dot){
- switch(digit){
- case 1:P22=0;P23=0;P24=0;break;
- case 5:P22=0;P23=0;P24=1;break;
- case 3:P22=0;P23=1;P24=0;break;
- case 7:P22=0;P23=1;P24=1;break;
- case 2:P22=1;P23=0;P24=0;break;
- case 6:P22=1;P23=0;P24=1;break;
- case 4:P22=1;P23=1;P24=0;break;
- case 8:P22=1;P23=1;P24=1;break;
- }
- if(dot)
- P0=nixie[num]|0x80;
- else
- P0=nixie[num];
- }
-
- u8 digit_num(u32 num){
- u8 digit;
- u8 i;
- u32 result;
- if(num)
- {
- digit=(int)floor(log10(num))+1;
- for(i=0;i<digit;i++){
- result=num/(int)pow(10,i);
- digit_show((u8)(result%10),(u8)(i+1),0);
- }
- }else{
- digit=1;
- digit_show(0,1,0);
- }
- return digit;
- }
复制代码
|