基于单片机的温度控制直流电动机转速系统设计 - 图文(10)
基于单片机的温度控制直流电动机转速系统设计
uchar i;
for (i=0;i<8;i++) {
DQ=0;DQ=dat&0x01; Delay(5);DQ=1;dat>>=1; } }
//--------------------------------------------------------------------- //读取温度值
//--------------------------------------------------------------------- void Read_Temperature() {
if(Init_DS18B20() == 1) //DS18B20故障 DS18B20_IS_OK = 0; else {
writeoneByte(0xCC); //跳过序列号 writeoneByte(0x44); //启动温度转换 Init_DS18B20(); writeoneByte(0xCC);
writeoneByte(0xBE); //读取温度寄存器 Temp_Value[0] = ReadOneByte(); //温度低8位 Temp_Value[1] = ReadOneByte(); //温度高8位 DS18B20_IS_OK = 1; } }
//--------------------------------------------------------------------- //在LCD上显示当前温度
//--------------------------------------------------------------------- void Display_Temperature() {
第XLVI页 共51页
!!!学院毕业设计
uchar i;
uchar t=150;//延时值 uchar ng = 0;//负数标识
//如果为负数则取反加1,并设置负数标识 if((Temp_Value[1] & 0xF8) ==0xF8) {
Temp_Value[1] = ~Temp_Value[1]; 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时,次高位不显示
第XLVII页 51页
基于单片机的温度控制直流电动机转速系统设计
if (Display_Digit[2] == 0 && Display_Digit[3] == 0) //负数符号显示在恰当位置 if (ng) {
if (Current_Temp_Display_Buffer[8] == ' ') Current_Temp_Display_Buffer[8] == '-'; else
if (Current_Temp_Display_Buffer[7] == ' ') Current_Temp_Display_Buffer[7] == '-';) else
(Current_Temp_Display_Buffer[6] == '-'; }
//在第一行显示标题 Set_LCD_POS(0x00);
for(i = 0; i<16; i++) Write_LCD_Data( Temp_Disp_Title[i] ); //在第二行显示当前温度 Set_LCD_POS(0x40);
for(i = 0; i<16; i++) Write_LCD_Data(Current_Temp_Display_Buffer[i] ); //显示温度符号℃
Set_LCD_POS(0x4D); Write_LCD_Data(0x00); Set_LCD_POS(0x4E); Write_LCD_Data('C'); }
//--------------------------------------------------------------------- //T0定时器控制电动机正/反转,并输出PWM信号控制转速
//--------------------------------------------------------------------- Void T0_INT() interrup 1 {
TH0 = -50000/256;
第XLVIII页 共51页
!!!学院毕业设计
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(); }
//≥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;
第XLIX页 51页
基于单片机的温度控制直流电动机转速系统设计
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; } 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; } }
//--------------------------------------------------------------------- //主函数
//---------------------------------------------------------------------
第L页 共51页
…… 此处隐藏:1434字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [法律文档]苏教版七年级语文下册第五单元教学设计
- [法律文档]向市委巡视组进点汇报材料
- [法律文档]绵阳市2018年高三物理上学期第二次月考
- [法律文档]浅析如何解决当代中国“新三座大山”的
- [法律文档]延安北过境线大桥工程防洪评价报告 -
- [法律文档]激活生成元素让数学课堂充满生机
- [法律文档]2014年春学期九年级5月教学质量检测语
- [法律文档]放射科标准及各项计1
- [法律文档]2012年广州化学中考试题和答案(原版)
- [法律文档]地球物理勘查规范
- [法律文档]《12系列建筑标准设计图集》目录
- [法律文档]2018年宁波市专技人员继续教育公需课-
- [法律文档]工会委员会工作职责
- [法律文档]2014新版外研社九年级英语上册课文(完
- [法律文档]《阅微草堂笔记》部分篇目赏析
- [法律文档]尔雅军事理论2018课后答案(南开版)
- [法律文档]储竣-13827 黑娃山沟大开挖穿越说明书
- [法律文档]《产品设计》教学大纲及课程简介
- [法律文档]电动吊篮专项施工方案 - 图文
- [法律文档]实木地板和复合地板的比较
- 探析如何提高电力系统中PLC的可靠性
- 用Excel函数快速实现体能测试成绩统计
- 教师招聘考试重点分析:班主任工作常识
- 高三历史选修一《历史上重大改革回眸》
- 2013年中山市部分职位(工种)人力资源视
- 2015年中国水溶性蛋白市场年度调研报告
- 原地踏步走与立定教学设计
- 何家弘法律英语课件_第十二课
- 海信冰箱经销商大会——齐俊强副总经理
- 犯罪心理学讲座
- 初中英语作文病句和错句修改范例
- 虚拟化群集部署计划及操作流程
- 焊接板式塔顶冷凝器设计
- 浅析语文教学中
- 结构力学——6位移法
- 天正建筑CAD制图技巧
- 中华人民共和国财政部令第57号——注册
- 赢在企业文化展厅设计的起跑线上
- 2013版物理一轮精品复习学案:实验6
- 直隶总督署简介