78-基于stm32单片机电压电流检测LCD1602显示源程序、原理图、元件清单实物制作

功能介绍:采用stm32单片机作为主控CPU,采用精密电阻分压将高电压分压后接入STM32单片机ADC接口,采用ADC可以采集出当前的电压值,通过功率电阻来测量电路中的电流,通过串联电路电流相同的原理,可以测出当前负载的电流,通过LCD1602显示电流和电压值,程序有中文注释,新手容易看懂,文末有分享下载链接:

下面是实物演示视频和相关实物图片

78-基于stm32单片机电压电流检测LCD1602显示(程序+原理图+元件清单全套资料)

下面是程序部分展示(程序有中文注释,新手容易看懂)

程序部分展示:int main(void){      u16 adcx,adcx1,tmp;     unsigned char chr[5];    float temp,temp1 ;    int dianya,dianliu;    u16 buf ;    delay_init();         //延时函数初始化        uart_init(9600);    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级    Adc_Init();      LCD1602_Init();    while(1)   {        adcx=Get_Adc_Average(ADC_Channel_8,10);//读取电压    adcx1=Get_Adc_Average(ADC_Channel_9,10);//读取电流    temp=(float)adcx/4096*3.300*2;    temp1=(float)adcx1/4096*3.300/2.2;    printf("V=%.3f V\r\n",temp);    printf("I=%.3f A\r\n",temp1);//数据上传电脑        dianya=temp*1000;//小数点后移三位,全部变成整数LCD显示    dianliu=temp1*1000;//小数点后移三位,全部变成整数LCD显示      LCD_Write_Command(0x80);//第一行的首地址      LCD_Write_Date(' ');      LCD_Write_Date(' ');      LCD_Write_Date(' ');      LCD_Write_Date('V');      LCD_Write_Date('=');      LCD_Write_Date(' ');      LCD_Write_Date(dianya%10000/1000+0x30);  //显示电压      LCD_Write_Date('.');            LCD_Write_Date(dianya%1000/100+0x30);                  LCD_Write_Date(dianya%100/10+0x30);      LCD_Write_Date(dianya%10+0x30);        LCD_Write_Date('V');      LCD_Write_Command(0x80+0x40);      LCD_Write_Date(' ');      LCD_Write_Date(' ');      LCD_Write_Date(' ');      LCD_Write_Date('I');      LCD_Write_Date('=');      LCD_Write_Date(' ');      LCD_Write_Date(dianliu%10000/1000+0x30);  //显示电流      LCD_Write_Date('.');            LCD_Write_Date(dianliu%1000/100+0x30);                  LCD_Write_Date(dianliu%100/10+0x30);      LCD_Write_Date(dianliu%10+0x30);            LCD_Write_Date('A');
  delay_ms(300);  }      }void LCD_Write_Command(u8 com)           {  rs=0; //写指令函数和写数据函数其实可以并一起价格 BOOL变量判断是写指令就rs=0写数据就rs=1。  rw=0;  en=1;  //写指令     输入:RS=L,RW=L,E=下降沿脉冲   GPIO_Write(GPIOA, 0X00FF&com);//该函数一般用来往一次性一个GPIO的多个端口设置  delay_ms(2);   en=0; } /*******************写数据函数************************/void LCD_Write_Date(u8 date)           {    rs=1;  rw=0;  en=1;  //写数据     输入:RS=H,RW=L,E=下降沿脉冲  GPIO_Write(GPIOA, 0X00FF&date);//GPIOA的第八位用来作为8位数据口              delay_ms(2);   en=0;}

程序打开办法:特别注意:下载资料包以后一定要先解压!(建议解压到桌面上,文件路径太深会导致程序打开异常),解压后再用keil5打开。 

原理图采用【AD】altium designer打开,文件中有安装包

下面是资料包里面包含的相关文件展示

百度云盘资料下载链接 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值