教学课件课件第8章-显示接口.pptx

上传人:春哥&#****71; 文档编号:87395470 上传时间:2023-04-16 格式:PPTX 页数:150 大小:1.36MB
返回 下载 相关 举报
教学课件课件第8章-显示接口.pptx_第1页
第1页 / 共150页
教学课件课件第8章-显示接口.pptx_第2页
第2页 / 共150页
点击查看更多>>
资源描述

《教学课件课件第8章-显示接口.pptx》由会员分享,可在线阅读,更多相关《教学课件课件第8章-显示接口.pptx(150页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、PPT模板下载:/moban/行业PPT模板:/hangye/节日PPT模板:/jieri/PPT素材下载:/sucai/PPT背景图片:/beijing/PPT图表下载:/tubiao/优秀PPT下载:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/资料下载:/ziliao/PPT课件下载:/kejian/范文下载:/fanwen/试卷下载:/shiti/教案下载:/jiaoan/字体下载:/ziti/课件第8章-显示接口第8章显示接口n目的:结合万年历的显示部分,介绍了目的:结合万年历的显示部分,介绍了LED显显示及示及LCD显示

2、的相关问题。包括显示的相关问题。包括LED静态显示静态显示与动态显示、与动态显示、LCD字符显示,重点分析万年历字符显示,重点分析万年历显示程序,包括字符模块显示程序,包括字符模块LCD1602的工作原的工作原理、理、LED驱动芯片驱动芯片MAX7219的工作原理及它的工作原理及它们的编程控制问题。们的编程控制问题。LED显示n知识目标:知识目标:LED动态显示与静态显示;动态显示与静态显示;MAX7219的工作原理;的工作原理;n技能目标:能编写驱动技能目标:能编写驱动LED的静态与动态显示的静态与动态显示程序;能制作跑马灯与带倒计时的交通灯同时程序;能制作跑马灯与带倒计时的交通灯同时运行的

3、系统。运行的系统。n素质目标:养成能克服困难,渡过学习难关的素质目标:养成能克服困难,渡过学习难关的习惯。习惯。项目二任务9计数显示器n要求:对按键动作进行计数和显示,达到要求:对按键动作进行计数和显示,达到99后后重新由重新由1开始计数。开始计数。n任务分析:本任务要求对一个按键进行按下次任务分析:本任务要求对一个按键进行按下次数的计数。这里有两个问题,一是按键动作的数的计数。这里有两个问题,一是按键动作的读入,二是数字的显示。读入,二是数字的显示。电路如图8.6所示。个位LED接P2口;十位LED接P0口(上拉电阻)分析:分析:n读读P3.7口,进行加口,进行加1计数和超界处理;计数和超界

4、处理;n拆分计数器数值拆分计数器数值个位、十位;个位、十位;n查找查找/输出显示码到输出显示码到P0和和P2口。口。n计数值拆分:计数值拆分:n取模运算(取模运算(%)个位个位n整除整除10运算(运算(/)十位十位n查找查找/输出显示码:输出显示码:n按拆分值输出相应数组元素按拆分值输出相应数组元素流程图99?N计数器加1计数器1YP3.7=0?NY图8。7计数显示器流程图程序n#includensbitP3_7=P37;nunsignedcharcodetable=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;nuns

5、ignedcharcount;nvoiddelay(unsignedinttime)nnunsignedintj=0;nfor(;time0;time-)nfor(j=0;j=0&sec=east_west_run_time&sec=east_west_run_time+east_west_to_south_north_run_time&seceast_west_run_time+east_west_to_south_north_run_time+south_north_run_time)nnsouth_north_run();nif(wei=0)display(0,(total_time-s

6、ec)%10);nif(wei=1)display(1,(total_time-sec)/10);nif(wei=2)display(2,(east_west_run_time+east_west_to_south_north_run_time+south_north_run_time-sec)%10);nif(wei=3)display(3,(east_west_run_time+east_west_to_south_north_run_time+south_north_run_time-sec)/10);nn/*南北向东西转换运行*/nelsennsouth_north_to_east_w

7、est_run();nif(wei=0)display(0,(total_time-sec)%10);nif(wei=1)display(1,(total_time-sec)/10);nnif(wei=2)display(2,(total_time-sec)%10);nif(wei=3)display(3,(total_time-sec)/10);nn以上交通灯控制程序与前面6.5.3定时器中断控制的交通灯基本相同,只是增加了数码管的动态显示驱动程序而已。项目二任务数字钟n要求:设计一数字钟,可以显示小时、分钟、秒,并用数码管显示。n任务分析:设计数字钟,首先是时钟基准怎样选取,从简单起见可直

8、接采用单片机的时钟;其次问题是采用何种显示方式,因为要显示的信息较多,如果直接让数码管与单片机相连是不行的,必须采用数码管显示接口芯片。特性与基本功能1使用方法2编程实例3LED驱动芯片驱动芯片MAX7219/7221及及其应用其应用了解7219的功能与基本特性1能读懂7219的驱动程序2能移植7219的驱动程序3要求:要求:n当数码管较多时,一般就不直接将它与单片机当数码管较多时,一般就不直接将它与单片机相连,而是采用与专用的相连,而是采用与专用的LED驱动芯片相连后驱动芯片相连后再由单片机来控制,这样做一是减少了单片机再由单片机来控制,这样做一是减少了单片机引脚的消耗,二是减轻了单片机的驱

9、动负担。引脚的消耗,二是减轻了单片机的驱动负担。nMAX7219/7221 是一种高集成化的串行输入是一种高集成化的串行输入/输出共阴极显示驱动器输出共阴极显示驱动器,可实现微处理器与可实现微处理器与7段码的接口段码的接口,可以显示可以显示8 位或位或64 位单一位单一L ED。芯片上包括。芯片上包括BCD 码译码器、多位扫描电路、码译码器、多位扫描电路、段驱动器、位驱动器、内含段驱动器、位驱动器、内含8 8 位静态位静态RAM,用于存放显示数据。只需外接一个电阻就可为用于存放显示数据。只需外接一个电阻就可为所有的所有的L ED 提供段电流。提供段电流。nMAX7219 的三线串行接口的三线串

10、行接口(I2C总线接口总线接口)适适用于所有微处理器用于所有微处理器,单一位数据可被寻址和修正单一位数据可被寻址和修正,无需重写整个显示器。无需重写整个显示器。MAX7219 具有软件具有软件译码和硬件译码两种功能译码和硬件译码两种功能,软件译码是根据各软件译码是根据各段笔划与数据位的对应关系进行编码段笔划与数据位的对应关系进行编码,硬件译硬件译码采用码采用BCD码译码。码译码。引脚图11.10 MAX7219引脚图表11.1 MAX7219引脚功能表图11.11 MAX7219内部功能框图功能框图nLOAD信号在数据进、出期间必须保持为低电平。n串行输入数据在时钟上升沿时移入内部的16位移位

11、寄存器,在装载的上升沿时数据被锁存在每一位或寄存器中。装载信号(LOAD)必须在第16个时钟上升沿发生时或之后达到高电平,直到下一个时钟的上升沿之前为高电平,否则数据将丢失(见图11.13).n串行输入数据DIN通过移位寄存器传输,在以后的16.52个时钟后从DOUT输出数据,将数据在时钟的下降沿做记录。n数据各位记录为D0D15(如表2所列),一帧数据为16位。D8D11为移位寄存器地址,D0D7为数据,D12D15是无关位。第一位接收到的位是最高位D15。D7为数据最高有效位,D0为数据最低有效位。MAX7219控制字nMAX7219有14个可寻址的控制字寄存器(如表11.3),控制字寄存

12、器由芯片的88双端口SRAM识别,SRAM直接寻址,这样单一的位能被更改或保留,条件是电源电压明显大于2V。控制字寄存器包括译码模式、显示强度、扫描限制(被扫描位的个数)、关闭模式、显示测试(点亮所有的LED)。n另外还有一个空操作寄存器,该寄存器允许数据从DIN直送DOUT,在设备串接情况下,不会改变显示或影响任何控制寄存器。表 11.3 MAX7219寄存器地址控制字表11.2 数据格式表工作原理工作原理1)关闭模式关闭模式n当当MAX7219 处于关闭模式时处于关闭模式时,扫描振荡器停扫描振荡器停止工作止工作,所有的段电流源接地所有的段电流源接地,所有的位驱动器所有的位驱动器上拉为高电平

13、上拉为高电平,显示器为消隐状态显示器为消隐状态,寄存器的数寄存器的数据保持不变。关闭模式寄存器数据的据保持不变。关闭模式寄存器数据的16 进制进制码为码为0,正常工作的正常工作的16 进制码为进制码为1。n系统上电时系统上电时MAX7219 进入关闭模式进入关闭模式,这样这样,用用户必须在使用户必须在使用MAX7219 之前为显示驱动器编之前为显示驱动器编程程,否则否则,它一开始就置位扫描它一开始就置位扫描,数据寄存器不数据寄存器不译码译码,强度寄存器也将置于最小值。强度寄存器也将置于最小值。2)译码模式寄存器译码模式寄存器表11.4 软件译码数字对应的段笔划n可对译码模式寄存器的每位进行硬件

14、译码可对译码模式寄存器的每位进行硬件译码(BCD 码码)或软件译码操作或软件译码操作,寄存器的每位字对寄存器的每位字对应一个数应一个数,逻辑高电平选择逻辑高电平选择BCD 码译码。控制码译码。控制寄存器译码模式如表寄存器译码模式如表11.4所列。所列。n当选择软件译码方式时当选择软件译码方式时,数据数据D7D0 对应的对应的MAX7219 码的各段笔划如表码的各段笔划如表11.5 所列。所列。表11.5 译码模式寄存器示例(16进制地址9)3)强度控制强度控制nMAX7219 允许用一个接于电源输入允许用一个接于电源输入(V+)和段电源和段电源(Iset)端之间外部电阻控制显示亮端之间外部电阻

