keilc温度控制直流电机转速课程设计报告
单片机直流电机控制实训报告

单片机直流电机控制实训报告基于AT89C51单片机的直流电动机控制器设计实训报告专业:弹药工程与爆炸技术班级:弹药二班学生姓名:杨宁指导教师:佟慧艳能源与水利学院1 实训目的通过单片机实训使学生能够掌握利用Keil软件编写单片机程序,学会设计完整的单片机应用系统;依托Protues仿真平台进行单片机电子应用系统设计与仿真,使学生掌握单片机应用系统的设计技能;培养学生运用所学知识分析和解决实际问题的能力以及实际动手能力和查阅资料能力。
2 实训任务及要求2.1 任务描述一单片机为控制核心设计一款直流电机电机控制系统,可以实现直流电机的加速、正转、反转等控制方式。
2.2 任务要求1)用AT89C51单片机实现上述任务要求;2)在Keil IDE中完成应用程序设计与编译;3)在Proteus环境中完成电路设计、调试与仿真。
3 系统硬件组成与工作原理3.1单片机的控制器与最小系统单片机的最小系统是指有单片机和一些基本的外围电路所组成的一个可以使单片机工作的系统,一般来说,它包括单片机、晶振电路和复位电路(如图一)。
图1 最小系统设计截图(一)控制器部分分析AT89C51(如图2)是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and ErasableRead Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。
AT89C51提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
直流电机转速控制实验报告

直流电机转速控制实验报告自动控制原理实验实验报告直流电机转速控制设计一、实验目的1、了解直流电机转速测量与控制的基本原理。
2、掌握LabVIEW图形化编程方法,编写直流电机转速控制系统程序。
3、熟悉PID参数对系统性能的影响,通过PID参数调整掌握PID控制原理。
二、实验设备与器件计算机、NI ELVIS II多功能虚拟仪器综合实验平台、LabVIEW软件、万用表、12V直流电机、光电管,电阻、导线。
三、实验原理直流电机转速测量与控制系统的基本原理是:通过调节直流电机的输入电压大小调节电机转速;利用光电管将电机转速转换为一定周期的光电脉冲、采样脉冲信号,获取脉冲周期。
将脉冲的周期变换为脉冲频率,再将脉冲频率换算为电机转速;比较电机的测量转速与设定转速,将转速偏差信号送入PID控制器,由PID 控制器输出控制电压,通可变电源输出作为直流电机的输入电压,实现电机转速的控制。
四、实验过程(1)在实验板上搭建出电机转速光电检测电路将光电管、直流电机安装在实验板上的合适位置,使得直流电机的圆片恰好在光电管之中,用导线将光电管与相应阻值的电阻相连,并将电路与相应的接口相连,连接好的电路图如下。
(2)编写程序,实现PID控制SP为期望转速输出,是用户通过转盘输入期望的转速;PV为实际测量得到的电机转速,通过光电开关测量马达转速可以得到;MV为PID输出控制电压,将其接到“模拟DBL”模块,实现控制电源产生所需的直流电机控制电压。
通过不断地检测马达转速与期望值对比产生偏差,通过PID控制器产生控制信号,实现对直流电机转速的控制。
编写的程序如下图所示五、调试过程及结果PID参数调整如下时,系统出现了振荡现象,导致了系统的不稳定。
于是将参数kc调小,调整后的参数如下:系统出现了一定程度的超调,不满足实际的应用。
继续将Ti参数调大,并加入移位寄存器,对转速测量值取滑动平均,得到较为理想的系统输出。
-全文完-。
单片机控制直流电机课程设计报告

void delay(unsigned char dlylevel){
int i=50*dlylevel;
while(--i);}
此函数为带参数DLYLEVEL,约产生DLYLEVEL*400us的延时,因此一个脉冲周期可以由高电平持续时间系数hlt和低电平持续时间系数llt组成,本设计中采用的脉冲频率为25Hz,可得hlt+llt=100,占空比为hlt/(hlt+llt),因此要实现定频调宽的调速方式,只需通过程序改变全局变量hlt,llt的值,该子程序流程图如图四。
MOV TL0,#0CH
SETB ET0 ;开定时器0
SETB EA
SETB TR0
LOOP:AJMP LOOP ;等待
AT89C51单片机功能强大,方便今后的功能扩展。通过各种方案的讨论及尝试,再经过多次的整体软硬件结合调试,不断地对系统进行优化。同时对电动机控制不是一个简单的电子控制问题,它涉及很多方面的知识。相信单片机在今后的自动控制领域中将有更广阔的应用前景。相信该系统能成功运用于直流电机转速系统的实时监控,简化控制逻辑系统,而且成本低廉、功能完整、抗干扰性能好。能成功应用于直流电机转速调节、监控、保护场合,并且监控界面友好,使用方便。能够对直流电机实行实时监控,不仅大大改善了高速运行时的稳定性,而且还实现了保护功能。
SETB P2.0
CLR P2.2
SETB GORD ;置高低电平判断位为1
MOV GAO,LEN ;置高电平初值
MOV A,#100 ;置周期总长值
SUBB A,GAO ;求低电平比例值
MOV DI,A ;存低电平比例值
温度控制直流电动机转速的课程设计

