基于AT89C51单片机的电机控制综合课程设计.doc

上传人:土8路 文档编号:10061113 上传时间:2021-04-15 格式:DOC 页数:27 大小:8.01MB
返回 下载 相关 举报
基于AT89C51单片机的电机控制综合课程设计.doc_第1页
第1页 / 共27页
基于AT89C51单片机的电机控制综合课程设计.doc_第2页
第2页 / 共27页
基于AT89C51单片机的电机控制综合课程设计.doc_第3页
第3页 / 共27页
基于AT89C51单片机的电机控制综合课程设计.doc_第4页
第4页 / 共27页
基于AT89C51单片机的电机控制综合课程设计.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《基于AT89C51单片机的电机控制综合课程设计.doc》由会员分享,可在线阅读,更多相关《基于AT89C51单片机的电机控制综合课程设计.doc(27页珍藏版)》请在三一文库上搜索。

1、 基于基于 AT89C51AT89C51 单片机的电机控制综合设计单片机的电机控制综合设计 目录目录 1 1 系统的设计系统的设计 .1 1.11.1 设计的目的和要求设计的目的和要求.1 1.21.2 系统原理系统原理.1 2 2 系统的构成系统的构成 .2 2.12.1 控制器部分控制器部分.2 2.1.12.1.1 控制器分析控制器分析.2 2.1.22.1.2 控制器主要功能特性控制器主要功能特性.2 2.1.22.1.2 控制器引脚功能描述控制器引脚功能描述.3 2.22.2 数据显示部分数据显示部分.4 2.2.12.2.1 1286412864 液晶显示模块概述液晶显示模块概述.

2、4 2.2.22.2.2 基本参数基本参数.4 2.2.32.2.3 模块引脚说明模块引脚说明.5 2.2.42.2.4 具体指令介绍:具体指令介绍:.5 2.2.52.2.5 显示坐标关系显示坐标关系.8 3 3 硬件电路设计硬件电路设计 .8 3.13.1 LCDLCD 控制电路原理图控制电路原理图.8 3.23.2 电机控制电路电机控制电路.9 3.33.3 速度反馈电路速度反馈电路.10 3.43.4 MCUMCU 接口接口.11 3.53.5 按键电路按键电路.11 4 4 软件设计软件设计 .12 4.14.1 程序要求程序要求.12 4.24.2 程序流程图程序流程图.12 4.

3、34.3 程序清单程序清单.12 4.3.14.3.1 LCDLCD 驱动程序驱动程序.12 4.3.24.3.2 主函数程序主函数程序.17 5 5 程序的调试程序的调试 .21 5.1 编程软件编程软件 KEIL C51 简介简介.21 5.2 程序编译和调试程序编译和调试.21 6 6 结语结语 .25 1 1 系统的设计系统的设计 1.11.1 设计的目的和要求设计的目的和要求 基于 AT89C51 单片机的电机控制综合系统,以电机为被控对象,由 AT89C51 单片机作 为控制器,结合速度反馈和 LCD 液晶显示模块,组成一个有较好控制性和实时性的电机控 制综合系统。 1.21.2

4、系统原理系统原理 系统的原理如上图 1.2 所示,控制器 AT89C51 通过外围电路控制电机转动。由速度 反馈电路反馈电机的速度信息,并进行伺服计算和控制。整个系统的主要信息可以在 LCD 显示模块上显示。 2 2 系统的构成系统的构成 2.12.1 控制器部分控制器部分 2.1.12.1.1 控制器分析控制器分析 AT89C51 是一种带 4K 字节闪存可编程可擦除 只读存储器(FPEROMFlash Progr ammable and Erasable Read Only Memory)的低电压、高性能 CMOS 8 位微处理器。 单片机的可擦除只读存储器可以反复擦除1000 次。该器件

5、采用 ATMEL 高密度非易失存 储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中, ATMEL 的 AT89C51 是一种高效微控制器 。A T89C 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 MCU 外围 电路 电机 速度反馈 LCD 模块 图 1.1 系统原理图 2.1.22.1.2 控制器主要功能特性控制器主要功能特性 与 MCS-51 兼容 4K 字节可编程闪烁存储器 寿命:1000 写/擦循环 数据保留时间: 10 年 全静态工作:0Hz-24MHz 三级程序存储器锁定 1288 位内

6、部 RAM 32 可编程 I/O 线 两个 16 位定时器/计数器 5 个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路 2.1.22.1.2 控制器引脚功能描述控制器引脚功能描述 AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个 IO 口线,两个16位定时计数器,一个5向量两级中断结构,一个全双工串行通信口, 片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选 的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时计数器,串行通信口及中 断系统继续工作。掉电方式保存RAM中的内