15、控制显示亮度度,并且利用强度寄存器并且利用强度寄存器,调节面板亮度。段电调节面板亮度。段电流常为流常为37mA,最大值为最大值为40mA,n段电流的位控制由一个内部脉宽控制的段电流的位控制由一个内部脉宽控制的DAC 提供。提供。nDAC 从强度寄存器的低位载入从强度寄存器的低位载入,D段电流的调段电流的调整可分成整可分成16 阶阶,从从31/32 减到减到1/32,每步减每步减少少2/31。当循环到。当循环到31/32 时最亮时最亮,此时内部此时内部位消隐时间为一个周期的位消隐时间为一个周期的1/32,消隐时间的消隐时间的增加则减少了工作周期。增加则减少了工作周期。31/32 对应的对应的16

16、进进制码为制码为F,随着亮度的降低对应的随着亮度的降低对应的16 进制码进制码依次减依次减1,1/32 对应的对应的16 进制码为进制码为0。4)限扫描寄存器限扫描寄存器n限扫寄存器设定显示几个数字限扫寄存器设定显示几个数字(18),8位显位显示时的典型扫描频率为示时的典型扫描频率为1300Hz,有多种显示有多种显示方式方式,。n如果想显示较少的位数如果想显示较少的位数,扫描频率是扫描频率是8fosc/N,其中其中N 是被扫描位的个数。由于扫描的位数影是被扫描位的个数。由于扫描的位数影响显示亮度响显示亮度,限扫寄存器不适用于显示消隐部限扫寄存器不适用于显示消隐部分分(如先行清零如先行清零)。扫

