毕设帮助、开题指导、技术解答(有偿)见文末。
目录
摘要
本设计是通过采样电阻及信号放大电路将待测的电流信号I转换成0—1V电压信号, 由A/D转换器采集电压信号,并将电压转换的数字信号传输给单片机,由单片机完成对采样信号的处理、分析,最后输出信号驱动LED显示器,显示被测的电压值。
关键词:单片机,电压,电流
一、硬件方案
单片机的LCD 1602屏电流表系统设计的实现主要有电源5V供电、单片机最小系统、大功率电阻,电线插座,按键电路,LCD 1602显示屏电路,电源开关,ADC0832。
二、设计功能
1. 单片机型号:STC89C52/51、AT89C52/51、AT89S52/51都可通用。
2、LCD 1602实时显示被测的电流大小。
3、ADC0832芯片模拟信号转化成数字信号,送到单片机处理,结果送到LCD 1602显示。
三、实物图
四、原理图
五、Protues仿真
六、程序
部分代码
/*延时函数*/
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 ");
七、资料包括
需要完整的资料可以点击下面的名片,找我要资源压缩包的百度网盘下载地址及提取码。