7、容,但振荡器停止工作并禁止其它所有部件工作 直到下一个硬件复位。(本文由 点梦时刻 倾情奉献) Vcc:电源电压 GND:地 P0口是一组8 位漏极开路型双向IO 口,也即地址数据总线复用口。作为输出口用 时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。 在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用, 在访问期间激活内部上拉电阻。在FIash编程时,P0口接收指令字节,而在程序校验时,输 出指令字节,校验时,要求外接上拉电阻。 P1口是一个带内部上拉电阻的8位双向IO口,P1的输出缓冲级可驱动(吸收或输出电 流)4个TT

8、L逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可 作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出 一个电流(IIL)。FIash编程和程序校验期间,P1接收低8位地址。 P2口是一个带有内部上拉电阻的8位双向IO口,P2的输出缓冲级可驱动(吸收或输出 电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时 可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输 出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行 MOVXDPTR指令)时,P2口送出高8位地

9、址数据。在访问8 位地址的外部数据存储器(如执 行MOVXRI 指令)时,P2 口线上的内容(也即特殊功能寄存器(SFR)区中R2寄存器的内 容),在整个访问期间不改变。Flash编程或校验时,P2亦接收高位地址和其它控制信号。 (本文由 点梦时刻 倾情奉献) P3口是一组带有内部上拉电阻的8 位双向IO 口。P3 口输出缓冲级可驱动(吸收或 输 出电流)4 个TTL逻辑门电路。对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输 入端口。作输入端时,被外部拉低的P3 口将用上拉电阻输出电流(IIL)。 P3口除了作为一般的IO口线外,更重要的用途是它的第二功能,如下表2.1.2所示: 端

10、口引脚第二功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INT0(外中断0) P3.3 INT1(外中断1) P3.4 T0(定时计数器0外部输入) P3.5 T1(定时计数器1外部输入) P3.6 WR(外部数据存储器写选通) P3.7 RD(外部数据存储器读选通) P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。 RST :复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机 复位。(本文由 点梦时刻 倾情奉献) ALEPROG: 当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲 用于锁存地址的低8位

11、字节。即使不访问外部存储器,ALE 仍以时钟振荡频率的l6 输出 固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部 数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲 (PROG)。 如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的DO 位置位,可禁止ALE 操作。 该位置位后,只有一条MOVX和MOVC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片 机执行外部程序时,应设置ALE无效。 PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C51 由外部程 序 存储器取指令(或数据)时

12、,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间, 当访问外部数据存储器,这两次有效的PSEN信号不出现。 EA VPP: 外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端 表 2.1 P3 口第二功能 必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状 态。 如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。Flash存储器编程时, 该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。 XTAL1: 振荡器反相放大器的及内部时钟发生器的输入端。 XTAL2:振荡器反

13、相放大器的输出端。 2.22.2 数据显示部分数据显示部分 2.2.12.2.1 1286412864 液晶显示模块概述液晶显示模块概述 12864液晶显示模块是12864 点阵的汉字图形型液晶显示模块,可显示汉字及图形, 内置国标GB2312 码简体中文字库(16X16 点阵)、128 个字符(8X16 点阵)及64X256 点 阵显示RAM(GDRAM)。可与CPU 直接接口,提供两种界面来连接微处理机:8-位并行及串 行两种连接方式。具有多种功能:光标显示、画面移位、睡眠模式等。 2.2.22.2.2 基本参数基本参数 液晶屏类型 STN FSTN 模块显示效果: 黄绿底黑字 蓝底白字

14、白底黑字 视角 6点钟 12点钟 驱动方式 1/64 DUTY 1/9 BIAS 背光 LED白色 LED黄绿色 控制器 KS0108或兼容 ST7920 T6963C 数据总线 8 位并口/6800 方式 串口 温度特性 工作温度:-20+70 储藏温度:-30+80 点阵格式 128 x 64 2.2.32.2.3 模块引脚说明模块引脚说明 引 脚 名称方向说明引 脚 名称方 向 说明 1VSS- 电源负极 11DB4I/O 数据 4 2VDD- 电源正极 (+5v) 12DB5I/O 数据 5 3VO- LCD 偏压输入(悬空) 13DB6I/O 数据 6 4RSH/L 数据/命令选择端