17、描。扫描7 位时对应的位时对应的16 进制进制码为码为7,随着扫描位数的减少对应的随着扫描位数的减少对应的16 进制进制码依次减码依次减1,仅扫描仅扫描0 位时对应的位时对应的16 进制码为进制码为0。5)显示检测寄存器显示检测寄存器n显示检测寄存器有两种操作模式显示检测寄存器有两种操作模式:一般测试和一般测试和显示测试。显示测试。n显示测试模式时所有的显示测试模式时所有的L ED点亮点亮,方法是将所方法是将所有控制字寄存器有控制字寄存器(包括关闭寄存器包括关闭寄存器)置成无效。置成无效。在显示测试模式下扫描在显示测试模式下扫描8 位的工作周期是位的工作周期是31/32。正常测试的。正常测试的

18、16 进制码为进制码为0,显示测试的显示测试的16 进制码为进制码为1。6)空操作寄存器空操作寄存器n空操作寄存器在空操作寄存器在MAX7219 串接时使用串接时使用,把所把所有芯片的有芯片的LOAD 端连在一起端连在一起,并将并将DOU T 连接连接到下一个到下一个MAX7219 的的DIN 上。上。DOU T 是是CMOS 输出输出,可以驱动后边的串接可以驱动后边的串接MAX7219。n例如例如,4 个个MAX7219 串联串联,然后写第然后写第4 个片子个片子,再送入设想的再送入设想的16 位字位字,紧跟紧跟3 个空操作码个空操作码(0),当当LOAD 升高时升高时,所有装置的数据被锁存

