毕业设计--单片机多机通信实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
毕业设计说明书
单片机多机通信实现
摘要:目前,单片机在多机通信领域应用很广。
但研究最多的是上位机与下位
机的通信及多单片机构成的主从式多机通信系统。
本文重点研究了多单片机的平权式多机通信,使各单片机有相同的权限。
本文从平权式多机通信协议入手,首先设计了具体平权式多机通信协议;主机通信用按键控制,模拟实际应用中的触发信号输入。
对于 1 号单片机,还可通过液晶实时显示工作状态,初始为主机。
在不需置其他单片机为主机的情形下,本多机通信系统可以作为主从式多机通信系统。
从机通信模式通过串口中断触发启动,通信结束即恢复之前的从机状态。
通信过程中,主机先发送寻址的从机号,待从机响应后开始通信。
通信结束后,主机发送自己的主机号,告知从机。
然后从机发给主机校验字节数据,主机检验错误,检验无误后,作出响应,1 号单片机液晶会显示,2 号和3 号单片机收发数据无误后会使LED 指示灯亮起。
其外,本文研究了可切换双向接口的实现方法。
通过用单片机的一个引脚控制单片机的串口的连接方式,使其工作在主机模式或从机模式。
本研究已经仿真通过,真实可行。
具有一定的检错能力,串行通信的比特率是9600bit/s,通信速度较快,且可靠性高。
本研究通过硬件电路解决了通信过程中多单片机争用主机权的问题。
关键词:单片机;多机通信;平权;AT89S52
I
盐城工学院本科生毕业设计说明书
(2010)
Realization of many SCM communication
Abstract:At present, the single chip multi-machine communication in a wide field :
of applications. However, the most studied is the host computer and lower computer communications and multi-chip microprocessor master-slave multi-machine
communication system. This paper focuses on a number of single chip multi-machine communication affirmative, so that the MCU has the same permissions. The paper machine from the multi-level communication protocol of the right to start with, first, the specific communication protocol. Host Communication button control, the practical application of simulation in the trigger signal input. For the No. 1 microcontroller, but also through the LCD display working status, the initial for the host. No other single chip set in the case of the host, the multi-machine communication system can be used as master-slave multi-machine communication system. Communication mode from the machine through the serial port interrupt triggering, communication before the end of the recovery from the machine state. Communication process, the host sends the address number from the machine until the response from the plane after communications. After communication, the host sends its own host number, informed from the machines. And then distributed to the host from the machine check bytes of data, the host test error, test and proved correct response, 1 single chip LCD displays, 2 and 3, after the MCU will send and receive data correct LED light is on. Besides, this paper, bi-directional switch implementation of the interface methods. Through the use of microcomputer control of a microcontroller pin serial port connection, to work in master mode or slave mode. This study has been simulated by the real feasible. Have some error detection capability, the bit rate of serial communication 9600bit / s, communication speed, and reliability. In this study, the hardware circuit through the
communication process to resolve the contention over the host microcontroller over the issue.
Key words:SCM;Multi-machine communication;Equal rights;AT89S52 ::
II
盐城工学院本科生毕业设计说明书
(2010)
目录
1 绪论......1 1.1 论文研究的背景与意义......1 1.2 单片机多机通信领域的历史及国内外发展现状...... 1 1.3 本论文的研究内容...... 2 2 单片机多机通信理论及方案选择......3 2.1 单片机串口通信...... 3 2.2 单片机多机通信方案选择...... 5 2.3 微处理器的选择......5 2.4 液晶LCD1602 介绍......9 3 单片机多机通信协议设计......15 4 硬件电路设计......16 4.1 单片机最小系统的设计......16 4.2 矩阵键盘电路设计 (17)
4.3 液晶显示电路设计......18 4.4 可切换接口电路设计......19 4.5 2 号与3 号单片机按键电路设计......23 4.6 LED 显示电路设计 (23)
4.7 主机权分配电路设计……24 4.8 电源电路设计……28 5 软件设计……29
5.1 多机通信协议的算法设计……29 5.2 键盘程序设计……32 5.3 系统初始化程序设计……35 6 结论……35 参考文献……36 致谢……37 附录1:1 号单片机电路原理图……38 附录2:2 号单片机电路原理图……39 附录3:3 号单片机电路原理图……错误!未定义书签。
错误!未定义书签。
附录4:仿真电路图……42 附录5:源程序:……
43
III
盐城工学院本科生毕业设计说明书
(2010)
单片机多机通信实现
1 绪论
1.1 课题研究的背景与意义目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC 卡,民用豪华轿车的安全保障系统,录象机、摄象机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械了。
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域随着计算机技术的发展及工业自动化水平的提高, 在许多场合采用单机控制已不能满足现场要求,因而必须采用多机控制的形式, 而多机控制主要通过多个单片机之间的串行通信实现。
串行通信作为单片机之间常用的通信方法之一, 由于其通信编程灵活、硬件简洁并遵循统一的标准, 因此其在工业控制领域得到了广泛的应用。
构成较大规模的检测、控制系统,经常要采用多个单片机,组成可以通信的多机系统。
Mcs一51系列单片机为实现多机通信联网设计了方便的串行通信接口功能。
将多个Mcs一51单片机组成串行总线形式的相互通道,通过写单片机的串行控制方式寄存器,将串行口置成方式2或方式3,就可以实现主机与分机之间的串行通信。
这种多机系统结构简单,应用广泛,但它只能实现由主机呼叫分机,然后实现主机与分机之间的全双工串行通信。
我们在监控系统中要求既有主机与分机主动通信,又有分机与主机主动通信,这种结构的多机系统就无法满足要求。
多机协同工作已是单片机发展的一个重要趋势,目前单片机多机通信的主要方式仍然是主从式多机通信系统。
单片机多机通信的目的是实现分布式处理系统,单片机多机通信的方式有很多种,应用前景广阔,非常具有研究意义!1.2 单片机多机通信领域的历史及国内外发展现状单片微型计算机(Single Chip Microcomputer)简称单片机,又称
MCU(Micro Controller Unit),是将计算机的基本部分微型化,使之集成在一块芯片上的微机.片内含有CPU、ROM、RAM、并行I/O、串行I/O、定时器/计数器、中断控制、系统时钟及系统总线等。
随着科技的发展,单片机已不是一个陌生的名词,它的出现是近代计算机技术发展史上的一个重要里程碑,因为单片机的诞生标志着计算机正式形成了通用1
单片机多机通信实现
计算机系统和嵌入式计算机系统两大分支。
单片机单芯片的微小体积和低的成本,可广泛地嵌入到如玩具、家用电器、机器人、仪器仪表、汽车电子系统、工业控制单元、办公自动化设备、金融电子系统、舰船、个人信息终端及通讯产品中,成为现代电子系统中最重要的智能化工具。
所涉及的市场占有率最高的是MCS—51 系列,因为世界上很多知名的IC 生产厂家都生产51 兼容的芯片。
生产MCS—51 系列单片机的厂家如美国AMD 公司、ATMEL 公司、INTEL 公司、WINBOND 公司、PHILIPS 公司、ISSI 公司、TEMIC 公司及南韩的LG 公司、日本NEC、西门子公司等。
到目前为止,MCS—51 单片机已有数百个品种,还在不断推出功能更强的新产品。
现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。
单片机的通信领域应用首先从两片单片机之间的通信发展起来,后来有了主从式多机通信并得到了广泛的应用,又出现了以单片机作为下位机与以PC 机作为上位机的通信应用,上位机用VB 或VC++等面向对象的程序设计语言编写通信收发程序,也得到了广泛的应用。
虽然,单片机多机通信已经有较长的研究历史了,但其形式大多是主从式的,很少是平权式的。
1.3 本课题的研究内容本文在研究传统的多机通信系统的基础上,设计了一种基于MCS-51 系列单片机AT89S52 的多机通信系统。
初始时,1 号单片机为主机。
主机通过串口向从单片机发送指定格式的数据,从单片机收数据并作出响应,主机通过液晶屏显示通信信息,从机通过LED 显示通信状态。
主机通信结束即转为从机,其他单片机可置为主机,获得总线控制权。
号单片机通过矩阵键盘控制通信过程与1 显示,2 与 3 号单片机通过独立按键控制通信状态与主从机切换。
在此多机通信系统中,各个单片机具有平等的权限。
仅在初始时,1 号单片机被默认置为主机,若不需使2 号与3 号单片机变成主机,则此通信系统可以作为主从式多机通信系统。
任何时刻,系统只有一片单片机作为主机,其他均为从机。
主机发送的信息可以传送到指定从机,各从机之间也不能直接通信。
主机发起通信,从机接收到自己的单片机号后,开始与主机通信。
2
盐城工学院本科生毕业设计说明书
(2010)
2 单片机多机通信理论及方案选择
2.1 单片机串口通信2.1.1 单片机串口介绍AT89S52 单片机内部含有一个可编程全双工串行通信接口,具有UART 的全部功能。
该接口电路不仅能同时进行数据的发送和接收,也可作为一个同步移位寄存器使用。
在进行异步通信时,数据的发送和接收分别在各自的时钟(TCLK 和RCLK)控制下进行的,但都必须与字符位数的波特率保持一致。
MCS-51 串行口的发送和接收时钟可由两种方式产生,一种是由主机频率fosc 经分频后产生,另一种方式是由内部定时器T1 或T2 的溢出率经16 分频后提供。
串行口的发送过程由一条写发送缓冲器的指令把数据(字符)写入串行口的发送缓冲器SBUF(发)中,再由硬件电路自动在字符的始、末加上起始位(低电平)、停止位(高电平)及其它
控制位(如奇偶位等),然后在移位脉冲SHIFT 的控制下,低位在前,高位在后,从TXD 端(方式0 除外)一位位地向外发送。
串行口的接收与否受制于允许接收位REN 的状态,当REN 被软件置“1”后,允许接收器接收。
接收端RXD 一位位地接收数据,直到收到一个完整的字符数据后,控制电路进行最后一次移位,自动去掉启始位,使接收中断标志RI 置“1”,并向CPU 申请中断。
TI 和RI 是由硬件置位的,但需要用软件复位。
2.1.2 单片机串口控制寄存器a.SBUF 是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据。
两个缓冲器只用一个字节地址99H,可通过指令对SBUF 的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。
串行口对外有两条独立的收发信号线RXD(P
3.0)、TXD(P3.1),因此可以同时发送、接收数据,实现全双工。
b.SCON 寄存器用来控制串行口的工作方式和状态,可按位寻址,其字节地址为98H。
它用于定义串行口的工作方式及实施接收和发送控制。
字节地址为98H,其各位定义如表2-1。
表2-1 SCON 寄存器的各位功能定义D7 SM0 D6 SM1 D5 SM2 D4 REN D3 TB8 D2 RB8 D1 TI D0 RI
表2-2 串行口工作方式选择位定义
3
单片机多机通信实现
SM0、SM1 0 0 1 1 0 1 0 1
工作方式方式0 方式1 方式2 方式3
功能描述8位移位寄存器10位UART 11位UART 11位UART
波特率Fosc/12 可变Fosc/64或fosc/32 可变
其中fosc 为晶振频率SM2:多机通讯控制位。
在方式0 时,SM2 一定要等于0。
在方式1 中,当SM2=1 时,则只有接收到有效停止位时,才置1。
RI 在方式 2 或方式3 下,SM2=1 当且接收到的第九位数据RB8=1 时,RI 才置1。
REN:接收允许控制位。
由软件置位以允许接收,又由软件清0 来禁止接收。
TB8: 是要发送数据的第9 位。
在方式2 或方式3 中,要发送的第9 位数据,根据需要由软件置1 或清0。
RB8:接收到的数据的第9 位。
在方式0 中不使用RB8。
在方式1 中,SM2=0,若RB8 为接收到的停止位。
在方式 2 或方式 3 中,RB8 为接收到的第9 位数据。
TI:发送中断标志。
在方式0 中,第8 位发送结束时,由硬件置位。
在其它方式的发送停止位前,由硬件置位。
TI 置位既表示一帧信息发送结束,同时也是申请中断,可根据需要,用软件查询的方法获得数据已发送完毕的信息,或用中断的方式来发送下一个数据。
TI 必须用软件清0。
RI:接收中断标志位。
在方式0,当接收完第8 位数据后,由硬件置位。
在其它方式中,在接收到停止位的中间时刻由硬件置位(例外情况见于SM2 的说明)。
RI 置位表示一帧数据接收完毕,可用查询的方法获知或者用中断的方法获知。
RI 也必须用软件清0。
c.PCON 中的SMOD 用来控制波特率加倍。
d.TMOD 设置定时器1 的工作方式,用来产生波特率 e.如果用到中断,则还需要用到中断相关的寄存器IE,IP 等 2.1.3 单片机串口的四种工作方式方式0:同步移位寄存器方式,其波特率是固定为振荡频率fosc 的1/12。
在这种工作方式下,发送和接收串行数据都通过RXD (P3.0)进行,TXD 从(P3.1)输出移位脉冲,控制外部的移位寄存器移位。
1 帧信息为8 位,没有起始位,停止位。
方式1:位UART,帧信息为10 位,8 1 其中一位起始位“0”八位数据位、(先低位后高位)和一个停止位“1”,波特率可变,根据定时器 1 的溢出率计算。
方式2:位UART,帧信息为11 位,9 1 其中一位起始位“0”八位数据位、(先低位后高位),一位控制位(第九位)和一个停止位“1”。
波特率为振荡频率的1/64 或1/32 4
盐城工学院本科生毕业设计说明书
(2010)
方式3:9 位UART,帧信息为11 位,其中一位起始位“0”、八位数据位(先低位后高位),一位控制位(第九位)和一个停止位“1”。
波特率可变,根据定时器1 的溢出率计算。
附加的第9 位数据为SCON 中的TB8 的值,它由软件置位或清零,可作为多机通信中地址/数据信息的标志位,也可作为数据的奇偶校验位。
单片机的串行通信传输方式有三种:单工制式、半双工制式和全双工制式。
2.2 单片机多机通信方案选择根据需要,各片单片机有相等的权限,每块单片机都可设置为主机或从机,因此单片机的串口应具有双向可选择性。
采用两个同相三态门加上一个反相器即可构成这样的接口,并由单片机的一根引脚控制单片机串口的连接方式。
发送数据区可存放1B~48B 的数据,以空字符'\0'作为发送数据结束标志。
接收数据时以空字符作为接收有效数据结束标志。
通信结束时,从机发回收发长度作为校验。
2.3 微处理器的选择本系统对微处理器要求不是太高,速度不要求太高,但代码较长,因此要求微处理器应有较大的程序存储空间,最好用Flash ROM。
通信的发送缓冲区与接收缓冲区均从RAM 中分配,为了能传送更多的数据,要求要有较大的RAM。
此外,处理器还应有一个全双工的串行口。
综合考虑以上各种因素,选用MCS-51 系列的单片机AT89S52。
A T89S52 是一种低功耗高性能的CMOS 8 位微处理器,具有8K 在系统可编程Flash 存储器。
使用Atmel 公司高密度非易失性存储技术制造,与工业80C51 产品指令和引脚完全兼容。
片上Flash 允许程序存储器在系统可编程,亦适用于常规编程器。
在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52 具有以下标准功能:字节Flash,8k 256 字节RAM,位I/O 口32 线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个 6 向量 2 级中断结构,全双工串行口,片内晶振及时钟电路。
另外,A T89S52 可降至0Hz 静态逻辑操作,支持 2 种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
其引脚结构如下图:
5
单片机多机通信实现
图2-1 AT89S52 的引脚结构
单片机AT89S52 的引脚说明: VCC:电源GND:地P0口:P0 口是一个8 位漏极开路的双向I/O 口。
作为输出口,每位能驱动8 个TTL 逻辑电平。
对P0 端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0 口也被作为低8 位地址/数据复用。
在这种模式下,P0 具有内部上拉电阻。
在flash 编程时,P0 口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动 4 个TTL 逻辑电平。
对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,
6
盐城工学院本科生毕业设计说明书
(2010)
将输出电流(IIL)。
此外,P1.0 和P1.2 分别作定时器/计数器2 的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。
在Flash编程和校验时,P1口接收低8位地址字节。
P1 口的第二功能如下表:
表2-2 P1 口的第二功能引脚号P1.0 P1.1 P1.5 P1.6 P1.7 第二功能T2(定时器/计数
器T2 的外部计数输入),时钟输出T2EX(定时器/计数器T2 的捕捉/重载触发信号和方向控制)MOSI(在系统编程用)MISO(在系统编程用)SCK(在系统编程用)P2口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL逻辑电平。
对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2 口输出P2锁存器的内容。
在flash 编程和校验时,P2 口也接收高8 位地址字节和一些控制信号。
P3 口:口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能P3 驱动 4 个TTL 逻辑电平。
对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将
输出电流(IIL)。
P3 口亦作为AT89S52 特殊功能(第二功能)使用,如下表所示。
在Flash 编程和校验时,P3 口也接收一些控制信号。
P3 口具有第二功能,具体如下表。
表2-3 P3 口的第二功能引脚号P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 第二功能RXD(串行输入)TXD(串行输出)INT0(外部中断0)INT1(外部中断1)T0(定时器0 的外部输入)T1(定时器0 的外部输入)WR(外部数据存储器写选通)RD(外部数据存储器读选通)7
单片机多机通信实现
RST:复位输入。
晶振工作时,RST 脚连续两个机器周期高电平使单片机复位。
看门狗计时完成后,RST 脚输出96 个晶振周期的高电平。
:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位
地址的输出脉冲。
在flash 编程时,此引脚(PROG)也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。
然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
如果需要,通过将地址为8EH 的SFR 的第0 位置“1”,ALE 操作将无效。
这一位置“1”,ALE 仅在执行MOVX 或MOVC 指令时有效。
否则,ALE将被微弱拉高。
这个ALE 使能标志位(地址为8EH 的SFR的第0位)的设置对微控制器处于
外部执行模式下无效。
:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。
当A T89S52 从外部程序存储器执行外部代码时,PSEN 在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN 将不被激活。
:访问外部程序存储器控制信号。
为使能从0000H 到FFFFH 的外部程序存储器读取指令,EA 必须接GND。
为了执行内部程序指令,EA 应该接VCC。
在flash 编程期间,EA 也接收12 伏VPP电压。
XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:振荡器反相放大器的输出端。
表2-4 AT89S52 特殊寄存器映象及复位值
8
盐城工学院本科生毕业设计说明书
(2010)
并不是所有的地址都被定义了,片上没有定义的地址是不能用的。
读这些地址,一般将得到一个随机数据;写入的数据将会无效。
用户不应该给这些未定义的地址写入数据“1”。
由于这些寄存器在将来可能被赋予新的功能,复位后,这些位都为“0”。
定时器2 寄存器:寄存器T2CON 和T2MOD 包含定时器2 的控制位和状态位(如表2和表 3 所示),
寄存器对RCAP2H和RCAP2L是定时器2 的捕捉/自动重载寄存器。
中断寄存器:各中断允许位在IE 寄存器中,六个中断源的两个优先级也可在IE 中设置。
T2CON地址为0C8H 复位值:0000 0000B 位可寻址
表2-5 T2CON 位定义RCLK TCLK EXEN2 TR2 D5 D4 D3 D2
TF2 D7
EXF2 D6
C/T2 D1
CP/RL2 D0
TF2:定时器2 溢出标志位。
必须软件清“0”。
RCLK=1 或TCLK=1 时,TF2 不用置位。
EXF2:定时器2 外部标志位。
EXEN2=1 时,T2EX 上的负跳变而出现捕捉或重载时,EXF2 会被硬件置位。
定时器 2 打开,EXF2=1 时,将引导CPU 执行定时器 2 中断程序。
EXF2 必须如见清“0”。
在向下/ 向上技术模式(DCEN=1)下EXF2 不能引起中断。
RCLK:串行口接收数据时钟标志位。
若RCLK=1,串行口将使用定时器2 溢出脉冲作为串行口工作模式1 和 3 的串口接收时钟;RCLK=0,将使用定时器 1 计数溢出作为串口接收时钟。
TCLK:串行口发送数据时钟标志位。
若TCLK=1,串行口将使用定时器2 溢出脉冲作为串行口工作模式1和 3 的串口发送时钟;TCLK=0,将使用定时器1 计数溢出作为串口发送时钟。
定时器 2 外部允许标志位。
当EXEN2=1 时,如果定时器2 没有用作串行时钟,T2EX(P1.1)的负跳变见引起定时器2 捕捉和重载。
若EXEN2=0,定时器 2 将视T2EX 端的信号无效TR2:开始/停止控制定时器2。
TR2=1,定时器2 开始工作定时器2 定时/计数选择标志位。
为0,定时;为1,外部事件计数(下降沿触发)CP/RL2:捕捉/重载选择标志位。
当EXEN2=1 时,为1,T2EX 出现负脉冲,会引起捕捉操作;当定时器 2 溢出或EXEN2=1 时T2EX 出现负跳变,都会出现自动重载操作。
为0 将引起T2EX 的负脉冲。
当RCKL=1 或TCKL 为 1 时,此标志位无效,定时器 2 溢出时,强制做自动重载操作。
2.4 液晶LCD1602 介绍市面上字符液晶绝大多数是基于HD44780 液晶芯片的,控制原理是完全相同的,因此HD44780 写的控制程序可以很方便地应用于市面上大部分的字符型液字符型LCD 通常有14 条引脚线或16 条引脚线的LCD,多出来的2 条线是背光电源线晶。
9
单片机多机通信实现
VCC(15 脚)和地线GND(16 脚),其控制原理与14 脚的LCD 完全一样,定义如下表所示:表2-6 LCD1602 的引脚定义
HD44780 内置了DDRAM、CGROM 和CGRAM。
DDRAM 就是显示数据RAM,用来寄存待显示的字符代码。
共80 个字节,其地址和屏幕的对应关系如下表:表2-7 DDRAM 地址与屏幕对应关系
要在LCD1602 屏幕的第一行第一列显示一个"A"字,就要向DDRAM 的00H 地址写入
10
盐城工学院本科生毕业设计说明书
(2010)
“A”字的代码就行了。
但具体的写入是要按LCD 模块的指令格式来进行的。
在1602 中我们就用前16 个就行了。
第二行也一样用前16 个地址。
对应如下:
表2-8 DDRAM 地址与显示位置的对应关系
文本文件中每一个字符都是用一个字节的代码记录的。
一个汉字是用两个字节的代码记录。
在PC 上我们只要打开文本文件就能在屏幕上看到对应的字符是因为在操作系统里
和BIOS 里都固化有字符字模。
字模就代表了是在点阵屏幕上点亮和熄灭的信息数据。
例如“A”01110 10001 10001 10001 11111 10001 10001
图2-2 'A'的字模
○■■■○■○○○■■○○○■■○○○■■■■■■■○○○■■○○○■
上图左边的数据就是字模数据,右边就是将左边数据用“○”代表0,用“■”代表1。
在LCD 模块上也固化了字模存储器,这就是CGROM 和CGRAM。
HD44780 内置了192 个常用字符的字模,存于字符产生器CGROM(Character Generator ROM)中,另外还有8 个允许用户自定义的字符产生RAM,称为CGRAM(Character Generator RAM)。
下图说明了CGROM 和CGRAM 与字符的对应关系。
表2-9 CGROM 中字符码与字模关系对照表
11
单片机多机通信实现
从上图可以看出,“A”字的对应上面高位代码为0100,对应左边低位代码为0001,合起来就是01000001,也就是41H。
可见它的代码与我们PC 中的字符代码是基本一致的。
因此我们在向DDRAM 写C51 字符代码程序时甚至可以直接用P1='A'这样的方法。
PC 在编译时就把“A”先转为41H 代码了。
HD44780 的指令集介绍,共11 条指令:
1.清屏指令
功能:<1> 清除液晶显示器,即将DDRAM 的内容全部填入"空白"的ASCII 码20H;
<2> 光标归位,即将光标撤回液晶显示屏的左上方;<3> 将地址计数器(AC)的值设为0。
2.光标归位指令
12
盐城工学院本科生毕业设计说明书
(2010)
功能:<1> 把光标撤回到显示器的左上方;<2> 把地址计数器(AC)的值设置为0;<3> 保持DDRAM 的内容不变。
3.进入模式设置指令
功能:设定每次定入1 位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。
参数设定的情况如下所示:位名设置I/D S 右移1 个字符
4.显示开关控制指令
0=写入新数据后光标左移0=写入新数据后显示屏不移动
1=写入新数据后光标右移1=写入新数据后显示屏整体
功能:控制显示器开/关、光标显示/关闭以及光标是否闪烁。
参数设定的情况如下:位名设置D 0=显示功能关1=显示功能开C 0=无光标1=有光标B 0=光标闪烁1=光标不闪烁
5.设定显示屏或光标移动方向指令
13
单片机多机通信实现
功能:使光标移位或使整个显示屏幕移位。
参数设定的情况如下:S/C R/L 设定情况0 0 光标左移1 格,且AC 值减1 0 1 光标右移1 格,且AC 值加1 1 0 显示器上字符全部左移一格,但光标不动1 1 显示器上字符全部右移一格,但光标不动
6.功能设定指令
功能:设定数据总线位数、显示的行数及字型。
参数设定的情况如下:位名设置DL 0=数据总线为4 位1=数据总线为8 位N 0=显示1 行1=显示2 行F 0=5×7 点阵/每。