舵机角度控制电路设计---课程设计.doc

上传人:scccc 文档编号:11174716 上传时间:2021-07-09 格式:DOC 页数:22 大小:419.17KB
返回 下载 相关 举报
舵机角度控制电路设计---课程设计.doc_第1页
第1页 / 共22页
舵机角度控制电路设计---课程设计.doc_第2页
第2页 / 共22页
舵机角度控制电路设计---课程设计.doc_第3页
第3页 / 共22页
舵机角度控制电路设计---课程设计.doc_第4页
第4页 / 共22页
舵机角度控制电路设计---课程设计.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《舵机角度控制电路设计---课程设计.doc》由会员分享,可在线阅读,更多相关《舵机角度控制电路设计---课程设计.doc(22页珍藏版)》请在三一文库上搜索。

1、 桂林电子科技大学毕业设计(论文)报告用纸编号: 课 题:舵机角度控制电路设计学 院: XXXXXXXXXXXXX院 专 业: 自动化 学生姓名: XXXXXXXX 学 号: XXXXXXXXXX 指导老师: XXXXXXXXXXXXXXXXXXXXX 职 称: 高级工程师 题目类型: 理论研究 实验研究 工程设计 工程技术研究 软件开发2011 年 09 月 15日摘 要在相当长的时间里,计算机作为科学工具,在科学技术的神圣殿堂里默默地工作,而工业现场的测控领域并没有得到真正的实惠,进入21世纪后,由于电子技术的迅猛发展,新型电子产品的更新换代速度越来越快,以单片机为核心构成的智能化产品具有

2、体积小、功能强、应用面广,使用灵活、价格便宜、工作可靠等优点,目前正以前所未有的速度取代着传统电子线路构成的经典系统。与单片机相结合,计算机才真正地走进寻常百姓之家,成为广大工程技术人员现代化技术革新、技术革命的有利武器。本文针对舵机数字化控制器的设计,研究其硬件电路设计、软件程序设计和关键算法。在分析舵机控制的性能要求和相关控制方法的基础上,提出了基于上位机和下位机的控制结构,通过串口通信传输数据和指令,从而实现舵机控制。本设计以STC12C5A08S2单片机为核心,利用模拟舵机的机械部分,其中包括小型直流电机和一个反馈可调电位器,直流电机用H桥芯片LG9110来驱动,电位器进行角度测量,通

3、过单片机的内部A/D转换来反馈实时角度,上位机通过RS232串口与单片机进行通信,舵机根据上位机所设定的角度,利用PWM信号驱动LG9110控制电动机转动,系统通过上位机来设置舵机地址、波特率、给定角度。经过实际调试验证,舵机角度在0度180度范围内可由上位机设定,精度为正负1度,符合设计要求。关键词:舵机;单片机;角度控制;PWM目录引言.11舵机控制系统概述.12 STC12C5A08S2单片机概述22.1 STC12C5A08S2简介.22.2 STC12C5A08S2系列主要性能.32.3 A/D转换器32.4 脉宽调制PWM原理.33 串口通信53.1 串口通信的作用.53.2 RS

4、-232C接口和MAX232芯片简介.53.3 MAX232芯片引脚描述及其应用.64 驱动芯片.85 硬件设计思路.95.1 系统基本原理.95.2 系统硬件设计.106. 系统主程序.106.1 主程序设计要点.106.2 上位机117.1 硬件调试.117.2 软件调试.12参考文献.12附录.1318桂林电子科技大学毕业设计(论文)报告用纸 第18页 共52页引言 随着高新技术在测控领域中的应用,有力地促进了控制的系统化和精确化,然而,经典的反馈控制、现代控制和大系统理论在应用中遇到不少难题。首先,这些控制系统的设计和分析都是建立在精确的系统数学模型的基础上的,但是各个领域对自动控制系

5、统控制精度、响应速度、系统稳、定性与自适应能力的要求越来越高,被控对象或过程的非线性、时变性、多参数点的强烈耦合、较大的随机扰动、各种不确定性以及现场测试手段不完善等,使难以按数学方法建立被控对象的精确模型;其次,为了提高控制的性能,整个控制系统变得极其复杂,增加了设备的投资,降低了系统的可靠性。人工智能的出现和发展,促进了自动控制向更高的层次,即智能控制发展。基于单片机的智能控制系统,使得舵机等伺服系统的模块化和数字化更容易实现,极大的促进了控制精度、响应速度等控制要求的提高。舵机作为一种伺服电机属于闭环控制系统,和一般的直流电机、交流电机相比具有较高的控制精度,步进电机虽然也具有一定的控制

