《2022年直流伺服电机控制系统设计 .pdf》由会员分享,可在线阅读,更多相关《2022年直流伺服电机控制系统设计 .pdf(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、电 子 信 息 与 电 气 工 程 系课程设计报告设计题目:直流伺服电机控制系统设计系别:电子信息与电气工程系年级专业:学号:学生姓名:2006 级自动化专业计算机控制技术课程设计任务书名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 31 页 -1 论文题目直流伺服电机控制系统设计设 计类型导师姓名丁健干开峰主要内容及目标设计对象是直流伺服电机实验台,设计一个计算机控制的直流伺服电机控制系统。由测量元件(位移传感器)对被控制对象(电机)的被控参数(位移)进行测量,由变换发送单元(A/D 转换器)将被控参数变成一定形式的信号,送给控制器CPU,控制器将测量信号(实际位移量)与给定信
2、号(位移量)进行比较,若有误差则按预定的控制规律产生一控制信号驱动执行机构(伺服电机控制电源)工作,使被控参数(实际位移量)与给定信号(位移量)保持一致。其电机位置随动系统:312(T s+1)()(1)(1)KG ss T sT s其中:1T=1.8,2T=0.035,3T=0.15,K=100,控制算法选用数字PID 控制。设计条件1 PC 机一台,教学实验箱一台;计划学生数及任务3 人(1):明确课题功能。(2):把复杂问题分解为若干模块,确定各模块处理方法,画出流程图。(3):存储器资源分配(4):编制程序,根据流程图来编制源程序(5):对程序进行汇编,调试和修改,直到程序运行结果正确
3、为止。计划设计进程一、总体方案设计二、控制系统的建模和数字控制器设计三、硬件的设计和实现1、选择计算机字长(选用51 内核的单片机)2、设计支持计算机工作的外围电路(EPROM、RAM、I/O 端口、键盘、显示接口电路等);3、设计输入信号接口电路;4、设计输出控制电路;5、其它相关电路的设计或方案(电源、通信等)。四、软件设计1、分配系统资源,编写系统初始化和主程序模块框图;2、编写 A/D 转换和位置检测子程序框图;3、编写控制程序和D/A 转换控制子程序模块框图;4、其它程序模块(显示与键盘等处理程序)框图。五、编写课程设计说明书,绘制完整的系统电路图(A3 幅面)。参考文献1于海生计算
4、机控制技术M 北京:机械工业出版社,2007.6 2、周荷琴等微型计算机原理及接口技术M 合肥:中国科技大学出版社,2008.6 3、李刚民等单片机原理及应用技术M 北京:高等教育出版社4、楼然苗 51 系列单片机设计实例M 北京:北京航空航天大学出版社5、计算机控制技术实验指导书名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 31 页 -2 摘要随着集成电路技术的飞速发展,微控制器在伺服控制系统普遍应用,这种数字伺服系统的性能可以大大超过模拟伺服系统。数字伺服系统可以实现高精度的位置控制、速度跟踪,可以随意地改变控制方式。单片机和DSP 在伺服电机控制中得到了广泛地应用,用单片
5、机作为控制器的数字伺服控制系统,有体积小、可靠性高、经济性好等明显优点。本设计研究的直流伺服电机控制系统即以单片机作为核心部件,主要是单片机为控制核心通过软硬件结合的方式对直流伺服电机转速实现开环控制。对于伺服电机的闭环控制,采用PID控制,利用 MATLAB 软件对单位阶跃输入响应的PID校正动态模拟仿真,研究 PID控制作用以及 PID各参数值对控制系统的影响,通过试凑法得到最佳 PID参数。同时能更深度地掌握在自动控制领域应用极为广泛的MATLAB 软件。关键词:单片机直流伺服电机 PID MATLAB 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 31 页 -3 目录1
6、.引言 .42单片机控制系统硬件组成.42.1 微控制器.42.2 DAC0808 转换器 .52.3 运算放大器.52.4 按键输入和显示模块.52.4.1 按键输入.52.4.2 显示模块.62.5 直流伺服电动机.63.单片机控制系统软件设计.73.1 主程序.73.2 键盘处理子程序.84.控制系统原理图及仿真.94.1 控制系统方框图.94.2 控制系统电路原理图.94.3 Proteus 仿真结果.10 5.Simulink 组件对直流伺服控制系统的仿真.10 5.1 MATLAB与 Simulink 简介 .10 5.1.1 MATLAB简介.10 5.1.2 Simulink
7、简介.11 5.2 直流伺服电机数学模型.11 5.3 系统 Simulink 模型及时域特性仿真.11 5.3.1 开环系统Simulink 模型及仿真 .12 5.3.2 单位负反馈系统Simulink 模型及仿真 .12 5.4 PID 校正 .13 5.4.1 PID 参数的凑试法确定.14 5.4.2 比例控制器校正.14 5.4.3 比例积分控制器校正.16 5.4.4 PID 控制器校正 .18 6小结.21 参考文献.21 附录 .22 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 31 页 -4 1.引言本设计的单片机控制直流伺服电机系统是一个开环的自动控制系
8、统控制系统。是以单片机为控制器,通过按钮设置设定值输入到单片机,单片机对输入信号处理后输出控制信号,经DA转换器 DAC0808 转换后把数字信号转变为模拟电压,再经放大器放大后,去控制伺服电机工作,进而控制电机向着预定的转速转动。同时单片机处理的数字信号通过LCD 来显示,实时显示单片机的转速值。另外本设计还利用了MATLAB 软件,利用 Simulink构造直流电机控制系统模型,通过对各个单元部件的参数进行设定,进而对直流伺服电机系统控制进行仿真,就其仿真功能对系统进行时域分析。2单片机控制系统硬件组成本系统是由一片单片机、矩阵式键盘,DAC0808转换器、运算放大器、显示模块和一台直流伺
9、服电机组成,另外通过Proteus7.4软件进行仿真。2.1 微控制器选用 AT89C52单片机。AT89C52 是 51 系列单片机的一个型号,它是 ATMEL公司生产的。AT89C52是一个低电压,高性能CMOS 8 位单片机,片内含8k bytes的可反复擦写的 Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8 位中央处理器和Flash存储单元,功能强大的AT89C52 单片机可为您提供许多较复杂系统控制应用场合。AT89C52有 40 个引脚,32 个外部双向输入
10、/输出(I/O)端口,同时内含2 个外中断口,3 个 16 位可编程定时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S 系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。AT89C52有 PDIP、PQFP/TQFP及 PLCC等三种封装形式,以适应不同产品的需求。主要功能特性:(1)兼容 MCS51 指令系统,8k 可反复擦写(1000 次)Flash ROM(2)32个双向I/O 口,256x8bit内部 RAM (3)3个 16 位可编程定时/计数器中
11、断,时钟频率0-24MHz (4)2个串行中断,可编程UART串行通道(5)2个外部中断源,共 6 个中断源(6)2个读写中断口线,3 级加密位(7)低功耗空闲和掉电模式,软件设置睡眠和唤醒功能图 2-1AT89C52 名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 31 页 -5 2.2 DAC0808转换器设计中采用的芯片是DAC0808,它是一个 8位DAC。图2是DAC0808 典型应用电路。图2-1中输出的模拟量是一个正电压,当需要负电压时,在DAC 的第 4引脚直接接一个3K左右的电阻即可。DAC 的第 4引脚的电流总是流入的,其最大值为1.992mA。当外接一个3K
12、的负载电阻 RL时,输出的电压是通过RL上所加的电压,最大的电压为-3K1.922mA -6V(当所有位输入都是高电平的时候),与实验中的数据相符合。需要指出的是,负载电阻的大小会影响转换时间,当负载电阻为2.5K的时候,在最坏的情况下,会使转换时间增加1.2 s。图2-2 DAC0808 典型应用电路2.3 运算放大器把 D/A 转换器的电流输出转换为电压输出,同时也是把微小的电流信号放大为较大的电压信号,以驱动电机转动。2.4 按键输入和显示模块2.4.1 按键输入采用自己设计的形如34 矩阵式按钮,按钮用于设定某一数值,即电机转速值。通过名师资料总结-精品资料欢迎下载-名师精心整理-第
13、6 页,共 31 页 -6 程序设置延时环节来消除按钮的抖动问题,这样做使矩阵式按钮硬件连线简单,同时按钮的软件设计也不复杂。2.4.2 显示模块系统采用点阵式液晶显示器,显示电机的当前转速值,通过软件设计使得连线简单。2.5 直流伺服电动机直流伺服电动机在伺服系统中控制机械元件运转的发动机.是一种补助马达间接变速装置。又称执行电动机,在自动控制系统中,用作执行元件,把所收到的电信号转换成电动机轴上的角位移或角速度输出。其主要特点是,当信号电压为零时无自转现象,转速随着转矩的增加而匀速下降。其作用可使控制速度,位置精度非常准确。直流伺服电动机的结构与直流电动机基本相同。只是为减小转动惯量,电机
14、做得细长一些。所不同的是电枢电阻大,机械特性软、线性(电阻大,可弱磁起动、可直接起动)。供电方式是他励供电,即励磁绕组和电枢分别两个独立的电源供电。控制方式有.电枢控制和磁极控制,其中改变电枢电压U调速范围较大,直流伺服电机常用此方法调速直流伺服电动机转速的计算公式如下:式中:n为转速;为磁通;U为外加电压;I、R为电枢电流和电阻;Ke为电势系数。eKRIUn名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 31 页 -7 3.单片机控制系统软件设计软件设计采用模块化设计,由主程序模块和功能实现模块两大部分组成。主程序通过读取键值处理后送到D/A 转换以达到控制电机的目的;功能实现
15、模块主要由主函数模块、键盘处理子程序和D/A 转换子程序等组成。3.1 主程序主程序首先对键盘和显示模块的程序进行初始化,通过读取键值处理后送到D/A 转换以达到控制电机的目的。主程序流程图如图2-1 所示。图 2-1 主程序流程图显示模块初始化键盘扫描程序开始读取键值电机转速显示模块键盘模块程序初始化输入值是否有效?D/A 转换N Y 名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 31 页 -8 3.2 键盘处理子程序键盘采用程序扫描的工作方式,即在特定的程序位置段上安排键盘扫描程序读取键盘状态。键盘处理子程序的程序扫描法流程图如图2-2 所示。图 2-2 键盘处理子程序的程
16、序扫描法流程图是否有键按下?延时 20ms 调用按键扫描子程序开始是否有键按下?按键散转、处理程序返回N N Y Y 名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 31 页 -9 4.控制系统原理图及仿真4.1 控制系统方框图控制系统是以单片机为控制器,通过键盘设置输入转速值,经单片机处理后送到D/A转换器,模拟信号经功率放大后驱动电机,最终电机以设定的转速值稳定旋转。图 4-1 即为控制系统方框图图 4-1 控制系统方框图4.2 控制系统电路原理图图 4-2 控制系统电路原理图按键输入AT89C52 D/A 转换驱动电机名师资料总结-精品资料欢迎下载-名师精心整理-第 10
17、页,共 31 页 -10 4.3 Proteus仿真结果图4-3 Proteus仿真图利用 Proteus 7.4a 进行仿真,当通过键盘选择某一数值时,电机转速即为相应的设定值,并在仿真电路图中电机下方显示电机对应转速值的变化及最终稳定值。图4-3 中仿真图是当通过按键设定值为158时,电机下方液晶显示器即显示158,表明电机转速为158 r/min。经多次仿真分析,某些时候与键盘输入值相比较得知当电机响应输入值时有很小的稳态误差存在,原因是没有加入反馈环节。以下利用MATLAB 仿真软件研究 PID反馈控制对直流伺服电机控制系统的作用。5.Simulink 组件对直流伺服控制系统的仿真5.
18、1 MATLAB与 Simulink简介5.1.1 MATLAB简介MATLAB 软件推出并应用到自动控制领域后,极大地改善了自动控制系统的动态仿真和性能分析环境。MATLAB(Matrix Laboratory,矩阵实验室)是一个适用于科学计算和工程应用的数学软件系统。自1982年由 Mathworks软件公司推出后,经二十多年的发展,现已是IEEE 名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 31 页 -11 组织认可的最优化的科技应用软件,成为大学教学和科研中最常用的工具。掌握了MATLAB的应用,对直流伺服电机控制效果的改善,肯定有着意想不到的帮助。该软件具有以下特
19、点:(1)数值运算功能强大;(2)编程环境简单;(3)数据可视化功能强;(4)丰富的程序工具箱;(5)可扩展性能强等。5.1.2 Simulink 简介Simulink 是MATLAB 软件的扩展,它是实现动态系统建模和仿真的一个软件包,他与MATLAB 语言的主要区别在于,其与用户的交互接口是基于Windows模型化图形输入,使得用户可以把更多的精力投入到系统模型的构建,而非编程上。使用 Simulink 进行仿真一般分为两步:用户首先需要在仿真模型编辑窗口中搭建好自己的仿真模型,设置好具体模型参数和仿真参数,然后就可以开始仿真,Simulink 将根据用户搭建的模型,模拟系统在用户设定条件
20、下的具体行为。下面将以直流伺服电机的自动控制为例,演示 MATLAB 中 Simulink 仿真的应用。5.2 直流伺服电机数学模型直流伺服电机开环系统结构图如图图5-1所示图5-1 直流伺服电机开环系统结构图其中直流伺服电机的传递函数为100(0.151)()(1.81)(0.0351)sG ssss5.3 系统 Simulink模型及时域特性仿真对于单输入单输出系统,在经典控制理论中可用传递函数来描述系统,获得系统的动态响应。同样,S仿真软件也有传递函数模块,可方便地描述系统的特性,且简化了仿真模型。从模块库窗口创建系统模型如图1所示,选信号源模块组中的阶跃信号模块为输入信号,以输出模块组
21、中的示波器模块作为显示器来观察系统阶跃响应。在模型窗口设置传递函数模块的参数和特性,运行仿真模型,得系统阶跃响应曲线。100(0.151)(1.81)(0.0351)ssssU(S)N(S)名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 31 页 -12 5.3.1 开环系统 Simulink 模型及仿真图5-2 直流伺服电机开环系统Simulink 模型端口 Step 为直流伺服电机的输入电压,输出端口为电机转速。图5-3 是开环系统的仿真结果,即开环系统的阶跃响应曲线,也即直流伺服电机输入1V单位阶跃电压时。电机的转轴输出呈线性变化。图5-3 开环系统仿真图由图 5-3 响
22、应曲线可知,系统没有在可视范围内达到稳态值“1”,但从理论上分析知此系统属稳定系统,在足够时间内是能够达到稳定状态的。上述分析说明:系统的响应速度较慢,系统性能较差,从而可能不具备使用价值。这个分析结果表明,该系统没有达到预期的设计要求。5.3.2 单位负反馈系统Simulink 模型及仿真图5-4 是在图 5-3 的基础上加一个单位负反馈环节,构成直流伺服电机的单位负反馈系统,单位负反馈系统Simulink 模型如图 5-4 所示名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 31 页 -13 图5-4 直流伺服电机单位负反馈系统Simulink 模型图5-5 是单位负反馈系
23、统的仿真结果图5-5 单位负反馈系统仿真图系统超调:40%,调节时间:2 s。由图 5-5 和开环阶跃响应曲线相比较知:系统应经可以达到较快达到稳态值。说明闭环单位负反馈系统对系统性能有很大改善。5.4 PID 校正为了使系统能够达到设计要求,我们可以在图5-4 前向通道上设置一个控制器构成闭环系统来校正直流伺服电机。基于PID控制(闭环)的直流伺服电机系统框图如图5-6所示。图5-6 基于 PID控制(闭环)的直流伺服电机系统框图其控制过程为由测速发电机输出电压得到直流电机输出量,即转速,通过转速反馈后与系统输入信号进行比较,得到偏差信号。偏差信号作为 PID控制器的输入信号根据设定的PID
24、控制名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 31 页 -14 规律计算后输出信号U,作为控制量输入给直流电机,从而实现整个直流电机调速系统的闭环负反馈 PID控制。5.4.1 PID 参数的凑试法确定增大比例系数KP一般系统响应利于减小静差,但是过大会增大超调,并产生震荡,是稳定性变坏。增大TI 有减小超调,减小震荡,是系统更稳定,但静差消除变慢。增大微分TD 利于加快系统响应时间,使超调减小,稳定性增加,但对扰动的抑制能力减弱,对扰动有较敏感的响应。在凑试时,对参数实行下述先比例,后积分,再微分的整定步骤。(1)首先只整定比例部分。即将比例部分由小变大,并观察相应的系
25、统响应,直到得到反应快,超调小的响应曲线。如果系统没有静差或静差已小到允许范围内,并且响应曲线已属满意,那么只需用比例控制器即可,最优比例系数可由此确定。(2)如果在比例调节的基础下系统的静差不能满足设计要求,则须加入积分环节。整定时首先置积分时间T1 为一较大值,并将经第一步整定得到的比例系数略微缩小,然后减小积分时间,并在保持系统良好动态性能的情况下,静差得到消除。在此过程中,可根据响应曲线的好坏反复改变比例系数与积分时间,以期得到满意的控制过程与整定参数。(3)若使用比例积分控制器消除了静差,但动态过程经反复调整仍不能满意,则可加入微分环节,构成比例积分微分控制器。在整定时,可先置微分时
26、间Td为零。在第二步整定的基础上,增大 Td,同时相应的改变比例系数和积分时间,逐步凑试,以获得满意的调节效果和控制参数。5.4.2 比例控制器校正为能要求系统在特别短的时间内达到设定的转速值,比例增益 K 应尽可能大,以提高比例作用的强度,但必须同时考虑系统的稳定性。采用单纯的比例控制,其调整时间和超调量是一对矛盾,无法同时满足:要缩短调整时间,K 要加大;而K 加大,超调量也同时加大了。经过多次参数选择,当K。=10时,阶跃响应曲线较为理想,呈现接近075衰减率的振荡过程。比例控制系统Simulink 模型及仿真图5-7 比例控制系统 Simulink 模型名师资料总结-精品资料欢迎下载-
27、名师精心整理-第 15 页,共 31 页 -15 Kp=1时仿真图Kp=3时仿真图名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 31 页 -16 Kp=5时仿真图由以上三个比例控制的仿真图可知,增大比例系数 KP 一般系统响应利于减小静差,但是过大会增大超调,并产生震荡,是稳定性变坏。5.4.3 比例积分控制器校正积分控制的作用是只要系统存在误差,积分控制作用就不断地积累,输出控制量以消除误差,因而,只要有足够的时间,积分控制将能完全消除误差。在比例环节基础上加入积分环节,只要参数设置合适就能完全消除系统偏差。比例积分控制系统Simulink 模型图5-8 比例积分控制系统S
28、imulink 模型名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 31 页 -17 Kp=1、Ki=1时仿真图Kp=1、Ki=3时仿真图名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 31 页 -18 Kp=5、Ki=3时仿真图由以上三个比例积分控制的仿真图可知,增大 TI 有减小超调,减小震荡,使系统更稳定,但静差消除变慢。PI控制参数设置适当可使系统静差为零。经多次试凑,选KI=1.5.4.4 PID 控制器校正比例积分作用虽能是系统误差为零,但系统动态性能不能得到满足。积分作用太强可能会使系统出现震荡。微分控制具有超前控制能力,可抑制最大动态偏差,改善系
29、统动态性能,提高系统的稳定性。为此,在PI作用基础上引入微分控制,构成PID控制器,以使系统满足稳、准、快的要求。PID控制控制系统 Simulink 模型如图图5-9 PID 控制系统 Simulink 模型名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 31 页 -19 Kp=1、Ki=1、Kd=0.1 时仿真图和PI控制闭环响应曲线相比较可知:系统响应时间变短,超调变小,但仍不符合要求;Kp=5、Ki=1、Kd=0.1 时仿真图与KP=1、KI=1、KD=0.1时的仿真图相比,系统超调和调节时间都变小,仍然不符合要求,继续校正。需加大Kp及Ki。名师资料总结-精品资料欢迎
30、下载-名师精心整理-第 20 页,共 31 页 -20 Kp=12、Ki=1、Kd=0.5时仿真图由上曲线知此时系统有微量的超调,进一步加大Ki 时超调为零。Kp=12、Ki=1、Kd=0.9时仿真图经过多次校正参数,此时当 Kp=12、Ki=1、Kd=0.9时系统超调量为0,稳态误差为 0,性能满足设计要求,稳定、准确、快速得到了完满的统一。名师资料总结-精品资料欢迎下载-名师精心整理-第 21 页,共 31 页 -21 6小结控制系统特点是以单片机为控制器,通过键盘设置输入转速值,使得电机的转速设置方便快捷,另外又通过软件实现系统转速设置范围的保护。但在 proteus 中没能实现闭环系统
31、的PID控制。此缺点通过软件弥补,在MATLAB 软件中的SIMULINK中进行了直流伺服电机的开环控制系统仿真,单位闭环控制系统仿真,闭环 PI控制系统仿真,闭环 PD 控制仿真,闭环 PID控制仿真能够更好的测试和控制系统的性能,从而为设计事物提供了更准确的性能指标。参考文献1 于海生.计算机控制技术M.北京:机械工业出版社,2007.6 2 周荷琴等.微型计算机原理及接口技术M.合肥:中国科技大学出版社,2008.6 3 张毅刚等.单片机原理与应用设计M.北京:电子工业出版社4 楼然苗.51 系列单片机设计实例M.北京:北京航空航天大学出版,2008.6 5 陈小忠等.单片机接口技术实用
32、子程序.北京:人民邮电出版社,2005.9 6 计算机控制技术实验指导书名师资料总结-精品资料欢迎下载-名师精心整理-第 22 页,共 31 页 -22 附录单片机控制程序清单:#include reg52.h/#include absacc.h/#include stdio.h/#include math.h/#include string.h#define unchar unsigned char#define unint unsigned int void wdata(unchar dat);/write data function void wcom(unchar com);/writ
33、e command function void delay(unchar t);/delay function sbit rw=P31;/rw sbit rs=P30;/rs sbit en=P32;/en#define MAX_LEN 16/数据最大长度#define count_M1 50000#define H_0(65536-count_M1)/256#define L_0(65536-count_M1)%256 unchar code tab2=0 x31,0 x32,0 x33,0 x41,0 x34,0 x35,0 x36,0 x42,0 x37,0 x38,0 x39,0 x4
34、3,0 x0e,0 x30,0 x0f,0 x44;/键盘求值表unchar code tab3=Target Value:;unchar code tab4=;unchar code tab6=input ERR;unchar serial_dataMAX_LEN,serial_len=0,sure_flag=0;void wdata(unchar dat);/write data function void wcom(unchar com);/write command function void delay(unchar t);/delay function void keyscan(v
35、oid);/键盘操作程序unchar scankey(void);/键盘求值程序void chushi(void);/初始化程序/void init_serial(void);/串口初始化/void uart_serial(void);/串口主程序void lcd_write(void);/液晶显示待发送指令unchar jisuan(void);/计算结果为十进制unint freq=0;/频率变量sfr16 DPTR=0 x82;/申明 DPTR char times=0;/计算 T0 中断次数/delay function/P0=0 x00;/中断初始化名师资料总结-精品资料欢迎下载-名
36、师精心整理-第 23 页,共 31 页 -23 void init_interrup(void)IE=0 x8a;/启用 T0,T1 中断TMOD=0 x51;/T1为计数器,T2 为定时器,都采用mode1 TH0=H_0;TL0=L_0;TH1=0;TL1=0;TR0=1;TR1=1;void delay(unchar t)unchar a,b;for(a=0;at;a+)for(b=0;b128;b+);/The function for write data to LCD screen void wdata(unchar dat)P1=dat;rs=1;rw=0;en=0;delay(
37、6);en=1;/The function for write command to LCD screen void wcom(unchar com)P1=com;rs=0;rw=0;en=0;delay(6);en=1;/初始程序void chushi(void)unchar i;wcom(0 x01);wcom(0 x38);wcom(0 x0c);名师资料总结-精品资料欢迎下载-名师精心整理-第 24 页,共 31 页 -24 wcom(0 x06);delay(4);wcom(0 x80);delay(4);for(i=0;i4)|0 xf0);/将 temp 中的高四位向右移动4 位
38、,与 0 xf0 相加,最后求反可以得到是那行按下if(temp=1)c=c+0;/将行 P2.4 的值加上列的值else if(temp=2)c=c+4;/将行 P2.5 的值加上列的值else if(temp=4)c=c+8;/将行 P2.6 的值加上列的值else if(temp=8)c=c+12;/将行 P2.7 的值加上列的值else 名师资料总结-精品资料欢迎下载-名师精心整理-第 25 页,共 31 页 -25 c=0;d=tab2c;return(d);/最后返回行加列的值/lcd_write function void lcd_write(void)unchar write_
39、0,write_1,jian_zhiMAX_LEN;for(write_0=0;write_0MAX_LEN;write_0+)serial_datawrite_0=0;/清空发送缓冲数组wcom(0 x0f);/将光标置在oxc0 处serial_len=0;delay(2);while(1)write_1=0 xc0;/光标地址wcom(write_1);for(write_0=0;write_0=1)write_1-=1;wcom(write_1);write_0-=1;wdata(tab40);serial_datawrite_0=0;serial_len-;else if(jian_
40、zhiwrite_0=0 x0f)/确定发送的指令名师资料总结-精品资料欢迎下载-名师精心整理-第 26 页,共 31 页 -26 if(serial_len=3)if(serial_data02);else if(serial_data15);else if(serial_data26)sure_flag+;else;else sure_flag+;/确定的标志位goto write_out;/退出本次输入指令 else wdata(jian_zhiwrite_0);if(jian_zhiwrite_0=0 x39)serial_datawrite_0=jian_zhiwrite_0-0 x
41、30;else serial_datawrite_0=jian_zhiwrite_0-0 x37;write_1+;write_0+;serial_len+;write_out:delay(1);/合并数组void serial_and(void)unchar and0,and1,and2=0;and1=serial_len/2;for(and0=0;and0and1;and0+)名师资料总结-精品资料欢迎下载-名师精心整理-第 27 页,共 31 页 -27 serial_dataand0=(serial_dataand0+and2+4)|serial_dataand0+and2;/键盘操作
42、void keyscan(void)unchar ks_0,ks_1;delay(2);/延时去抖动P2=0 x0f;if(P2&0 x0f)!=0 x0f)/延时后在判断一次,去除抖动影响 ks_0=scankey();/求键盘值P2=0 x0f;while(P2&0 x0f)!=0 x0f);/等待放松while(ks_0=0 x41)switch(ks_0)case 0 x41:chushi();lcd_write();/调用写指令程序if(sure_flag=1)&(serial_len=3)&(jisuan()256)/发送指令的条为确认发送标志sure_flag=1&本次发送指令的
43、个数erial_len=6 sure_flag=0;/清除确定标志/serial_and();/合并数组/serial_len/=2;/uart_serial();/调用发送指令程序/P0=serial_data0;P0=jisuan();/P0=255;else wcom(0 xc0);for(ks_0=0;ks_010;ks_0+)wdata(tab6ks_0);for(ks_0=0;ks_010;ks_0+)delay(250);名师资料总结-精品资料欢迎下载-名师精心整理-第 28 页,共 31 页 -28 delay(1);break;default:break;ks_0=0;sur
44、e_flag=0;serial_len=0;chushi();/初始化,等待下一次发送指令wcom(0 xc0);for(ks_1=0;ks_1MAX_LEN;ks_1+)/清空发送缓冲数组serial_dataks_1=0;/求取输入值转换为十进制unchar jisuan(void)unchar jieguo;if(serial_len=3)jieguo=serial_data0*100+serial_data1*10+serial_data2;else if(serial_len=2)jieguo=serial_data0*10+serial_data1;else if(serial_l
45、en=1)jieguo=serial_data0;else;/jieguo2;return(jieguo);/t0 中断,计算频率void T0_1S(void)interrupt 1 TH0=H_0;TL0=L_0;if(+times=20)times=0;TR1=0;TR0=0;DPL=TL1;DPL=TH1;freq=DPTR;名师资料总结-精品资料欢迎下载-名师精心整理-第 29 页,共 31 页 -29 /主函数 main void main(void)P0=0 x00;P1=0 x00;P2=0 x0f;delay(5);chushi();/调用液晶初始化程序init_interrup();/计数、定时中断初始化while(1)if(P2=0 x40)/判断是否有键按下/调用键盘扫描求值程序delay(1);wcom(0 x0c);名师资料总结-精品资料欢迎下载-名师精心整理-第 30 页,共 31 页 -30 课程设计评语指导教师评语设计成绩注名师资料总结-精品资料欢迎下载-名师精心整理-第 31 页,共 31 页 -