获取更多资源,请关注微信公众号:嵌入式基地
获取项目资源:公众号后台回复:单片机仿真
基于Proteus学习单片机系列(六)——I2C总线AT24C04
基于Proteus学习单片机系列(七)——实时时钟DS1302
基于Proteus学习单片机系列(八)——AD转换及其应用--TLC549
基于Proteus学习单片机系列(九)——DA转换及其应用--TLC5615
基于Proteus学习单片机系列(十一)——LCD12864
项目下载
1. 电路图
2. 程序
只在这里贴出主函数,其余的请点击上面(点击下载)进行下载,实在太麻烦。
主函数
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
#include<TLC549.c>
code uchar seven_seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar cp1,cp2;
uint dat_ad;
/*T0初始化*/
void timer0_ier()interrupt 1
{
TL0 = (65536 - 5000) % 256;
TH0 = (65536 - 5000) / 256;
cp1++;
if(cp1 >= 100) //0.5s
{
cp1 = 0;
dat_ad = tlc549_ad();
dat_ad = dat_ad * 1.96; //数据255对应模拟电压5V
}
P0 = 0xff;
switch(cp2)
{
case 0: P0 = seven_seg[dat_ad % 10];P2 = 0x01;break;
case 1: P0 = seven_seg[dat_ad / 10 % 10];P2 = 0x02;break;
case 2: P0 = seven_seg[dat_ad / 100] & 0x7f;P2 = 0x04;break; //加上小数点
}
cp2++;
if(cp2 >= 3)
cp2 = 0;
}
/*中断服务函数*/
void timer0_init()
{
TMOD = 0x01;
TL0 = (65536 - 5000) % 256;
TH0 = (65536 - 5000) / 256;
ET0 = 1;
EA = 1;
TR0 = 1;
}
void main()
{
timer0_init();
tlc549_init();
while(1);
}