15、(片选信号输入 ) 14DB7I/O 数据 7 5R/W H/L 读/写控制信号(串行数据输入) 15PSBH/L H:并行数据模式 L:串行数据模式 表 2.2 LCD 引脚说明 6EH,H/L 使能信号(串行移位脉冲输入) 16NC- 空脚 7DB0I/O 数据 0 17/RSTH/L 复位端(L:复位) 8DB1I/O 数据 1 18NC- 空脚 9DB2I/O 数据 2 19BLA- 背光源正极 10DB3I/O 数据 3 20BLK- 背光源负极 2.2.42.2.4 具体指令介绍:具体指令介绍: 1、清除显示(指令代码为 01H) CODE: RW RS DB7 DB6 DB5 D

16、B4 DB3 DB2 DB1 DB0 功能:清除显示屏幕,把 DDRAM 位址计数器调整为“00H”。 2、位址归位(02H) CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 功能:把 DDRAM 位址计数器调整为“00H”,游标回原点,该功能不影响显示 DDRAM。 3、点设定(07H/04H/05H/06H) CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 功能:设定光标移动方向并指定整体显示是否移动。 I/D=1 光标右移,I/D=0 光标左移。 SH=1 且DDRAM 为写状态:整体显示移动,方向由I/D

17、决定(I/D=1 左移,I/D=0 右移) SH=0 或 DDRAM 为读状态:整体显示不移动 4、显示状态开/关(08H/0CH/0EH/0FH) CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 功能: D=1;整体显示 ON C=1;游标 ON B=1;游标位置 ON. 5、游标或显示移位控制(10H/14H/18H/1CH) CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 LLLLLLLLL H LLLLLLLLH X LLLLLLLHI/D S LLLLLLHDC B LLLLLHS/CR/LX X 功能:

18、10H/14H:光标左/右移动;18H/1CH:整体显示左右移动,光标跟随移动,AC 值不 变 6、功能设定(36H/30H/34H) CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 功能:DL=1(必须设为 1) RE=1;扩充指令集动作 RE=0:基本指令集动作 5、游标或显示 移位控制(10H/14H/18H/1CH) 7、设定CGRAM 位址(40H-7FH) CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 功能:设定 CGRAM 位址到位址计数器(AC) 8、设定 DDRAM 位址(80H-9FH) CO

19、DE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 功能:设定 DDRAM 位址到位址计数器(AC) 9、读取忙碌状态(BF)和位址(BF=1, 状态忙) CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 功能:读取忙碌状态(BF)可以确认内部动作是否完成,同时可以读出位址计数器(AC) 的值 10、写资料到 RAM(本文由 点梦时刻 倾情奉献) CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 功能:写入资料到内部的 RAM(DDRAM/CGRAM/TRAM/GDRAM) 11、读出

20、RAM 的值 CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 LLLLHDL XO REX X LLLH AC5AC4AC3AC2AC1 AC0 LLHAC6AC5AC4AC3AC2AC1 AC0 H LBFAC6AC5AC4AC3AC2AC1 AC0 LHD7D6D5D4D3D2D1 D0 HHD7D6D5D4D3D2D1 D0 功能:从内部 RAM 读取资料(DDRAM/CGRAM/TRAM/GDRAM) 12、待命模式(01H) CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 功能:进入待命模式,执行其他命令

21、都可终止待命模式 13、卷动位址或IRAM 位址选择(02H/03H) CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 功能:SR=1;允许输入卷动位址 SR=0;允许输入 IRAM 位址 14、反白选择(04H05H) CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 功能:选择 4 行中的任一行作反白显示,并可决定反白的与否 15、睡眠模式(08H/0CH) CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 功能:SL=1;脱离睡眠模式 SL=0;进入睡眠模式 16、扩充功能

22、设定(36H/30H/34H) CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 功能:RE=1;扩充指令集动作 RE=0;基本指令集动作 G=1;绘图显示 ON G=0;绘图显示 OFF 17、设定 IRAM 位址或卷动位址(40H-7FH) CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 功能:SR=1;AC5AC0 为垂直卷动位址 SR=0;AC3AC0 写 ICONRAM 位址 18、设定绘图 RAM 位址(80H-FFH) CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB

23、0 功能:设定 GDRAM 位址到位址计数器(AC) 2.2.52.2.5 显示坐标关系显示坐标关系 LLLLLLLLL H LLLLLLLLH SR LLLLLLLHR1 R0 LLLLHHX1REG L LLLLLHS/CR/LX X LLLHAC5AC4AC3AC2AC1 AC0 LLHAC6AC5AC4AC3AC2AC1 AC0 X 坐标 Line1 80H 81H 82H 83H 84H 85H 86H 87H Line2 90H 91H 92H 93H 94H 95H 96H 97H Line3 88H 89H 8AH 8BH 8CH 8DH 8EH 8FH Line4 98H 9

