#include<reg52.h>
#include "ADC.h"
#include "LCD1602.h"
#include "PID.h"
uchar str[]="Set the voltage!";
float INPUT=2.5;
float out;
uchar DA,AD;//AD,DA为0-255
void key_process()
{
uchar key;
if(P3==0xff)
{
delay(100);
key=P3;
switch (key)
{
case 0xFE: INPUT=INPUT+1; break;
case 0xFD: INPUT=INPUT-1; break;
case 0xFB: INPUT=INPUT+0.1; break;
case 0xF7: INPUT=INPUT-0.1; break;
case 0xEF: INPUT=INPUT+0.01; break;
case 0xDF: INPUT=INPUT-0.01; break;
default: break;
}
if(INPUT>5.0)
{
INPUT=5.0;
}
else if(INPUT<0.0)
{
INPUT=0.0;
}
}
}
void LCD_voltage()
{
uint voltage;
uchar i;
uchar tab[5];
voltage=(uint)(INPUT*100);
tab[0]=voltage/100+'0';
tab[1]='.';
tab[2]=voltage%100/10+'0';
tab[3]=voltage%10+'0';
tab[4]='V';
write_com(0xc0);
for(i=0;i<5;i++)
{
write_data(tab[i]);
}
}
void main()
{
uchar i;
pid_init();
LCD_init();
write_com(0x80);
for(i=0;i<16;i++)
write_data(str[i]);
while(1)
{
key_process();
LCD_voltage();
out=pid_process();//读取PID运算结果
DA=(uchar)(out*255/5);//转换成DA数据
P0=DA; //转换成对应的电压值
AD=ADC0832(0); //AD采集DA所输出的电压值
y_cur=(float)AD*5/255;//反馈给PID
}
}
51黑论坛_PID控制电压.zip_PID控制电压_gulfken_pid_pid 51_tuneuk1
版权申诉
5星 · 超过95%的资源 70 浏览量
2022-07-14
12:43:27
上传
评论
收藏 128KB ZIP 举报
weixin_42651887
- 粉丝: 80
- 资源: 1万+
最新资源
- Anaconda3-2024.02-1-Windows-x86-64.exe
- stm32cubemx can通信 一个板子负责传感器采集 一个板子负责wifi传递到网页 网页可控制传感器板子.zip
- k8s集群搭建1.27.1版本(来源于图灵k8s笔记)
- 树莓派连接 DS18B20 温度传感器读取温度时监控客户端,服务器端连接状况,实现断线重连机制
- 小游戏-坦克大战,你认为的小游戏
- 最好用的富文本编辑器wangeditor
- jQuery 3.7.1
- 校园失物招领小程序源码可作毕业设计
- SAP客户端GUI740安装包(JAVA版本)
- winlibs-x86-64-posix-seh-gcc-13.2.0-llvm-16.0.6-mingw-w64msvcrt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