19、所有装置的数据被锁存,前前3 个芯片接到空操作命令个芯片接到空操作命令,第第4 个芯片接到个芯片接到设想的数据。设想的数据。时序图 11.12 MAX7219的操作时序图n它符合它符合I2C总线规范。要输入总线规范。要输入7219一帧数据,一帧数据,先是使先是使LOAD端发生负跳变,才能输入,输入端发生负跳变,才能输入,输入完后,要使完后,要使LOAD端回到高电平,才确认一帧端回到高电平,才确认一帧数据的输入。数据的输入。n对每一位操作时,是时钟低电平时,准备好数对每一位操作时,是时钟低电平时,准备好数据,上升沿数据打入据,上升沿数据打入7219.7219的每一帧数的每一帧数据由据由16位组成

20、,前位组成,前8位为地址信息,后位为地址信息,后8位为位为有效数据。注意程序中对有效数据。注意程序中对7219的操作就是按的操作就是按照这一时序要求进行的。照这一时序要求进行的。项目四任务3解答n设计的电路图如图11.14所示nP2.0-P2.2分别与7219的数据端DIN、数据装载端LOAD、及时钟端CLK相连;7219输出的段码与数码管相应的段码端相连,8个位码输出端分别与8个数码管相连。电路图电路图图 11.13 数字钟仿真电路图控制程序控制程序n#includensbit datain=P20;/定义连接关系定义连接关系nsbit cs=P21;nsbit clk=P22;nunsig

21、ned char second,minute,hour,count=20;nvoid write(unsigned char,unsigned char);/对对7219的操作函数。的操作函数。nvoid timer1()interrupt 3/定时器定时器T1中断中断服务程序。服务程序。nnTH1=(65536-50000)/256;/恢复初值,恢复初值,fosc=6MHz,定时时间为,定时时间为50ms,即,即50ms中断一次。中断一次。nTL1=(65536-50000)%256;ncount-;/count为为1秒计数器,秒计数器,2050ms1S。nif(count=0)nncoun

22、t=20;/1秒到,秒计数器恢复原值,秒位为秒到,秒计数器恢复原值,秒位为1.nsecond+;nif(second=60)/60秒,则分位加秒,则分位加1.秒位秒位回回0.nnminute+;nsecond=0;nnif(minute=60)/60分到,则小时位加分到,则小时位加1,分位回分位回0.nnhour+;nminute=0;nnif(hour=24)/24小时到则小时回小时到则小时回0.nnhour=0;nn/在秒、分、小时位分别输出相应的值。在秒、分、小时位分别输出相应的值。nwrite(8,second%10);nwrite(7,second/10);nwrite(5,minu

23、te%10);nwrite(4,minute/10);nwrite(2,hour%10);nwrite(1,hour/10);nnnvoid write(unsigned char address,unsigned char ch)/对对7219的写操作函数的写操作函数nnunsigned char i;ncs=0;/先是先是LOAD端负跳变,参看时序图。端负跳变,参看时序图。nfor(i=0;ii);/取相应的位输入到取相应的位输入到7219的的串行输入端。串行输入端。nclk=1;nnfor(i=0;ii);nclk=1;nncs=1;nnvoid main()/主函数主函数nnwrite

24、(0 x09,0 xff);/设置译码模式为全译码。设置译码模式为全译码。nwrite(0 x0a,0 x08);/设置亮度寄存器。设置亮度寄存器。nwrite(0 x0b,0 x07);/设置扫描位数为设置扫描位数为8位全扫。位全扫。nwrite(0 x0c,0 x01);/打开打开7219.nwrite(0 x0f,0 x00);/显示测试显示测试nwrite(3,0 x7a);/在小时与分及分与秒之间设置分在小时与分及分与秒之间设置分隔号隔号“-”nwrite(6,0 x7a);nTMOD=0 x10;/设置定时器设置定时器T1工作在方式工作在方式1.nTH1=(65536-50000)

