网页设计师网站,北京有实力的软件开发公司,医院证明p图软件在线,深圳高端医疗器械公司一、数码管模块代码
这部分包括将数码管想要显示的字符转换成对应段码的函数#xff0c;另外还包括数码管显示函数
值得注意的是对于小数点和不显示部分的处理方式 由于小数点没有单独占一位#xff0c;所以这里用到了两个变量i,j用于跳过小数点导致的占据其他字符显示在数…一、数码管模块代码
这部分包括将数码管想要显示的字符转换成对应段码的函数另外还包括数码管显示函数
值得注意的是对于小数点和不显示部分的处理方式 由于小数点没有单独占一位所以这里用到了两个变量i,j用于跳过小数点导致的占据其他字符显示在数码管上的位置 不想让某一位数码管显示的时候用空格来代替根据共阳数码管原理图应将P0引脚全部设为高电平才可熄灭
#include seg.h//段码转换函数
//0xc0
//1100 0000
//以上分别对应这8位dp g f e d c b a
//共阳数码管为低电平时被点亮
//传入两个数组第一个为传入的想要转换的数第二个为相对应的转换后的段码
//之所以为*因为传进来的不只是一个字符而是一个字符串或者是一个字符数组
void Seg_Tran(unsigned char *pucSeg_Buf,unsigned char *pucSeg_Code)
{unsigned char i,j;for(i0,j0;i7;i,j){switch(pucSeg_Buf[j]){case 0:pucSeg_Code[i]0xc0;break;case 1:pucSeg_Code[i]0xf9;break;case 2:pucSeg_Code[i]0xa4;break;case 3:pucSeg_Code[i]0xb0;break;case 4:pucSeg_Code[i]0x99;break;case 5:pucSeg_Code[i]0x92;break;case 6:pucSeg_Code[i]0x82;break;case 7:pucSeg_Code[i]0xf8;break;case 8:pucSeg_Code[i]0x80;break;case 9:pucSeg_Code[i]0x90;break;case A:pucSeg_Code[i]0x88;break;case b:pucSeg_Code[i]0x83;break;case C:pucSeg_Code[i]0xc6;break;case d:pucSeg_Code[i]0xa1;break;case E:pucSeg_Code[i]0x86;break;case F:pucSeg_Code[i]0x8e;break;case :pucSeg_Code[i]0xff;break;}if(pucSeg_Buf[j1] .){pucSeg_Code[i]0x7F;//0111 1111l与运算与1不变与0取反j;}}
}void Seg_Disp(unsigned char *pucSeg_Code,unsigned char ucSeg_Pos)
{P0 pucSeg_Code[ucSeg_Pos]; P2P20x1F|0xE0; P2P20x1F;P0 1ucSeg_Pos;//根据ucSeg_Pos的值只有对应位置为1实现了对任一个想要点亮的数码管的控制P2P20x1F|0xC0; P2P20x1F;} 二、主函数代码
注意这里面的pucSeg_Buf最保险应该开到17位因为还包括8个小数点
#include seg.h
#include tim.h
#include led.h
#include init.h//Seg
unsigned char pucSeg_Buf[12],pucSeg_Code[9],pucSeg_Pos0;//字符数组以/0结尾所以要有9位
void Seg_Proc(void);//Timer
unsigned long ulms 0;
unsigned int uiSeg_Dly0;void main(void)
{Cls_Peripheral();Timer0Init();EA1;while(1){Seg_Proc();}}void Seg_Proc(void)
{if(uiSeg_Dly200)return;uiSeg_Dly 0;sprintf(pucSeg_Buf,12345678);//将指定的内容打印到字符数组里Seg_Tran(pucSeg_Buf,pucSeg_Code);
}void Time_0(void) interrupt 1
{ulms;uiSeg_Dly;if(ulms % 20){pucSeg_Pos(pucSeg_Pos1)%8;//实现pucSeg_Pos从0-7循环的操作Seg_Disp(pucSeg_Code,pucSeg_Pos);}
} 知识点
%4.1f
25.654
25.7\08.538.5\0
由于是4位前面会加一个空格如果想让上面的数左对齐加一个负号
%-4.1f126.34
126.3\0
虽然是4位但是不满足条件时也会超过4位