版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机双机通信系统-毕业设计汇编(完整版)资料(可以直接使用,可编辑优秀版资料,欢迎下载)
单片机双机通信系统-毕业设计汇编(完整版)资料(可以直接使用,可编辑优秀版资料,欢迎下载)成都信息工程学院电子工程学院[电子技术综合设计]总结报告题目:单片机双机通信系统专业:生物医学工程班级:2021级1班姓名:指导教师:胡老师评分:2021年12月20日目录1 项目计划 11.1 项目背景 11.2 方案设计可行性分析 1需求分析 1可行性分析 11.3 项目执行计划 22 设计说明 32.1 方案设计 32.2 硬件设计原理 4单片机系统 4时钟模块 5电平转换 6数码管显示 7按键模块 72.3 各单元模块设计流程图 8硬件总设计框图 8程序设计 9按键程序设计 9串口程序设计 113 调试说明 113.1 调试方法及步骤 113.2 调试数据 123.3 故障分析 143.4 设计注意事项: 144 总结 155 参考文献 156 附录 16项目计划项目背景单片机作为微型计算机的一个分支,其功能强、体积小、应用灵活等诸多优点,在工业控制、仪器仪表、通信、家用电器和国际科技等各个领域得到广泛的应用,随着集成电路技术的不断发展,单片机的性能也在不断提高其应用的范围必将越来越宽广。然而,随着单片机在工业自动化控制、智能仪器中的广泛应用,单片机已经逐渐满足需要,多机协同工作已经成为重要的发展趋势,多机应用的关键就在于多级之间的互相通信、互传数据信息。单片机和计算机的共同发展下,单片机的应用从独立的单片机向网络发展,由计算机和单片机构成的多机网络系统也是单片机技术发展的一个方向。单片机多机通信是指由两台以上的单片机组成的网络结构,可以通过串行通信方式共同实现对某一过程的最终控制。随着计算机技术的发展,多机通信技术也在不断的发展,现在发展比较成熟的还有光纤通信等。由于计算机的飞速发展和控制系统的复杂化,多机通信已经越来越成为人们热门话题之一。目前,单片机多机通信的形式较多,但通常可分为星型、环型、串行总线型和主从式多机型四种。方案设计可行性分析分析1.设计任务a.设计两个单片机系统;b.两单片机之间可以进行远距离通信;c.能够通过数码管显示时间;d.能够通过按键设置本机和对方的时间。2.设计要求a.基本要求:设计两个小系统,能实现有线互相通信(互设时间+数据共享)。b.扩展要求:远距离通信或无线通信,并能实现校验。a.市场可行性分析单片机作为微型计算机的一个分支,其功能强、体积小、应用灵活等诸多优点,在工业控制、仪器仪表、通信、家用电器和国际科技等各个领域得到广泛的应用。b.技术可行性分析本项目在设计上思路简单,已设计出合理的实际方案,可以实现基础要求和扩展要求,并达到比较好的效果。c.资源可行性分析资源有人力资源和材料资源,已考虑到各个阶段所需人才类型及数量,完全可以保证项目实施的有条不紊。d.经济成本可行性分析本项目设计结构简单,材料在原理图设计完成后导师派发。材料易购,成本还是较为合适。e.项目风险分析从项目整体上来说考虑各方面较为全面,风险指数已经降到最低,可以实施。项目执行计划下表为本项目进行的时间进度及人员分配情况:表1.1工程进度工程名称工期(天)开始时间提交时间人员安排原理图设计3彭跃秒PCB布局3彭跃秒程序设计32021.10.20钮丽媛设计说明书2张惠琳安装、调试2钮丽媛安装调试说明书1张惠琳项目提交1钮丽媛表1.2材料清单序号名称型号规格号位数量1单片机STC89C52RC40C(PDIP40)U12片2接口芯片MAX232CPEU22片3四联数码管3461ASSEG12个4时钟芯片DS1302NLY12个5二极管D12个5按键立式6*6*5(4脚黑)S1、S2、S36个6电池LITIUMCELLCR12203V2个7晶振11.0592MHz、32.765MHzY1、A14个8电阻10KR12个9电解电容10uF、100uFC3、C64个10瓷片电容30pF、104C5、C714个11连接线DB9公头1.5mDB91根12上拉电阻1KP12个11底座DIP40、DIP16、DIP8U1、U2、NLY13个12指示灯LED显示灯、红LED2个13排针若干设计说明方案设计通过两个STC89C52单片机为核心设计通信系统。单片机都带有串口,系统要求远距离通信,所以有对外连接的串口相互之间的数据共享。单片机的并行端口也能相互连接来进行数据通信。要求互设时间,可以在IO口连接一时钟模块,这里选择DS1302时钟芯片实现,需要用到按键对时间设置,显示则各自需要数码管。在本次设计中硬件部分:对于两片89C52采用RS232进行双机通信硬件的连接方法如图所示。电平转换芯片采用MAX232,其连接一般采用双绞线。发送方的数据由串行口TXD段输出,经过电平转换芯片MAX232将TTL电平转换为RS232电平输出,经过传输线将信号传送到接收端。接收方也使用MAX232芯片进行电平转换后,信号到达接收方串行口的接收端。接受方接收后在数码管上显示接收的信息。为提高抗干扰能力,还可以在输入输出端加光耦合进行光电隔离。软件部分:通过通信协议进行发送和接收。初始时两个数码管显示初始值。单片机A对B进行时间设置前要先对自己设置时间,此时显示标志;设置之后需对B设时间,再显示标志开始。通过通信协议进行发送接收,A机在设置时可在B机上同时看到显示。与主机发送来的检验和进行比较,若检验和相同则发送字符给主机TXDAT89C52RXDR2IN T2INTXDAT89C52RXDR2IN T2IN MAX232T2OUT R2OUTTXDAT89C52RXDT2IN T2OUT MAX232R2OUT R2IN硬件设计原理2.2.1单片机系统STC89C52芯片:有8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。单片机有32根输入/输出线,组成4个8位并行输入/输出接口,分别称为P0口、P1口、P2口、P3口。每个接口都由锁存器、输出驱动器和输入缓冲器组成。P0口和P2口还可用于对外部存储器访问的地址和数据总线。P0口作为I/O接口使用时,输出级属于开漏电路,必须接上拉电阻才有高电平输出。在TXD和RXD处接一个下载口下载程序。单片机最小系统或称为最小应用系统,是指利用单片机自身的资源,用最少的辅助元件组成一个可以工作的系统。包括电源(地)、晶振(一般使用11.0592MHz或者12MHz)和复位电路。图2.1单片机最小系统振荡电路:如图可见,由两个30pF的电容与11.0592MHz的晶振构成稳定的自激振荡器,属于内时钟方式。这两个电容对频率有微调的作用,为减少寄生电容,振荡器和电容应尽可能安装得与单片机芯片靠近。复位电路:在RST复位输入上接入10uF电容至VCC端,在接一个10K电阻接地,组成上电复位电路。上电原理是,在加电时,Vcc通过电容提供给RST端一个短暂的高电平信号,此后该高电平信号随Vcc对电容的充电过程而逐渐回落,即RST高电平持续时间取决于电容的充电时间。上电时,vcc的上升时间约为10ms,而振荡器的起振时间取决于振荡频率。DS1302时钟模块芯片简介:实时时钟电路DS1302是一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振。工作电压为2.5V~5.5V。本项目采用三线接口通过5、6、7脚与CPU进行同步通信。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302的引脚排列,其中Vcc2为主电源,VCC1为后备电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc>2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数图2.2DS1302电路图据输入输出端(双向)。SCLK为时钟输入端。备用电源Vcc1,可以用电池或者超级电容器(0.1F以上)。如果要长时间保证时钟正常,选用小型充电电池。可以用老式电脑主板上的3.6V充电电池。如果断电时间较短(几小时或几天)时,就可以用漏电较小的普通电解电容器代替。100μF就可以保证1小时的正常走时。DS1302在第一次加电后,必须进行初始化操作。初始化后就可以按正常方法调整时间。本项目有100μF电解电容,也采用了在备用电源处使用3V的电池供电。二极管的作用是给100uF的电容充放电。下图是DS1302在本设计中的原理图:电平转换用8051串行接口通信,如果两台8051单片机之间的距离很近(不超过1.5m),可以采用直接将两台8051单片机的串行接口直接相连,利用其自身的TTL电平(0-5V)直接传输数据信息。如果传输距离较远(超过1.5m),由于传输线的阻抗与分布电容,会产生电平损耗和波形畸变,以至于检测不出数据或数据出错。RS-232C对电器特性、逻辑电平和各种信号线功能都作了规定。
在TxD和RxD上:逻辑1(MARK)=-3V~-15V
,逻辑0(SPACE)=+3~+15V
。在RTS、CTS、DSR、DTR和DCD等控制线上:信号有效(接通,ON状态,正电压)=+3V~+15V
,信号无效(断开,OFF状态,负电压)=-3V~-15V
。为了能够同计算机接口或终端的TTL器件连接,必须在EIA-RS-232C与TTL电路之间进行电平和逻辑关系的变换。
图2.3MAX232模块原理图最大直接传输距离说明:RS-232C标准规定,若不使用MODEM,在码元畸变小于4%的情况下,DTE和DCE之间最大传输距离为15m(50英尺。DB-9连接器
:
用RS-232总线连接系统有近程通讯方式和远程通讯方式两种,近程通讯是指传输距离小于15米的通讯,可以用RS-232
电缆直接连接。15米以上的长距离通讯,需要采用调制调解器。
计算机和终端用RS-232连接的交叉“发送数据”与“接收数据”是交叉相连的,使得两台设备都能正常的发送和接收。
在于DB9相连时需要考虑RS232串口接线是公头还是母头,因为两单片机的TXD与RXD必须交叉相连。数据发送与接收线:
发送数据(TxD)——通过TxD终端将串行数据发送到MODEM。
接收数据(RxD)——通过RxD线终端接收从MODEM发来的串行数据。2.2.4数码管显示数码管段选与位选接口如图所示,设置强推挽输出,使数码管显示亮度增加。P0口与数码管段选之间接入1k的排阻限流,相比加上拉电阻会减少单片机的功耗。因为上拉电阻在IO口输出低电平时也会有电流,如果接入限流电阻就会避免这种情况,从而减少功耗。图2.4数码管显示原理图2.2.5按键模块本项目有六个按键,每个单片机三个。按键一端接地另一端接单片机的I/O口。S1、S2、S3分别标志点移位键、加1键、菜单键。图2.5按键原理图各单元模块设计流程图总设计框图两个单片机通信,每个单片机由四个模块组成。该项目原理图及PCB图是在AltiumDeigner软件下设计的。设计框图如下图所示。图2.6总设计框图设计该项目软件设计使用的是Keil编程软件。图2.7主程序流程图 UartInit();//串口初始化 Init_DS1302(5555); //初始化1302 KeyScan(); //按键扫描 DisPlayKey(); //按键响应操作 GetTime(); //获取当前ds1302的时间display(DisNum);//显示当前调整的时间display(SendNum); //显示对目标单片机的调整的时间SendString(UartNum);//发送调整时间到目标单片机程序设计主要是对时间的设置函数: Write_Data(0x8e,0x00); //写保护关 Write_Data(0x80,Sec); //初始秒值为50 Write_Data(0x82,Min); //初始分钟值为59 Write_Data(0x90,0x01); //充电 Write_Data(0xc0,0xf0); //初始化一次标示 Write_Data(0x8e,0x80);按键程序设计按键扫描:图2.8按键扫描框图 if((P1&0xe0)!=0xe0)//扫描按键管脚是否有电平变化cKey=P1&0xe0; //读出键值while((P1&0xe0)!=0xe0);//等待按键松开按键响应:图2.9按键响应框图voidDisPlayKey(void) //按键响应//如果是对自己设置时间就将自己的时间装入调整数组 if(flag==1) { temp[0]=DisNum/1000; temp[1]=DisNum%1000/100; temp[2]=DisNum%100/10; temp[3]=DisNum%10; }//如果是对对方设置时间就将发送时间装入调整数组//根据键值调整调整数组里的数字//组合调整后的数字//更改调整模式串口程序设计 图2.10串口中断流程图 SCON=0X50;//串口工作方式1 TMOD=0x20;//设定定时器1的工作方式为方式2(8位自动重装) TH1=-3; //设置串口波特率为9600 TL1=-3; TR1=1; //开启定时器 ES=1; //开串口中断//判断数据是否结束,校验if(uart_data[num-1]=='*'&&uart_data[num-2]=='*')调试说明调试方法及步骤先使用Proteus仿真软件仿真无误后将软件下载到单片机上,再实物调试。两单片机中都下载进程序后,数码管均显示初始化值5555;选择一个主机一个从机,在主机的模块中按下菜单键S3调整模式此时显示3333,对主机设置时间,主机时间从此时开始;按下标志位键选择需要调整的数,标志位的点在数字右下角;设置好主机时间后按下主机菜单键,此时显示4444表示对从机设置时间;通过标志位键和加1键设置从机时间,设置过程中主机设置的时间同步通信到从机中;设置完成后,按下菜单键,主机的数码管显示自己的时间,从机的时间从4444模式下被设置的时间开始。交换主机和从机,重复以上操作,完成本项目的通信操作。注意:主机在对从机设时间的同时自己也在计时。调试数据下面几图为Proteus仿真的步骤及数据:图3.1初始化状态图3.2对主机设置时间图3.3对从机设置时间图3.4完成时间设置故障分析硬件故障问题是电路板的问题主要有元器件虚焊、损坏和是否接线错误;1.电阻虚焊问题:若电阻正常,则通过电阻两端后应该有一个电压值。根据这个原理,用万用表逐个测量各电阻两端的电压,若飘零则说明该电路没有焊好,短路或者电阻故障,应进一步确认故障原因并处理。2.数码管无法显示:可能是上拉电阻过大,导致显示不清晰;也可能数码管灯管已坏;上拉电阻正负接反。出现乱码,则可能是码表不正确,或是程序未做消隐处理。3.单片机不能下进程序:下载时下载口P3.1(TXD)被占用,或下载口排针虚焊。检查是否为虚焊,若不是,则在TXD处焊接排针引出,通信时用排针帽带上,下载时不用帽。4.按键按下数码管的时间不变:按键虚焊没有接入I/O口或中断程序出错,或按键损坏。检查是否为损坏,是则换掉;若为虚焊,则按电机问题处理;若为程序出错可能是每个按键功能没有实现。设计注意事项:1.串行通信,使用的晶振是11.05926MHZ,波特率是9600
两块板子除与DB9的连接线有一个要交叉相连外要严格一致。
3.双机通信的基本原理是对RXD和TXD操作,RS23最大通信距离为15m。
4.DS1302电路中的100uF电容只能保证在1个小时正常走时,要使掉电后再重新下载程序则要加上电池。总结设计体会和收获:最初选择这个项目是因为之前学过微计算机原理,但真正着手才发现做一个工程不单单是学过理论知识就行的。实际的工程中需要的不仅仅是理论还要考虑实际的细节以及队员之间的团结和合理分工,这个课程考验了我们自觉性、动手能力与协作意识的任务,三个臭皮匠赛过诸葛亮,团队合作时我们更便于取长补短,相互讨论收获更大。通过这个项目的实践我们补充了之前不熟悉和没接触的知识对单片机的通信更加了解,学会使用时钟芯片和串口芯片。本项目完成了双机通信的基础要求和扩展要求,但硬件方面还可以更加完善多使用几个按键和数码管。参考文献1.《单片机微型计算机原理及接口技术》郑郁正主编.北京:高等教育出版社,2021.7
2.MCS-51单片机多及通信的组成原理及通信程序云南省邵通地区邮电局,彭宗乾3.《8051单片机实践与应用》电子爱好者的电子书附录1.原理图图6.1系统原理图图6.2RS232转接板原理图2.PCB图图6.3系统PCB3.实物图图6.44.程序代码/**************************主函数*****************************/#include"ds1302.h"#include"uart.h"#include"type.h"#include"delay.h"#include"key.h"#include"display.h"voidmain(void){ uint16_ttimenum,NewTime; uint8_tUartNum[10]; UartInit();//串口初始化 Init_DS1302(5555); //初始化1302 EA=1; //开总中断 while(1) { KeyScan(); //按键扫描 DisPlayKey(); //按键响应操作 if(flag==0) //菜单0 { GetTime(); //获取当前ds1302的时间//转换时间秒 timenum=(DateTime[0]>>4)*10+(DateTime[0]&0x0f);//转换时间分 timenum+=(DateTime[1]>>4)*1000+(DateTime[1]&0x0f)*100; display(timenum);//显示当前时间 DisNum=3333; //初始化标志位3333 SendNum=4444; //初始发送标志位4444 } if(flag==1) //菜单1 { display(DisNum);//显示当前调整的时间 Init_DS1302(DisNum);//用当前调整的时间初始化ds1302 } if(flag==2) //菜单2 { display(SendNum); //显示对目标单片机的调整的时间 //将调整的时间转换成字符UartNum[0]=(SendNum/1000)+'0'; UartNum[1]=(SendNum%1000/100)+'0'; UartNum[2]=(SendNum%100/10)+'0'; UartNum[3]=(SendNum%10)+'0'; UartNum[4]='*';//通信结束标志位 UartNum[5]='*'; UartNum[6]='\0'; SendString(UartNum);//发送调整时间到目标单片机 } if(uart_flag==1) //串口接收标志位 { NewTime=0; //接收到的设置时间//将接收到的字符时间转换成数字 NewTime=(uart_data[0]-'0')*1000 +(uart_data[1]-'0')*100 +(uart_data[2]-'0')*10 +(uart_data[3]-'0'); Init_DS1302(NewTime);//用接收到的新时间初始化1302 uart_flag=0; //标志位置零 } }}/**************************串口程序*****************************/#include"uart.h"staticuint8_tnum=0;bitbusy=0;uint8_tuart_flag;uint8_tuart_data[20];voidUartInit(void){ SCON=0X50;//串口工作方式1 TMOD=0x20;//设定定时器1的工作方式为方式2(8位自动重装) TH1=-3; //设置串口波特率为9600 TL1=-3; TR1=1; //开启定时器 ES=1; //开串口中断}voidSendData(uint8_tdat){while(busy);//等待当前字符发送结束 SBUF=dat; //发送数据busy=1;}/****************************************/*函数名称:字符串发送函数/*函数功能:发送一串字符/*入口参数:字符串首地址/*调用方式:SendString("asdfghjk");*****************************************/voidSendString(uint8_t*s){while(*s!='\0'){SendData(*s++);//发送字符}}voidUART_SER(void)interrupt4 //串口中断{if(RI) //判断若为收{RI=0; uart_data[num]=SBUF;//读取SBUF到uart_DATA数组 num++;//判断数据是否结束,校验 if(uart_data[num-1]=='*'&&uart_data[num-2]=='*') { uart_flag=1; //将串口新数据标志位置1 num=0; //清零数组num } }if(TI) //判断若为发{TI=0;busy=0;}}/**************************DS1302*****************************/#include"ds1302.h"uint8_tDateTime[7];voidWrite_A_Byte_TO_DS1302(uint8_tdat){ uint8_ti; SCLK=0; //初始时钟线置为0 _nop_(); _nop_(); _nop_();//开始传输8个字节的数据 for(i=0;i<8;i++) {//取最低位,注意DS1302的数据和地址都是从最低位开始传输的 IO=dat&0x01; _nop_(); _nop_(); _nop_(); SCLK=1; //时钟线拉高,制造上升沿,SDA的数据被传输 _nop_(); _nop_(); _nop_(); SCLK=0; //时钟线拉低,为下一个上升沿做准备 dat>>=1; //数据右移一位,准备传输下一位数据 }}uint8_tGet_A_Byte_FROM_DS1302(void){ uint8_ti,dat; _nop_(); _nop_(); _nop_(); for(i=0;i<8;i++) { dat>>=1; //要返回的数据左移一位 if(IO==1) //当数据线为高时,证明该位数据为1 dat|=0x80; //要传输数据的当前值置为1,若不是,则为0 SCLK=1; //拉高时钟线 _nop_(); _nop_(); _nop_(); SCLK=0; //制造下降沿 _nop_(); _nop_(); _nop_(); } returndat; //返回读取出的数据}uint8_tRead_Data(uint8_taddr){ uint8_tdat; RST=0; SCLK=0; RST=1;Write_A_Byte_TO_DS1302(addr); dat=Get_A_Byte_FROM_DS1302();SCLK=1; RST=0; returndat;}voidGetTime(void){ uint8_ti,addr=0x81; for(i=0;i<7;i++) { DateTime[i]=Read_Data(addr); _nop_(); _nop_(); _nop_(); addr+=2; }}voidInit_DS1302(uint16_tnum){ uint8_ttemp[4],Sec,Min; temp[0]=num/1000; temp[1]=num%1000/100; temp[2]=num%100/10; temp[3]=num%10; Min=temp[0]*16+temp[1]; Sec=temp[2]*16+temp[3]; Write_Data(0x8e,0x00); //写保护关 Write_Data(0x80,Sec); //初始秒值为50 Write_Data(0x82,Min); //初始分钟值为59 //Write_Data(0x84,0x17);//初始为24小时模式初始时间为23点 //Write_Data(0x86,0x19);//19日 Write_Data(0x90,0x01); //充电 Write_Data(0xc0,0xf0); //初始化一次标示 Write_Data(0x8e,0x80);}voidWrite_Data(uint8_tcmd,uint8_tdat){ RST=0; //初始CE线置为0 SCLK=0; //初始时钟线置为0 RST=1; //初始CE置为1,传输开始//传输命令字,要写入的时间/日历地址 Write_A_Byte_TO_DS1302(cmd); //写入要修改的时间/日期 Write_A_Byte_TO_DS1302(dat); SCLK=1; //时钟线拉高 RST=0; //读取结束,CE置为0,结束数据的传输}/**************************按键程序****************************/#include"key.h"uint8_t wei=0;uint16_t DisNum=0;uint16_t SendNum=1234;uint8_t cKey=7;uint8_t flag=0;voidKeyScan(void){ //扫描按键管脚是否有电平变化 if((P1&0xe0)!=0xe0) { cKey=P1&0xe0; //读出键值 while((P1&0xe0)!=0xe0);//等待按键松开 if(cKey==0xc0) //P2.1按下- { wei++; if(wei==4) { wei=0; } } if(cKey==0xa0) //P2.2按下+ { cKey=3; } if(cKey==0x60) //P2.2按下+ { cKey=5; } } }voidDisPlayKey(void) //按键响应{ uint8_ttemp[4];//如果是对自己设置时间就将自己的时间装入调整数组 if(flag==1) { temp[0]=DisNum/1000; temp[1]=DisNum%1000/100; temp[2]=DisNum%100/10; temp[3]=DisNum%10; } if(flag==2) //如果是对对方设置时间就将发送时间装入调整数组 { temp[0]=SendNum/1000; temp[1]=SendNum%1000/100; temp[2]=SendNum%100/10; temp[3]=SendNum%10; } //根据键值调整调整数组里的数字 if(wei==0) { if(cKey==3) { temp[0]+=1; if(temp[0]==10) { temp[0]=0; } cKey=7; } } if(wei==1) { if(cKey==3) { temp[1]+=1; if(temp[1]==10) { temp[1]=0; } cKey=7; } } if(wei==2) { if(cKey==3) { temp[2]+=1; if(temp[2]==10) { temp[2]=0; } cKey=7; } } if(wei==3) { if(cKey==3) { temp[3]+=1; if(temp[3]==10) { temp[3]=0; } cKey=7; } } if(flag==1) //组合调整后的数字 { DisNum=temp[0]*1000+ temp[1]*100+ temp[2]*10+ temp[3]; } if(flag==2) { SendNum=temp[0]*1000+ temp[1]*100+ temp[2]*10+ temp[3]; } if(cKey==5)//更改调整模式 { flag++; if(flag==3) { flag=0; } cKey=7; } }/***********************数码管显示*****************************/#include"display.h"uint8_tcodeacLEDCS[4]={0xef,0xdf,0xbf,0x7f}; uint8_tcodeacLedSegCode[10]={0x5f,0x44,0x9d,0xd5,0xc6,0xd3,0xdb,0x45,0xdf,0xd7};voiddisplay(int16_tdisnum){ uint8_ti,acLED[4]; acLED[0]=acLedSegCode[disnum/1000];//取出千位 acLED[1]=acLedSegCode[disnum%1000/100];//取出百位 acLED[2]=acLedSegCode[disnum%100/10]; //取出十位 acLED[3]=acLedSegCode[disnum%10]; //取出个位 for(i=0;i<4;i++) { P0=acLED[i];//显示相应的数字 P2|=0xf0; //前四位置1后四位不变 if(i==wei) { P0|=0x20;//表示小数点 } P2&=acLEDCS[i];//位选 Delay(2); P2=0xff;//消隐 }}/***********************延时*****************************/#include"delay.h"voidDelay(uint16_ttime){ uint16_ti,j; for(i=0;i<time;i++) { for(j=0;j<100;j++) { ; } }}单片机控制直流电机调速系统设计摘要随着社会的发展,电机可调速广泛的应用于工农业、交通运输业以及我们的日常生活。早起的电机调速主要基于模拟电路的调速。模拟电路的设计一方面难度大、调试复杂,另一方面加之元器件易老化,这对于调速系统广泛普及起到一定的制约作用。随着电力技术、微处理器技术、自动控制技术的发展,使得PWM脉宽调制技术得到空前的发展。本系统的设计正是PWM脉宽调制技术在直流电机调速的应用。研究这一技术,对于生产和生活有着积极意义。本文首先对系统架构进行介绍,让读者从宏观上把握系统的设计思想。然后分别介绍构成系统的各个模块的内容和选型。接着介绍硬件电路的设计和软件程序的设计思想。最后对系统的功能进行测试,并记录测试结果。关键词PWM;微处理器;自动控制技术;SinglechipmicrocomputercontroldcmotorspeedcontrolsystemdesignAbstractWiththedevelopmentofthesociety,adjustablespeedmotoriswidelyusedinindustryandagriculture,transportation,andourdailylife.Gettingupearlyismainlybasedontheanalogcircuitofmotorspeedcontrol.Analogcircuitdesignontheonehand,difficultandcomplexdebugging,aging,ontheotherhand,combinedwiththecomponentsforthespeedcontrolsystemwidelypopularizeplayedarole.Astheelectrictechnology,microprocessortechnology,thedevelopmentofautomaticcontroltechnology,thePWMpulsewidthmodulationtechnologygetunprecedenteddevelopment.ThedesignofthissystemisthePWMpulsewidthmodulationtechnologyintheapplicationofdcmotorspeedcontrol.Researchthetechnology,hasapositivemeaningforproductionandlife.Thispaperintroducesthesystemarchitecture,letthereaderfromonmacroscopictograspthedesignideasofthesystem.Thenintroducedrespectivelyconstitutethecontentofeachmoduleandthechoiceofthesystem.Thenintroducesthedesignofhardwarecircuitandsoftwareprogramdesignthought.Finallytestthefunctionofthesystem,andrecordtestresults.KeywordsPWM;microprocessor;automaticcontroltechnology;目录TOC\o"1-3"\h\u23791绪论 11161(一)本课题研究的背景及意义 16569(二)本课题拟要解决的问题与预期达到的目标 114254(三)本课题的行文结构安排 222493一、系统架构与方案选择 21742(一)系统架构 27726(二)方案选择性 310132二、硬件电路设计 625164(一)单片机系统电路设计 6246511.单片机最小系统电路设计 6309882.液晶显示电路设计 1024316(二)电机驱动电路与光电计数电路设计 119030(三)按键电路设计 128200三、软件设计 142319(一)软件总流程图 1415238(二)LCD1602程序设计 1531021四、系统测试 1710243(一)按键面板定义 1728502(二)系统测试 1715437五、结论 1820803致谢 1912479参考文献 20绪论(一)本课题研究的背景及意义电气传动可以简单的分为两大类,第一类是直流电气传动,第二类是交流电气传动。电机作为一种动力装置,在直流电气传动与交流电气传动中扮演重要角色。交流电气传动,顾名思义,就是用交流电机作为动力输出装置的电气传动,直流电气传动是采用直流电机作为动力输出装置的电气传动。交流电机,由于无需换向器的设计,因此使得结构简单,这对于生产和使用普及、维护维修方面都优于直流电机。但是交流电机本身不能进行调速,必须借助变频设备得以调节转速。直流电机由于其构造机理与交流电机不同,使得直流电机能进行平滑的调速,而且重要的一点是无需增加额外的调速装置,只要改变直流电机励磁电压即可实现速度的调节。随着社会的发展,电机可调速广泛的应用于工农业、交通运输业以及我们的日常生活。早起的电机调速主要基于模拟电路的调速。模拟电路的设计一方面难度大、调试复杂,另一方面加之元器件易老化,这对于调速系统广泛普及起到一定的制约作用。随着微处理技术的发展,使得数字化的调速成为现实。微处理器,可以进行复杂的逻辑分析、处理,强大的数据处理能力,这些使得模拟电路不能与之媲美,同时让数字电路在一定范围内更加真实的接近模拟电路。微处理器,由于其自身的集成性,使得在很大程度上不受外界因素,如温度、湿度、噪音等影响,极大的提高了系统的稳定性。更重要的一点是基于微处理器的系统,能更好的自动化控制,解放劳动了,提高生产效率。单片机是微处理器的一大分支,从早期的8位单片机发展今天的16位,甚至32位。从早期CPU外围需搭载较多复杂的功能电路到今天的一片单片机即是一个系统。基于单片机控制的直流电机调速系统,使得电机调速由模拟走向数字化,这使得电机调速又进了一个新的台阶。随着电力技术、微处理器技术、自动控制技术的发展,使得PWM脉宽调制技术得到空前的发展。本系统的设计正是PWM脉宽调制技术在直流电机调速的应用。研究这一技术,对于生产和生活有着积极意义。(二)本课题拟要解决的问题与预期达到的目标本课题,主要有一下几点需要解决的问题(1)针对系统的难易程度、控制方便、性价比等因素选型单片机,学习单片机的相关理论知识、开发流程、开发言语、开发工具等。(2)研究PWM脉宽调制技术理论知识,结合单片机的硬件资源,用编程语言实现PWM脉宽调制,最终对直流电机的速度进行调节。(3)一般单片机IO口的驱动能力有限,不能直接驱动直流电机,因此就要设计直流电机驱动电路,在设计中,要充分考虑系统的功能,如直流电机的正反转、起停等进行电路设计。本课题预期达到的目标能通过键盘输入装置改变电机枢电压的波形的占空比,从而实现调速。能在电机运行的过程中实现正反转的切换、能在任何时候实现电机的起停。能在液晶上实时显示直流电机转速和当前枢电压的占空比(PWM)。(三)本课题的行文结构安排1.系统架构与方案选择:从整体上把握系统架构的设计,使读者在研究本论文的伊始能有一个较为清晰的系统概念。同时这也是至上而下、模块化的设计思想。对系统中设计的模块进行分析说明。2.硬件电路设计:在分析完系统架构中每个模块的功能后,针对具体的功能进行具体的电路设计。3.软件设计:在搭好的硬件平台上进行软件设计,进行软硬件的联合调试,不断修改设计,最终满足设计要求。4.系统测试:系统设计完成以后要对功能呢进行评估、测试。一、系统架构与方案选择(一)系统架构图1:基于单片机的直流电机调速系统架构图如上图所示为本系统主要由六个模块组成,分别是单片机系统模块、液晶显示模块、按键模块、电机驱动模块、直流电机模块、光电技术模块。单片机系统模块:为本系统的核心。这也是是嵌入式系统的共性之一,将微处理器嵌入到系统之中,系统的功能可裁剪。可以根据不同的应用领域需用不同架构、不同等级的单片机。在本系统中,单片机主要用于产生PWM波形,通过改变占空比,使得电机枢电压的平均值改变,从而达到调速的目的。同时,本系统需要对电机速度进行检测,这就要求单片机具有测速功能。一个系统需要具有良好的交互性和用户体验,故本系统设置有按键输入,用户可以通过按键切换不同的功能。同时,用户可以通过液晶显示屏,实时的观察直流电机枢电压的占空比以及电机当前的速度。键盘模块:一个良好的嵌入式设计需要具有输入输出系统,键盘模块即使本系统的输入系统。当用户按下按键,单片机IO通过检测按键的状态(电平值)得知用户触发的是哪一个按键,继而转向对应的功能。拥有键盘的设计,还能在软件调试起到很大的帮助,可以通过按键改变程序的流向,通过按键的触发,知道程序运行到哪里了。液晶模块:为输出系统。单独一个单片机,虽然在运行着,但是却不能向外界传达直观信息,这样的系统是需要改进的。用于液晶显示屏的系统,可以将必要的信息实时的显示在液晶屏上,用户一是可以获取信息,二是可以判断系统的运行状态。电机驱动模块:因为单片机IO口的驱动能力很小,不能直接驱动直流电机,所以必须设计电机驱动电路。电机驱动电路属H桥电路较为常见,采用H桥电路,使得电路的换向更加方便。直流电机模块:电机作为PWM脉宽调制的对象,可以模拟该技术真实环境下的使用,同时可以验证本系统的设计是否正确。光电计数模块:当前较为常用的测速的方式有测周法与测频法。不管哪一种方式,都需要在直流电击上取得反馈信息。光电技术模块上有一对红外光电对射管、一个编码盘,这样电机转动的时候就是让光电技术模块对外输出脉冲。通过技术或者测量脉冲宽度即可达到测速的目的。(二)方案选择性1.微处理器选型:方案一:ARM:ARM既是一个公司的名字,也是该公司推出的一种微处理器架构。早期ARM公司也出售ARM架构的芯片,后来将这一方案出售给各大公司,使得ARM架构的芯片百花齐放,涌现出ARM7、ARM9、ARM11等系列产品。ARM是RISC(精简指令集)设计,本身属于32位的微处理器,但其兼容16位指令集。单周期指令、流水线执行、大多数据都在寄存器中执行等特点使得ARM具有更高的处理速度。ARM应用于高端的嵌入式、教育、移动应用等领域。ARM虽说有这么对有点,但是开发在一定程度上有难度,开发周期较长,且相对于中低端的嵌入式领域,ARM没有性价比方便的竞争力。方案二FPGA:FPGA是在可编程器件的基础上发展起来的新型产物,作为一种半定制电路出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA芯片具有容量大、集成度高、灵活性强等优点,可以完成极其复杂的时序和组合逻辑电路功能。在信号处理方面、数据传输方面、视屏图像处理等领域中得到广泛的运用。不过FPGA的开发投资大,只适用于产品研发验证阶段,不适合量产。且同样具有开发平台搭建复杂、开发难度较大等不足。方案三单片机:是将计算机的功能部件裁剪后在一块半导体硅片上集成CPU、存储器、各种输入输出接口的芯片,结构框图为图二所示。单片机产生于20世纪70年代,从当时的4位8位单片机发展到现的16位、32位。单片机已经渗透到我们生活的各个图2单片机内部结构框图领域,有它作为控制核心开发的产品比比皆是。单片机具有体积小,重量轻,抗干扰能力强,对运行环境要求不高,价格低廉,可靠性高,灵活性好,在我国的应用经久不衰,积累了丰富的开发经验。不仅如此,现在部分高档的单片机,已经将诸如ADC模块、SPI模块、IIC模块等实用电路集成到一块芯片中,系统的集成度有很大的提升,也方便了用户的开发,只要一块芯片即可完成复杂的逻辑控制。开发平台较为容易搭建、开发难度小、周期短。综上所述,选择单片机作为本系统的微处理器。集体选用宏晶公司的STC系统中的STC89C52单片机,其具体的资源以及电路设计将在硬件电路部分做说明。2.液晶显示方案选型:方案一:数码管:数码管是一系列LED发光二极管的集合。目前七段、八段居多。数码管是根据点亮不同的LED点来显示数字和简单的字符。数码管又有共阴极与共阳极之分。共阴极就是将所有LED灯的阴极接在一起,共阴极接低电平,这样只要在某个LED的阳极给高电平,就可以点亮某个LED灯,不同的点亮的LED灯的组合可以构成数字或者简单字符的图形。共阳极就是将所有LED灯的阳极连在一起,共阳极接高电平,这样只要在某个LED的阴极给低电平,就可以点亮某个LED灯,不同的点亮的LED灯的组合可以构成数字或者简单字符的图形。但是由于数码管的显示原理,决定了它只能显示数字和简单英文字符,显示信息有限,只适用于低端的、显示信息不多的设备上。方案二:液晶显示:LCD通过控制像素点偏振光出射与否而达到显示目的。一般LCD像素点很多,可以通过像素点组合成任意字符和简单图案。现在LCD已经替代CRT成为主流,价格也已经下降了很多,并已充分的普及。由于液晶是以像素点来成像,决定了它可以显示很多信息。综上所述:由于本系统显示字符信息比较多,所以选用液晶显示器作为本系统的显示模块。具体选用LCD1602,其硬件电路将会在硬件电路设计部分做说明。3输入系统方案的选择方案一:红外遥控:是基于红外线通信原理的无线按键输入方式。将待发送的基带信号加载到38K载波信号上进行调制传输,接收时对信号进行解调操作,提取基带信号。红外遥控在很多场合有着实用意义。红外遥控器为了区分按键,将每个按键编码传输,这就要接收部分有解码的模块,一般是软件解码,解码部分的程序设计比较复杂。方案二:按键输入:如图,当K1按下,按键闭合,将单片机P1.0IO口拉低至低电平。单片机内通过读取P1.0的电平状态,即可知道此时是否有按键触发,即是否有外界信息的输入。图3按键触发原理图综上所述:选择硬件电路和软件实现方便的机械按键作为本系统的输入模块。4测速方案的选择方案一:M法:M法即是测量在闸门时间内光电计数的脉冲数。单片机计数器最大的技术范围为65535次,假设闸门时间为1S,最大的计数频率为1秒钟65535次,本系统使用的光电编码有四个孔,即是电机转一圈可以产生4个脉冲。这样可以算出能测的电机的最大转速为:983025R\Min。该方案实用于高速转速的电机,且闸门时间设置越长,测量精度越高。方案二:测T法:测量两个脉冲之间的时间,从而计算出频率,继而得出转速。综上所述:测M硬件电路实现比较简单,编程也方便,在一定误差范围内选择测M法4电机驱动的选型方案一:继电器控制:通过控制两个继电器断开与关闭,可以实现电机的正反转控制,继电器也应用在一些电机转向控制的项目中。由于继电器是弱点控制强电的装置,电压电流在继电器断开后处于绝对关闭状态,所以其适应范围广。但是继电器触点与弹片接触需要一定时间,这在高速应用场合显得不足,特别是在PWM调速的应用中,需要其具有很快的开关速度。方案二:基于晶体管或者MOS管的H桥电路:H桥是经典的电机驱动电路,可以使用4个晶体管或者MOS管搭建该电路。由于晶体管或者MOS管快关速度非常快,可以在一定范围内实现平滑的速度控制。电路简单,性价比高。综上所述:选择H桥电路作为本系统的电机驱动方案。二、硬件电路设计(一)单片机系统电路设计1.单片机最小系统电路设计图4STC89C52系列单片机内部结构图如上图所示,为STC89C52单片机的内部结构图,单片机内部采用单总线的结构设计,分别是地址总线、数据总线和控制总线。STC89C52单片机属于增强型8051单片机,可以在6时钟每机器周期和12时钟每机器周期中选择,其完全兼容低版本的8051单片机。有四个通用输入输出IO口,即是P0口、P1口、P2口、P3口。可以方便的实现数据读和写,这些IO在工业自动化控制方面起到很高的作用。其中P0作为地址总线使用的时候是真正的双向口,无需在单片机外部增设上拉电阻。但是在将P0口作为通用输入输出口使用时,由于P0口内部无上拉电阻,所以要在其外部设计上拉电阻。P1口、P2口、P3口是准双向IO口,其内部都设置了上拉电路,无需在单片机外部增设上拉电阻。P3除了具有通用IO的功能,其引脚还会根据程序的设计变为特种IO口,如全双工异步串行通信的发送口与接收口,外部中断触发口、计数器计数脉冲输入口等。STC89C52内设两个外部中断,可以通过软件编程设置中断触发模式,分别可以设置低电平触发和下降沿触发。即是当打开外部中断,单片机就开始检测外部中断输入口,当引脚上出现低电平或者下降沿的时候,即触发外部中断,单片机停止当前执行的程序,转去执行外部中断程序代码,待外部中断程序执行完成以后,单片机又回到起初停止的地方继续执行。这就是一个完整的中断过程。STC89C52还设置了三个定时计数器,其中定时计数器3是增强型8051单片机特有的。定时计数器0和定时计数器1是传统单片机所固有的。定时计数器0和定时计数器1可以设置四种工作方式,最大的定时时间为65.535ms,最大的计数个数为65535次。定时计数器的实质就是一个加1计数器,当选用内部时钟作为计数脉冲源时,比如在12M晶振模式下,就知道每计数一个所需的时间,这样当计数完成后就知道计数完成所需的时间。当选用外部脉冲作为计数时钟源时,可以实现对外部事件的计数。STC89C52自带一个通用异步串行输入输出口即UART,可以异步全双工与外界进行同行,这使得单片机的应用由单机本地工作模式转向多级联网工作模式,扩展了单片机的应用范围,使得其应用更加广泛和灵活。单片机最下系统主要包含三个部分:电源电路、晶振电路、复位电路图5STC89C52系列单片机最小系统图(1)电源电路单片机的地20脚与第40为电源脚,其中第40脚接3.8V-5V的电源Vcc,第20脚为电源地。31脚EA脚为内外存储器选择脚,低电平有效,当接高电平时,单片机选用内部存储器,当接低电平时,单片机可选用外部存储器。由于本系统不加外部程序存储器,所以将EA接高电平。(2)晶振电路单片机之所有能有条不紊的运行着,得益于晶振电路。本系统使用的为11.0592Mhz的晶体振荡器,该振荡器给单片机提供时钟基准,单片机的运行严格的按照时钟基准执行。如下图所示,30PF的电容是辅助晶振起振,是一个经验值。图6STC89C52系列单片机晶振电路(3)复位电路图7STC89C52系列单片机复位电路系统上电,由于电容两端电压不能突变,故一开始单片机复位脚为高电平。然后电容通过R21形成回路进行充电,待冲完电后,电容两端为“上正下负”,即单片机复位脚为低电平。这个过程即为上电复位。单片机运行过程中,可以按下按键,强制给复位引脚两个机器周期以上的高电平,使单片机复位。所谓复位,是指让单片机从初始状态开始运行。因为有时程序会进入死循环,不通过复位,无法继续执行程序。2.液晶显示电路设计图8液晶电路图9LCD1602引脚说明根据LCD1602的规格书设计电路,其中RS、R/W、EN为控制引脚,DB0~DB7为数据引脚。在V0输出接一个10K的电位器,可以调节背光亮度。(二)电机驱动电路与光电计数电路设计图10电机驱动电路与光电计数电路电机驱动电路主要部分是L9110,L9110是专用马达控制芯片。其内部具有两通道推挽式放大器,其特点是将分立元件集成于芯片之中,使得无需搭建复杂的外围电路,使得驱动电路的性能得到提高。两个通道兼容TTL/COM电平,每同担具有800mA的电路输出能力,峰值电流高达1.5A。两通道的切换,可以很好的实现电机正反转的控制。L9110内部实质就是一个H桥电路,一个H桥电路由四个晶体管管或者MOS管组成。图11典型H桥电路如图所示为H桥电路的示意图,要使电路M转动,必须使处于对角线上的两个三极管导通,这样,只要对H桥电路提供两个控制信号,就可以很方便的实现电机正反转的控制。当控制信号为PWM信号时,就可以进行速度调节控制。电机枢电压的计算公式可以简单的看做是U=K×Vcc,其中K为枢电压波形占空比,Vcc为电源电压,占空比可在1-100%中进行变化,这样就会导致最终到电机两极的电压发生变化,这枢电压的变化,将直接使电机速度发生变化。这一个过程就称为PWM脉宽调制技术在直流电机速度调节方面的应用。PWM脉宽调制,就是改变电机枢电压的波形的占空比,使得枢电压平均值可以改变,这样我们只要改变占空比,就可以使得速度可调节。电路中一大一小的电容为滤波电容,470UF的电容滤除外界5V电源的低频成分,104PF的电容滤除外界5V电源的高频成分,这样尽可能的让后面整个用电系统得到干净的、稳定的电源供电。在电机上安置一个带槽的编码盘,这样当槽刚好达到光电对射管处,光电三极管接收到来着红外发光二极管发出的光,从而导通接地,对外则输出一个高电平的脉冲。本系统编码盘上设置有四个槽,这样电机转一圈,可以产生4个脉冲,在一闸门时间内对这些脉冲计数,再将这些数据在单片机中进行运算,最终得出速度。本系统的设计将闸门时间设为1S,这样使用计数器计数在1S时间内光电计数器传来的脉冲信号,用总的脉冲信号(三)按键电路设计图12按键电路本系统使用的按键电路也叫独立按键,这个命名是区别于矩阵键盘,矩阵键盘在这里不做介绍。如图所示,按键的一端接单片机IO口,另外一端接低电平。这样当有按键按下时,IO口被拉低为低电平,单片机内部检测IO口状态,某一时刻发现某一IO口被拉低,则证明该IO口所接的按键被按下,则执行相应的操作。一个按键对应一个功能,按键按下即为触发,单片机执行按键按下后的程序代码段即为响应。由于是机械式键盘,在按键按下或者松开的过程,会有抖动,如果不加以处理,会让单片机出现误判断。这种情况可以通过软件或者硬件电路加以解决。本系统使用软件消抖的方式,即是当按键按下,单片机读取IO口状态,初步确定按键按下了,然后延时10ms,再次读取IO口状态,如果还是表示按键按下,最后判定按键确实按下了,这段延时就消除了按键抖动。三、软件设计(一)软件总流程图图13单片机控制直流电机调速系统程序流程图总图如图所示,在开始的开始部分,进行各种初始化,本系统只要设计液晶模块的初始化和单片机内部资源的初始化,内部资源的初始化主要是定时计数器0和定时计数1的初始化。程序设计中,将定时技术器0设置为定时模式,定时时间为1ms。定时计数器1设置工作在计数模式,最大的计数范围为65535次。在程序设计中,采用软件定时形成1s的闸门时间,1s的定时时间到,读取计数数值,将这个计数数值除以4,得出电机在1秒钟所转的圈数。再将1秒钟所转的圈数乘以60就可以得出1分钟电机所转过的圈数。转速的定义刚好就是1分钟电机所转的圈数。对于PWM控制电机转速的程序设这样设计的。将一个脉冲波形的周期设置为1ms×10=10ms,转换成频率就是100Hz,这个频率可以使电机速度更加平稳,切换速度更加平滑。在程序设计中设置一个占空比变量,改变占空比,就是改变这个变量的值,这个变量的值在1-10,对应的占空比就为1-100%。一开始,单片机IO口输入高电平给电机驱动电路,控制电机朝一个方向转动,定时器开始计时。与此同时在程序中一直判断是否到改变电平状态的点,若达到,则控制单片机IO口输出低电平。然后以这种方式不断循环,最终产生连续不断的PWM波形。(二)LCD1602程序设计图14液晶初始化流程图如图所示,完成LCD1602的一些列的初始化设置。其中显示模式可以设置光标是否显示移动,是否闪烁,显示内容是否显示移动。图15LCD1602读操作时序图图16LCD1602写操作时序图对LCD1602进行读操作的时候,读操作分为读数据寄存器和读指令寄存器。当RS为高电平时为读数据寄存器里面的内容,当RS为低电平时为读指令寄存器里面的内容。R/W为读写信号,当R/W为高电平时进行读操作,当R/W为低电平时进行写操作。EN为使能信号,在EN由高电平跳变为低电平时,液晶执行指令。从操作图上我们可以看出,三个信号是有先后之分的,也就是时序。RS信号与R/W信号要在EN信号到来之前建立,最短的建立时间为Tsp1。数据或者指令也要在EN信号到来之前建立Tsp2的时间。这些建立时间,在程序设计中用延时的方法解决。在EN信号由高电平变为低电平后,RS信号、R/W信号、数据或指令信号不能立刻改变其电平信号状态,应该继续保持Thd1、Thd2时间。四、系统测试(一)按键面板定义图17按键面板定义图如上图所示为按键面板定义图,系统工作正常,按下相应的按键,即可选中相应的功能,其直接作用于电机。(二)系统测试1电机是否能控制调速能2电机是否能控制启动或停止能3电机是否能控制正转反转能4是否能实时显示占空比和转速能五、结论随着电力技术、微处理器技术、自动控制技术的发展,使得PWM脉宽调制技术得到空前的发展。本系统的设计正是PWM脉宽调制技术在直流电机调速的应用。研究这一技术,对于生产和生活有着积极意义。本次基于单片机控制直流电机调速的设计取得了成功,达到了很好的控制效果。本系统能在任何时候控制电机进行正反转动、控制电机启动或者停止、控制PWM占空比。能将占空比的值和电机当前转速实时显示在液晶屏幕上。系统有很好的交互性和用户体验。加之使用STC89C52单片机作为控制核心,将使得系统更加具有实用性,有更高的性价比。不足之处,对于低速转速时,测M法优于其自身的原理,会导致最终测数来的转速的误差增大。这就需要在程序中增大闸门时间来控制这一误差。增大闸门时间。无疑会导致速度显示的实时性。所以怎样折衷这些因素,是今后本设计改善和升级时需要考虑的一个地方。致谢本次设计历经几个月的时间,在这几个月的时间里,我学会了很多以前书本上学不到的东西,让我意识到我们不光要有理论知识的支撑,还有结合实际才能把设计做好。就比如本次设计,在硬件部分,有时会出现很多新的的问题,这些问题可能我以前没有遇到过,但是通过去查找资料,结合自己所学习的理论知识,就能一步一步的调试成功。本次设计的成功,还得益于导师指导,导师提供系统框图和在关键部分建议,使得毕设的进程更加顺利,系统更加完善,再次感谢我的导师!要做好一个设计,还需要在一次失败之后有重新前进的勇气与坚强,这些是我通过本次毕业设计收获的。相信这些会对我今后的学习,工作及生活产生积极的意义。最后,再次感谢在本次设计中给予我帮助的老师和同学!参考文献温州职业技术学院基于单片机的温度控制系统设计说明书课题名称:基于单片机的温度控制系统作者:魏国琦学号:14013425系别:机械工程系专业:数控维修指导老师:林潘忠专业技术职务2021年5月浙江温州摘要温度是日常生活中无时不在的物理量,温度的控制在各个领域都有积极的意义。很多行业中都有大量的用电加热设备,如用于热处理的加热炉,用于融化金属的坩锅电阻炉及各种不同用途的温度箱等,采用单片机对它们进行控制不仅具有控制方便、简单、灵活性大等特点,而且还可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量。因此,智能化温度控制技术正被广泛地采用。本温度设计采用现在流行的AT89S51单片机,配以DS18B20数字温度传感器,该温度传感器可自行设置温度上下限。单片机将检测到的温度信号与输入的温度上、下限进行比较,由此作出判断是否启动继电器以开启设备。本设计还加入了常用的数码管显示及状态灯显示灯常用电路,使得整个设计更加完整,更加灵活。该设计已应用于花房,可对花房温度进行智能监控。【关键词】温度箱,AT89S51,单片机,控制,模拟目录一、引言 11.1 温度控制系统设计的背景、发展历史及意义 11.2 温度控制系统的目的 11.3温度控制系统完成的功能 2二、总体设计方案 22.1方案一 22.2方案二 2三、DS18B20温度传感器简介 93.1温度传感器的历史及简介 93.2DS18B20的工作原理 9 9 113.3DS18B20的测温原理 11 11 13四、单片机接口设计 144.1设计原则 144.2引脚连接 14 14 14 15五、系统整体设计 165.1系统硬件电路设计 16
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水库防汛调度专员岗位招聘考试试卷及答案
- 增资扩股协议书理财风险点
- 学校的治安联防协议书
- 补充协议书交货时间
- 环评合同终止协议书
- JIT快速补货协议
- 房屋交换协议书用英语写
- 嘉兴滨江花园托管协议书房
- 钢板桩支护基坑施工计划
- 演员需与平台签协议书
- CJJ-T 82-2012 园林绿化工程施工及验收规范培训课件
- 声屏障施工验收标准方案
- 2025-2030中国煤矿行业发展分析及投资前景与战略规划研究报告
- 2025全国青少年信息素养大赛初赛C试题及参考答案
- 2025辽宁能源集团所属铁法能源公司招聘96人笔试参考题库附带答案详解
- 金属凝固理论与技术
- 2025年中国工艺美术馆面向社会招聘工作人员2人笔试历年典型考题及考点剖析附带答案详解
- 编制说明-《绿色电生理导管消融临床技术规范》系列
- 民兵护路基本知识培训课件
- 2025年四川高考地理真题(含答案)
- 2025年初级(五级)仓储管理员(仓库保管)职业技能鉴定《理论知识》真题卷(后附答案和解析)
评论
0/150
提交评论