一、硬件方案
硬件组成:51系列单片机+ADC0832+按键+LCD1602液晶+LED设计而成。
二、设计功能
本设计基于单片机型号:STC89C52/51、AT89C52/51、AT89S52/51都可通用。
1、本设计基于51单片机实现电流、电压测量和功率的计算,并通过按键设置报警值,过压过流声光报警。
2、电压范围:直流0-30V;电流范围:直流0-1A。
3、系统四个按键,从左往右风别是,切换、设置、加、减。
三、成品实物图
四、原理图
五、PCB图
六、Proteus仿真
七、程序源码
部分代码:
ADC0832_CLK=0; //为第一个脉冲作准备ADC0832_CS=0; //CS置0,片选有效ADC0832_DIO=1; //DIO置1,规定的起始信号 ADC0832_CLK=1; //第一个脉冲ADC0832_CLK=0; //第一个脉冲的下降沿,此前DIO必须是高电平ADC0832_DIO=1; //DIO置1, 通道选择信号 ADC0832_CLK=1; //第二个脉冲,第2、3个脉冲下沉之前,DI必须跟别输入两位数据用于选择通道,这里选通道CH0 ADC0832_CLK=0; //第二个脉冲下降沿 ADC0832_DIO=Ch; //DI置0,选择通道0ADC0832_CLK=1; //第三个脉冲ADC0832_CLK=0; //第三个脉冲下降沿 ADC0832_DIO=1; //第三个脉冲下沉之后,输入端DIO失去作用,应置1ADC0832_CLK=1; //第四个脉冲for(i=0;i<8;i++) //高位在前{ADC0832_CLK=1; //第四个脉冲ADC0832_CLK=0; dat<<=1; //将下面储存的低位数据向右移dat|=(unsigned char)ADC0832_DIO; //将输出数据DIO通过或运算储存在dat最低位 } ADC0832_CS=1; //片选无效 return dat; //将读书的数据返回
}LCD1602_RS = 0;LCD1602_RW = 0;LCD1602_Data= com;delay_50us_1602(10);LCD1602_E = 1;delay_50us_1602(20);LCD1602_E = 0;
}void LCD1602_write_data(unsigned int dat)
{LCD1602_E = 0;LCD1602_RS = 1;LCD1602_RW = 0;LCD1602_Data = dat;delay_50us_1602(10);LCD1602_E = 1;delay_50us_1602(20);LCD1602_E = 0;
}void LCD1602_init(void)
{delay_50us_1602(300);LCD1602_write_com(0X38);delay_50us_1602(100);LCD1602_write_com(0X38);delay_50us_1602(100);LCD1602_write_com(0X38);LCD1602_write_com(0X38);LCD1602_write_com(0X08);LCD1602_write_com(0X01);LCD1602_write_com(0X06);LCD1602_write_com(0X0C);}
void LCD1602_Clear(void)
{LCD1602_write_com(0X01);
}
/*******************************************
函数名称:Disp_ZF
功 能:控制液晶显示字符
参 数:addr--显示位置的首地址pt--指向显示数据的指针num--显示字符个数
返回值 :无
********************************************/
void LCD1602_Disp_ZF(unsigned char addr,const unsigned char * pt,unsigned char num)
{unsigned char i;LCD1602_write_com(addr);
资料包括:
需要完整的资料可以加入我的纷传圈子,里面有资源压缩包的百度网盘下载地址及提取码。
纷传点击用微信打开即可,过程有点繁琐请见谅。