25、/256;nTL1=(65536-50000)%256;nET1=1;/开定时器开定时器T1中断中断nEA=1;nTR1=1;/启动定时器启动定时器T1nwhile(1);/等待等待50ms一次的中断。一次的中断。n显示效果如图8.15所示。实训考核项目(作业)实训考核项目(作业)通过通过7221驱动,在驱动,在8位位LED上显示出你的上显示出你的班级与学号。例如,班级与学号。例如,08441班班70号同学,号同学,显示为显示为“08441-70”项目三数字万年历的设计n要求:设计一单片机控制的数字万年历。它采用液晶显示,可以显示年、月、日、星期,小时、分钟、秒及当前的温度等信息。1、项目介绍

26、:n此项目涉及键盘、显示接口的问题,还要用到数字温度传感器DS18B20及时间芯片DS1302。所涉及的知识广泛,综合性也很强。n只要认真、耐心地去边做边学,一定会提高综合编程能力及调试能力,达到单片机助理工程师甚至是工程师的水平。2、电路图n如图8.16所示。实际连接中要将DS18B20的中间一个引脚通过4.7K的电阻上拉到电源正极。图 13.22 万年历总仿真电路图3、元件清单n单片机-AT89S52nLCD-SMC1602ALCMn数字温度传感器-18B20(或1820)TO封装n时间芯片-DS1302n晶振-12MHZ、32.768KHZn电阻:10K、10K可调、10K排阻、4.7K

27、各一个n电容:10uF、30pF*2、n电池:1.5V*2(或3V)可充电(带电池座)n按键*5项目三任务1万年历的输出显示设计n要求:将日期、时间、温度等信息从LCD(LED)显示器输出直观显示。n任务分析:数字万年历要显示的信息较多,如果采用LED显示器,一是数码管会较多,二是功耗也较大。故在电池供电的场合,最好采用LCD显示器。LCD显示n知识目标:掌握LCD字符显示器1602的工作原理;n能力目标:能编写控制1602的程序;n素质目标:养成扩展知识的习惯(如由字符LCD可扩展到带汉字的LCD显示器)液晶显示器概述液晶显示器概述液晶显示器是一种低功耗显示器件,具有显示内容丰富、体积小、重

28、量轻、寿命长、使用方便、安全省电等优点,在计算器、万用表、袖珍式仪表和低功耗微机应用系统中得到广泛使用。LCD显示器显示器液晶显示器的分类液晶显示器的分类从产品形式上液晶显示器可分为两大类:液晶显示器件(LCD)和液晶显示模块(LCM);从驱动方式上可分为内置驱动控制器的液晶显示模块和无控制器的液晶显示器件两种;从显示颜色上可分为单色和彩色;从显示方式上可分为正性显示、负性显示、段性显示、点阵显示、字符显示、图形显示、图像显示、非存储型显示、存储型显示等。具体应用中,可根据不同的显示要求选择合适的液晶显示器。通用液晶显示模块通用液晶显示模块LCM的分类的分类实际使用中的通用液晶显示模块主要有通

29、用段式液晶显示模块、通用段式液晶显示屏、点阵字符型液晶显示模块、点阵图形液晶显示模块等几种。点阵字符型液晶显示模块n点阵字符型液晶显示模块可显示西文字符、数字、符号等,显示内容比较丰富,字符是由57或511点阵块实现的,但无法显示汉字和复杂图形。n它们的使用方法和软件基本相同。点阵图形液晶显示模块可以混合显示西文字符、符号、汉字、图形等,灵活性好,一般用于要求显示汉字、图形、人机交互界面等内容复杂的仪器设备。不同厂家、不同型号的点阵图形液晶显示模块所使用的控制器可能不同,因而相应的接口电路、接口特性、指令系统也有所不同,使用时除需选择点阵数、尺寸外,还要注意所选控制器的型号。字符型显示模块及其

30、应用字符型显示模块及其应用图 11.15 LCD1602模块引脚位置图返回本节返回本节返回本节返回本节控制器接口说明(HD44780及兼容芯片)n1)基本操作时序:n读状态:输入:RS=L,RW=H,E=H输出:D0D7=状态字n写指令:输入:RS=L,RW=L,D0D7=指令码,E=高脉冲输出:无n读数据:输入:RS=H,RW=H,E=H输出:D0D7=数据n写数据:输入:RS=H,RW=L,D0D7=数据,E=高脉冲输出:无状态字说明n对控制器每次进行读写操作之前,都必须进行读写检测。确保STA7为0.STA7STA6STA5STA4STA3STA2STA1STA0D7D6D5D4D3D2

