《基于PID算法的中医理疗恒温控制器设计论文》-公开DOC·毕业论文

上传人:zhuma****mei2 文档编号:136014344 上传时间:2020-06-22 格式:DOC 页数:40 大小:3.71MB
返回 下载 相关 举报
《基于PID算法的中医理疗恒温控制器设计论文》-公开DOC·毕业论文_第1页
第1页 / 共40页
《基于PID算法的中医理疗恒温控制器设计论文》-公开DOC·毕业论文_第2页
第2页 / 共40页
《基于PID算法的中医理疗恒温控制器设计论文》-公开DOC·毕业论文_第3页
第3页 / 共40页
《基于PID算法的中医理疗恒温控制器设计论文》-公开DOC·毕业论文_第4页
第4页 / 共40页
《基于PID算法的中医理疗恒温控制器设计论文》-公开DOC·毕业论文_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《《基于PID算法的中医理疗恒温控制器设计论文》-公开DOC·毕业论文》由会员分享,可在线阅读,更多相关《《基于PID算法的中医理疗恒温控制器设计论文》-公开DOC·毕业论文(40页珍藏版)》请在金锄头文库上搜索。

1、师范学院学院师范学院学院 毕毕 业业 设设 计(论文)计(论文) 2013 届 题 目 基于基于 PIDPID 算法的中医理疗恒温控制器算法的中医理疗恒温控制器 专 业 电子信息工程电子信息工程 学生姓名 tmpchange(); temp=tmp(); init(); TR0=0; PIDw=1; while(1) keyscan(); keyscanw(); compare_temp(); if(flag=1) tmpchange(); temp=tmp(); Displaytemp(temp); Henwentemp(tmph); showtime(); disdingshi(); if

2、(miao1!=0)|(fen1!=0)|(shi1!=0) if(temp=tmph) henwenfl=1; if(flag=1) yellow=0; TR0=1; if(henwenfl=0) green=0; TR0=1; if(henwenfl=1) hengwenPID(); green=1; if(miao1=0) yellow=1; henwenfl=0; Baojin=0; delay1(900); 师范学院学院本科毕业论文 17 showtime(); Baojin=1; delay1(900); showtime(); Baojin=0; delay1(900); sho

3、wtime(); Baojin=1; delay1(900); showtime(); Baojin=0; delay1(900); showtime(); Baojin=1; delay1(900); showtime(); Baojin=0; delay1(900); showtime(); Baojin=1; delay1(900); showtime(); TR0=0; PIDw=1; high_time=0; 3.23.2 按键功能程序按键功能程序 系统按键功能流程图如图 3-2 所示。按键主要完成对温度保持时间、目标温度值等参 数时行设置。在编写程序时主要完成判断是否有按键、去抖、

4、键值确定、功能确定、加、 减等功能。 师范学院学院本科毕业论文 18 开始 设置键是否按下? 延时消抖 设置键是否按下? 键盘标志位“0” 设置键是否释放? 键盘功能值加“1” 光标闪烁 功能值=9? 功能值置“0”、键盘标志位置“1” 加键是否按下? 加键是否按下? 减键是否按下 功能数据对应加“1” 延时消抖 减键是否按下? 返回 调整时间写入DS1302 功能数据对应减“1” 延时消抖 功能值不为“0”? Y N Y N Y N Y N N Y Y N N N Y N Y 图 3-2 按键功能流程图 键盘部分程序如下: void keyscan(void) uchar i,addr; 师

5、范学院学院本科毕业论文 19 if(set=0) delay1(2); if(set=0) lag=0; while(!set); num+; switch(num) case 1:write_com(0 x80+15); /miao write_com(0 x0F); break; case 2:write_com(0 x80+12); /fen write_com(0 x0f); break; case 3:write_com(0 x80+9); /fen write_com(0 x0f); break; case 4:num=0; flag=1; write_com(0 x0c); /退

