【023】基于51单片机的PID温度调节控制系统Proteus仿真设计

一、资料内容

  • (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

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

B站小邓子分享官

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值