31、D1D0STA06当前数据地址指针的数值STA7读写操作使能1:禁止 0:允许RAM地址映射图指令说明n1)显示模式设置指令码功能00 1110 00设置162显示,57点阵,8位数据接口指令码功能00001DCBD=1 开显示;D=0 关显示C=1 显示光标;C=0 不显示光标 B=1 光标闪烁;B=0 不显示闪烁 000001NSN=1 当读或写一个字符后地址指针加一且光标加一N=0 当读或写一个字符后地址指针减一且光标减一S=1 当写一个字符,整屏显示左移(N=1)或右移(N=0),以得到光标不移动而屏幕移动的效果。S=0当写一个字符时,整屏显示不移动。指令功能说明2)数据控制n控制器内

32、部设有一个数据地址指针,用户可通过它们来访问内部的全部80字节RAM。3)数据指针设置指令码功能80H+地址(0-27H,40H-67H)设置数据地址指针4)其他设置指令码功能01H显示清屏:1.数据指针清零 2.所有显示清零02H显示回车:1.数据指针清零5、SMC1602A参考连接n1)8051系列总线方式n2)8051系列模拟口线方式控制器接口时序说明n1)读操作时序2)写操作时序举例:举例:项目三任务项目三任务1万年历万年历的输出显的输出显示设计解答示设计解答图 11.21 万年历显示部分电路图(1)电路图)电路图nP0口与显示模块的数据端相连;口与显示模块的数据端相连;P2.5、P2

33、.6、P2.7分别与分别与RS、RW、E端相连;通过可变端相连;通过可变电阻电阻RV1调节显示模块偏压;调节显示模块偏压;1、2号引脚接上号引脚接上+5V电源电源.n/PortDefinitions*nsbitLcdRs=P25;nsbitLcdRw=P26;nsbitLcdEn=P27;nsfrDBPort=0 x80;(2)显示程序)显示程序nvoidshow_time()/液晶显示程序nnDS1302_GetTime(&CurrentTime);/获取时钟芯片的时间数据nTimeToStr(&CurrentTime);/时间数据转换液晶字符nDateToStr(&CurrentTime)

34、;/日期数据转换液晶字符nReadTemp();/开启温度采集程序ntemp_to_str();/温度数据转换成液晶字符nGotoXY(12,1);/液晶字符显示位置:第2行,第12列nPrint(TempBuffer);/显示温度nGotoXY(0,1);/液晶字符显示位置:第2行,第0列nPrint(CurrentTime.TimeString);/显示时间nGotoXY(0,0);/液晶字符显示位置:第1行,第0列nPrint(CurrentTime.DateString);/显示日期nGotoXY(15,0);/液晶字符显示位置:第1行,第15列nPrint(week_value);/

35、显示星期nGotoXY(11,0);/液晶字符显示位置:第1行,第11列nPrint(Week);/在液晶上显示字母WeeknDelay1ms(400);/扫描延时nn将显示程序与图对照,完全相同。显示结果图如图8.24所示。下面讨论与显示相关的子函数:下面讨论与显示相关的子函数:n确定位置的函数:确定位置的函数:GotoXY();n输出显示内容的函数:输出显示内容的函数:Print();n液晶初始化函数:液晶初始化函数:LCD_Initial()液晶初始化函数液晶初始化函数LCD_Initial()n其作用是在上电时,单片机对液晶进行初始化,其作用是在上电时,单片机对液晶进行初始化,如打开液

36、晶、设置显示模式等。如打开液晶、设置显示模式等。n/初始化初始化LCD*nvoid LCD_Initial()nnLcdEn=0;nLCD_Write(LCD_COMMAND,0 x38);/8位数据端口位数据端口,2行行显示显示,5*7点阵点阵nLCD_Write(LCD_COMMAND,0 x38);nLCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);/开启显开启显示示,无光标无光标nLCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);/清屏清屏nLCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);/AC递增递增,

