标题: 单片机串口输出六位数数码管显示 [打印本页]

作者: Kronacy    时间: 2019-11-23 13:19
标题: 单片机串口输出六位数数码管显示
代码如下
#include <reg52.h>

#define uchar unsigned char
#define uint  unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
uchar flag,a,b,c,d,e,f,num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint xms)         //???????
{
uint i,j;
for(i=xms;i>0;i--)
     for(j=110;j>0;j--);
}
void display(uchar a,b,c,d,e,f)  //????????????
{
  a=num/100000;
  b=num%100000/10000;
  c=num%10000/1000;
  d=num%1000/100;
  e=num%100/10;
  f=num%10;
  dula=1;
  P0=table[a];
  dula=0;
  P0=0xff;
  wela=1;
  P0=0xfe;
  wela=0;
  delay(5);
  dula=1;
  P0=table[b];
  dula=0;
  P0=0xff;
  wela=1;
  P0=0xfd;
  wela=0;
  delay(5);
  dula=1;
  P0=table[c];
  dula=0;
  P0=0xff;
  wela=1;
  P0=0xfb;
  wela=0;
  delay(5);
    dula=1;
  P0=table[d];
  dula=0;
  P0=0xff;
  wela=1;
  P0=0xf7;
  wela=0;
  delay(1);
    dula=1;
  P0=table[e];
  dula=0;
  P0=0xff;
  wela=1;
  P0=0xef;
  wela=0;
  delay(1);
    dula=1;
  P0=table[f];
  dula=0;
  P0=0xff;
  wela=1;
  P0=0xdf;
  wela=0;
  delay(1);
}        
void ser() interrupt 4          //?????ж?
{  
   RI = 0;
   num = SBUF;            //?????????????????
   flag=1;
  
   }
  
   
        
void init()
{
    SCON=0x50;           //?趨??????????
    PCON=0x00;           //???????????               
    TMOD=0x20;           //?????1??????8λ?????????, ?????????????
    EA=1;
    ES = 1;              //????????ж?
    TL1=0xfd;
    TH1=0xfd;             //??????9600
    TR1=1;
}
                        
void main()
{
  wela=1;
  P0=0x7f;
  wela=0;
  init();
  while(1)
   {
  display(num)        ;
  if(flag==1)           //????ж?
  {
  SBUF=num;
  while(!TI);
  TI=0;
  flag=0;                  //??????
  }
          }
  
}






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1