




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章80C51功能扩展南京邮电大学电气工程系OUTLINE6.180C51系统扩展6.2系统拓展实例:显示接口的拓展及应用系统扩展与综合应用实例
洗衣机控制系统洗衣机控制面板四只按键用于洗衣机的工作方式LED显示器用于显示洗衣或脱水时间指示灯配合按键工作涉及内容:键盘、显示器、定时器、并口等控制要求1.洗涤模式选择:强洗模式:电动机一个方向运转弱洗模式:电动机双向运转,换向1次/分钟上电后,默认为强洗模式,强洗指示灯被点亮此时按增按键进入弱洗模式控制要求2.洗涤次数设置:按一下“编程选择”,则洗涤次数灯被点亮此时按下“增”或“减”就可设置洗涤次数控制要求3.洗衣时间设置:再按一下“编程选择”,则洗衣定时灯被点亮此时按下“增”或“减”就可设置洗衣时间控制要求4.脱水定时设置:再按一下“编程选择”,则脱水定时灯被点亮此时按下“增”或“减”就可设置脱水时间5.设置好工作模式,按下“启动”,洗衣机开始工作控制要求5.设置好工作模式,按下“启动”,洗衣机开始工作洗衣机自动将用户设置的洗衣时间除以洗涤次数,得到每次换水时间如:设洗衣时间80分钟,洗涤4次,则洗衣机每隔20分钟自动换一次水洗衣(脱水)剩余时间灯被点亮,LED显示剩余时间6.洗衣结束后,蜂鸣器发声5次,通知用户洗衣结束思考以下问题:1、单片机内部资源的配置2、如何进行系统扩展I/O、键盘、指示灯、LED等3、外设的驱动,如电机4、软件程序的模块化设计6.180C51系统扩展单片机与扩展设备或芯片之间的接口通常分为:基于总线扩展的操作接口:将扩展设备视为单片机的外扩存储器,将外扩设备的数据总线、地址总线以及控制总线与单片机的总线对应相连,通过寻址外部数据存储器的指令对扩展设备进行读写操作。基于GPIO读写的操作接口:将扩展设备直接连接到单片机的并行I/O端口(P0~P3)或某些引脚上,通过读写端口或读写GPIO引脚来实现单片机与扩展设备之间的数据交互。6.180C51系统扩展80C51的系统扩展:程序存储器的扩展数据存储器的扩展
I/O口的扩展中断系统扩展特殊功能接口的扩展系统扩展的方法:并行扩展法:利用三组总线(AB、DB、CB)
串行扩展法:利用SPI三线和I2C双线总线有些系统:并行扩展法+串行扩展法6.1.1单片机总线扩展的基本原理(1)地址总线(AB)
P0口提供低8位地址A0~A7P2口提供高8位地址A8~A15(2)
数据总线(DB)
P0口提供:D0~D7注:与外部交换的所有数据、指令、信息,除少数可直接通过P1口外,全部通过P0口传送同一时间只能有一个是有效的数据传送通道,由地址线控制各个芯片的片选线来选择6.1.1单片机总线扩展的基本原理(3)地址锁存器在ALE(地址锁存允许)信号有效时,P0端口输出的内容为低8位地址;在ALE的下降沿时P0端口上的低8位地址被推入地址锁存器,直到下一次ALE有效前都保持不变。系统扩展时采用地址锁存器来实现总线的分时复用。常用的地址锁存器有74LS373和74LS573,它们都是带有三态输出控制的8D锁存器。6.1.1单片机总线扩展的基本原理6.1.1单片机总线扩展的基本原理(4)控制总线(CB)片外系统扩展用控制线片外信号对单片微机的控制线●ALE●PSEN:读片外程序存储器中的数据●EA:选择片内或片外程序存储器0:只访问外部程序存储器1:先访问内部程序存储器●RD、WR:片外数据存储器和I/O端口的写、读6.1.1单片机总线扩展的基本原理当外部扩展了存储器和多片需寻址的器件时,主机的访问需通过地址总线来选择某一个被寻址的器件芯片及访问某一个存储单元。地址空间的分配有两种方法:线选法和地址译码法。
6.1.2拓展总线的地址空间分配及译码当外部扩展了存储器和多片需寻址的器件时,主机的访问需通过地址总线来选择某一个被寻址的器件芯片及访问某一个存储单元。选择并确定被寻址的器件(芯片),称为片选;在片选信号有效的情况下,寻址该器件(芯片)内部的某个存储单元或功能寄存器,称为字选。地址空间的分配有两种方法:线选法和地址译码法。
6.1.2拓展总线的地址空间分配及译码(1)线选法:利用最高几位空余的地址线中一根(如P2.7)作为某一片存储器芯片或I/O接口芯片的“片选”6.1.2拓展总线的地址空间分配及译码两个外扩6264寻址时16位地址线分别为0#(P2.7=1)的A15~A0的有效排列应为1110000000000000~1111111111111111,即地址空间为0E000H~0FFFFH,共8KB。1#(P2.7=0)的A15~A0的有效排列应为0110000000000000~0111111111111111,即地址空间为6000H~7FFFH,共8KB。未使用的P2.5和P2.6,直接设置为1。(1)线选法
例:将一个数据字节从74LS377输出
MOV DPTR,#7FFFH
;地址指针指向74LS377 MOV A,#DATA ;将输出数据送A MOVX@DPTR,A ;输出数据例1.简单输出口的扩展进行数据保持(锁存)例:数据输入
MOV DPTR,#0BFFFH ;指向74LS244口地址
MOVX A,@DPTR ;读入数据例2.简单输入口的扩展——三态门控制电路(2)地址译码法:用译码器对空余的高位地址线进行译码,而译码器的输出作为“片选”控制线。常用的3-8译码器有74LS138。使能端6.1.2拓展总线的地址空间分配及译码译码器输入译码器输出控制端地址端G1G2AG2BCBA100000Y0=0,其余输出均为1001Y1=0,其余输出均为1010Y2=0,其余输出均为1011Y3=0,其余输出均为1100Y4=0,其余输出均为1101Y5=0,其余输出均为10××110Y6=0,其余输出均为1×1×111Y7=0,其余输出均为1××1×××Y0~Y7均为174LS138译码真值表64K全地址译码电路#0RAM地址:0000H~1FFFH,共8KB(A15=0,A14=0,A13=0)#1芯片地址:2000H~3FFFH,共8KB(A15=0,A14=0,A13=1)#2芯片地址:4000H~5FFFH,共8KB(A15=0,A14=1,A13=0)#3芯片地址:6000H~7FFFH,共8KB(A15=0,A14=1,A13=1)#4芯片地址:8000H~9FFFH,共8KB(A15=1,A14=0,A13=0)#5芯片地址:0A000H~0BFFFH,共8KB(A15=1,A14=0,A13=1)#6芯片地址:0C000H~0DFFFH,共8KB(A15=1,A14=1,A13=0)#7I/O地址:0E000H~0FFFFH,共8KB(A15=1,A14=1,A13=1)8个外扩芯片的地址6.1.3拓展外部程序存储器的电路设计现在一般情况下应用系统都不需要扩展外部程序存储器。对于早期的产品,例如8031,由于没有内部程序存储器,必须全部通过外部扩展总线的方式连接外部EPROM方可存储程序。假设选用无内部程序存储器的8031为主机,扩展外部8KB的EPROM芯片2764。P0口数据与地址分时复用需要外部数据存储器扩展的两种情况:第一种情况是当数据处理量较大,内部RAM不够用;第二种情况是当单片机需要扩展可读写的外部器件或设备。外部数据存储器及外部I/O设备需要在64KB地址范围内统一编址,相互之间的地址不可重叠。6.1.4拓展外部数据存储器的电路设计6.1.4拓展外部数据存储器的电路设计0000H~7FFFH62256的存储容量为32KB,其15条地址线与同名的地址总线的A0~A14相连;数据线D0~D7直接与单片机的数据总线(P0端口)相连;8D锁存器74LS573作为地址锁存器,在ALE信号的控制下锁存低8位地址;62256的OE(数据输出允许)和WE(数据写入允许)信号分别与单片机控制总线中的RD和WR相连,控制着SRAM数据的读出和写入;62256的片选信号与A15直接相连,即只有当A15为低时才能选中扩展的SRAM,其存储地址范围是0000H~7FFFH。单片机扩展外部SRAM—62256片外并行数据存储器扩展时的总线功能和读、写操作时序
片外数据存储器读、写操作的指令:
MOVXA,@Ri;片外RAM→(A),读(RD)
MOVX@Ri,A;(A)→片外RAM,写(WD)
MOVXA,@DPTR;片外RAM→(A),读(RD) MOVX@DPTR,A;(A)→片外RAM,写(WD)6.1.4拓展外部数据存储器的电路设计(1)8位D/A转换器芯片DAC0832DAC0832的引脚6.1.5D/A、A/D转换器接口的扩展DAC0832逻辑结构图DAC0832的单缓冲方式的接口电路和应用输入寄存器、DAC寄存器同时受控地址:7FFFHORG0000HSJMPMAINORG0030HMAIN:MOVDPTR,#7FFFH
;输入输入寄存器和DAC寄存器地址 MOVR0,#0 ;转换初值LP:MOVA,R0 MOVX @DPTR,A;送出模拟量
INCR0SJMPLP例:产生锯齿波由上图可知,输入寄存器和DAC寄存器同时受控锁存,DAC0832的地址为7FFFH(P2.7=0)DAC0832的双缓冲方式的接口电路和应用用P2.5控制第一片DAC0832的输入锁存器地址为0DFFFH用P2.6控制第二片DAC0832的输入锁存器地址为0BFFFH用P2.7同时控制二片DAC0832的第二级缓冲地址为7FFFHMOV DPTR,#0DFFFH;把数据送第一片0832的 ;输入锁存器MOV A,R0MOVX @DPTR,AMOV DPTR,#0BFFFH;把数据送第二片0832 ;的输入锁存器MOV A,R1MOVX @DPTR,AMOV DPTR,#7FFFH;两片0832同时输出模拟量MOVX @DPTR,A若第一片的数据在R0中,第二片的数据在R1中,送数程序为:对A/D转换的控制一般分为三个过程:①通过控制口发出启动转换信号命令模/数转换器开始转换②判断A/D转换是否结束③转换结束,发出数据输出允许信号读入转换完成的数据(2)8位8通道A/D芯片ADC08096.1.5D/A、A/D转换器接口的扩展1.ADC0809的内部逻辑结构2.ADC0809的引脚及功能通道选择表3.ADC0809与80C51的接口7FF8H~7FFFH74LS74例:采用延时等待A/D转换结束方式,分别对8路模拟信号轮流采样一次,并依次把结果存入数据存储器。
ORG 0000H SJMPMAIN ORG 0030HMAIN:MOVR1,#20H MOVDPTR,#7FF8H
;指向通道0地址
MOVR7,#08H ;共需转换8个通道LOOP:MOVX@DPTR,A;启动A/D转换①
LCALLD128μs;延时等待A/D转换结束②
MOVXA,@DPTR;读入A/D转换值③
MOV @R1,A INC DPTR ;指向下一通道地址
INC R1 DJNZR7,LOOP;8个通道未转换完则继续D128μs:
… ;延时128μs子程序
RET4.ADC0809与80C51中断方式的接口转换结束例:采集8路模拟量,并存入20H地址开始的内部RAM中
ORG 0000H SJMPMAIN ORG0003H ;外部中断0入口地址
LJMPINTDATA
ORG 0100H ;数据采集程序MAIN:MOV R0,#20H ;数据缓冲区首址
MOV R2,#8 ;8通道计数器
MOV DPTR,#7FF8H
;指向0通道START:CLR F0 ;清中断发生标志
MOVX @DPTR,A ;启动A/D(P2.7=0,/WR=0)①SETB IT0 ;置外部中断0为边沿触发
SETB EX0 ;允许外部中断0SETB EA ;开中断
LOOP:JNB F0,LOOP ;中断发生标志是否为0②DJNZ R2,START ;8个通道转换是否结束
SJMPMAIN
INTDATA:MOVXA,@DPTR ;读数据
(P2.7=0,RD=0), ;硬件撤销中断③
MOV @R0,A ;存数据
INC R0INC DPTR ;指向下一通道
SETB F0 ;置中断发生标志
RETI6.1.6键盘输入与显示接口键盘类型:
编码键盘:键按下后便产生对应的代码需要硬件支持,数目增多时,硬件变得复杂
非编码键盘:闭合或断开,对应1或0单片微机应用系统中用得较多的是非编码键盘(1)键盘接口的工作原理及扩展应用键盘的工作原理 两类:独立式键盘:结构简单,使用方便,需占用较多的I/O线,适用于按键不多的场合。矩阵式键盘:适用于按键多的场合。独立式键盘矩阵式键盘
2.矩阵式键盘的工作过程矩阵键盘按键的识别方法:1).识别键盘有无键被按下所有列线均置为0电平,行线电平有变化,说明有键被按下2).识别出具体的按键逐列置0电平,其余各列置为高电平,某行电平由高电平变为零电平,可确定此行此列交叉点处的按键被按下键扫描方式:程控扫描、定时扫描、中断扫描3.键盘的接口电路通过I/O口扩展的矩阵式键盘(2)LED显示器的扩展LED显示器的工作原理七段LED字型码(1)
静态显示电路(2)
动态显示电路2.LED显示电路分时选通
例:通过串行口方式0扩展键盘和显示器例:显示一位
MOV SCON,#00H;置串行口为同步移位 ;寄存器方式
SETB P3.3 ;开显示输入
MOV A,#0C0H ;显示“0”(C0H为共阳极 ;“0”的段码值) MOV SBUF,A JNB TI,$ CLR TI …6.2系统拓展实例6.2.1LCD显示器简介
LCD显示器通常可分为字符点阵和图形点阵等两大类。字符点阵LCD:在其控制器内设有字符发生器,可提供若干常用字符及符号的5×7或5×10的点阵,用户程序只要输入字符或符号的ASCII码即可显示。用户也可以自己设计少量的点阵图形送入LCD屏进行显示。图形点阵LCD:在其控制器内设置了图形缓冲区,缓冲区内每个字节的每个位都与图形点阵LCD上的点相对应,用户输入的数据中为1的位对应的点在LCD屏上显示为黑色,为0的位对应的点不显示。LCD屏显示效果的更新由内部控制器自动完成,用户只需根据要显示的内容操作图形缓冲区即可。6.2系统拓展实例:显示接口的拓展及应用6.2.1LCD显示器简介
在单片机应用系统中,一般倾向于直接选用专用的LCD显示驱动模块。LCD显示驱动模块是一种将液晶显示器件、连接器、驱动电路、PCB线路板、背光光源及驱动等装配在一起的组件,称为LCM(LiquidCrystalDisplayModule)。LCM可以通过单片机的外部总线进行控制,也可以通过单片机的I/O接口模拟总线时序的方式进行驱动。6.2.2字符点阵LCD显示模块的控制
——模拟总线时序驱动1.LCM1602的内部结构字符点阵式LCM1602共有两个显示行,每行可显示16字符为最常用的一种字符点阵式LCM,显示控制器为HD44780,通过HD44100进行显示规模的扩展。HD44780管脚功能:DB0~DB7为双向数据总线;E为总线周期有效指示,高电平有效;R/W为读写选择线,CPU送高电平表示对HD44780进行读操作,送低电平表示对HD44780进行写操作;D/I为寄存器选择线,CPU送高电平表示选择HD44780的数据寄存器进行操作,送低电平表示对HD44780的指令寄存器进行操作。VEE为对比度调节端,通过改变该引脚上的电压值可控制LCD显示内容的对比度。VCC和GND为电源端。1.LCM1602的内部结构HD44780内部功能:(1)指令寄存器(IR):存储CPU送达的指令代码(2)数据寄存器(DR):暂存CPU对控制器内DDRAM和CGRAM进行读写的数据。(3)忙标志(BF):当忙标志BF=1时,除了读忙标志指令外,不接收任何其他指令。(4)地址计数器(AC):指定被操作DDRAM或CGRAM的地址。(5)显示数据存储器(DDRAM):对应位置要显示数据的ASCII码或字形码。(6)字形点阵存储器(CGRAM):存放用户自行设计的字符点阵数据。1.LCM1602的内部结构CPU通过对HD44780的R/W和D/I引脚以及数据总线DB0~DB7来控制LCM的显示。2.LCM1602的控制指令3.LCM1602的操作时序
CPU对LCM1602中的显示控制器HD44780进行一次总线读操作及总线写操作的操作时序。这里所说的时序指的是对设备或接口芯片进行一次读或写操作时,各种接口信号电平变化的先后顺序4.LCM1602与单片机接口(模拟总线时序驱动)MCS-51通过GPIO模拟总线时序驱动LCM1602:LCM的数据总线D0~D7和I/O口相连(P0口)。通过P1.3引脚控制三极管,P1.3输出低电平时三极管导通,LCM背光点亮;P1.3输出为高或者单片机复位后,三极管不导通,LCM背光熄灭。VO为LCM对比度调节端,通过调节可变电阻可改变VO端电压,以改变LCM显示字符的对比度。例6-1:根据图6-8的接口电路设计单片机对LCM1602进行读写的接口函数。解:由于单片机采用I/O端口模拟总线时序的方法控制LCM,接口程序只要通过代码按照图6-8所示的总线操作的时序控制I/O端口引脚输出不同的电平即可。MCS-51每执行一条I/O引脚输出指令需要一个机器周期,即使在单片机晶振频率为24MHz的情况下也能够满足HD44780时间参数的要求。程序设计如下:#include<reg51.h>#include<intrins.h>#defineLCM_DIP10#defineLCM_RWP11#defineLCM_EP12#defineLCM_DBP0//头文件/******************************************************函数名:LCMReadState功能:查询LCM的忙标志和当前AC地址参数:返回:unsignedchar,最高bit为1表示忙,为0表示闲*********************************************************/unsignedcharLCMReadState(void){unsignedcharstate;LCM_DB=0xff;//MCS-51的并行端口必须先置1再读
LCM_E=0;LCM_DI=0;LCM_RW=1;LCM_E=1;//模拟总线时序,读指令寄存器
_nop_();//延时一个机器周期,等待LCM准备好数据
state=LCM_DB;//读数据总线
LCM_E=0;//将E清零,结束总线操作周期
returnstate;}/****************************************************函数名:LCMWriteCmd功能:向LCM写入控制字参数:unsignedchar,命令字节返回:************************************************/voidLCMWriteCmd(unsignedcharcmd){//等待LCM空闲while(LCMReadState()&0x80);LCM_E=0;LCM_DI=0;LCM_RW=0;LCM_DB=cmd;LCM_E=1;//模拟写指令总线周期
_nop_();//延时一个机器周期LCM_E=0;//将E清零,结束总线操作周期}/************************************函数名:LCMWriteData功能:向LCM写入数据参数:unsignedchar,将要写入的数据返回:***************************************/voidLCMWriteData(unsignedchardc){//等待LCM空闲While(LCMReadState()&0x80);LCM_DI=1;LCM_RW=0;LCM_DB=dc;LCM_E=1;//模拟写数据总线周期_nop_();//延时一个机器周期LCM_E=0;//将E清零,结束总线操作周期}这里只给出几个基本的接口函数6.2.3图形点阵LCD显示模块的控制——扩展总线驱动与字符点阵LCD不同,图形点阵LCD的显示受控于存储在其控制器内图形缓冲区中的点阵数据,点阵数据中每字节的每位都与图形点阵LCD上的点相对应,为1时该位对应的点为黑色,为0时对应的点不显示。图形点阵LCD能显示各种点阵式的字符及图形,与字符点阵式LCD相比,能表达的信息更丰富。图形点阵LCD内部通常使用HD61202U作为列(段)驱动器它将8位微处理器送来的显示信息保存在其内部存储器中并产生相应的驱动信号,且与行驱动器HD61203U相配合构成更大规模的显示驱动。本节主要介绍12864图形点阵LCD显示模块的结构、功能及驱动。1.LCM12864的内部结构LCM12864图形点阵LCD显示模块采用两片HD61202U和一片HD61203U相配合驱动128×64点阵LCD屏LCM12864的CPU接口与LCM1602相比多了两根信号线CS1和CS2,用于对LCM内部的两片HD61202U进行片选,CS1有效表示当前操作针对的是左半屏的控制器,CS2针对的是右半屏。除此之外,其余的信号线完全一样;接口操作的方式、时序和时间参数等也基本相同D/IR/W操作对象00选择指令寄存器,进行写入操作01读出忙标志10选择输入寄存器,写数据至显示RAM11选择输出寄存器,从显示RAM中读数据1.LCM12864的内部结构(1)输入寄存器和输出寄存器:输入寄存器和输出寄存器为CPU与LCM内部显示RAM之间数据传送的暂存器。(2)忙标志:忙标志为1时表示HD61202U正在进行内部操作,除了读状态指令外,其余指令都不接收。(3)显示RAM:每一片HD61202U负责驱动64×64点阵LCD屏。1.LCM12864的内部结构1.LCM12864的内部结构HD61202U所驱动的64×64点阵LCD显示屏中的每个点都与内部显示RAM的1bit相对应。显示RAM按字节存储,每字节并行驱动8行,LCD显示屏每行有64列,共需64字节进行驱动,这64字节构成了显示RAM中的一页。64行64列的LCD显示屏共需要8页即512字节RAM进行驱动。HD61202U内部设置了X地址寄存器和Y地址寄存器,X地址取值范围为0~7,用于选择某个页;Y地址的取值范围为0~63,用于选择每页内64列中的某列。①X地址寄存器和Y地址寄存器:X、Y地址寄存器是与内部512字节的显示RAM相对应的9bit寄存器。高3位为X地址寄存器,低6位为Y地址寄存器,根据指令的不同可以分别设置成X地址(页地址)寄存器和Y地址(列地址)寄存器。②起始显示行寄存器:起始显示行寄存器指定与LCD显示屏的第1行相对应的显示RAM的行号,用于显示屏的卷屏操作。③显示开关及翻转:显示屏开关通过选择Y1~Y64的开关状态来实现。在开状态,显示RAM中的数据输出到相应段上。在关状态,无论显示RAM中有什么内容,所有段都不显示。④复位:在LCM加电时将复位引脚(RST)接低电平可初始化LCM系统。1.LCM12864的内部结构2.LCM12864的控制指令CPU通过对HD61202U的R/W和D/I引脚以及数据总线D0~D7来控制LCM的显示。LCM12864的具体控制指令及指令代码如表6-6所示。3.图形点阵式LCM12864和单片机的接口(扩展总线驱动)MCS-51通过扩展总线驱动LCM12864的接口电路原理图图6-11为一个单片机最小系统控制LCM12864的实例。CPU选用了NXP公司的P89V51系列单片机。该系列单片机内部有程序存储器,并具有IAP功能,可通过串行口下载代码到单片机内部,实验及调试都非常方便。LCM的显示对比度由可变电阻器VR1进行调节,注意VR1的连接方式与LCM1602略有不同,不再是跨接在VCC和GND之间,而是使用LCM提供的VEE取代了VCC。LCM的背光通过单片机的P1.7进行控制,P1.7输出低电平则开启背光。LCM的复位信号为低有效,图6-11中将单片机的复位信号反相后供LCM使用。例6-2:根据图6-11的接口电路,设计单片机对LCM12864进行读写的接口函数。解:本实例中单片机采用存储器映像方式通过扩展总线操作对其进行控制。单片机的数据总线(P0.0~P0.7)与LCM的数据总线(D0~D7)直接相连,LCM的控制信号R/W、D/I、CS1和CS2直接与单片机地址总线中的A8、A9、A10和A11相连。单片机的读、写控制信号经与非门U3A后与LCM12864的E相连,保证只有在单片机进行外部RAM读写操作时才选通LCM。因未用到低8位地址,电路中没有对单片机的低8位地址进行锁存,则根据表6-6,可得LCM12864内部各寄存器在单片机外部存储器空间中的访问地址如表6-7所示。例6-2【例6-2】根据LCM12864内部寄存器的编址(见表6-7),操作LCM时只要使用外部RAM操作指令MOVX进行数据传送即可,相应的时序由单片机自动产生。对于C51编译器,该编译器提供了预先定义好的宏XBYTE、XWORD用于按字节或按字(双字节)操作外部存储器,例如,XBYTE[0x200]=0x80表示向单片机外部数据存储器中地址为0x200的单元写入0x80;而c=XBYTE[0x200]则是从外部数据存储器地址为0x200的单元读入1字节,存入变量c中。这些宏在absacc.h中定义。考虑到LCM总线时序的要求,程序中在进行每次总线操作后都插入两个NOP指令,将前后的总线操作周期分隔开。C51编译器提供了内联函数_nop_()专门用于插入NOP指令,该函数在头文件intrins.h中定义。综上所述,结合控制器指令代码表(见表6-6),可编写单片机控制LCM12864代码如下:#include<absacc.h>#include<intrins.h>//定义LCD数据端口以及控制端口//CS2=A11,CS1=A10,R/W=A9,D/I=A8#defineCWADD1XBYTE[0x0800]#defineCRADD1XBYTE[0x0A00]#defineDWADD1XBYTE[0x0900]#defineDRADD1XBYTE[0x0B00]#defineCWADD2XBYTE[0x0400]#defineCRADD2XBYTE[0x0600]#defineDWADD2XBYTE[0x0500]#defineDRADD2XBYTE[0x0700]#defineNOP_nop_();_nop_()//延时两个机器周期例6-2:代码/***********************************************功能:读控制器状态函数参数:chip为0表示第一个控制器,为非0为第二个控制器返回:状态字***********************************************/unsignedcharLCD_Status(unsignedcharchip){unsignedcharc;if(chip==0)//如果是控制第一个控制器c=CRADD1;//数据送第一个控制器写命令地址elsec=CRADD2;//否则数据送第二个控制器写命令地址NOP;returnc;}/********************************************功能:控制显示屏开关函数参数:onoff为0表示关,为1表示开,不可取其他值*********************************************/voidLCD_OnOff(unsignedcharonoff){while(LCD_Status(0)&0x90);//判断第一个控制器是否空闲NOP;CWADD1=0x3E|(onoff&0x01);//写入控制代码NOP;while(LCD_Status(1)&0x90);//判断第二个控制器是否空闲NOP;CWADD2=0x3E|(onoff&0x01);//写入控制代码
NOP;}/********************************************功能:设置起始显示行函数参数:line表示起始显示行,取值范围为0~63*********************************************/voidLCD_SetStartLine(unsignedcharline){while(LCD_Status(0)&0x90);NOP;CWADD1=0xC0|(line&0x3F);NOP;while(LCD_Status(1)&0x90);NOP;CWADD2=0xC0|(line&0x3F);NOP;}/*******************************************功能:设置X地址(页地址,对应显示屏的行,8行一组)函数参数:chip表示控制器芯片号,取值为0或1;x表示页地址,取值范围为0~7**********************************************/voidLCD_SetXAddress(unsignedcharchip,unsignedcharx){if(chip==0){while(LCD_Status(0)&0x90);NOP;CWADD1=0xB8|(x&0x07);NOP;}else{while(LCD_Status(1)&0x90);NOP;CWADD2=0xB8|(x&0x07);NOP;}}/*********************************************************功能:设置Y地址(列地址,对应显示屏的列)函数参数:chip表示控制器芯片号,取值为0或1;y表示该chip内的列地址,取值范围为0~64***********************************************/voidLCD_SetYAddress(unsignedcharchip,unsignedchary){if(chip==0){while(LCD_Status(0)&0x90);NOP;CWADD1=0x40|(y&0x3F);NOP;}else{while(LCD_Status(1)&0x90);NOP;CWADD2=0x40|(y&0x3F);NOP;}}/*********************************************************功能:向显示存储器写数据函数参数:c表示待写入显示存储器的数据;x、y表示x方向和y方向的地址*********************************************************/voidLCD_WriteData(unsignedcharc,unsignedcharx,unsignedchary){
if(x<64)//判断x方向(列)地址是否超出范围
{//未超出写入左半屏显示存储器,否则写入右半屏显示存储器
LCD_SetXAddress(0,y);NOP;LCD_SetYAddress(0,x);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美术课题申报书项目类型
- 合建房屋合同范本
- 厂房清洁报价合同范本
- 课题立项申报计划书范文
- 合同权益转让合同范例
- 合同范本押金退回
- 课题申报书哪里有
- 品牌宣传服务合同范本
- 理疗课题申报书格式范文
- 哪里医学课题申报书
- 人教版八年级下册生物全册教案完整版教学设计含教学反思
- 无人机警用方向应用简介课件
- 《思想道德修养与法律基础》说课(获奖版)课件
- 幼儿园中班居家安全教案
- 水平定向钻施工规范方案
- 教学楼毕业设计资料
- 国网直流电源系统技术监督规定
- 香港雇佣合同协议书
- 建筑工程材料见证取样及送检培训讲义(PPT)
- 部编版四年级语文下册第二单元《习作:我的奇思妙想》课件PPT
- PS零基础入门学习教程(适合纯小白)PPT课件
评论
0/150
提交评论