一、资料内容
- (1)、基于51单片机的PID温度调节控制系统proteus仿真设计一份;
- (2)、基于51单片机的PID温度调节控制系统proteus仿真设计keli源代码一份;
- (3)、基于51单片机的PID温度调节控制系统proteus仿真设计视频讲解一份;
二、设计要求
- (1)、要求以51系列单片机为核心,设计一款基于51单片机的PID温度调节控制系统;
- (2)、系统通过矩阵键盘输入PID的参数;
- (3)、系统具有加热装置;
- (4)、系统具有模拟温度装置;
- (5)、系统可以通过LCD1602显示数据;
三、相关资料截图
图1. 系统proteus仿真图
图2. 系统keil源代码工程文件截图
四、视频讲解
部分代码:
#include"reg51.h"
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
/*****************引脚定义*********************************/
//l298n
sbit output=P2^5;
sbit in1=P2^3;
sbit in2=P2^4;
/********************************/
//AD芯片
sbit CLOCK=P3^1;
sbit D_IN=P2^7;
sbit D_OUT=P2^6;
sbit _CS=P3^0;
/********************************/
//lcd液晶
sbit lcdrs=P2^0;
sbit lcdrw=P2^1;
sbit lcden=P2^2;
/********************************/
//灯
sbit led=P3^2;
//蜂鸣器
sbit speaker=P3^3;
/*****************引脚定义*********************************/
/*****************变量定义(申明)*********************************/
int freq=500,pwm=0;
uchar setflag=0,pageflag=0,ok=0;
float pwm_temp=0;
float KP=100,KI=10,KD=0;
uint pul_count=0;
float ek=0,ek1=0,ek2=0;
float keytemp=0;
uchar code str[16]=" welcome! ";
uchar code str1[16]=" temperature PID";
uchar code str2[16]="set-T now-T " ;
uchar code str3[16]="P: I: D:" ;
uchar code str4[16]="set-P: " ;
uchar code str5[16]="set-I: " ;
uchar code str6[16]="set-D: " ;
void Init(void);
uint adcread(uchar port);
void delay(uint n);
void writecom(uchar com);
void writedata(uchar date);
void initlcd();
float keyscan(void);
uchar keyscans(void);
void lcdnumdisplay(uchar pos,double f);
void lcdnumdisplays(uchar pos,double f);
uint read_pul();
void mypid(float Kp,float Ki,float Kd,uint count,uint point);
/*****************变量定义(申明)*********************************/
void main()
{
uchar i;float scantemp;
float adnum0=0;
float adnum1=0;
bit init0,init1,init2,init3,init4;
Init();
initlcd();
writecom(0x80);
for(i=0;i<16;i++)writedata(str[i]); //huanyin
writecom(0x80+0x40);
for(i=0;i<16;i++)writedata(str1[i]); //shuming