




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课题:舵机角度控制电路设计学院:XXXXXXXXXXXXX院专业:自动化学生姓名:XXXXXXXX学号:XXXXXXXXXX指导老师:XXXXXXXXXXXXXXXXXXXXX职称:高级工程师题目类型:口理论研究□实验研究a工程设计□工程技术研究□软件开发2011年09月15日摘要在相当长的时间里,计算机作为科学工具,在科学技术的神圣殿堂里默默地工作,而工业现场的测控领域并没有得到真正的实惠,进入21世纪后,由于电子技术的迅猛发展,新型电子产品的更新换代速度越来越快,以单片机为核心构成的智能化产品具有体积小、功能强、应用面广,使用灵活、价格便宜、工作可靠等优点,目前正以前所未有的速度取代着传统电子线路构成的经典系统。与单片机相结合,计算机才真正地走进寻常百姓之家,成为广大工程技术人员现代化技术革新、技术革命的有利武器。本文针对舵机数字化控制器的设计,研究其硬件电路设计、软件程序设计和关键算法。在分析舵机控制的性能要求和相关控制方法的基础上,提出了基于上位机和下位机的控制结构,通过串口通信传输数据和指令,从而实现舵机控制。本设计以STC12C5A08S2单片机为核心,利用模拟舵机的机械部分,其中包括小型直流电机和一个反馈可调电位器,直流电机用H桥芯片LG9110来驱动,电位器进行角度测量,通过单片机的内部A/D转换来反馈实时角度,上位机通过RS232串口与单片机进行通信,舵机根据上位机所设定的角度,利用PWM信号驱动LG9110控制电动机转动,系统通过上位机来设置舵机地址、波特率、给定角度。经过实际调试验证,舵机角度在0度〜180度范围内可由上位机设定,精度为正负1度,符合设计要求。关键词:舵机;单片机;角度控制;PWM目录TOC\o"1-5"\h\z\o"CurrentDocument"引言1\o"CurrentDocument"1舵机控制系统概述12STC12C5A08S2单片机概述2\o"CurrentDocument"STC12C5A08S2简介2\o"CurrentDocument"STC12C5A08S2系列主要性能3A/D转换器3\o"CurrentDocument"脉宽调制PWM原理3\o"CurrentDocument"3串口通信5\o"CurrentDocument"串口通信的作用5\o"CurrentDocument"RS-232C接口和MAX232芯片简介5MAX232芯片引脚描述及其应用64驱动芯片8\o"CurrentDocument"5硬件设计思路9\o"CurrentDocument"5.1系统基本原理9\o"CurrentDocument"5.2系统硬件设计10\o"CurrentDocument"6.系统主程序10\o"CurrentDocument"6.1主程序设计要点106.2上位机117.1硬件调试117.2软件调试12参考文献12附录13引言随着高新技术在测控领域中的应用,有力地促进了控制的系统化和精确化,然而,经典的反馈控制、现代控制和大系统理论在应用中遇到不少难题。首先,这些控制系统的设计和分析都是建立在精确的系统数学模型的基础上的,但是各个领域对自动控制系统控制精度、响应速度、系统稳、定性与自适应能力的要求越来越高,被控对象或过程的非线性、时变性、多参数点的强烈耦合、较大的随机扰动、各种不确定性以及现场测试手段不完善等,使难以按数学方法建立被控对象的精确模型;其次,为了提高控制的性能,整个控制系统变得极其复杂,增加了设备的投资,降低了系统的可靠性。人工智能的出现和发展,促进了自动控制向更高的层次,即智能控制发展。基于单片机的智能控制系统,使得舵机等伺服系统的模块化和数字化更容易实现,极大的促进了控制精度、响应速度等控制要求的提高。舵机作为一种伺服电机属于闭环控制系统,和一般的直流电机、交流电机相比具有较高的控制精度,步进电机虽然也具有一定的控制精度但仍然属于开环结构。于是舵机在机器人关节控制和航模转舵控制等需要精确控制而又没有很高载荷的系统中就显得十分经济实用,在航空航天仪器、雷达、导弹、智能自适应仪器、各种武器电子和抗恶劣环境电子等系统中也得到广泛应用。1舵机控制系统概述舵机工作原理舵机,又名伺服电机,主要是由外壳马达、减速齿轮和电位器构成。舵机主要适用于那些角度不断变化并可以保持的控制系统,比如人形机器人的手臂和腿,车模和航模的方向控制。舵机工作原理:舵机本质上是可定位的马达,它的内部包括了一个小型直流马达、一组变速齿轮组、一个反馈可调电位器和一块电子控制板。它是一个典型闭环反馈系统[1],减速齿轮组由马达驱动,其终端(输出端)带动一个线性的比例电位器作位置检测,该电位器把转角坐标转换为一比例电压反馈给控制线路板,控制线路板将其与输入的控制脉冲信号比较,产生调整脉冲,并驱动马达正向或反向地转动,使齿轮组的输出位置与期望值相符,令调整脉冲趋于为0,从而达到使舵机精确定位的目的。简单的说就是发一个控制信号给舵机,经过电路板判断转动方向,再驱动马达开始转动,透过减速齿轮将动力传至摆臂,同时由电位器检测送回信号,判断是否已经达到指定位置。数字舵机(DigitalServo)和模拟舵机(AnalogServo)在基本的机械结构方面是完全一样的,主要由马达、减速齿轮、控制电路等组成,而数字舵机和模拟舵机的最大区别
则体现在控制电路上,数字舵机的控制电路比模拟舵机的多了微处理器和晶振。相对于模拟舵机,数字舵机有如下优点:首先,驱动马达的动力,可以由微处理器的程序调整,以应用于不同的应用场合,并优化舵机性能。其次,舵机马达能以更高的频率响应控制信号,而且“死区”(无响应区)变小;反应变得更快;加速和减速时也更迅速、更柔和;运转精度以及舵机锁位能力也更强。本设计就是利用模拟舵机的机械部分,运用单片机和电位器的闭环系统进行角度控制,采用电位器进行角度检测,由单片机对其进行处理,输出PWM脉冲信号控制舵机转动到所设定的角度。即将模拟舵机改装成数字舵机,实现了舵机的数字化控制。2STC12C5A08S2单片机概述2.1STC12C5A08S2简介新一代宏晶芯片具有1个时钟/机器周期,高速、高可靠,2路PWM,8路10位高速A/D转换,25万次/秒1T8051带总线,无法解密,管脚直接兼容传统89C52,有全球唯一ID号可省复位电路,36-44个I/O内部R/C时钟的新一代宏晶芯片加密性强,解密难度高。2.2STC12C5A08S2系列主要性能•高速:1个时钟/机器周期,增强型8051内核,速度比普通8051快8〜12倍•宽电压:5.5〜3.3V,2.2〜3.6V(STC12LE5A60S2系列)•增加第二复位功能脚(高可靠复位,可调整复位门槛电压,频率<12MHz时,无需此功能)•增加外部掉电检测电路,可在掉电时,及时将数据保存进EEPROM,正常工作时无需操作EEP•低功耗设计:空闲模式,HOLTEK芯片解密,(可由任意一个中断唤醒)•低功耗设计:掉电模式(可由外部中断唤醒),可支持下降沿/上升沿和远程唤醒•工作频率:0〜35MHz,相当于普通8051:0〜420MHz•时钟:外部晶体或内部RC振荡器可选,在ISP下载编程用户程序时设置•8/16/20/32/40/48/52/56/60/62K字节片内Flash程序存储器,擦写次数10万次以上•1280字节片内RAM数据存储器•芯片内EEPROM功能,擦写次数10万次以上•ISP/IAP,在系统可编程/在应用可编程,无需编程器/仿真器•8通道,10位高速ADC,速度可达25万次/秒,2路PWM还可当2路D/A使用•2通道捕获/比较单元(PWM/PCA/CCP),---也可用来再实现2个定时器或2个外部中断(支持上升沿/下降沿中断)•4个16位定时器,兼容普通8051的定时器T0/T1,2路PCA实现2个定时器•可编程时钟输出功能,T0在P3.4输出时钟,T1在P3.5输出时钟,BRT在P1.0输出时钟•硬件看门狗(WDT)
•高速SPI串行通信端口•全双工异步串行口(UART),兼容普通8051的串口•先进的指令集结构,兼容普通8051指令集,有硬件乘法/除法指令•通用I/O口(36/40/44个),复位后为:准双向口/弱上拉(普通8051传统I/O口)可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏每个I/O口驱动能力均可达到20mA,但整个芯片最大不得超过100mA2.3A/D转换器特点:⑴10位精度⑵0.5LSB的非线性度⑶土2LSB的绝对精度⑷13-260期的转换时间⑸最高分辨率时采样率高达15kSPS⑹6路复用的单端输入通道⑺2路附加复用的单端输入通道(TQFP与MLF封装)⑻可选的左对齐ADC读数⑼0-VCC的ADC输入电压范围⑽可选的2.56VADC参考电压(11)连续转换或单次转换模式(12)ADC转换结束中断2.4脉宽调制PWM原理本系统采用内部16位定时器T1来产生两路PWM信号。16位的T/C可以实现精确的程序定时(事件管理)、波形产生和信号测量。其主要特点如下:⑴真正的16位设计(即允许16位的PWM)⑵2个独立的输出比较单元⑶双缓冲的输出比较寄存器⑷一个输入捕捉单元⑸输入捕捉噪声抑制器⑹比较匹配发生时清除寄存器(自动重载)⑺无干扰脉冲,相位正确的PWM⑻可变的PWM周期⑼频率发生器;外部事件计数器⑽4个独立的中断源(TOV1、OCF1A、OCF1B与ICF1)寄存器:定时器/计数器TCNT1、输出比较寄存器OCR1A/B与输入捕捉寄存器ICR1均为16位寄存器。访问16位寄存器必须通过特殊的步骤,T/C控制寄存器TCCR1A/B为8位寄存器,没有CPU访问的限制。双缓冲输出比较寄存器OCR1A/B一直与T/C的值做比较。波形发生器用比较结果产生PWM或在输出比较引脚OC1A/B输出可变频率的信号。比较匹配结果还可置位比较匹配标志OCF1A/B,用来产生输出比较中断请求。在PWM模式下用OCR1A作为TOP值时,OCR1A寄存器不能用作PWM输出。但此时OCR1A是双向缓冲的,TOP值可在运行中得到改变。当需要一个固定的TOP值时可以使用ICR1寄存器,从而释放OCR1A来用作PWM输出。工作模式:工作模式-T/C和输出比较引脚的行为-由波形发生模式(WGM13:0)及比较输出模式(COM1x1:0)的控制位决定。比较输出模式对计数序列没有影响,而波形产生模式对计数序列则有影响。COM1x1:0控制PWM输出是否为反极性。非PWM模式时COM1X1:0控制输出是否应该在比较匹配发生时置位、清零,或电平取反。本设计采用相位修正PWM模式。相位修正PWM模式(WGM13:0=1、2、3、10或11)为用户提供了一个获得高精度的、相位准确的PWM波形的方法。与相位和频率修正模式类似,此模式基于双斜坡操作。计时器重复地从BOTTOM计到TOP,然后又从TOP倒退回到BOTTOM。在一般的比较输出模式下,当计时器往TOP计数时若TCNT1与OCR1x匹配,OC1x将清零为低电平;而在计时器往BOTTOM计数时若TCNT1与OCR1x匹配,OC1x将置位为高电平。工作于反向比较输出时则正好相反。与单斜坡操作相比,双斜坡操作可获得的最大频率要小。但其对称特性十分适合于电机控制。相位修正PWM模式的PWM分辨率固定为8、9或10位,或由ICR1或OCR1A定义。最小分辨率为2比特(ICR1或OCR1A设为0x0003),最大分辨率为16位(ICR1或OCR1A设为MAX)。PWM分辨率位数可用下式计算:工作于相位修正PWM模式时,计数器的数值一直累加到固定值0x00FF、0x01FF、0x03FF(WGM13:0=1、2或3)、ICR1(WGM13:0=10)或OCR1A(WGM13:0=11),然后改变计数方向。在一个定时器时钟里TCNT1值等于TOP值。具体的时序图为图2.2。图中给出了当使用OCR1A或ICR1来定义TOP值时的相位修正PWM模式。图中柱状的TCNT1表示这是双边斜坡操作。方框图同时包含了普通的PWM输出以及反向PWM输出。TCNT1斜坡上的短水平线表示OCR1x和TCNT1的匹配比较。比较匹配后OC1x中断标志置位。
Period图2.2相位修正PWM模式时序图Period串口通信3.1串口通信的作用系统需要接收上位机设置的角度的数据,并把下位机的数据传到上位机。因此串口模块的作用就是把单片机需要传送到上位机的数据转换成电脑的RS-232标准串口数据,以便把数据发送到上位机。3.2RS-232C接口和MAX232芯片简介本系统串口通信模块设计采用的是MAX232芯片把单片机传来的数据转换成RS-232标准串口数据。以下对RS-232C接口和MAX232芯片做简要的介绍。RS-232C的全称是“数据终端设备(DTE)和数据通信设备(DCE)之间的串行二进制数据交换接口技术标准”,适合于短距离通信或带调制解调器的通信应用场合.PC机上一般都会有RS-232C接口,MAX232芯片是专门为电脑的RS-232标准串口设计的一款兼容RS232标准的芯片,其结构图如图3.1所示。该器件包含2个驱动器2个接收器和一个电压发生器电路提供TIA/EIA-232-F电平。该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-VTTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成
TIA/EIA-232-F电平。3.3MAX232芯片引脚描述及其应用MAX232芯片引脚图如图3.1所示:116]215]314]413]512]6111710]87C1+gC1一C2+CSVs-T2OUTR2INGNDT1OUTR1INR1OUTtunT2INR2OUT图3.1MAX232芯片引脚图本系统数据的接收和发送引脚选用的是T21N,R21N,R2OUT,T2OUT四个引脚,其中T21N、R2OUT与标准的RS-232C接口相连。负责数据把转化好的数据传送到上位机;T2OUT、R21N与单片机相连,负责接收从单片机送来的数据。3.3.1MAX232应用电路介绍MAX232外围需要4个电解电容C1、C2、C3、C4,是内部电源转换所需电容。其取值均为1UF/25V。宜选用钽电容并且应尽量靠近芯片°C5为0.1UF的去耦电容。如图3.2所示。但本设计均采用104电容。<161卜「■■二1|.卜FromCMOSofTILToCMOSorHL15CND尘1iiFJ-•-~*kR5V+二侦—EIWTIA-232O«put—EIAJTIAJ12Output13——EIATA-232Input&—EIATAJJ?Input图<161卜「■■二1|.卜FromCMOSofTILToCMOSorHL15CND尘1iiFJ-•-~*kR5V+二侦—EIWTIA-232O«put—EIAJTIAJ12Output13——EIATA-232Input&—EIATAJJ?Input图3.2MAX232应用接口电路JUR11LED7DB99IS470:C2一―VCCVCCGND104U521613不SSL3□4VDDCL+VCCC1-T1OUTT1INK1QNT2INT2QUTK1QUTR2IWR2OUTVEEC2+GNDC2-HIK232CP1T"TT1012y-矿T"214104JillCOM2GNDC2L51043.3.2串口模块原理图设计单片机要通过与MAX232芯片与上位机的串口相连才能与上位机通讯。单片机与上位机连接电路图如图3.3所示。本系统是通过单片机的控制通过串口与PC通信来实现的,首先,串口的2,3脚与232芯片的任一路接收端和发送端相连;然后再通过对应路的发送端和接收端与单片机的对应RXD和TXD相连,再串口中断打开后发送和接收数据,实现串口异步通信。在异步传送方式中,字符是按帧格式进行发送的。异步通信的帧格式如表3.1所示。表3.1异步通信的帧格式n-1第N个字符(一串行帧)n+1P10D0D1D2D3D4D5D6D7P10D0起始位数据位校验位停止位
驱动芯片电机驱动芯片LG9110⑴低静态工作电流;⑵宽电源电压范围:2.5V-12V;⑶每通道具有800mA连续电流输出能力;⑷较低的饱和压降;⑸TTL/CMOS输出电平兼容,可直接连CPU;⑹输出内置钳位二极管,适用于感性负载;⑺控制和驱动集成于单片IC之中;⑻具备管脚高压保护功能;⑼工作温度:0°C-80°C。LG9110是为控制和驱动电机设计的两通道推挽式功率放大专用集成电路器件,将分立电路集成在单片IC之中,使外围器件成本降低,整机可靠性提高。该芯片有两个TTL/CMOS兼容电平的输入,具有良好的抗干扰性;两个输出端能直接驱动电机的正反向运动,它具有较大的电流驱动能力,每通道能通过750〜800mA的持续电流,峰值电流能力可达1.5〜2.0A;同时它具有较低的输出饱和压降;内置的钳位二极管能释放感性负载的反向冲击电流,使它在驱动继电器、直流电机、步进电机或开关功率管的使用上安全可靠。管脚定义如表4.1所示。表4.1LG9110管脚定义序号符号功能1OAA路输出管卿2VCC电源电压3VCC电源电压4OBB路输出管卵SGND地线6[AA路输入管脚7IBB路输入管邱8GND地线怕入A日iiAHHllIIA■hiIB
图4.1LG9110管脚波形图直流电机图4.2应用电路硬件设计思路5.1系统基本原理直流电机图4.2应用电路本文以STC12C5A80S2为核心,利用模拟舵机的机械部分,其中包括小型直流电机和一个反馈可调电位器,来组成一个闭环的舵机控制系统,直流电机用H桥芯片LG9110来驱动,电位器进行角度测量,通过单片机的内部A/D转换来反馈实时角度,上位机通过RS232串口与单片机进行通信,将所设定的角度送到单片机,单片机通过编程产生PWM信号,经由LG9110驱动,控制电机的正反转。整体电路原理框图如图5.1所示图5.1整体电路原理框图控制流程如下:
⑴上位机设定-90°到+90°之间的角度,通过串口发送到单片机;⑵单片机读取角度v并将其转换成10位二进制数r;⑶电位器测量当前角度,并将结果送到单片机的A/D转换通道进行转换,转换结果为10为二进制数y;5.2系统硬件设计CLi-VI-QHDgJI-Oai-iC3-h-dVJl-1k-a141U-O~I~~|~~~~~I~-II=,==iM-4__\-□□a,U1JLFt1.1PiiT—L—f'Ei:cxifjII~~|eorMCLi-VI-QHDgJI-Oai-iC3-h-dVJl-1k-a141U-O~I~~|~~~~~I~-II=,==iM-4__\-□□a,U1JLFt1.1PiiT—L—f'Ei:cxifjII~~|eorMH'V的血B)M1ijKDL;iPOJiADJ)时血MS)H.+iACt)5|KCTijPflJfADi)蹄皿JEK,^rAiE.-Jld&|P£BHFkTAl?)GtnsgI~~~~hd"-Wm3LDA.IM]DILTJU]dWDJLW5DJLUJ4EDMFmrE5Ji(-ZTEli更i贮WLJEM-tD)XI心R-S;A1S)FJ.*:£!::lP!i;M.L)lPJl(AP)10州U)7DLTIL7:,,-n-5图5.1系统原理图6.系统主程序系统硬件电路设计方案确定以后,主要功能将依赖于系统软件编程来实现。控制系统能否正常可靠地工作,除了硬件设计合理外,功能完善的软件设计是非常关键的。这一部分将详细阐述本设计方案所需实现的功能、系统软件资源分配,上位机的设计方案及具体实现方法。6.1主程序设计要点在论述具体的软件程序设计之前,先对软件设计的原则、方法等软件设计要点作简要的阐述,这是进行软件程序设计的依据和手段。应用程序的主要设计原则是:⑴软件设计与硬件电路设计需综合考虑。⑵软件设计必须保证系统的各个硬件功能模块能够协调工作,完成指定的系统功能。⑶各项功能程序设计实现模块化。⑷合理规划程序存储区和数据存储区,为功能的扩展预留空间,方便今后系统的功能完善和软件升级。⑸采取软件抗干扰措施,保证系统更可靠的运行。6.2上位机目前,在许多单片机应用系统中,上、下位机分工明确,作为下位机核心器件的单片机往往只负责数据采集和通信,而上位机通常以基于图形界面的Windows核心为操作平台,为便于查询和保存数据,还需要数据库的支持,这种应用的核心是数据通信,它包括单片机和上位机之间、客户端和服务器之间以及客户端和客户端之间的通信,而单片机和上位机之间数据通信则是整个系统的基础。单片机和PC的通信是通过单片机和PC串口之间的硬件连接实现的。7.系统调试7.1硬件调试由于本设计硬件比较简单,分两个模块:单片机模块和电平转换模块,所以硬件调试主要是单片机模块。在电路制作完成后,不要急于上电测试,而首先必须做好以下调试前的检查工作。检查连线情况:⑴经常碰到的有错接(即连线的一端正确,而另一端误接)、少接(指安装时漏接的线)及多接(指在电路上完全是多余的连线),等连线错误。检查连线可以直接对照电路原理图进行,但若电路中布线较多,则可以以元器件(如运放、三极管)为中心,依次检察查其引脚的有关连线,这样不仅可以查出错接或少接的线,而且也较易发现多余的线。⑵为确保连线的可靠,在查线的同时,还可以用万用表电阻档对接线作连通检查,而且最好在器件外引线处测量,这样有可能查出某些“虚焊”的隐患。⑶检查元器件焊接情况:元器件的检查,重点要查有极性的元件有否接错,以及外引线间有否短路,同时还须检查元器件焊接处是否可靠。这里需要指出,在焊接前,必须对元器件进行检测,确保元器件能正常工作,以免给调试带来不必要的麻烦。⑷检查电源输入端与公共接地端间有否短路在通电前,还需用万用表检查电源输入端与地之间是否存短路,若有则须进一步检查其原因。⑸在完成了以上各项检查并确认无误后,才可通电调试,但此时应注意电源的正、负极性不能接反。考虑到本设计只是一次学习过程,对性能要求不是很高,所以采用下载线的5VVCC供电这样的方法,电路也尽可能的精简。在检查驱动电路时,在未加单片机使能控制的情况下,通电待系统工作后,用万用表测量LG9110的1脚和4脚是否有输出。若输出电压大小不符合要求,则说明驱动芯片有问题。若确定驱动电路无误,则对单片机使能,下载调试好的程序到单片机,使系统运行。用万用表检查单片机的各个引脚,尤其是PB1、PB2的PWM输出引脚的电压大小是否接近理论值,若不是或者没有输出,则直接给定该端口赋固定的位变量值,观察输出情况,符合要求,则说明是软件问题。具体调试见软件调试。单片机输出符合要求后,连接上舵机,观察舵机是否在指定位置停住转动,若在指定位置左右来回转动,说明PD参数没调好;若舵机一直转到尽头停不下来则说明舵机反馈端断开,或者单片机读不到正确的A/D转换值。综合调试过程中的各种问题后,在老师的指导下,最终得出期望的结果,调试成功。7.2软件调试把调试好的程序下载到单片机中,接上电源,检验程序是否如自己所设计的那样可以实现所要求的功能。如果电路板上的结果和设想的不同,由于在硬件检查部分已经确定了硬件没问题。则应该是软件部分即程序方面的问题。需要检查程序。首先检外接收中断部分,接收到的数据是否能够正确读取,并转换成设定的角度值。接收部分没问题再检查T1定时器的设置,选用的频率、工作模式,PB1、PB2端口是否设置为输出。因为前面已经确定硬件没有问题了,所以,在软件调试的时候可以结合硬件来在线调试,这样很直观,而且发现问题也很容易,观察舵机是否还在所指定角度来回转动,耐心的调试,直到舵机准确的达到指定的角度并停止转动。调试是整个设计的关键部分,调试的成功与否关系到系统运行的成功与否,所以在调试时要格外的细心和有耐心,在自己的努力和老师的指导下最终调试成功。参考文献:童诗白,华成英.模拟电子技术基础[M].北京:高等教育出版社,2000.先锋工作室.单片机程序设计实例[M].北京:清华大学出版社,2003.马忠梅等.单片机的C语言应用程序设计[M].北京:北京航空航天大学出版社,2003.潘新民,王燕芳.微型计算机控制技术[M].北京:电子工业出版社,2007.金春林,邱慧芳,张皆喜.AVR系列单片机C语言编程与应用实例[M].北京清华大学出版社,2003.李江全,朱东芹.VisualBasic数据采集与串口通信测控应用实战[M].北京:人民邮电出版社,2010.#include<stc12c5a.h>〃头文件#defineucharunsignedchar#defineuintunsignedintuncharsig=0,count,s1num,miao,shi,fen;floatflag=0,init=0,miao1=0,shi1=0,fen1=0,AD=0;sbitrs=P3A2;〃定义1602液晶RS端sbitrw=P2A6;sbitlcden=P3A3;//定义1602液晶LCDEN端sbits1=P2A3;〃定义按键--功能键sbits2=P2A2;//定义按键--增加键sbits3=P2A1;〃定义按键--减小键sbits4=P2A0;〃确定键ucharcodetable[]="trueangle:";//定义初始上电时液晶默认显示状态ucharcodetable1[]="angle:";voiddelay(uintz)//延时函数(uintx,y;for(x=z;x>0;x--)for(y=120;y>0;y--);}voidPWM_init(void){CMOD=0x80;〃设置PCA定时器CCON=0x00;CL=0x00;CH=0x00;CCAPM0=0x42;//PWM0设置PCA工作方式为PWM方式(01000010)CCAP0L=0x00;〃设置PWM0初始值与CCAP0H相同CCAP0H=0x00;//PWM0初始时为0CCAPM1=0x42;//PWM1设置PCA工作方式为PWM方式(使用时删除//)CCAP1L=0x00;〃设置PWM1初始值与CCAP0H相同CCAP1H=0x00;//PWM1初始时为0CR=1;//启动PCA定时器}voidPWM0_set(unsignedchara,unsignedcharb){CCAP0L=a;〃设置值直接写入CCAP0LCCAP0H=a;〃设置值直接写入CCAP0HCCAP1L=b;〃设置值直接写入CCAP0LCCAP1H=b;〃设置值直接写入CCAP0H}voidad_init()//AD初始化函数{ADC_CONTRI=0x80;//开A/D电源delay(100);〃必要的延时P1ASF=0x01;//P1.0作为模拟量输入口delay(100);//必要的延时ADC_CONTR=0xc0;//开A/D电源
delay(100);}voidcon_init(void){SCON=0x5a;PCON=0X80;TMOD=0x20;TH1=TL1=-13;TR1=1;}voidSendData(chardat){TI=0;SBUF=dat;while(!TI);}RecData(void){intdat;while(!RI);RI=0;dat=SBUF;returndat;}voidwrite_com(ucharcom)//液晶写命令函数{rw=0;rs=0;//8bitdata//8bitdata,noparitybit//T1as8-bitautoreload//SetUartbaudrate//ClearTIflag//Waitforthepreviousdataissen//Waitforthepreviousdataissen//ClearTIflag//SendcurrentdataP0=com;delay(5);lcden=1;delay(5);lcden=0;}voidwrite_date(uchardate)//液晶写数据函数{rw=0;rs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;}voidwrite_sfm(ucharadd,uchardate)//写时分秒函数{ucharge;ge=date;write_com(0x80+0x40+add);//设置显示位置write_date(0x30+ge);//送去液晶显示个位}voidlcdinit()//初始化函数(ucharnum;lcden=0;rw=0;fen=0;//初始化种变量值miao=0;shi=0;count=0;s1num=0;write_com(0x38);//初始化1602液晶write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);//设置显示初始坐标for(num=0;num<11;num++)//显示年月日星期(write_date(table[num]);delay(5);}write_com(0xc0);//设置显示初始坐标for(num=0;num<11;num++)//显示年月日星期(write_date(table1[num]);delay(5);}write_sfm(14,miao);//分别送去液晶显示write_sfm(13,fen);write_sfm(12,shi);}voidkeyscan()//按键扫描函数{if(s1==0){delay(5);if(s1==0)//确认功能键被按下{s1num++;//功能键按下次数记录while(!s1);//释放确认if(s1num==1)//第一次被按下时{write_com(0x80+0x40+14);//光标定位到秒位置write_com(0x0f);//光标开始闪烁}if(s1num==2)//第二次按下光标闪烁定位到分钟位置{write_com(0x80+0x40+13);}if(s1num==3)//第三次按下光标闪烁定位到小时位置{write_com(0x80+0x40+12);}if(s1num==4)//第四次按下{s1num=0;//记录按键数清零write_com(0x0c);//取消光标闪烁}}}if(s1num!=0)//只有功能键被按下后,增加和减小键才有效{if(s2==0){delay(5);if(s2==0)//增加键确认被按下{while(!s2);//按键释放if(s1num==1)//若功能键第一次按下{miao++;〃则调整秒加1if(miao==10)//若满60后将清零miao=0;write_sfm(14,miao);//每调节一次送液晶显示一下write_com(0x80+0x40+14);//显示位置重新回到调节处}if(s1num==2)//若功能键第二次按下{fen++;//则调整分钟加1if(fen==10)//若满60后将清零fen=0;write_sfm(13,fen);//每调节一次送液晶显示一下write_com(0x80+0x40+13);//显示位置重新回到调节处}if(s1num==3)//若功能键第三次按下{shi++;//则调整小时加1if(shi==2)//若满24后将清零shi=0;write_sfm(12,shi)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 食品安全与卫生说课
- 高一向量知识点
- 小区安全部年度总结
- 高端消费品行业商业计划书
- 八年级上册《运用完全平方公式因式分解》课件与练习
- 投资决策中的心理偏误试题及答案
- 企业融资结构的优化策略试题及答案
- 第八章 作业35 多物体组成的系统机械能守恒问题-2025版高一物理必修二
- 辽宁省鞍山市2024-2025学年高三下学期第一次月考历史试卷
- 计划性学习的特许金融分析师试题及答案
- 安全员试用期转正述职报告
- 甲亢课件教学课件
- 典籍里的中国课件
- 【MOOC】国际交英文写作-湖南大学 中国大学慕课MOOC答案
- 《移动通信》任务10 5G基站勘查
- 鹦鹉主题课件教学课件
- GB/T 625-2024化学试剂硫酸
- 实验室资质认定评审准则(原文)
- 多重耐药感染的集束化护理
- 对外贸易操作流程作业指导书
- 江苏省历年中考语文现代文阅读之非连续性文本阅读39篇(含答案)(2003-2023)
评论
0/150
提交评论