6、精度但仍然属于开环结构。于是舵机在机器人关节控制和航模转舵控制等需要精确控制而又没有很高载荷的系统中就显得十分经济实用,在航空航天仪器、雷达、导弹、智能自适应仪器、各种武器电子和抗恶劣环境电子等系统中也得到广泛应用。1 舵机控制系统概述舵机工作原理舵机,又名伺服电机,主要是由外壳马达、减速齿轮和电位器构成。舵机主要适用于那些角度不断变化并可以保持的控制系统,比如人形机器人的手臂和腿,车模和航模的方向控制。舵机工作原理:舵机本质上是可定位的马达,它的内部包括了一个小型直流马达、一组变速齿轮组、一个反馈可调电位器和一块电子控制板。它是一个典型闭环反馈系统1,减速齿轮组由马达驱动,其终端(输出端)带

7、动一个线性的比例电位器作位置检测,该电位器把转角坐标转换为一比例电压反馈给控制线路板,控制线路板将其与输入的控制脉冲信号比较,产生调整脉冲,并驱动马达正向或反向地转动,使齿轮组的输出位置与期望值相符,令调整脉冲趋于为0,从而达到使舵机精确定位的目的。简单的说就是发一个控制信号给舵机,经过电路板判断转动方向,再驱动马达开始转动,透过减速齿轮将动力传至摆臂,同时由电位器检测送回信号,判断是否已经达到指定位置。数字舵机(Digital Servo)和模拟舵机(Analog Servo)在基本的机械结构方面是完全一样的,主要由马达、减速齿轮、控制电路等组成,而数字舵机和模拟舵机的最大区别则体现在控制电

8、路上,数字舵机的控制电路比模拟舵机的多了微处理器和晶振。相对于模拟舵机,数字舵机有如下优点:首先,驱动马达的动力,可以由微处理器的程序调整,以应用于不同的应用场合,并优化舵机性能。其次,舵机马达能以更高的频率响应控制信号,而且“死区”(无响应区)变小;反应变得更快;加速和减速时也更迅速、更柔和;运转精度以及舵机锁位能力也更强。本设计就是利用模拟舵机的机械部分,运用单片机和电位器的闭环系统进行角度控制,采用电位器进行角度检测,由单片机对其进行处理,输出PWM脉冲信号控制舵机转动到所设定的角度。即将模拟舵机改装成数字舵机,实现了舵机的数字化控制。2 STC12C5A08S2单片机概述2.1STC1

9、2C5A08S2简介新一代宏晶芯片具有1个时钟/机器周期,高速、高可靠,2路PWM,8路10位高速A/D转换,25万次/秒1T 8051带总线,无法解密,管脚直接兼容传统89C52,有全球唯一ID号可省复位电路,36-44个I/O内部R/C时钟的新一代宏晶芯片加密性强,解密难度高。 2.2STC12C5A08S2系列主要性能高速:1个时钟/机器周期,增强型8051内核,速度比普通8051快812倍 宽电压:5.53.3V,2.23.6V(STC12LE5A60S2系列) 增加第二复位功能脚(高可靠复位,可调整复位门槛电压,频率12MHz时,无需此功能)增加外部掉电检测电路,可在掉电时,及时将数

10、据保存进EEPROM,正常工作时无需操作EEP 低功耗设计:空闲模式,HOLTEK芯片解密,(可由任意一个中断唤醒) 低功耗设计:掉电模式(可由外部中断唤醒),可支持下降沿/上升沿和远程唤醒 工作频率:035MHz,相当于普通8051:0420MHz 时钟:外部晶体或内部RC振荡器可选,在ISP下载编程用户程序时设置 8/16/20/32/40/48/52/56/60/62K字节片内Flash程序存储器,擦写次数10万次以上 1280字节片内RAM数据存储器 芯片内EEPROM功能,擦写次数10万次以上 ISP / IAP,在系统可编程/在应用可编程,无需编程器/仿真器 8通道,10位高速AD

11、C,速度可达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口