6、出 break; if(num!=0) if(add=0) delay1(1); if(add=0); while(!add); switch(num) case 1: miao+; if(miao=60) miao=0; write_sfm(14,miao,1); break; case 2: fen+; if(fen=60) fen=0; write_sfm(11,fen,1); break; case 3: shi+; if(shi=24) 师范学院学院本科毕业论文 20 shi=0; write_sfm(8,shi,1); break; if(reduce=0) delay1(1);

7、if(reduce=0); while(!reduce); switch(num) case 1: miao-; if(miao0) miao=59; write_sfm(14,miao,1); break; case 2: fen-; if(fen0) fen=59; write_sfm(11,fen,1); break; case 3: shi-; if(shi0)i-; 功能:读 1 字节函数 uchar tmpread(void) 师范学院学院本科毕业论文 23 uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=tmpreadbit();/读 1 位数字程

8、序 dat=(j1); /读出的数据最低位在最前面,这样刚好一个字节在 DAT 里 return(dat); 功能: 向 1820 写一个字节数据函数 void tmpwritebyte(uchar dat) uint i; uchar j; bit testb; for(j=1;j1; if(testb) /write 1 DQ=0; i+;i+; DQ=1; i=8;while(i0)i-; else DQ=0; /write 0 i=8;while(i0)i-; DQ=1; i+;i+; void tmpchange(void) 功能: DS18B20 开始获取数据并转换 dsreset

9、(); delay(1); tmpwritebyte(0 xcc); / address all drivers on bus 写跳过读 ROM 指令 tmpwritebyte(0 x44); / initiates a single temperature conversion 写温 度转换指令 功能: 读取寄存器中存储的温度数据 uint tmp() float tt; uchar a,b; 师范学院学院本科毕业论文 24 dsreset(); delay(1); tmpwritebyte(0 xcc); tmpwritebyte(0 xbe); a=tmpread(); /读低 8 位

10、b=tmpread(); /读高 8 位 temp=b; tempSetPoint - NextPoint; / 偏差 pp-SumError += Error; / 积分 dError = pp-LastError - pp-PrevError; / 当前微分 pp-PrevError = pp-LastError; pp-LastError = Error; return (pp-Proportion * Error / 比例项 + pp-Integral * pp-SumError / 积分项 + pp-Derivative * dError); / 微分项 温度比较处理子程序 void

11、 compare_temp() unsigned char i; if(tmphtemp) if(tmph-temp10) high_time=100; /全速加热 low_time=0; else for(i=0;i10;i+) 师范学院学院本科毕业论文 26 tmpchange(); temp=tmp(); s=temp%10*100/16; temp=temp/10; rin = s; / Read Input rout = PIDCalc ( / Perform PID Interation if (high_time=100) high_time=(unsigned char)(ro

12、ut/800); else high_time=100; low_time= (100-high_time); else if(tmph0) high_time=0; /停止加热 low_time=100; else for(i=0;i10;i+) tmpchange(); temp=tmp(); s=temp%10*100/16; temp=temp/10; rin = s; / Read Input rout = PIDCalc ( / Perform PID Interation if (high_time=30) miao1=miao1-(60-abs(miao2-miao3); el

13、se miao1=miao1-abs(miao2-miao3); if(miao10) if(fen1!=0|shi1!=0) fen1=fen1-1; miao1=59; if(miao10 if(fen10) shi1=shi1-1; fen1=59; if(fen14)*10 + (readdat/BCD 码转化成 10 进制 师范学院学院本科毕业论文 30 readdat = readRTC_B(DS1302_MINUTE); fen = (readdat readdat = readRTC_B(DS1302_HOUR); shi = (readdat readdat = readRTC_B(DS1302_DAY); day = (readdat readdat =readRTC_B(DS1302_WEEK); week = (readdat readdat = readRTC_B(DS1302_MONTH); yue = (readdat readdat = read

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号