久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
1602屏電烙鐵控制的單片機(jī)源碼 EC11旋轉(zhuǎn)調(diào)溫
[打印本頁]
作者:
游俠(單片機(jī)開
時間:
2018-6-6 15:06
標(biāo)題:
1602屏電烙鐵控制的單片機(jī)源碼 EC11旋轉(zhuǎn)調(diào)溫
EC11旋轉(zhuǎn)調(diào)溫電烙鐵制作資料
單片機(jī)源程序如下:
/******************************************************************
本程序只供學(xué)習(xí)使用,未經(jīng)作者許可,不得用于其它任何用途
程序結(jié)構(gòu)參考 安徽師范大學(xué) Lyzhangxiang的EasyHW OS結(jié)構(gòu)設(shè)計(jì)
Main.C file
作者:bg8wj
版本:V1.0
Copyright(C) bg8wj
/*******************************************************************/
#include "ioconfig.h"
#include "includes.h"
#include "datacomm.h"
/***********************按鍵定義*************************************************/
sbit key0=P1^0;
//sbit key2=P1^1;
//sbit key3=P3^3;
#define uint unsigned int
#define uchar unsigned char
unsigned char status=0; //按鍵功能選擇定義(bai0,shi1,ge0
unsigned char ge,shi,bai=2;
void Init_INT0()
{
IT0 = 1;
EX0 = 1;
EA = 1;
}
void ISR0() interrupt 0
{
if(!status==0){ //防止空轉(zhuǎn)
if((P3&0x06) == 0x02)
{
DelayMs(1);
if((P3&0x06) == 0x02)
if(set_temper==500) //最大值
{
set_temper=500;
}
else
{
set_temper++;
}
}
else
{
DelayMs(1);
if((P3&0x06) == 0x00)
if(set_temper==200) // 最小值
{
set_temper=200;
}
else
{
set_temper--;
}
}
}
}
/*****************************按鍵功能函數(shù)*************************************/
void key_1() //選擇變量函數(shù)
{
key0=1;
if(key0==0)
DelayMs(10);
{
if(key0==0)
{
if(++status>1)status=0; //1bai,2shi,3ge
}
while(key0==0);
}
}
/************************************************
PID函數(shù)
*************************************************/
void PIDInit (struct PID *pp)
{
memset ( pp,0,sizeof(struct PID));
}
/************************************************
增量控制PID函數(shù)體
51單片機(jī)最不擅長浮點(diǎn)數(shù)計(jì)算,轉(zhuǎn)換成int型計(jì)算
*************************************************/
unsigned int PIDCalc( struct PID *pp, unsigned int NextPoint )
{
unsigned int dError,Error,pError;
//增量法計(jì)算公式:
//Pdt=Kp*[E(t)-E(t-1)]+Ki*E(t)+Kd*[E(t)-2*E(t-1)+E(t-2)]
Error = set_temper - NextPoint; // 偏差E(t)
pError=Error-pp->LastError; //E(t)-E(t-1)
dError=Error-2*pp->LastError+pp->PrevError; //E(t)-2*E(t-1)+E(t-2)
pp->PrevError = pp->LastError;
pp->LastError = Error;
return (
pp->Proportion * pError //比例
+ pp->Integral *Error //積分項(xiàng)
+ pp->Derivative * dError // 微分項(xiàng)
);
}
/************************************************
PID函數(shù)初始化
*************************************************/
void PIDBEGIN()
{
PIDInit(&spid); // Initialize Structure
spid.Proportion = 10; // Set PID Coefficients
spid.Integral = 5;
spid.Derivative =4;
}
/************************************************
實(shí)時溫度讀取函數(shù)
從DS18b20中讀取實(shí)時溫度
返回值放大10倍便于PID計(jì)算
*************************************************/
int ReadTemperature(void)
{
unsigned char TPL=0;
unsigned char TPH=0;
unsigned int temperture=0;
//EA = 0;
Init_DS18B20();
WriteOneChar(0xCC); //跳過讀序號列號的操作
WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度
TPL=ReadOneChar(); //讀溫度低字節(jié)
TPH=ReadOneChar(); //讀溫度高字節(jié)
//啟動下一次溫度轉(zhuǎn)換
Init_DS18B20();
WriteOneChar(0xCC); // 跳過讀序號列號的操作
WriteOneChar(0x44); // 啟動溫度轉(zhuǎn)換
//temperture=(TPH*256+TPL)*0.0625 //真實(shí)溫度值 范圍(+125,-55)
if(TPH&0xfc)
{
tp_flag=1; //負(fù)溫度標(biāo)記
temperture=((TPH<<8)|TPL);
temperture=((~temperture)+1);
temperture*=0.625+0.5;
}
else
{
tp_flag=0;
//temperture=((TPH<<8)|TPL)*0.0625 //溫度輸出值范圍(125.00,-55.00)
temperture=((TPH<<8)|TPL)*0.625+0.5; //溫度值放大10(+1250.00,-550.00)
} // +0.5四舍五入 精度只到小數(shù)后一位
return(temperture);
}
/************************************************
lcd1602顯示函數(shù)
*************************************************/
void xianshi(void)
{
LCD_Write_String(0,0,"NOW TMP:");
LCD_Write_String(0,1,"SET TMP:");
}
/************************************************
lcd1602顯示實(shí)時溫度
*************************************************/
void view(unsigned int tmp)
{
LCD_Write_Char(15,0,'C');
LCD_Write_Char(14,0,0xdf);//攝氏溫度符號
LCD_Write_Char(13,0,zhi[tmp%10]);//小數(shù)點(diǎn)后第1位
LCD_Write_Char(12,0,'.');
LCD_Write_Char(11,0,zhi[tmp%100/10]);// 個位
LCD_Write_Char(10,0,zhi[tmp/100]); //十位
if(0==tmp/1000)LCD_Write_Char(9,0,' ');//百位 如果為零顯示空格
else
LCD_Write_Char(9,0,zhi[tmp/1000]);
if(1==tp_flag)LCD_Write_Char(8,0,'-');//正負(fù)溫度符號顯示 負(fù)溫度顯示- 0上顯示空格
else
LCD_Write_Char(8,0,' ');
}
/***********************************************************
PID溫度控制做動函數(shù)
***********************************************************/
void compare_temper() //PID溫度控制輸出函數(shù)
{
unsigned char i;
if(set_temper>temper)
{
if(set_temper-temper>50)//如果控制目標(biāo)溫度溫與實(shí)時溫度差大于5度,(放大10倍)是50
{
PWM0_set(10); //PWM 輸出高電平占空比最大。即全速加溫
PWM1_set(10);
}
else
{
for(i=0;i<10;i++) //5度范圍內(nèi)PID增量控制,10次周期 即PID積分式中T=10
{
rin=ReadTemperature();//PID輸入實(shí)時溫度采樣值
rout = PIDCalc ( &spid,rin ); // PID增量輸出
}//PID增量輸出范圍(0-255)配合pwm取值范圍
if(rout>=240)rout=240; //保障PWM輸入值10-240 防止pwm出現(xiàn)失調(diào)。stc單片機(jī)特性。
if(rout<=20)rout=20;
PWM0_set(255-rout);
PWM1_set(255-rout);
}
}
else if(set_temper<=temper) //目標(biāo)溫度小于實(shí)時溫度pwm輸出低電平最高占空比,關(guān)閉加熱。
{
PWM0_set(250);
PWM1_set(250);
}
}
/************************************************
系統(tǒng)初始化函數(shù)
*************************************************/
void Sys_Init()
{
PWM_init();
PIDBEGIN();
LCD_Init();
Init_DS18B20();
LCD_Clear();
//InitUart1();
}
/*************************************************
主函數(shù)
**************************************************/
void main(void)
{
Init_INT0();
Sys_Init(); //系統(tǒng)初始化
xianshi(); //顯示字符
PWM0_set(250); //初始化PWM兩路輸出最高低電平占空比,不要加熱 p1.3
PWM1_set(250); //p1.4
delay500ms(); //延時稍等芯片初始化
while(1)
{
key_1();
{
if(status==1){
bai=(set_temper/100);
shi=(set_temper%100/10);
ge=(set_temper%10);
}
}
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
EC11-LCD1602顯示.zip
(118.65 KB, 下載次數(shù): 227)
2018-6-6 15:04 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
lon7085
時間:
2018-6-7 08:43
好東西,感謝分享。有電路圗可一并分享嗎?
作者:
king8
時間:
2018-9-29 22:34
如有PMW代碼更棒
作者:
frank123098
時間:
2018-10-23 09:59
樓主可以分享一下電路圖嗎?
作者:
張明211
時間:
2018-12-19 09:57
學(xué)習(xí)一下
作者:
a465311804
時間:
2019-5-26 17:14
學(xué)習(xí)一下 如有PMW代碼更棒
作者:
wm6636083
時間:
2019-9-23 13:56
有用 先看看
作者:
robter
時間:
2020-6-30 10:27
這個很好,值得學(xué)習(xí)
作者:
512-DZ
時間:
2024-4-19 15:24
正在學(xué)習(xí)編碼器,謝謝
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
一区二区三区四区免费视频
|
日韩一区二
|
亚洲欧美中文日韩在线
|
免费午夜视频在线观看
|
国产高清一区二区
|
国产91久久久久
|
精品国产乱码久久久久久丨区2区
|
欧美精品一二区
|
999re5这里只有精品
|
免费污视频
|
国内精品久久久久久久影视简单
|
黄色一级大片在线免费看产
|
欧美日韩国产一区二区三区
|
成人综合视频在线
|
欧美成人一区二区三区片免费
|
中文字幕在线播放第一页
|
成人在线视频一区
|
免费观看黄
|
色一情一乱一伦一区二区三区
|
视频二区
|
成人免费黄视频
|
ririsao久久精品一区
|
免费看国产片在线观看
|
久久久久国产
|
亚洲精品视频久久
|
国产高清一区二区
|
91在线视频播放
|
成人国产精品久久
|
成人av免费
|
日本精品视频
|
日韩一级免费电影
|
最新黄色在线观看
|
在线免费观看黄色
|
羞羞的视频免费看
|
中文字幕视频在线观看
|
性欧美xxxx
|
久久久久久综合
|
国产视频1
|
精品日韩一区二区
|
在线亚洲免费视频
|
久久久久国产
|