目录
摘要
随着微电子技术的迅速发展和超大规模集成电路的出现,特别是单片机的出现,正引起测量、控制仪表领域新的技术革命。采用单片机作为测量仪器的主控制器,这种以单片机为主体的新型智能仪表将计算机与测量控制技术结合在一起,在测量工程自动化,测量结果所举处理以及功能的多样化方面取得了巨大的进步。
基于单片机的智能综合仪表是基于智能化、数字化、网络化、新一代智能仪表的设计理念,采用智能调理、灵巧总线、工业网络、液晶显示、电子储存技术、综合指示仪表、调节仪表、计算仪表与记录仪表功能。具有高测量控制精度、工可靠性稳定性的特点。
通过数字电流表的设计方案,掌握了C语言的编程方法, 并熟练的运用STC89C52单片机以及ADC0808将模拟电流量转变为数字量然后在液晶显示屏上直接显示数字的电流值。
关键字:ADC0808,电流表,LCD 1602显示
一、硬件方案
硬件构成:电源5V供电、单片机最小系统、大功率电阻,电线插座,按键电路,LCD 1602显示屏电路,电源开关,ADC0832。
二、设计功能
1、本设计基于STC89C51/52(与AT89S51/52、AT89C51/52通用)单片机。
2、LCD 1602实时显示被测的电流大小。
3、ADC0832芯片模拟信号转化成数字信号,送到单片机处理,结果送到LCD 1602显示。
三、成品实物图
四、原理图
五、Proteus仿真
六、程序源码
部分代码:
/*延时函数*/
void delay(uint z)
{
uint x;
uchar y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/****************************************************************************
函数功能:将0-255级换算成0.00-5.00的电压数值
入口参数:i
出口参数:
****************************************************************************/
void convdata() //i=dat*5/255=51,是255份; 256份误差大
{
sum = sum + ADC0832(1,0);
cs++;
if(cs>=100)
{
dat = sum/100;
value = dat * 500.0/255;
sum=0;
cs=0;
dat=0;
}
// uint disdat; //不可unsigned char disdat
// disdat=i*500.0/255; //500不可以。用500.0
// if(disdat<1000)
// flag=1;
//else
// flag=0;
// dis[0] = 0;
// dis[1] = disdat/100; //个位
// dis[2] = disdat/10%10; //小数点后第一位
// dis[3] = disdat%10; //小数点后第二位
}
/****************************************************************************
函数功能:显示子程序
入口参数:
出口参数:
****************************************************************************/
void display(void)
{
lcd1602_write(0,0x80);
lcd1602_writebyte("my designer ");
lcd1602_write(0,0xc0);
lcd1602_writebyte(" ");
// lcd1602_write(1,0x30 + value/1000);
//
lcd1602_write(1,0x30 + value%1000/100);
lcd1602_write(1,'.');
lcd1602_write(1,0x30 + value%100/10);
lcd1602_write(1,0x30 + value%10);
lcd1602_write(1,'0');
lcd1602_write(1,'A');
}
/****************************************************************************
函数功能:主程序
入口参数:
出口参数:
****************************************************************************/
void main(void)
{
lcd_init();
delay(3);
lcd1602_write(0,0x80);
lcd1602_writebyte(" Welcome to use ");
资料包括:
需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。