单片机入门-C51实现用TLC549模数转换用数码管设计电压表视频教程如下:
一、电路图如下:

二、代码如下:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char dispbuf[4];
sbit cs=P2^3;
sbit clock=P2^4;
sbit dataout=P2^2;
void disp(uchar*buff);
void delay(uchar time);
uchar i;
uchar code tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code BIT[4]={0x7f,0xbf,0xdf,0xef};
uchar tlc549()
{
uchar i,temp;
cs=1;
clock=0;
cs=0;
_nop_();
_nop_();
for(i=0;i<8;i )
{
temp<<=1;
temp|=dataout;
clock=1;
_nop_();
clock=0;
}
cs=1;
for(i=17;i>0;i--)
{
_nop_();
}
return temp;
}
void main()
{
uchar vol;
disp(dispbuf);
while(1)
{
vol=tlc549();
vol=vol*1.0/255*500;
dispbuf[3]=vol/100;
dispbuf[2]=vol/10;
dispbuf[1]=vol;
disp(dispbuf);
}
}
void disp(uchar*buff)
{
uchar ddata;
for(i=0;i<4;i )
{
P0=BIT[i];
ddata=*buff ;
if(i==3)
{
P1=tab[ddata]|0x80;
}
else
{
P1=tab[ddata];
}
delay(100);
}
}
void delay(uchar time)
{
uchar i;
for(i=time;i>0;i--);
}
,