12、)可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏每个I/O口驱动能力均可达到20mA,但整个芯片最大不得超过100mA 2.3A/D转换器特点: 10 位 精度 0.5 LSB 的非线性度 2 LSB 的绝对精度 13 - 260 s 的转换时间 最高分辨率时采样率高达15 kSPS 6 路复用的单端输入通道 2 路附加复用的单端输入通道 (TQFP与 MLF封装 ) 可选的左对齐ADC读数 0 - VCC 的 ADC输入电压范围 可选的2.56V ADC参考电压 连续转换或单次转换模式 ADC 转换结束中断2.4脉宽调制PWM原理本系统采用内部16位定时器T1来产生两

13、路PWM信号。16位的T/C可以实现精确的程序定时(事件管理)、波形产生和信号测量。其主要特点如下: 真正的16位设计 (即允许 16 位的PWM) 2 个独立的输出比较单元 双缓冲的输出比较寄存器 一个输入捕捉单元 输入捕捉噪声抑制器 比较匹配发生时清除寄存器( 自动重载) 无干扰脉冲,相位正确的PWM 可变的PWM周期 频率发生器;外部事件计数器 4 个独立的中断源(TOV1、OCF1A、OCF1B 与 ICF1)寄存器:定时器 / 计数器 TCNT1、输出比较寄存器 OCR1A/B 与输入捕捉寄存器 ICR1 均为 16 位寄存器。访问 16 位寄存器必须通过特殊的步骤,T/C 控制寄存

14、器 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 和输出比较引脚的行为 -

15、 由波形发生模式 (WGM13:0) 及比较输出模式(COM1x1:0) 的控制位决定。比较输出模式对计数序列没有影响,而波形产生模式对计数序列则有影响。 COM1x1:0 控制 PWM 输出是否为反极性。非 PWM 模式时 COM1x1:0控制输出是否应该在比较匹配发生时置位、清零,或电平取反。本设计采用相位修正PWM 模式。相位修正 PWM 模式 (WGM13:0 = 1、 2、 3、10 或 11)为用户提供了一个获得高精度的、相位准确的 PWM 波形的方法。与相位和频率修正模式类似,此模式基于双斜坡操作。计时器重复地从 BOTTOM 计到 TOP,然后又从 TOP倒退回到 BOTTOM

16、。在一般的比较输出模式下,当计时器往 TOP 计数时若 TCNT1 与 OCR1x 匹配,OC1x 将清零为低电平;而在计时器往 BOTTOM 计数时若 TCNT1 与 OCR1x 匹配, OC1x 将置位为高电平。工作于反向比较输出时则正好相反。与单斜坡操作相比,双斜坡操作可获得的最大频率要小。但其对称特性十分适合于电机控制。相位修正 PWM 模式的 PWM 分辨率固定为 8、9 或 10 位,或由 ICR1 或 OCR1A 定义。最小分辨率为2比特(ICR1或OCR1A设为 0x0003),最大分辨率为16位(ICR1或OCR1A设为 MAX)。 PWM 分辨率位数可用下式计算:工作于相位

17、修正 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中断标志置位。图

18、2.2相位修正PWM模式时序图3. 串口通信3.1串口通信的作用系统需要接收上位机设置的角度的数据,并把下位机的数据传到上位机。因此串口模块的作用就是把单片机需要传送到上位机的数据转换成电脑的RS-232标准串口数据,以便把数据发送到上位机。3.2 RS-232C接口和MAX232芯片简介本系统串口通信模块设计采用的是MAX232芯片把单片机传来的数据转换成RS-232标准串口数据。以下对RS-232C接口和MAX232芯片做简要的介绍。RS-232C的全称是“数据终端设备(DTE) 和数据通信设备(DCE) 之间的串行二进制数据交换接口技术标准”,适合于短距离通信或带调制解调器的通信应用场合

19、.PC机上一般都会有RS-232C接口,MAX232芯片是专门为电脑的RS-232标准串口设计的一款兼容RS232标准的芯片, 其结构图如图3.1所示。该器件包含2个驱动器2个接收器和一个电压发生器电路提供TIA/EIA-232-F电平。该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-V TTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。3.3 MAX232芯片引脚描述及其应用MAX232芯片引脚图如图3.1所示:图3.1 MAX232芯片引脚图本系统数据的接收和发送引脚选用的是T21N,R21N,R2