目录1 1引言..............................................................................错误!未定义书签。
2设计任务及要求..............................................................错误!未定义书签。
2.1设计目的................................................................错误!未定义书签。
2.2设计要求................................................................错误!未定义书签。
3 本课程设计的意义..........................................................错误!未定义书签。
4应用软件介绍..................................................................错误!未定义书签。
4.1Prote us仿软真件的介绍.......................................错误!未定义书签。
4.2 Keil软件 .................................................................错误!未定义书签。
5电路使用元件的介绍......................................................错误!未定义书签。
5.1关于AT89C51单片机的简介.................................错误!未定义书签。
5.2关于DS18B20温度传感器的简介 ........................错误!未定义书签。
温度控制直流电效果转速的课程设计

计算机控制实验课程设计报告-直流电机转速pid控制

基于89c52单片机的PWM 直流电机PID控制调速系统实验报告指导老师:衣法臻姓名:杨浩学号:09212020班级:自动化0901日期:2012年7月6日星期五目录第一章系统方案设计 (3)1.1 直流电机转速开环控制与闭环控制的选取 (3)1.2 直流电机调速方式的选取 (4)1.3 直流电机测速装置的选取 (5)1.4 系统控制算法的选取 (8)1.5 系统总体设计 (10)第二章硬件设计 (11)2.1 AT89C52芯片介绍 (11)2.2 直流电机驱动芯片ULN2803设计 (13)2.3 数显管显示给定速度和实际速度模块 (15)2.4 按键模块设计 (16)2.5 测速模块设计 (18)第三章软件部分设计 (19)3.1 数显管显示软件设计部分 (19)3.2 外部中断P3.3计数程序 (21)3.3 定时器0中断软件设计 (22)3.4 PWM算法程序设计 (25)3.5 PID控制算法程序设计 (26)3.6 按键程序设计 (29)第四章基于matlab的PID参数设计及仿真 (31)4.1 各部分传递函数的整定 (31)4.2 PID参数的整定 (31)第五章结果分析 (33)第六章实验总结及感想 (34)参考文献 (36)附录一硬件系统电路原理图 (36)附录二程序源代码 (36)第一章、系统总体方案设计1.1直流电机转速开环控制与闭环控制的选取对直流电机转速的控制有一般有两种方式,一种是开环控制,一种是闭环控制。
开环控制的优点是简单、稳定、可靠。
若组成系统的元件特性和参数值比较稳定,且外界干扰较小,开环控制能够保持一定的精度。
缺点是精度通常较低,无自动纠偏能力;闭环控制的优点是控制的精度可以达到很高,而且对外界的干扰和系统的参数变化有很好的抑制作用,且可以通过输出反馈控制系统的控制过程。
缺点是存在稳定性,振荡,超调等一系列问题,对系统的性能分析和设计远比开环控制麻烦。
经过利弊的取舍,本次试验选择的是闭环控制,因为准备应用PID算法控制电机的转速,故而需要有实际转速进行反馈与给定的转速形成对比,进而通过算法输出PWM波形来控制直流电机。
课程设计报告之直流电机控制(C语言版)