37、画面不动画面不动nn在初始化函数中又有几个子函数:在初始化函数中又有几个子函数:LCD_Write()、()、LCD_SetDisplay()、()、LCD_SetInput()。第一个函数最重要,是用来对液晶写入()。第一个函数最重要,是用来对液晶写入操作的函数:操作的函数:n/向向LCD写入命令或数据写入命令或数据*n#define LCD_COMMAND0 /Command(命令)(命令)n#define LCD_DATA1 /Data(数据)(数据)n#define LCD_CLEAR_SCREEN0 x01 /清屏清屏n#define LCD_HOMING 0 x02 /光标返回原点

38、光标返回原点nvoid LCD_Write(bit style,unsigned char input)n/两个形参,第一个是位型,决定是写入命令还是写两个形参,第一个是位型,决定是写入命令还是写入数据;第二个为输入的具体内容。入数据;第二个为输入的具体内容。n/根据液晶模块写入时序图编制根据液晶模块写入时序图编制nLcdEn=0;nLcdRs=style;/RS最先变化,由第一个形参决最先变化,由第一个形参决定是写入命令还是数据操作。定是写入命令还是数据操作。nLcdRw=0;/接着接着RW变为低电平,表示写入操变为低电平,表示写入操作。作。n_nop_();nDBPort=input;/数

39、据从数据端口装入。数据从数据端口装入。n_nop_();/注意顺序注意顺序nLcdEn=1;/最后使能端最后使能端E变为高电平,以变为高电平,以写入数据。写入数据。n_nop_();/注意顺序注意顺序nLcdEn=0;/使能端使能端E回到低电平,完成本回到低电平,完成本次操作。次操作。n_nop_();nLCD_Wait();/作用主要是延时一下。作用主要是延时一下。nn第二个子函数第二个子函数LCD_SetDisplay()的作用是设置液晶的显示()的作用是设置液晶的显示模式:模式:n/设置显示模式设置显示模式*n#define LCD_SHOW0 x04 /显示开显示开n#define L

40、CD_HIDE0 x00 /显示关显示关 n#define LCD_CURSOR0 x02/显示光显示光标标n#define LCD_NO_CURSOR0 x00 /无光标无光标 n#define LCD_FLASH0 x01 /光标闪动光标闪动n#define LCD_NO_FLASH0 x00 /光标不闪动光标不闪动nvoid LCD_SetDisplay(unsigned char DisplayMode)nnLCD_Write(LCD_COMMAND,0 x08|DisplayMode);nn在液晶初始化时是这样调用的设置函数:在液晶初始化时是这样调用的设置函数:nLCD_SetDis

41、play(LCD_SHOW|LCD_NO_CURSOR);/开启显示开启显示,无光标无光标n第三个子函数第三个子函数LCD_SetInput()的作用是设置液晶()的作用是设置液晶的画面模式:的画面模式:n/设置输入模式设置输入模式*n#define LCD_AC_UP0 x02/光标光标递增递增n#define LCD_AC_DOWN0 x00 /defaultn#define LCD_MOVE0 x01 /画面可平移画面可平移n#define LCD_NO_MOVE0 x00 /default:画面不可移动。:画面不可移动。nvoid LCD_SetInput(unsigned char

42、InputMode)nnLCD_Write(LCD_COMMAND,0 x04|InputMode);nn在初始化时是这样调用它的:在初始化时是这样调用它的:nLCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);n/数据指针递增(即从左到右显示)数据指针递增(即从左到右显示),画面不动(移画面不动(移动光标及显示内容)。动光标及显示内容)。确定位置的函数:确定位置的函数:GotoXY();n/液晶字符输入的位置液晶字符输入的位置*nvoid GotoXY(unsigned char x,unsigned char y)/xy是是显示座标;显示座标;x为列,为列,y为行。为行