20、OUT,T2OUT四个引脚,其中T21N、R2OUT与标准的RS-232C接口相连。负责数据把转化好的数据传送到上位机;T2OUT、R21N与单片机相连,负责接收从单片机送来的数据。 3.3.1 MAX232应用电路介绍MAX232 外围需要4个电解电容C1 、C2 、C3 、C4 ,是内部电源转换所需电容。其取值均为1F/25V。宜选用钽电容并且应尽量靠近芯片。C5为0.1F的去耦电容。如图3.2所示。但本设计均采用104电容。图3.2 MAX232应用接口电路图3.3串口模块原理图3.3.2串口模块原理图设计单片机要通过与MAX232芯片与上位机的串口相连才能与上位机通讯。单片机与上位机连

21、接电路图如图3.3所示。本系统是通过单片机的控制通过串口与PC通信来实现的,首先,串口的2,3脚与232芯片的任一路接收端和发送端相连;然后再通过对应路的发送端和接收端与单片机的对应RXD和TXD相连,再串口中断打开后发送和接收数据,实现串口异步通信。在异步传送方式中,字符是按帧格式进行发送的。异步通信的帧格式如表3.1所示。表3.1异步通信的帧格式n-1 第N个字符(一串行帧) n+1 P 10D0D1D2D3D4D5D6D7P10D0 起始位 数 据 位 校验位 停止位4.驱动芯片电机驱动芯片LG9110 低静态工作电流; 宽电源电压范围:2.5V-12V; 每通道具有800mA 连续电流

22、输出能力; 较低的饱和压降; TTL/CMOS输出电平兼容,可直接连CPU; 输出内置钳位二极管,适用于感性负载; 控制和驱动集成于单片IC之中; 具备管脚高压保护功能; 工作温度:0-80。 LG9110 是为控制和驱动电机设计的两通道推挽式功率放大专用集成电路器件,将分立电路集成在单片 IC 之中,使外围器件成本降低,整机可靠性提高。该芯片有两个 TTL/CMOS 兼容电平的输入,具有良好的抗干扰性;两个输出端能直接驱动电机的正反向运动,它具有较大的电流驱动能力,每通道能通过 750800mA 的持续电流,峰值电流能力可达1.52.0A;同时它具有较低的输出饱和压降;内置的钳位二极管能释放

23、感性负载的反向冲击电流,使它在驱动继电器、直流电机、步进电机或开关功率管的使用上安全可靠。管脚定义如表4.1所示。表4.1 LG9110管脚定义图4.1 LG9110管脚波形图图4.2 应用电路5.硬件设计思路5.1 系统基本原理本文以STC12C5A80S2为核心,利用模拟舵机的机械部分,其中包括小型直流电机和一个反馈可调电位器,来组成一个闭环的舵机控制系统,直流电机用H桥芯片LG9110来驱动,电位器进行角度测量,通过单片机的内部A/D转换来反馈实时角度,上位机通过RS232串口与单片机进行通信,将所设定的角度送到单片机,单片机通过编程产生PWM信号,经由LG9110驱动,控制电机的正反转

24、。整体电路原理框图如图5.1所示电源USART单片机STC12C5A80S2 PWM A/DMAX232上位机直流电机LG9110电位器图5.1整体电路原理框图控制流程如下: 上位机设定-90到+90之间的角度,通过串口发送到单片机; 单片机读取角度v并将其转换成10位二进制数r; 电位器测量当前角度,并将结果送到单片机的A/D转换通道进行转换,转换结果为10为二进制数y;5.2 系统硬件设计图5.1 系统原理图6. 系统主程序系统硬件电路设计方案确定以后,主要功能将依赖于系统软件编程来实现。控制系统能否正常可靠地工作,除了硬件设计合理外,功能完善的软件设计是非常关键的。这一部分将详细阐述本设

25、计方案所需实现的功能、系统软件资源分配,上位机的设计方案及具体实现方法。6.1主程序设计要点在论述具体的软件程序设计之前,先对软件设计的原则、方法等软件设计要点作简要的阐述,这是进行软件程序设计的依据和手段。应用程序的主要设计原则是: 软件设计与硬件电路设计需综合考虑。 软件设计必须保证系统的各个硬件功能模块能够协调工作,完成指定的系统功能。 各项功能程序设计实现模块化。 合理规划程序存储区和数据存储区,为功能的扩展预留空间,方便今后系统的功能完善和软件升级。 采取软件抗干扰措施,保证系统更可靠的运行。6.2 上位机目前,在许多单片机应用系统中,上、下位机分工明确,作为下位机核心器件的单片机往