24、9H 9AH 9BH 9CH 9DH 9EH 9FH 3 3 硬件电路设计硬件电路设计 3.13.1 LCDLCD 控制电路原理图控制电路原理图 VC C 3.3 104 C 27 GND 1K R 37 10K R 73 VC C 5 1K R 75 A0 D0 D1 D2 D3 D4 D5 D6 D7 VC C 3.3 VDD 2 VIO 3 R S 4 VS S 4 DB 0 7 DB 1 8 DB 2 9 DB 3 10 DB 4 11 DB 5 12 DB 6 13 DB 7 14 PS B 15 NC 16 R W 5 E 6 R S T 17 NC 18 LED- 19 LED+

25、 20 J10 C omponent_1 R 76 A1 LC D-EN VC C 3.3 Q18 8550 VC C 5 470 R 19 100K R 71 GND 10K R 70 100K R 111 LC D-LIGHT Q22 8050 图 3.1 LCD 控制电路原理图 3.23.2 电机控制电路电机控制电路 电机 H 桥控制电路如下图 3.2 所示。当 DCMotorA 为高电平时,NPN 型三极管 Q4 导通 ,则 PNP 型三极管 Q2 和 NPN 型三极管 Q6 会同时导通;同时 DCMotorB 为低电平,NPN 型三 极管 Q5 关闭,则 PNP 型三极管 Q3 和

26、NPN 型三极管 Q7 会同时关闭。此时,电流将从 MOTOR B 经过电机向 MOTORA 方向流动,如此驱动电机正向转动。反之,DCMotorA 为低电平,DCMo torB 为高电平,电机为反向转动。如此可以实现电机的正反转控制。调节 DCMotorA 或 DCM otorB 的导通时间,可以实现电机的调速控制。 (本文由 点梦时刻 倾情奉献) M GV+ 5.1 R 5 5.1 R 6 105 C 3 D2 D3 Q2Q3 Q4 1K R 10 1K R 12 103 C 4 GND DC M otorA DC M otorB 103 C 5 Q7 Q5 120 R 13 Q6 120

27、 R 11 D4 Diode D6 D5 GND 1 2 P3 Header 2 M OTOR B M OTOR A M M G1 机机 M OTOR BM OTOR A 图 3.2 电机控制电路 3.33.3 速度反馈电路速度反馈电路 速度反馈电路如上图 3.3 所示。当光耦 Optoisolator1 导通时,PNP 型三极管 Q1 导通 ,指示灯 LED1 发光,此时 DCMotorSpeed 端口为低电平。当光耦 Optoisolator1 不导通时 ,指示灯 LED1 不发光,此时 DCMotorSpeed 端口为高电平。电机带了一个有四个缺口的转 盘,如此。当电机转动一圈时,会有

28、4 个脉冲输入给单片机,对这些脉冲进行计数,可以 计算出电机的转动速度。 (本文由 点梦时刻 倾情奉献) 由于装在电机上的码盘格数比较少,而我们程序中速度的级数为 255,相对较大。给 速度计数的 T0 计数器,为满足系统的实时控制性,则获取速度数据的时间应该尽量短(即 程序中 T0 定时器初始化程序中的 Delay 延时) 。同时,这一时间又要满足当给定速度最大 时,仍有足够的时间能够对速度反馈值进行正确的计数。所以这一时间不能够太短。合理 的确定这一时间的方法是,给定电机速度为 255,让其全速转动。此时,从小到大更改计 数延时 Delay()的时间,然后在液晶显示器上观察反馈的速度值,当

29、其刚好为 255 时, 此时的延时 Delay()时间为系统的的最佳速度采样时间。 经过上述处理后,我们发现获得的这个延时时间是相对比较长的,这是因为当给定速 度较大时,电机需要转几十圈才能反馈出实际的速度值,所以反馈速度所需的时间比较长 ,实时控制的能力相对较差。为克服以上系统的缺点,可以通过减少速度的级数,即减小 Pwm_MAX 的值来实现。但是速度的级数减少后,电机调速的连续性就必然会降低,电机在 速度动态变化过程中的稳定性就会相应降低。另外,还可以采用增加电机码盘格数的方法 来实现速度反馈的快速性和准确性,借此可以在较合理的时间内得到电机速度的准备值。 第二种改进方案更为合理和科学。

