基于单片机的温度控制直流电动机转速系统设计 - 图文(8)
基于单片机的温度控制直流电动机转速系统设计
温度范 T≥45℃ T≤10℃ 10℃<T<45℃ 正转 反转 停止 全速 ≥75 加速 45≤T加速 0<T≤全速 T≤0 返回
图22温度控制电机转速
4.2各模块程序说明
4.2.1温度采集模块
(1) DS18B20初始化程序 uchar Init_DS18B20() { uchar
DQ=1;Delay(8);DQ = 0;Delay(90);
DQ=1;Delay(8);status = DQ;Delay(100);DQ=1; return status; //初始化成功返回0
第XXXVI页 共51页
!!!学院毕业设计
}
(2)温度字符
uchar code_temperature_char[8]
={0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00,0x00,};
(3)温度小数位对照表
uchar code df_Table[] ={0,1,1,2,2,3,3,4,4,5,6,6,7,8,8,9,9 }; uchar CurrenT = 0; //当前读取的温度整数部分 char Signed_Temp = 0; //有符号温度值 uchar Temp_Value[] = {0x00,0x00}; //从DS18B20读取温度值 uchar Back_Temp_Value[] = {0xFF,0xFF}; //温度数据备份 uchar Display Digit = {0,0,0,0}; //待显示的各温度数位 bit DS18B20_IS_OK = 1; //传感器正常标志 unit tCount = 0;
4.2.2电动机转速及转向控制模块
T0定时器控制电动机正/反转,并输出PWM信号控制转速 Void T0_INT() interrup 1 {
TH0 = -50000/256; TL0 = -50000%6;
Read_Temperature(); //读取温度 if ( !DS18B20_IS_OK )return; //读错时退出 //读取正常且温度发生变化则刷新显示 if (Temp_Value[0] != Back_Value[0] || Temp_Value[1] != Back_Value[1] ) {
Back_Temp_Value[0] =Temp_Value[0]; Back_Temp_Value[1] =Temp_Value[1]; Disply_Temperature();
第XXXVII页 51页
基于单片机的温度控制直流电动机转速系统设计
}
//≥75℃或<=0℃时,电动机全速转动,占空比为100%. if (Signed_Temp≥ 75 ) Signed_Temp = 75; if (Signed_Temp≤ 0 ) Signed_Temp = 0; //≥45℃时加速正转,75℃时全速运行 if ( Signed_Temp ≥ 45) {
MA = 1; MB = 0; //正转
if (Signed_Temp == 45) //PWM输出(占空比:0%) {
PWM1 = 0; DelayXus(30); return; } else
if (Signed_Temp == 75) //PWM输出(占空比:100%) {
PWM = 1; DelayXus(30); return; }
PWM1 = 1; //PWM输出(占空比:0%~100%) DelayXus(Signed_Temp - 45); PWM1 = 0;
DelayXus(75 - Signed_Temp ); } else
//≤10℃时加速反转,0℃时全速运行 if ( Signed_Temp≤ 10 ) {
MA = 0; MB = 1; //反转
if (Signed_Temp == 10) //PWM输出(占空比:0%) {
PWM1 = 0; DlayXus(10); return;
第XXXVIII页 共51页
!!!学院毕业设计
} else
if (Signed_Temp == 0 ) //PWM输出(占空比:100%) {
PWM = 1; DelayXus(10); return; }
PWM = 1; //PWM输出(占空比:0%~100%) DelayXus(10 - Signed_Temp); PWM = 0;
DelayXus(Signed_Temp); }
//否则由惯性运动过渡到停止 else {
MA = 0; MB = 0; } }
4.2.3温度显示模块 在LCD上显示当前温度 void Display_Temperature() {
uchar i;
uchar t=150;//延时值 uchar ng = 0;//负数标识
//如果为负数则取反加1,并设置负数标识 if((Temp_Value[1] & 0xF8) ==0xF8) {
Temp_Value[1] = ~Temp_Value[1];
第XXXIX页 51页
基于单片机的温度控制直流电动机转速系统设计
Temp_Value[0] = ~Temp_Value[0] + 1; if(Temp_Value[0] ==0x00) Temp_Value[1]++; ng= 1; }
//查表得到温度小数部分
Display_Digit[0] = df_Table[ Temp_Value[0] & 0x0F ]; //获取温度整数部分(无符号)
Current = ((Temp_Value[0]) & 0xF0)>>4) | ((Temp_Value[1] & 0x07)<<4); //获取有符号温度值(忽略小数位)
Signed_Temp = !ng ? CurrenT : - CurrenT; //将整数部分分解为三位待显示数字 Display_Digit[3] = CurrenT / 100; Display_Digit[2] = CurrenT % 100 / 10; Display_Digit[1] = CurrenT % 10; //刷新LCD显示缓冲
Current_Temp_Display_Buffer[11] = Display_Digit[0] + '0'; Current_Temp_Display_Buffer[10] = '.';
Current_Temp_Display_Buffer[ 9] = Display_Digit[1] + '0'; Current_Temp_Display_Buffer[ 8] = Display_Digit[2] + '0'; Current_Temp_Display_Buffer[ 7] = Display_Digit[3] + '0'; //高位为0时不显示
if (Diplay_Digit[3] == 0) Current_Temp_Display_Buffer[7] = ' '; //高位为0且次高位为0时,次高位不显示
if (Display_Digit[2] == 0 && Display_Digit[3] == 0) //负数符号显示在恰当位置 if (ng) {
if (Current_Temp_Display_Buffer[8] == ' ') Current_Temp_Display_Buffer[8] == '-'; else
第XL页 共51页
…… 此处隐藏:960字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [法律文档]苏教版七年级语文下册第五单元教学设计
- [法律文档]向市委巡视组进点汇报材料
- [法律文档]绵阳市2018年高三物理上学期第二次月考
- [法律文档]浅析如何解决当代中国“新三座大山”的
- [法律文档]延安北过境线大桥工程防洪评价报告 -
- [法律文档]激活生成元素让数学课堂充满生机
- [法律文档]2014年春学期九年级5月教学质量检测语
- [法律文档]放射科标准及各项计1
- [法律文档]2012年广州化学中考试题和答案(原版)
- [法律文档]地球物理勘查规范
- [法律文档]《12系列建筑标准设计图集》目录
- [法律文档]2018年宁波市专技人员继续教育公需课-
- [法律文档]工会委员会工作职责
- [法律文档]2014新版外研社九年级英语上册课文(完
- [法律文档]《阅微草堂笔记》部分篇目赏析
- [法律文档]尔雅军事理论2018课后答案(南开版)
- [法律文档]储竣-13827 黑娃山沟大开挖穿越说明书
- [法律文档]《产品设计》教学大纲及课程简介
- [法律文档]电动吊篮专项施工方案 - 图文
- [法律文档]实木地板和复合地板的比较
- 探析如何提高电力系统中PLC的可靠性
- 用Excel函数快速实现体能测试成绩统计
- 教师招聘考试重点分析:班主任工作常识
- 高三历史选修一《历史上重大改革回眸》
- 2013年中山市部分职位(工种)人力资源视
- 2015年中国水溶性蛋白市场年度调研报告
- 原地踏步走与立定教学设计
- 何家弘法律英语课件_第十二课
- 海信冰箱经销商大会——齐俊强副总经理
- 犯罪心理学讲座
- 初中英语作文病句和错句修改范例
- 虚拟化群集部署计划及操作流程
- 焊接板式塔顶冷凝器设计
- 浅析语文教学中
- 结构力学——6位移法
- 天正建筑CAD制图技巧
- 中华人民共和国财政部令第57号——注册
- 赢在企业文化展厅设计的起跑线上
- 2013版物理一轮精品复习学案:实验6
- 直隶总督署简介