26、往只负责数据采集和通信,而上位机通常以基于图形界面的Windows核心为操作平台,为便于查询和保存数据,还需要数据库的支持,这种应用的核心是数据通信,它包括单片机和上位机之间、客户端和服务器之间以及客户端和客户端之间的通信,而单片机和上位机之间数据通信则是整个系统的基础。单片机和PC的通信是通过单片机和PC串口之间的硬件连接实现的。7.系统调试7.1 硬件调试由于本设计硬件比较简单,分两个模块:单片机模块和电平转换模块,所以硬件调试主要是单片机模块。在电路制作完成后,不要急于上电测试,而首先必须做好以下调试前的检查工作。 检查连线情况: 经常碰到的有错接(即连线的一端正确,而另一端误接)、少接

27、(指安装时漏接的线)及多接(指在电路上完全是多余的连线),等连线错误。检查连线可以直接对照电路原理图进行,但若电路中布线较多,则可以以元器件(如运放、三极管)为中心,依次检察查其引脚的有关连线,这样不仅可以查出错接或少接的线,而且也较易发现多余的线。 为确保连线的可靠,在查线的同时,还可以用万用表电阻档对接线作连通检查,而且最好在器件外引线处测量,这样有可能查出某些“虚焊”的隐患。 检查元器件焊接情况:元器件的检查,重点要查有极性的元件有否接错,以及外引线间有否短路,同时还须检查元器件焊接处是否可靠。这里需要指出,在焊接前,必须对元器件进行检测,确保元器件能正常工作,以免给调试带来不必要的麻烦

28、。 检查电源输入端与公共接地端间有否短路在通电前,还需用万用表检查电源输入端与地之间是否存短路,若有则须进一步检查其原因。 在完成了以上各项检查并确认无误后,才可通电调试,但此时应注意电源的正、负极性不能接反。考虑到本设计只是一次学习过程,对性能要求不是很高,所以采用下载线的5V VCC供电这样的方法,电路也尽可能的精简。在检查驱动电路时,在未加单片机使能控制的情况下,通电待系统工作后,用万用表测量LG9110的1脚和4脚是否有输出。若输出电压大小不符合要求,则说明驱动芯片有问题。若确定驱动电路无误,则对单片机使能,下载调试好的程序到单片机,使系统运行。用万用表检查单片机的各个引脚,尤其是PB

29、1、PB2的PWM输出引脚的电压大小是否接近理论值,若不是或者没有输出,则直接给定该端口赋固定的位变量值,观察输出情况,符合要求,则说明是软件问题。具体调试见软件调试。单片机输出符合要求后,连接上舵机,观察舵机是否在指定位置停住转动,若在指定位置左右来回转动,说明PD参数没调好;若舵机一直转到尽头停不下来则说明舵机反馈端断开,或者单片机读不到正确的A/D转换值。综合调试过程中的各种问题后,在老师的指导下,最终得出期望的结果,调试成功。7.2 软件调试把调试好的程序下载到单片机中,接上电源,检验程序是否如自己所设计的那样可以实现所要求的功能。如果电路板上的结果和设想的不同,由于在硬件检查部分已经

30、确定了硬件没问题。则应该是软件部分即程序方面的问题。需要检查程序。首先检外接收中断部分,接收到的数据是否能够正确读取,并转换成设定的角度值。接收部分没问题再检查T1定时器的设置,选用的频率、工作模式,PB1、PB2端口是否设置为输出。因为前面已经确定硬件没有问题了,所以,在软件调试的时候可以结合硬件来在线调试,这样很直观,而且发现问题也很容易,观察舵机是否还在所指定角度来回转动,耐心的调试,直到舵机准确的达到指定的角度并停止转动。调试是整个设计的关键部分,调试的成功与否关系到系统运行的成功与否,所以在调试时要格外的细心和有耐心,在自己的努力和老师的指导下最终调试成功。参考文献: 1 童诗白,华

