版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
交通与汽车工程学院课程设计说明书课程名称:汽车电控系统实习及课程设计课程代码:6010319题目:机油压力控制系统2010级汽车电子一班年级/专业/班:学生姓名:学号:开始时间:2014年1月6日完成时间:2014年1月10日课程设计成绩:学习态度及平技术水平与实际时成绩(30)报告)撰写质量(45)总分(100)创新(5)能力(20)指导教师签名:年月日-0-目录摘要…………………………21引言………………………31.1问题的提出……………31.2任务与分析……………32方案设计…………………42.1系统设计方案…………42.2系统总体框图…………43系统硬件设计……………53.1AT89C51单片机……………………53.2ADC0808………………83.3时钟电路………………113.4复位电路………………113.5MPX41一五压力传感器…………………123.6LM061L液晶显示器…………………123.7直流电机控制电路……………………一三3.8黄灯预警电路…………144系统软件设计……………一五4.1Proteus软件环境介绍………………一五4.2KileuVision4软件环境介绍………一五4.3Protel软件环境介绍………………164.4程序流程图…………174.5位置式PID控制原理………………195系统调试过程…………20设计总结……………………26致谢…………………………27参考文献……………………28附录1………………………29-1-摘要机油压力是汽车发动机的重要参数之一。如何利用已学知识模拟机油压力检测,并且对机油压力进行电控是开始本设计的初衷。本此设计通过以AT89C51MPX41ADC0808数据转换送入单片机进行处理,再从单片机P0口将电平信号送入液晶显示器CLED进行光报警,PCDProteus软件中进行仿真实现设计功能。关键词:AT89C51单片机机油压力电机控制-2-1引言1.1问题的提出随着进入电气时代,越来越多的电子技术被应用在现代汽车上。汽车也将由单纯的机械产品向高级的机电一体化产品方向发展。由于实时驾驶信息系统及多媒体设备在汽车上普及,汽车更具个性化、通用性、安全性和舒适性。汽车在人们的生活中不仅仅是代步工具,而逐步成为一种生活的方式。在汽车电子领域的研究成为汽车研发中最活跃的一部分。随着进入电气时代,电子测控装置被广泛应用于各种电器机械产品上,本次课程设计的任务就是基于单片机设计机油压力电控系统,检测机油压力,对油压超过预定值则使用LED报警,并且能够进行控制。1.2任务与分析AT89C51MPX41ADC0808数据转换送入单片机进行处理,再从单片机P0口将电平信号送入液晶显示器LM061LLED,以并在Proteus软件中进行仿真实现设计功能。本系统可以分为以下6大主要模块:(1)AT89C51模块:用于数据处理,初值设定。(2)ADC0808:进行数据转换,将压力传感器采集的模拟信号转换为数字信号。(3)MPX41一五:采集模拟压力信号。(4)液晶显示器LM061L:用于实时的显示机油压力信息。(5)LED二极管:超过机油压力下限值,则LED亮灯报警。(6)直流电机:当机油压力过高时,通过电机控制活塞阀,从而控制机油压力。-3-2系统方案设计2.1系统设计方案本此设计通过以AT89C51单片机为中心,通过MPX41一五模拟产生一个信号,通过ADC080820—80(MPaP0口将电平信号送入液晶显示器LM061L实现动态显示。当检测到低于机油压力安全值(即<=20Mpa)时,由单片机控制LED进行>=80Mpa阀进行放油等紧急措施。2.2系统总体框图显示机油压力时钟电路复位电路电机控制8报警控制模拟油压采集图1系统总体框图当程序启动后,程序进入初始化阶段。时钟电路的晶振产生外部振荡脉冲信号送入AT89C51单片机的XTAL2口。单片机AT89C51执行编写在其内部的程序,处理从ADC0808送来的信号,并送到P0口输出到液晶显示器LM061L显示。当检测到低于机油压力安全值(即<=20Mpa)时,由单片机控制LED进行亮光报警,当检测到高于机油压力安全值(即>=80Mpa)时,由单片机通过电机控制活塞阀进行放油等紧急措施。-4-3系统硬件电路设计3.1AT89C51单片机通过对多种单片机性能的分析,最终认为89C51是最理想的电子时钟开发芯片。89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处ATMELMCS-51指令8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51MCS-514K字节可编程闪烁存储器和1000写/擦循环,数据保留时间为10年等特点,是最好的选择。MCS-51系列单片机是Intel公司1980年推出的高性能8位单片微型计算机主要有8031、8051、8751这三种机型,他们的指令系统与芯片引脚完全兼容,仅片内ROM有所不同。主要功能为:·8位CPU;·片内带振荡器,振荡频率f的范围为1.2-12MHZ,可有时钟输出;·128B片内数据存储器;·4KB片内程序存储器;·程序存储器的寻址范围为64KB;·片外数据存储器的寻址范围为64KB;·21B专用寄存器;·4个8位并行I/O口:P0,P1,P2,P3;·1个全双工串行I/O口,可多机通信;·2个16位定时/计数器;·中断系统有5个中断源,可编程为两个优先级;·111条指令,含乘法指令和除法指令;·有强的位寻址,位处理能力;·片内采用单总线结构;-5-图3-189C51单片机引脚图89C51单片机与早期Intel的8051/8751/8031芯片的外部引脚和指令系统完全兼容,只不过用FlashROM替代了ROM/EPROM而已。89C51单片机内部结构如图所示。图3-289C51单片机内部结构示意图-6-各引脚的功能如下:·VCC:供电电压。·GND:接地。·P0P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。·P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为FLASHP1口作为第八位地址接收。·P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此P2P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。·P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电P3“1”拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。·RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期高电平时间。·ALE/PROGFLASHALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0ALE只有在执行MOVXMOVC指令是ALEALE禁止,置位无效。·PSEN-7-两次PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。·EA:当保持低电平时,则在此期间CPU只访问外部程序存储器(0000H-FFFFH1时,EA将内部锁定为RESETFLASH12V编程电源(VPP·XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。·XTAL2:来自反向振荡器的输出。3.2ADC0808为了满足多种需要,目前国内外各半导体器件生产厂家设计并生产出了多种多样的ADCAD公司的ADC它们有的精度高、速度快,有的则价格低廉。从功能上讲,有的不仅具有A/D转换的基已发展为一个单片的小型数据采集系统。ADC0808是采样分辨率为8/88路模拟输入信号中的一个进行A/D转换。ADC0808是ADC0809的简化版本,功能基本相同。一般在硬件仿真时采用ADC0808进行A/D转换,实际使用时采用ADC0809进行A/D转换。ADC0808是CMOS单片型逐次逼近式A/D转换器,它有8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器。图3-3AD0808引脚图-8-1)主要技术指标和特性(1)分辨率:8位。(2)总的不可调误差:ADC0808为±1/2LSB,ADC0809为±1LSB。(3)转换时间:取决于芯片时钟频率,如CLK=500kHz时,TCONV=128μs。(4)单一电源:+5V。(5)模拟输入电压范围:单极性0~5V;双极性±5V,±10V(需外加一定电路)。(6)具有可控三态输出缓存器。(7(正脉冲),上升沿使所有内部寄存器清零,下降沿使A/D转换开始。(8)使用时不需进行零点和满刻度调节。2)内部结构和外部引脚ADC0808/0809的内部结构和外部引脚分别如图11.19和图11.20如下:图3-4ADC0808/0809内部结构框图(1IN0~IN7——8路模拟输入,通过3根地址译码线ADDA、ADDB、ADDC来选通一路。(2D7~D0——A/D数据线连接。8位排列顺序是D7为最高位,D0为最低位。(3)ADDA、ADDB、ADDC——模拟通道选择地址信号,ADDA为低位,ADDC为高位。地址信号与选中通道对应关系如表11.3所示。(4)VR(+)、VR(-)——正、负参考电压输入端,用于提供片内DAC电阻网络的基准电压。在单极性输入时,VR(+)=5V,VR(-)=0VVR(+)、VR(-)分别接正、负极性的参考电压。-9-表3-1地址信号与选中通道的关系地址选中通道ADDCADDBADDA000011110011001101010101IN0IN1IN2IN3IN4IN5IN6IN7(5ALE——ABC三位地址信号被锁存,译码选通对应模拟通道。在使用时,该信号常和START信号连在一起,以便同时锁存通道地址和启动A/D转换。(6START——A/D转换启动信号,正脉冲有效。加于该端的脉冲的上升沿使逐次逼近寄存器清零,下降沿开始A/D转换。如正在进行转换时又接到新的启动脉冲,则原来的转换进程被中止,重新从头开始转换。(7EOC——A/DCPUCPU的中断请求信号。在需要对某个模拟量不断采样、转换的情况下,EOC也可作为启动信号反馈接到START端,但在刚加电时需由外电路第一次启动。(8OE——ADC0808/0809是CPU发出的中断请求响应信号。3)工作时序与使用说明当通道选择地址有效时,ALE信号一出现,地址便马上被锁存,这时转换启动信号紧随ALE之后(或与ALE同时)出现。START的上升沿将逐次逼近寄存器SAR复位,在该上升沿之后的2μs加8个时钟周期内(不定)EOC在进行中,直到转换完成后EOC再变高电平。微处理器收到变为高电平的EOC信号后,便立即送出OE信号,打开三态门,读取转换结果。模拟输入通道的选择可以相对于转换开始操作独立地进行(当然,不能在转换过程中进行)(因为ADC0808/0809的时间特性-10-允许这样做)。这样可以用一条写指令既选择模拟通道又启动转换。在与微机接口时,输入通道的选择可有两种方法,一种是通过地址总线选择,一种是通过数据总线选择。如用EOC信号去产生中断请求,要特别注意EOC的变低相对于启动信号有2μs+8个时钟周期的延迟,要设法使它不致产生虚假的中断请求。为此,最好利用EOC上升沿产生中断请求,而不是靠高电平产生中断请求。3.3时钟系统XTAL1XTAL2引脚上外接定时元件,内部振荡电路便产生自激振荡,用示波器可以观察到XTAL2输出时钟信号。振荡晶体选择12MHz。电容只无严格要求,但电容取值对振荡频率输出的稳定性、大小、振荡电路起振速度有少许影响,C1和C2可在20-100pF取值,但在,60-70pF时振荡器有较高的频率稳定性。图3-5内部时钟电路3.4复位电路复位电路通常采用上电自动复位和按钮复位两种方式。本次设计采用按键复位电路。键RESET端维持两个机器周期的高电平实现复位的。-11-图3-6复位电路3.5MPX41一五压力传感器MPX41一五系列压电电阻传感器是一个硅压力传感器。这个传感器结合了高级的微0℃-85℃的温度下误差不超过1.5%,温度补偿是-40℃-125℃。图3-7压力传感器3.6液晶显示器LM061LLM016L液晶模块采用HD44780控制器,hd44780具有简单而功能较强的指令集,LM016L与单片机MCU通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(IRDR)忙标志(BFRAM(DDRAMROMA(CGOROM)字符发生器RAM(CGRAMRAM(AC)IRDR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令和接受DDTAM80CGROM由8位字符码生成5*7点阵字符160中和5*10点阵字符32种.8位字符编码和字符的对应关系,CGRAM-12-648个5*7点阵字符或者4个5*10点阵字符,AC可以存储DDRAM和CGRAMIR,则IR自动把地址码装入ACDDRAM或CGRAM但愿,LM016L液晶模块的引脚功能如下表所示:图3-8LM061L引脚图3.7直流电机控制电路转换为电能。直流电机的结构应由定子和转子两大部分组成。直流电机运行时静止不动的部分称为风扇等组成。直流电机在控制中使用了脉宽调制(PWM)控制的方法。PWM的占空比决定输出到直流电机的平均电压.PWM不是调节电流的。PWM的意思是脉宽调节,也就是调节方波高电平和低电平的时间比,一个20%占空比波形,会有20%的高电平时间和80%的低电平时间,而一个60%占空比的波形则具有60%的高电平时间和40%的低电平时间,占空比越大,高电平时间越长,则输出的脉冲幅度越高,即电压越高.如果占空比为0%,那么高电平时间为0,则没有电压输出.如果占空比为100%,那么输出全部电压。所以通过调节占空比,可以实现调节输出电压的目的,而且输出电压可以无级连续调-13-节.脉宽调制(PWM)是利用数字输出对模拟电路进行控制的一种有效技术,尤其是在对PWM经济等特点。模拟控制电路有以下缺陷:模拟电路容易随时间漂移,会产生一些不必要的PWM方式来控制模拟信号,可以大幅度降低成本和功耗。图3-8直流电机控制电路3.8黄灯预警电路当油压在正常范围内(20—80Mpa)时黄灯不亮,当油压低于最低的阀值时,单片机控制黄灯亮起,达到警示的作用。图3-9黄灯警示电路-14-4系统软件设计4.1Proteus软件环境介绍本系统的硬件设计首先是在Proteus软件环境中仿真实现的。Proteus软件是来自英国Labcenterelectronics公司的EDAProteusEDAPCB自动或人工布线及电路仿真的功能统配置的虚拟仪器如示波器、逻辑分析仪等,还能看到运行后输入输出的效果。Proteus建立了完备的电子设计开发环境,尤其重要的是ProteusLite可以完全免费,也可以花微不足道的费用注册达到更好的效果。Proteus51AVRPIC等常用的MCULCDRAMROMLEDAD/DASPI器件,部分IIC器件...Proteus与multisim比较类似,只不过它可以仿真MCU,当然,软件仿真精度有限,而且不可能所有的器件都找得到相应的仿真模型,用还是必不可少的。在没有硬件的情况下,Proteus能像pspice仿真模拟/数字电路那样仿真MCU的。Proteus软件主要具有以下几个方面的特点:1Proteus是一个很有用的工具,它可以帮助学生和专业人士提高他们的模拟和数字电路的设计能力。2)它允许对电路设计采用图形环境,在这种环境中,可以使用一个特定符号来代替元器件,并完成不会对真实电路造成任何损害的电路仿真操作。3)它可以仿真仪表以及可描述在仿真过程中所获得的信号的图表。4)它可以仿真目前流行的单片机,如PICS,ATMEL-AVR,MOTOROLA,8051等。5)在设计综合性方案中,还可以利用ARES开发印制电路板。4.2KeilμVision软件环境介绍KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,C用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器-15-等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98NTWIN2000WINXPC语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。C51工具包的整体结构,uVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE)IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)LIB51L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51也可以直接写入程序存贮器如EPROM中。4.3Protel软件介绍Protel印制板设计软件包是澳大利亚ProtelTechnology公司与1990年推出的电子CAD产品,具有方便、易学、实用、快速以及高速度、高步通率的特点。它采用了分层就能操作,Protel有着很高的自动布线布通率。布通率是电子产CAD产品的一项重要指标,它反映电子元件在电路图中连接关系有多少能在印刷版图中实现。在设计常用的单、双面印制板时只要选择适当的元件布局和布线策略方法,Protel就可以轻易的达到98%-100%的布通率。对于极少数不能布通的定方,Protel可以用飞线指示出来,引导用Protel有强大的宏命令设置功能,利用宏命令功能多定义的热键可以大大提高操作速度。ProtelProtel在CAD的市场占有率达95%,成为电子产品制造业界的首选CAD软件。-16-4.4程序流程图(1)主程序流程图开始系统初始化序调用显示程序,LCD显示N是否超过油压上下限?Y灯控制结束图4-1主程序流程图主程序流程图说明:程序初期,定时器、寄存器初始化,将传感器采集的数据经传给ADC0808,通过数据转换子程序将模拟信号转换为数字信号信号通过显示子程序,将数字显示在LCD上。并且判断机油压力是否低于最低值,低于则通过P3.7口LED-17-高值高于则通过电机转动控制活塞阀调节,相反则返回程序,继续测量油压。(2)A/D转换子程序流程图:开始D转换是否完NY图4-2DAD子程序流程图说明:在此流程图中,主要说明的是本次设计的A/D数据转换过程。单片机AT89C51的P3.1、P3.0、P3.3口连接ADC0808的OE、START和EOC端口,压力信号通过IN0端口传给ADC0808进行模数转换,将检测的数据传送给单片机。显示子程序流程说明:P0口控制LCD的D0-D7口,读入数据显示实时机油压力。调用延时程序,返回程序继续显示。-18-4.5位置式PID控制原理当今的自动控制技术都是基于反馈的概念。反馈理论的要素包括三个部分较和执行。测量关心的变量,与期望值相比较,用这个误差纠正调节控制系统的响应。PD控制器由比例单元(PDe(tu(t为det)Ut)kp*[et)TD]dt其中kp为比例系数;TD为微分时间常数由于计算机控制是一种采样控制,它只能根据采样时刻的偏差来计算控制量,因此,连续系统的微分方程,离散化后的PID表达式是为:TDUt)kp*{Et)*[Et)EtT根据递推原理,可以写出k-1的PID输出表达式TDUtkp*{Et*[EtEt2)]}T则Ut)Utkp*[Et)EtKD*[Et)2*EtEt2)]其中TDKDkp*TUt)UtEt)Et由上式可知,要计算第k次的输出值,只需知道、、、Et2)即可,比最初公式要简单许多。在程序设计中,Now_speed[1]=Now_speed[0]表示E(t-1)Now_speed[0]=(int)(setspeed-speed);E(t)由此就可以得到相应的比例部分,积分部分,微分部分:P=KP*(Now_speed[0]);I=KI*(Now_speed[0]+pre_speed);D=KD*(Now_speed[0]-Now_speed[1]);注:pre_speed表示的之前差值之和。5系统调试过程-19-一步的修改。(1)Protel电路调试在Protel的元件库里建立89C51,没有LCDEditERC节气点ERC检查;单击【BillofMaterial】生成元件列表,检查元器件封装;单击【CreatNetlist】生成网络列表。图5-1Protel原理图(2)KeiluVision3中程序编写与调试将已经设计好的程序写入KeiluVision3软件中,用C语言进行程序编译。将有错误0error0warninghex(3)在Proteus中,对硬件电路图进行设计和绘制、仿真。首先列出单片机芯片AT89C51,ADC0808,内部时钟电路,复位电路,电机控制电路等,然后连线。将在Keil软件里已经编译好的程序输入单片机。双击单片机,加载编译好的-20-程序生成的.hex文件,按下仿真按钮,观察仿真是否正常进行。当机油压力值处于正常范围内也就是在20—80Mpa时,高压报警黄灯不亮,直流电机不转动,此时程序只执行显示子程序。图5-2proteus电路仿真全图(机油压力正常时)-21-图5-3proteus电路仿真电机部分图(机油压力正常时)图5-4proteus电路仿真显示部分图(机油压力正常时)-22-当机油压力值超过最高峰也就是高于80Mpa时,电机转动,电机控制电磁阀,使燃烧油路通畅的供应燃油,发动机正常运转。图5-5proteus电路仿真图1(机油压力为84Mpa时)图5-5proteus电路仿真电机部分1(机油压力为84Mpa时)-23-图5-6proteus电路仿真图2(机油压力为92Mpa时)图5-7proteus电路仿真电机部分图2(机油压力为92Mpa时)-24-当机油压力低于最低值也就是低于20Mpa时,此时黄灯报警灯亮,起到警示作用。图5-6proteus电路仿真图(机油压力为17时)设计总结-25-AT89C51单片机为中心,在MPX41一五模拟产生一个信号后,通过ADC0808将模拟信号转化为数字P0口将电平信号送入液晶显示器LM061L实现LED以及直流电机分别作出相应的反应。知识,设计的过程就是学习的过程,在设计过程中验证理论的正确性,弥补知识的漏洞。有钻研精神,还要有创新,对自己感兴趣的一定要用心去学。虽然自己尽了很大的努力,但是还有很多不尽人意的地方,我想大概是由于开展独立开发经验不足的缘故吧,作为一习工作中不断增强自己的动手能力,争取在电路设计方面取进步。该电路还有很多缺陷。求自己,就像严格要求设计的每一个细节一样。致谢-26-在此,我向赵老师和帮助过我的老师和同学们,表示崇高的敬意和衷心的感谢-27-参考文献[1]张毅刚,彭喜元.单片机原理与应用设计.电子工业出版社,2008.[2]先锋工作室.单片机程序设计实例.清华大学出版社,2003.[3]周国雄,晏密英.单片机应用系统设计精讲.中国铁道部出版社,2011.[4]赵佩华.单片机接口技术及应用.机械工业出版社,2003.1.[5]唐岚.汽车测试技术.机械工业出版社,2006.7.[6]彭忆强、吴琼、葛晓成.电子线路辅助分析软件在汽车电子方向相关课程中的应用.高等教育研究,2008,No.2.[7]张西振.汽车发动机电控技术.北京:机械工业出版社,2004.-28-附录1源程序代码:/******************************2010级汽电一班:杜晨瑞*******************************/#include<reg52.h>#include<math.h>#include<absacc.h>#include<intrins.h>#defineLCDP0#defineOUT_MAX10000#defineOUT_MIN-10000#defineKP80#defineKI8#defineKD10typedefunsignedcharuchar;typedefunsignedintuint;/*LCD显示屏控制*/sbitRS=P2^2;sbitRW=P2^3;sbitE=P2^1;/*控制部分*/sbitSTART=P3^0;sbitOE=P3^1;-29-sbitEOC=P3^3;sbitLED=P2^0;sbitPWM=P2^6;sbitDIR=P2^7;intPWML=0;intcount=0;intflag=0;intsetspeed=60;intspeed=0;intNow_speed[2]={0,0};intpre_speed=0;intnum=0;intj=0;ucharhighh,highl,lowh,lowl;inthigh=10000;ucharAD;voidad_0808(){START=0;//启动转换START=1;START=0;while(!EOC)//等待转换完毕的信号,当EOC=1时转换完毕{;}-30-OE=1;//输出三态门打开,将转换的结果输出到数据总线上AD=P1*100/255;//OE=0;}voidadc(){ad_0808();setspeed=(int)AD;}voiddelay(uinta){uinti,j;for(i=0;i<a;i++)for(j=0;j<200;j++);}voidDelay(){uinti;for(i=0;i<225;i++);}/*************LCD显示部分*******************//*把1个命令写入LCD*/voidvWriteLM(ucharlcdCommand)-31-{Delay();E=1;//先延时。//然后把LCD改为写入命令状态。RS=0;RW=0;LCD=lcdCommand;E=0;//再输出命令。//最后执行命令。}/*把1个数据写入LCD*/voidvWriteData(ucharlcdData){Delay();E=1;//先延时。//然后把LCD改为写入数据状态。RS=1;RW=0;LCD=lcdData;E=0;//再输出数据。//最后显示数据。}/*把1个字符显示到当前光标处*/voidvShowOneChar(ucharlcdChar){switch(lcdChar)-32-{case'':vWriteData(0x20);break;case':':vWriteData(0x3A);break;case'0':vWriteData(0x30);break;case'1':vWriteData(0x31);break;case'2':vWriteData(0x32);break;case'3':vWriteData(0x33);break;case'4':vWriteData(0x34);break;case'5':vWriteData(0x35);break;case'6':vWriteData(0x36);break;case'7':vWriteData(0x37);break;case'8':vWriteData(0x38);break;case'9':vWriteData(0x39);break;case'A':vWriteData(0x41);break;case'B':vWriteData(0x42);break;case'C':vWriteData(0x43);break;case'D':vWriteData(0x44);break;case'E':vWriteData(0x45);break;case'F':vWriteData(0x46);break;case'G':vWriteData(0x47);break;case'H':vWriteData(0x48);break;case'I':vWriteData(0x49);break;case'J':vWriteData(0x4A);break;case'K':vWriteData(0x4B);break;case'L':vWriteData(0x4C);break;case'M':vWriteData(0x4D);break;case'N':vWriteData(0x4E);break;case'O':vWriteData(0x4F);break;-33-case'P':vWriteData(0x50);break;case'Q':vWriteData(0x51);break;case'R':vWriteData(0x52);break;case'S':vWriteData(0x53);break;case'T':vWriteData(0x54);break;case'U':vWriteData(0x55);break;case'V':vWriteData(0x56);break;case'W':vWriteData(0x57);break;case'X':vWriteData(0x58);break;case'Y':vWriteData(0x59);break;case'Z':vWriteData(0x5A);break;default:break;}}/*把1个字符串显示到当前光标处*/voidvShowChar(ucharlcdaChar[]){ucharlcdCount;for(lcdCount=0;;lcdCount++){vShowOneChar(lcdaChar[lcdCount]);if(lcdaChar[lcdCount+1]=='\0')break;}}/*把一个三位数字显示出来*/voidvShowNumber(uintuiNumber)-34-{ucharlcdaNumber[3],lcdNumCount;if(uiNumber>999)uiNumber=999;lcdaNumber[0]=uiNumber/100;//把计算数字的每个位存入数组。lcdaNumber[1]=(uiNumber-100*(int)lcdaNumber[0])/10;lcdaNumber[2]=uiNumber-100*(int)lcdaNumber[0]-10*lcdaNumber[1];for(lcdNumCount=0;lcdNumCount<3;lcdNumCount++){vShowOneChar(lcdaNumber[lcdNumCount]+48);//从首位到末位逐一输出。}}voidLCD_init(){vWriteLM(0x01);//清屏vWriteLM(0x38);//显示模式设置:8位2行5x7点阵vWriteLM(0x0C);//(0x0C)文字不动,光标自动右移vWriteLM(0x0F);//显示器开、光标开、闪烁开}/****************电机控制部分*******
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 年度财务报表提交延误询问函(5篇)
- 塔吊安装拆除专项施工方案
- 高效锂电池项目竣工验收报告
- 钛合金金属粉末项目施工方案
- 地下综合管网建设工程运营管理方案
- 石英电子布项目绩效评价
- 药品原料药项目技术方案
- 节约型机关创建推进工作方案
- 电信客户服务专员响应速度与解决问题能力绩效考评表
- 酒店电梯困人突发事件处置方案
- 2026年秋季开学:中学开学第一课 预防近视科学用眼
- 2026年无锡市新吴区农村订单定向培养医学生招聘19人考试参考题库及答案详解
- DL∕T 1745-2017 低压电能计量箱技术条件
- 食材配送服务方案投标方案(技术方案)
- MOOC 研究生学术规范与学术诚信-南京大学 中国大学慕课答案
- 《浙江省城市桥梁护栏升级改造专项工作技术导则》
- 球阀维护保养课件
- 赵本山小品心病台词赵本山小品心病
- 2023火力发电厂安全设施设计专篇编制导则
- 聚合物近代仪器分析
- DPPH和ABTS、PTIO自由基清除实验-操作图解-李熙灿-Xican-Li
评论
0/150
提交评论