单片机课程设计学院:电气与信息工程学院班级:07级电气工程及其自动化3班设计者:设计名称:直流电机调速指导老师:张志文教授目录一. 课程设计题目及其实现目标 (3)二. 设计原理图 (4)三. 设计原理及其实现方法 (5)四. 流程图 (6)五. 程序清单 (7)六.课程设计心得 (13)一. 课程设计题目及其实现目标课程设计题目:直流电机调速实现的目标1).通过键盘改变脉冲的占空比从而达到改变转速使得电机转速从高到低,从低到高2).通过改变pwm的极性从而改变电机的转向,实现正反转3).能够通过数码显示管显示电机的转速和电机的转向4).通过启动键唯一启动电机,从而达到防止电机误启动的目的5).能够通过键盘快速达到电机预先设定的速度和转向备注:由于没有传感器,所以本课程设计中没有设计测速模块,所显示的速度为理论速度,并非电机的实际转速二. 设计原理图注:本原理图采用proteus绘制三. 设计原理及其实现方法1. 速度调节的实现通过控制L298的使能端“允许”或者“禁止”,通过改变a (脉冲宽度)的值,从而达到控制PWM脉冲宽度调节电机转速的目的2. 转向的控制通过L298中的H桥,从AT89C51中的P1_6和P1_7输出控制信号控制BJT的基极电压,控制L298中H桥的BJT通断,从而达到控制电机转向的目的附:A. L298的原理图B.本设计所需要芯片以及作用AT89C51:单片机L298:控制电机驱动和转向74L408:四与门芯片8255A:用于扩展51端口,作显示用2803:显示缓冲用MAX239:串口通讯芯片四. 流程图五.程序清单#include<at89x51.h>#include<motor_ctr.h>#include<absacc.h>#include<stdio.h>#include<intrins.h>#define PA XBYTE[0x1FFF] //A口地址;#define PB XBYTE[0x3FFF] //B口地址;#define PC XBYTE[0x5FFF] //C口地址;#define CON XBYTE[0x7FFF] //*控制字地*/ ;uchar key=0; //定义key为全局变量uint a=100;uchar n=5; //单次增加的步长,用于输出脉冲占空比控制uint k1=0,mn=10; //设置mn为转向标志位uchar bai,shi,ge;uint seg_code[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,0xff}; //0~9的七段显示代码; /*THE MAIN PROCESS*/void main(){CON=0x80;P1_5=0; //使电机停转;TMOD=0x15; //定时器1工作在模式1TH1=0xFF; //定时器1的溢出中断时间为50ms;TL1=0xb0;ET1=1;TR1=1;while(1){key=GetKey();/*case 1~case 9是预先设定的速度,方便电机直接调节到该速度,避免通过’+’键调节*/ switch(key){ case '1': { a=10;break; }case '2': { a=25; break; }case '3': { a=40; break; }case '4': { a=55; break; }case '5': { a=70; break; }case '6': { a=90; break; }case '7': { a=110;break; }case '8': { a=130;break; }case '9': { a=150;break; }case '+': { P1_4=0;control();break; } //电机加速case '-': { control(); break;} //’-‘代表减速case '=': { P1_7=0; P1_6=1; mn=0;control(); break;} //电机顺时针转case 'c': { P1_7=1; P1_6=0; mn=1;control() ; break;} //逆时针转case '/': { control();} //‘/‘键按下时,电机开始转动default: break; //不影响电机运行}}}/*THE END OF MAIN PROCESS*//*THE INTERRUPTION FUNCTION*/void time()interrupt 3 //中断号为3,即是定时器1溢出中断{ //此处是计时50ms中断一次TR1=0; //此函数用于显示速度k1+=TL0;display(a/100,a%100/10,a%10,mn);/*if(count==51){sprintf(s,"%04d",k1%1000); //注意sprintf的用法;//确保有四位输出count=1;k1=0;}display(a,bai,shi,ge); */TH1=0x3c;TL1=0xb0;TH0=0x00;TL0=0x00;TR1=1;}/* THE INTERRUPTION FUNCTION *//*THE GETKEY FUNCTION WHICH W AS USED TO GET THE INFORMA TION FROM THE KEY *//*行信号从P1口的低四位读进,列信号从P2口的高四位读进*/uchar GetKey(){P1_0=0;P1_1=1;P1_2=1;P1_3=1;P2_0=1;P2_1=1;P2_2=1;P2_3=1;_nop_();_nop_(); // 适当的延时以便消除抖动if(!P2_0)return '7';if(!P2_1)return '8';if(!P2_2)return '9';if(!P2_3)return '/';P1_0=1;P1_1=0;P1_2=1;P1_3=1;_nop_();_nop_();if(!P2_0)return '4';if(!P2_1)return '5';if(!P2_2)return '6';if(!P2_3){P1_4=0;return '*'; }P1_0=1;P1_1=1;P1_2=0;P1_3=1;_nop_();_nop_();if(!P2_0)return '1';if(!P2_1)return '2';if(!P2_2)return '3';if(!P2_3)return '-';P1_0=1;P1_1=1;P1_2=1;P1_3=0;_nop_();_nop_();if(!P2_0)return 'c';if(!P2_1){P1_4=0;return '0'; } // P1_4和P1_5脚通过一个“与”门用来防止误启动if(!P2_2)return '=';if(!P2_3)return '+';return 0;}/*延时程序*//*THE DELAY FUNCTION*/void delay(uint i){uint j,k;for(;i>0;i--)for(j=10;j>0;j--)for(k=10;k>0;k--);}/*THE DISPLAY FUNCTION*/void display(uchar bai,uchar shi,uchar ge ,uint mn){PB=0x08; //0000 1000PA=seg_code[ge];delay(2);PB=0x04;//0000 0100PA=seg_code[shi];delay(2);PB=0x02;//0000 0010PA=seg_code[bai];delay(2);PB=0x01;//0000 0001PA=seg_code[mn];delay(2); //注意这儿的延时越短越好,应为处理终端的时间越短,对电机// 的实时性显示就越好;}/*THE CONTROL FUNCTION*//*由于参数a 是一个全局变量,代表着脉冲的占空比,每次调用函数时;必须注意参数a 值;*//* 如果按键为‘-’,‘+’(加速减速)以及‘c',’=‘(正转反转)时,不需跳出循环,按其他键时,需要跳出循环,必须需要重新设置占空比*//* P1_4和P1_5脚通过一个“与”门用来防止误启动*/void control(){EA=1;while(1){if(a>=150)a=150; //设置了a 的最大值,限定了电机的最高速度if(a<=10)a=10; // 设置了a 的最小值,限定了电机的最高速度P1_5=1; // 与P1_4信号形成控制L298的控制信号达到控制转速的目的delay(a); // 调用延时,形成脉宽的调节P1_5=0; //电机逐渐停转;delay(160-a);/*以下的程序改变a 的值达到改变脉冲宽度的目的*/key=GetKey();if(key=='-') // 减速a=a-n;else if(key=='+'){a=a+n;} // 加速else if(key=='=') // 如果按下’=‘键,则电机顺时针转;{P1_6=1;P1_7=0;mn=0;}else if(key=='c') //反转{ P1_7=1;P1_6=0;P1_4=1;mn=1;}else if(key=='*'||key=='0') //如果按下停止键’*‘或者’0’;{ P1_5=0;P1_4=1; //ENA=0(P1_5=0)电机停转;break;}else if(key!=0) //如果没有按键按下,则继续在此while循环中运行{switch(key){case '1': { a=10; break; }case '2': { a=25; break; }case '3': { a=40; break; }case '4': { a=55; break; }case '5': { a=70; break; }case '6': { a=90; break; }case '7': { a=110; break; }case '8': { a=130; break; }case '9': { a=150; break; }default : break ;}}}EA=1;}附:motor_ctr.h FILEtypedef unsigned char uchar;typedef unsigned int uint ;extern uchar GetKey();extern void delay(uint i);extern void control();void display(uchar bai,uchar shi,uchar ge ,uint mn);六.课程设计心得两周的课程设计结束了,总得算来,这两周的课程设计体会颇多。
直流电机转速控制实验报告