31、成英.模拟电子技术基础M.北京:高等教育出版社, 2000.2 先锋工作室.单片机程序设计实例M. 北京:清华大学出版社,2003. 3 马忠梅等.单片机的C语言应用程序设计M.北京:北京航空航天大学出版社,2003.4 潘新民,王燕芳.微型计算机控制技术M.北京:电子工业出版社,2007.5 金春林,邱慧芳,张皆喜.AVR系列单片机C语言编程与应用实例M.北京清华大学出版社,2003.6 李江全,朱东芹.Visual Basic数据采集与串口通信测控应用实战M.北京:人民邮电出版社,2010.#include /头文件#define uchar unsigned char #define u

32、int unsigned intunchar sig=0, count,s1num, miao,shi,fen;float flag=0,init=0,miao1=0,shi1=0,fen1=0, AD=0; sbit rs=P32; /定义1602液晶RS端sbit rw=P26;sbit lcden=P33;/定义1602液晶LCDEN端sbit s1=P23; /定义按键-功能键sbit s2=P22;/定义按键-增加键sbit s3=P21;/定义按键-减小键sbit s4=P20; /确定键uchar code table=true angle:;/定义初始上电时液晶默认显示状态uc

33、har code table1= angle:;void delay(uint z) /延时函数uint x,y;for(x=z;x0;x-)for(y=120;y0;y-);void PWM_init (void)CMOD=0x80; /设置PCA定时器CCON=0x00; CL=0x00; CH=0x00; CCAPM0=0x42; /PWM0设置PCA工作方式为PWM方式(0100 0010) CCAP0L=0x00; /设置PWM0初始值与CCAP0H相同 CCAP0H=0x00; / PWM0初始时为0 CCAPM1=0x42; /PWM1设置PCA工作方式为PWM方式(使用时删除/

34、) CCAP1L=0x00; /设置PWM1初始值与CCAP0H相同 CCAP1H=0x00; / PWM1初始时为0 CR=1; /启动PCA定时器void PWM0_set (unsigned char a,unsigned char b)CCAP0L= a; /设置值直接写入CCAP0L CCAP0H= a; /设置值直接写入CCAP0HCCAP1L= b; /设置值直接写入CCAP0L CCAP1H= b; /设置值直接写入CCAP0Hvoid ad_init() /AD初始化函数ADC_CONTR|=0x80;/开A/D电源delay(100); /必要的延时P1ASF=0x01;/

35、P1.0作为模拟量输入口delay(100); /必要的延时ADC_CONTR=0xc0;/开A/D电源delay(100); void con_init(void) SCON = 0x5a; PCON=0X80; /8 bit data ,no parity bit TMOD = 0x20; /T1 as 8-bit auto reload TH1 = TL1 = -13; /Set Uart baudrate TR1 = 1; void SendData(char dat) TI = 0; /Clear TI flag SBUF = dat; while (!TI); /Wait for

36、the previous data is sen RecData(void) int dat; while (!RI); /Wait for the previous data is sen RI = 0; /Clear TI flag dat =SBUF ; return dat; /Send current datavoid write_com(uchar com)/液晶写命令函数rw=0;rs=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)/液晶写数据函数rw=0;rs=1;lc

37、den=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;void write_sfm(uchar add,uchar date)/写时分秒函数uchar ge;ge=date;write_com(0x80+0x40+add);/设置显示位置write_date(0x30+ge); /送去液晶显示个位void lcdinit()/初始化函数uchar num;lcden=0;rw=0 ;fen=0; /初始化种变量值miao=0;shi=0;count=0;s1num=0;write_com(0x38);/初始化1602液晶write_com(0x0c);

38、write_com(0x06);write_com(0x01);write_com(0x80);/设置显示初始坐标for(num=0;num11;num+)/显示年月日星期write_date(tablenum);delay(5);write_com(0xc0);/设置显示初始坐标for(num=0;num11;num+)/显示年月日星期write_date(table1num);delay(5);write_sfm(14,miao);/分别送去液晶显示write_sfm(13,fen);write_sfm(12,shi);void keyscan()/按键扫描函数if(s1=0)delay(

39、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

40、)/只有功能键被按下后,增加和减小键才有效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);/每调节一次送液晶显示一下write_com(0x80+0x40+12);/显示位置重新回到调节处if(s3=0)delay(5);if(s3=0)/确认减小键被按下while(!s3);/按键释放if(s1num=1)/若功能

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1