2、如在图1所示的共阳极数码管上显示数字2时,需要送段码和位码分别是什么?
1个回答
关注
展开全部
亲亲您好,很高兴为您解答哦在图1所示的共阳极数码管上显示数字2时,需要送段码为1010011,位码为1111110。
咨询记录 · 回答于2023-02-28
2、如在图1所示的共阳极数码管上显示数字2时,需要送段码和位码分别是什么?
亲亲您好,很高兴为您解答哦在图1所示的共阳极数码管上显示数字2时,需要送段码为1010011,位码为1111110。
硬件电路示意图:![51单片机控制2位数码管显示图](https://upload.cc/i1/2020/08/11/NbZ3qE.png)C语言源程序:#include #define uchar unsigned char#define uint unsigned int sbit SEG1 = P1^0;sbit SEG2 = P1^1;sbit SEG3 = P1^2;sbit SEG4 = P1^3; uchar code seg_data[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};uchar t; void display();void delay(uint z); void main(){ TMOD=0x01; TH0=0xFC; TL0=0x67; TR0=1; while(1) { if(TF0==1) { TF0=0; TH0=0xFC; TL0=0x67; t++; if(t>99) { t=0; } display(); } }} void display(){ SEG1=0; P0=seg_data[t/10]; delay(2); SEG1=1; SEG2=0; P0=seg_data[t%!](MISSING); delay(2); SEG2=1;} void delay(uint z){ uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}
根据提示,我们可以知道,0-9的显示段码数对应的是:0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f而根据unsigned char hour = 21,minute = 35,我们可以知道,dis_buffer(3)对应的是xianshi[minute/10],也就是xianshi[3],即0x5b;dis_buffer(4)对应的是xianshi[minute%!](MISSING),也就是xianshi[5],即0x6f。因此,dis_buffer数组中8个数分别是:0x5b, 0x6f, 0x40, 0x41, 0x66, 0x40, 0x6d, 0x5b。