微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 16进制与10进制转化程序

16进制与10进制转化程序

时间:08-12 来源:互联网 点击:


unsigned char code un_dig[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb};
//串行送出的短信息。
unsigned char code
un_disp[]={l0,l1,l2,l3,l4,l5,l6,l7,l8,l9,l_,lb,lc,l__,l___,lnul,lp,le,lj,ln,lf,la,lr,ld,lu,
ll,lh,lwen,lt,lla,llb,llc,lld,lle,llf,llg,lldp,lnul};

sbit d_clk=P0^0; //移位时钟
sbit d_dat=P0^1; //移位数据
sbit d_st=P0^2; //移位锁定

unsigned char dig; //位扫描计数器
unsigned char d[10]; //显示缓冲

//送出8位串行数据
void out_disp(unsigned char dd) {
unsigned char i;
for (i=0;i8;i++) {
if (dd1) d_dat=1; else d_dat=0;
d_clk=0;
dd>>=1;
d_clk=1;
}
}
//控制小数点和闪烁,显示数据|0x040表示有小数点;显示数据|0x80表示闪烁。
void out_displ(unsigned char dd) {
if (dd>=0x80) {
if (s001>flash_time) {out_disp(0xff);return;}
}
dd=0x7f;
if (dd>=0x40) {
dd=un_disp[dd0x3f]^pdp;
} else dd=un_disp[dd];
out_disp(dd);
}

unsigned int s001; //闪烁时间参考
void int_t0(void) interrupt 1 {
unsigned char dd;
TL0=TL0+30;TH0=0xfb; //800
time++;
if ((++s001)>=800) s001=0;
// 显示
if ((++dig)>4) dig=0;
d_st=0;
dd=d[dig+5];
out_displ(dd);
dd=d[dig];
out_displ(dd);
out_disp(un_dig[dig]);
d_st=1;
}
void main(void) {
unsigned char i;
TMOD=0x1;
TR0=ET0=1;
EA=1;
for (i=0;i10;i++) d[i]=i; //display test
while (1) {}
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top