计算机控制技术综合性设计实验实验课程:直流电机转速控制实验设计报告学生姓名:学生姓名:学生姓名:学生姓名:指导教师:牛国臣实验时间:年月日直流电机转速控制实验设计报告一、实验目的:1.掌握电机的工作原理。
2.掌握直流电机驱动控制技术。
3.掌握增量式编码器位置反馈原理。
4.熟悉单片机硬件电路设计及编程。
5.实现直流电机的转速控制。
二、实验内容:已知某一直流永磁有刷伺服电机参数如下:设计直流电机转速控制系统。
要求:表1 直流伺服电机参数1.分析并建立电机的数学模型,分别得出在连续控制系统和离散控制系统中对应的传递函数;2.基于MATLAB软件对直流电机进行仿真,并通过PID控制器的参数整定对直流电机进行闭环控制,3.设计直流电机控制硬件电路,主要包括主控模块、电机驱动模块、编码器反馈模块、通信模块、电源模块、显示模块等。
4.对各模块进行单元调试,设计数字PID控制器,并基于A VR单片机编制程序,进行系统联调。
5.最终完成直流电机控制硬件平台的设计、搭建及软件调试,要求有速度设置、显示功能,速度控制误差在1%以内,具有与上位机通讯的接口,能通过上位机方便进行参数设置、速度控制等操作。
三、 实验步骤:1、建立电机的数学模型,得出控制统的传递函数;由直流电机得来的三个方程:n k dt di Li R s u E m m ++=)( i k T M m =f L m T dtdw J T T ++= 、 进行拉式变换得:)()()()(s n k s LSI s I R s U E m m ++=)(s I k T M m =f L m T s JS T T +Ω+=)(带入数据在进行z 变换得: 521039.19252.01394.0459.1)(-⨯+-+=z z z z G 2、.基于MATLAB 软件对直流电机进行仿真(1)连续系统阶跃响应程序为:>> num=[1]num =1>> den=[0.0000000542,0.00061,0.0468]den =0.0000 0.0006 0.0468>> G=tf(num,den)Transfer function:1----------------------------------5.42e-008 s^2 + 0.00061 s + 0.0468>> step(G)>> Gz=c2d(G,0.01,'zoh')Transfer function:11.43 z + 0.06868-----------------z^2 - 0.4618 zSampling time: 0.01>> step(Gz)阶跃响应曲线如图1所示:图1 阶跃响应曲线(2)离散系统的单位阶跃响应程序如下:>> num=[52.756.913];>> den=[1 -0.8009 0.0005123];>> sys=[num,den,0.001];>> dstep(num,den,100)离散系统的阶跃响应曲线如图2所示(T=1ms):图2 离散系统的阶跃响应曲线(3)PID参数整定1)设D(z)=错误!未找到引用源。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录一、设计目的及要求 (2)1.1 设计目的 (2)1.2 设计要求 (3)二、设计方案及论证之硬件电路设计 (3)2.1芯片简介 (3)2.2 电路原理图 (4)2.21 电机测速即驱动部分: (4)2.22电路供电系部分 (5)2.23显示部分 (5)三、设计方案及论证之软件设计 (6)3.1 程序设计思路 (6)四、器件清单 (13)五、器件识别与检测 (14)六、仿真结果: (15)七、软件简述 (15)7.1 keil 简介 (15)7.2 keil与proteus联调与仿真实现 (16)九、参考文献 (17)课程设计任务书一、设计目的及要求1.1 设计目的本设计主要是应用proteus软件和嵌入式C语言编程工具,结合单片机原理及应用。
危机原理与接口技术等专业课程,强化和巩固专业理论基础,掌握Proteus仿真的技巧和嵌入式C语言编程工具,提高单片机开发能力,并为嵌入式开发打下基础。
1.2 设计要求(1) 使用 AT89C51单片机为核心,使用 4 位集成式数码管显示当前温度,温度传感器使用 DS18B20,使用 L298 驱动直流电动机。
(2)用 4 位集成式数码管显示当前温度, , 当温度在≥ 45 C 时, 直流电动机在 L298 0 0 驱动下加速正转,温度在≥ 75 C 全速正转;当温度≤ 10 C 时,直流电动机加速反转,温度≤ 0 C 时,直流电动机全速反转;温度 10 C ~ 45 C 之间时,直流电动机停止转动。
(3)控制程序在 Keil 软件中编写,编译,整个控制电路在 Proteus 仿真软件中连接调示。
二、设计方案及论证之硬件电路设计2.1芯片简介本设计选择采用AT89C51单片机为核心。
AT89C51提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但震荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。
2.2 电路原理图2.21 电机测速即驱动部分:电机选用美国史普拉格公司生产的 3000 系列霍尔开关传感器 3013,它是一种硅单片集成电路,器件的内部有稳压电路,霍尔电视发生器,放大器,施密特触发器和集成开路输出电路,具有工作电压范围宽,可靠性高,外电路简单,输出电平可与各种数字电路兼容等特点。
电动机测试部分原理图如下:2.22电路供电系部分电路通过 12V 电源供电,由霍尔元件及外围器件组成的测速电路将电动机转速转换成脉冲信号送到单片机 89C51 的 P3.5 脚,作为 T1 计数器计数使用,得到的计数值。
与设定的值进行比较形成偏差.根据比较结果通过 Po 端口送给DAC0832 进行数/模转换, 从而使得输出电压增大或者减少,得到模拟电压输出给功率放大电路放大,再去控制电机的转速。
2.23显示部分采用 LM016L作为显示屏下图为显示部分:三、设计方案及论证之软件设计3.1 程序设计思路程序框图开始初始化3.2源程序void dsreset(void) ;温度采集初始化{uint i;DS=1;i++;DS=0;i=103;while(i>0)i--;DS=1;i=4;while(i>0)i--;DS=1;}void tmpwritebyte(uchar dat);控制温度传感器{uint i;uchar j;bit testb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb) //write 1{DS=0;i++;i++;DS=1;i=8;while(i>0)i--;}else{DS=0;i=8;while(i>0)i--;//write 0DS=1;i++;i++;}}}bit tmpreadbit(void) ;读数据赋值给dat{uint i;bit dat;DS=1;DS=0;i++;i++;DS=1;i++;dat=DS;i=8;while(i>0)i--;return (dat);}uchar tmpread(void){uchar i,j,dat;dat=0;for(i=1;i<=8;i++){j=tmpreadbit();dat=(j<<7)|(dat>>1);}return(dat);}uint tmp() ;数据处理即判断温度正负{float tt;uchar a,b,b1;dsreset();delay(1);tmpwritebyte(0xcc);tmpwritebyte(0xbe);a=tmpread();b=tmpread();temp=b;b1=b;temp<<=8;temp=temp|a;if(b1<8){flag+=1;tt=temp*0.0625;temp=tt*10+0.5;dis_buf[0]=0;}else{flag-=1;temp=~temp;temp=temp+1;tt=temp*0.0625;temp=tt*10+0.5;dis_buf[0]=0x40;}return temp;}void display(uint temp);将采集后转化的温度对数组赋值{uchar A1,A2,A3;A1=temp/100;A2=temp%100/10;A3=temp%10;t=A1*10+A2;dis_buf[3] = table[A3];dis_buf[2] = table1[A2];dis_buf[1] = table[A1];}void timer1() interrupt 3;用定时器T1调用温度采集函数进行温度采集{TH1=(65536-20000)/256;TL1=(65536-20000)%256;tmpchange();display(tmp());}void timer0() interrupt 1;用定时器T0将处理后的温度用数码管显示{TH0 = (65536-500)/256;TL0 = (65536-500)%256;P2=0xff;P0=dis_buf[dis_index];P2=dis_digit;dis_digit = _crol_(dis_digit,1);dis_index++;dis_index &= 0x07;}if(flag==1);判断电机旋转情况{flag=0;if(t>=75)Turn_z();elseif(t>=45)Turn_zj();elseif(t>10)Turn_t();elseTurn_fj();}elseif(flag==-1){flag=0;Turn_f();}四、器件清单温度控制直流电机转速所需元器件清单五、器件识别与检测根据单片机的C语言程序设计与应用,我们知道了C51单片机,所用的一般元器件有电阻、电容、开关、排阻,而对于晶振和数码管是我们所必须学习和掌握的,晶振是一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。
他结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快。
数码管根据公共端的连接情况有共阳极共阴极两种,对共阴极LED显示器的发光二极管的公共端的com接地,当某发二极管的阳极为高电平时,相应的发光二极管点亮。
六、仿真结果:d0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d 0d 1d 2d 3d 4d 5d 6d 7ER S RS R W ER W XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51C122PFC222PFC310uFX112MR110kD 714D 613D 512D 411D 310D 29D 18D 07E 6R W 5R S 4V S S 1V D D 2V E E3LCD1LM016L234567891RP1470R24.7k60.6DQ 2VCC 3GND 1U2DS18B20PWM1IN15IN27ENA 6OUT12OUT23ENB11OUT313OUT414IN310IN412SENSA 1SENSB15GND 8VS4VCC9U4L298C4100nf+203D1D2D3D4C5100nf+12VA B PWM1A B七、软件简述 7.1 keil 简介Keil C51是美国Keil Software 公司出品的51系列兼容单片机C 语言软件开发系统,与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明显的优势。
因而易学易用。
Keil 提供了包括C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试等在内的完整开发方案,通过一个集成开发环境uVision将这些部分组合在一起。
运行Keil软件需要WIN98、NT、WIN2000、WINXP 等操作系统。
7.2 keil与proteus联调与仿真实现双击图标进入keil uVision2编程环境,输入程序。
返回桌面双击图标进入Proteus仿真环境。
点击左上角选项P后根据设计的电路图调出所需元件画好硬件原理图如图所示。
然后按照4.1节所写步骤设置keil和proteus的工作环境。
实现keil和proteus的联调。
八、总结在课程设计的过程中,用到了Keilc和Proteus两大软件,上课老师都有讲过这些专业知识,通过对这些专业知识的学习,提高了自己的知识水平,而在课程设计过程中,我加强了自己的动手能力,并且将专业知识用到实践上,让我对这两个软件更加熟悉。