30、3.43.4 MCUMCU 接口接口 P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 R ST 9 P3.0(R XD) 10 P3.1(TXD) 11 P3.2 12 P3.3 13 P3.4(T0) 14 P3.5T1) 15 P3.6 16 P3.7 17 XTAL2 18 XTAL1 19 GND 20 P2.0 21 P2.1 22 P2.2 23 P2.3 24 P2.4 25 P2.5 26 P2.6 27 P2.7 28 PSEN 29 ALE 30 VPP 31 P0.7 32 P0.6 33 P0.5 34 P

31、0.4 35 P0.3 36 P0.2 37 P0.1 38 P0.0 39 VC C 40 AT89C 51 D5 D0 D1 D2 D3 D4 D6 D7 DC M otorSpeed P2.0 P2.1 P2.2 DC M otor A DC M otor B LC D-LIGHT LC D-EN A0 A1 图 3.4 MCU 接口 VC C 3.3 Q1 10K R 4 D1 LED1 220R 9 1K R 7 U2 Optoisolator1 34 12 HEF40106 DC M otorSpeed DC M otorSpeed 470 R 1 470 R 2 VC C 3.3

32、 10K R 3 VC C 3.3 102 C 2 1KR 8 103 C 1 图 3.3 速度反馈电路 3.53.5 按键电路按键电路 按键电路如上图 3.5 所示。当 任意一个按键 KEY 被按下时,P2.0 P2.2 引脚会对应的的产生一个低 电平。 4 4 软件设计软件设计 4.14.1 程序要求程序要求 我们使用语言对 AT89C51 进 行控制程序的编写。程序中使用到 的资源有两个定时器资源,T0 工作 在 16 位外部计数模式,用于速度 的反馈和计算等数据处理。T1 工作 在 8 位定时器自动重载模式,引脚 P3.4 接计数信息输入端口。在 T1 的定时溢出中断程序中进行速度的

33、产生及对电机的控制操作。系统使 开启中断 开始 LCD 初始化 显示预处理 初值设定 按键处理 速度计算 数据处理 返回 中断服务 电机控制 图 4.1 程序流程图 图 3.5 按键电路 KEY1 KEY2 KEY3 10K R 33 10K R 32 10K R 31 VC C 3.3 220 R 34 220 R 35 220 R 36 P2.0 P2.1 P2.2 用到 5 个普通 I/O 口资源。P1.6 和 P1.7 为控制电机转动的两路控制信号。P2.0 作为加速 按键信息输入端口,P2.1 作为减速按键信息输入端口,P2.2 作为方向控制键信息输入端口 。 (本文由 点梦时刻 倾

34、情奉献) 程序运行时,先进行 LCD 控制程序的初始化并对显示进行预处理。然后读预设速度初 值,由 T1 中断服务程序产生 PWM 速度控制信号,T0 反馈速度信息并进行速度的计算处理 。KEY1 和 KEY2 可对速度进行加减操作。KEY3 可对电机进行正反转的控制操作。 程序的编写要遵循性保证系统稳定性的前提下消耗尽量少消耗资源的原则,并要考虑 实际的可操作性和满足系统在各种工作环境下能稳定正常运行的要求。 4.24.2 程序流程图程序流程图 4.34.3 程序清单程序清单 4.3.14.3.1 LCDLCD 驱动程序驱动程序 /* LCD.C 12864 LCD 驱动程序头文件 */ #

35、ifndef LCD_H_ #define LCD_H_ #include sbit LCD_BL=P14; /定义背光控制信号 void LcdLightOn();/点亮背光灯 void LcdLightOff(); /熄灭背光灯 void LcdClear();/清屏 void LcdInit();/初始化 void LcdPutChar(unsigned char c);/显示 ASC码 void LcdPuts(unsigned char*s); /显示字符串 #endif /LCD_H_ /* LCD.C 12864 LCD 驱动程序 */ #include #include uns

36、igned char LcdCursor; /定义屏幕光标(取值 063,光标本身不可见) int i,j; void LcdLightOn() /功能:点亮背光灯 LCD_BL = 1; void LcdLightOff() /功能:熄灭背光灯 LCD_BL = 0; /* 函数:LcdGetBF() 返回: BF=1,表示忙,不可进行任何操作 BF=0,表示不忙,可以进行正常操作 */ bit LcdGetBF()/功能:读出状态位 BF unsigned char dat; dat = XBYTE0 xD002;/XBYTE 的定义见 return (bit)(dat void LcdWriteCmd(unsigned char cmd) /功能:向 LCD 发送命令 while ( LcdGetBF() ); XBYTE0 xD000 = cmd; void LcdWriteDat(unsigned char dat) / 功能:向 LCD 写入数据 while ( LcdGetBF() ); XBYTE0 xD001 = dat; unsigned ch

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

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


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