43、。nnif(y=0)/第一行第一行nLCD_Write(LCD_COMMAND,0 x80|x);/光标光标移动到第一行,第移动到第一行,第x列。列。nif(y=1)/第二行第二行nLCD_Write(LCD_COMMAND,0 x80|(x+0 x40);/光标移动到第二行,第光标移动到第二行,第x列。列。n输出显示内容的函数:输出显示内容的函数:Print();n/将字符输出到液晶显示将字符输出到液晶显示nvoid Print(unsigned char*str)/指针要指向要指针要指向要显示的字符数组的地址。显示的字符数组的地址。nnwhile(*str!=0)/while(*str!=

44、0)-只要只要没有到结束符,就对液晶进行输出(写入)操作。没有到结束符,就对液晶进行输出(写入)操作。nnLCD_Write(LCD_DATA,*str);/将要显将要显示的字符(指针所指)输出到液晶上。示的字符(指针所指)输出到液晶上。nstr+;/指向下一字符。指向下一字符。nn返回本节项目三任务用用字符字符LCD显示显示“GOOD”n要求:用单片机控制字符液晶显示模块要求:用单片机控制字符液晶显示模块LCD1602,在上面显示英文,在上面显示英文“GOOD”。n任务分析:前面对任务分析:前面对LCD字符显示器的使用已经字符显示器的使用已经有了初步的掌握,这一问题中有硬件、软件两有了初步的

45、掌握,这一问题中有硬件、软件两方面。硬件方面,方面。硬件方面,LCD显示器与单片机如何接显示器与单片机如何接口?软件方面,这一接口在程序中如何定义?口?软件方面,这一接口在程序中如何定义?如何操作使用?当然具体程序中还有字符显示如何操作使用?当然具体程序中还有字符显示等问题。等问题。1、电路图n本电路接成总线操作和模式,控制信号的产生本电路接成总线操作和模式,控制信号的产生是:是:RS由由P2.0控制,控制,RW由由P2.1控制,控制,E由由P2.7、P3.6(读选通)、(读选通)、P3.7(写选通)控(写选通)控制。数据输入端还是与制。数据输入端还是与P0口相连。口相连。n/写命令的端口地址

46、。从电路分析:要写命令的端口地址。从电路分析:要E有效有效P2.70,n/是命令是命令RS0即即P2.00,写入写入RW0即即P2.1=0,故地址为:故地址为:0111110011111111B0 x7cff.n#define WLCDCOM XBYTE0 x7cffn/读的端口地址。从电路分析:要读的端口地址。从电路分析:要E有效有效P2.70,n/是命令是命令RS0即即P2.00,读读RW1即即P2.1=1,故地址为:故地址为:0111111011111111B0 x7eff.n/写数据的端口地址。从电路分析:要写数据的端口地址。从电路分析:要E有效有效P2.70,n/是数据是数据RS1即

47、即P2.01,写入写入RW0即即P2.1=0,故地址为:故地址为:0111110111111111B0 x7dff.#include#include#defineucharunsignedchar#defineWLCDCOMXBYTE0 x7cff#defineRLCDCOMXBYTE0 x7eff#defineLCDDATAXBYTE0 x7dffsbitbflag=ACC7;ucharidatas_GOOD5=0 x47,0 x4f,0 x4f,0 x44,0 x00;voidwait(void)doACC=RLCDCOM;while(bflag=1);voidinit_lcd(void)

48、WLCDCOM=0 x38;wait();WLCDCOM=0 x06;wait();WLCDCOM=0 x0f;wait();WLCDCOM=0 x01;wait();返回本节voidd_char(uchara)LCDDATA=a;wait();返回本节voiddisplay(ucharx,ucharidata*s)uchari=0;WLCDCOM=x|0 x80;wait();while(si!=0 x00)d_char(si);i+;void main(void)while(1)int i=10000;init_lcd();display(7,s_GOOD);while(i!=0)i-;/

49、延时延时显示效果如图所示。显示效果如图所示。图 11.25 LCD显示仿真结果返回本节项目训练三(作业):用字项目训练三(作业):用字符型符型LCD显示你的班级与学显示你的班级与学号。如,号。如,08442班班67号同学号同学显示为显示为“08442-067”扩展知识-keilC51绝对地址访问nC51提供了三种访问绝对地址的方法:提供了三种访问绝对地址的方法:1.绝对宏:绝对宏:在程序中,用在程序中,用“include”即即可使用其中定义的宏来访问绝对地址,包括:可使用其中定义的宏来访问绝对地址,包括:CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWO

50、RD 具体使用可看一看具体使用可看一看absacc.h便知便知 n/*-nABSACC.HnDirect access to 8051,extended 8051 and Philips 80C51MX memory areas.nCopyright(c)1988-2002 Keil Elektronik GmbH and Keil Software,Inc.nAll rights reserved.n-*/n#ifndef _ABSACC_H_n#define _ABSACC_H_n#define CBYTE(unsigned char volatile code *)0)n#define

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