




已阅读5页,还剩52页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章 LCD与LED编程,主要内容 数码管编程实例 LCD概述 点阵字符型LCD的接口特性 点阵字符型LCD的编程实例,9.1数码管编程实例,9.1.1扫描法LED显示编程原理 8段数码管一般由8个发光二极管(Llight-emitting diode,LED)组成,每一个位段就是一个发光二极管。一个8段数码管分别由a、b、c、d、e、f、g位段,外加上一个小数点的位段h(或记为dp)组成。实物外型见下图。,数码管,8段数码管可分为共阳极和共阴极两种,如下图所示。共阴极8段数码管的信号端高电平有效,只要在各个位段上加上相应的信号即可使相应的位段发光,共阳极的8段数码管则相反,在相应的位段加上低电平即可使该位段发光。,(b) 共阳极,4连排数码管同时显示原理,4连排数码管,利用CS3 、CS2、CS1、CS0控制各个数码管的位选信号,每个时刻只能让一个数码管有效,即CS3 、CS2、CS1、CS0只能有一个为0,例如令CS3=0,CS2、CS1、CS0=111,则数据线上的数据体现在第一个数码管上,其他则不受影响。要让各个数据管均显示需要的数字,则必须逐个使相应位选信号为0,其他位选信号为1,并将要显示的一位数字送到数据线上。这种方法叫“位选线扫描法”。虽然每个时刻只有一个数码管有效,但只要延时适当,由于人眼的“视觉暂留效应”(约100ms左右),看起来则是同时显示的。,4连排共阴极8段数码管,9.1.2接口实例,一个4连排共阴极8段数码管的编程实例。在硬件连接上,利用MCU的B口控制8个位段(数据),用C口的低四位控制数码管的位选信号。图中,PTB70分别接ha位段,PTC30分别过1K电阻与CS30位选端相接,这样PTB3就控制最左边一个数码管的显示,PTC0则控制最右边一个数码管的显示。接在位选线上的1K电阻是限流电阻,避免电流过大烧坏数码管。,9.1.3 数码管汇编语言实例,以下给出GP32对上述4位一体LED的汇编编程实例,表9-1列出了该例程的所有程序文件,下面逐一介绍这些程序。,数码管显示工程文件,(1) LED汇编编程主函数,LED汇编编程主函数 1,/总头文件 .include “Includes.h“ /主程序 .area flash(abs) .org FlashStartAddr MainInit: /复位后从此处执行(见Vectors08.s文件末尾处) SEI /关总中断 /1. 堆栈初始化为RAM最高端 LDHX #RAMendAddr + 1 /HX = #RAMEndAddr + 1 TXS /HX - 1 - SP /2. 芯片初始化 JSR MCUinit /初学时跳过此处,LED汇编编程主函数 2,/3. 模块初始化 JSR SCIinit /(1) 串行口初始化 JSR LEDinit /(2) LED控制引脚初始化 /4. 全局变量初始化 /(1) LED缓存初始存入0000 MOV #0,*LEDbuf4 MOV #0,*LEDbuf4+1 MOV #0,*LEDbuf4+2 MOV #0,*LEDbuf4+3 /(2) 标志初始化 = &FF MOV #$FF,ReFlag,LED汇编编程主函数 3,/5. 开放各模块中断 JSR EnableSCIreInt /允许SCI接收中断 /6. 开总中断 CLI /LED初始显示0000 LDHX #LEDbuf4 JSR LEDshow /程序总循环入口 MainLoop: LDA ReFlag /当接收并正确接收数据时,ReFlag = 0 CMP #$0,LED汇编编程主函数 4,BNE Main_Show /数据从ReBufLEDbuf MOV *ReBuf4, *LEDbuf4 MOV *ReBuf4+1,*LEDbuf4+1 MOV *ReBuf4+2,*LEDbuf4+2 MOV *ReBuf4+3,*LEDbuf4+3 MOV #$FF,ReFlag Main_Show: /把LEDbuf4为首址4个数字送LED显示 LDHX #LEDbuf4 JSR LEDshow BRA MainLoop,LED汇编编程主函数 5,/包含本工程的其他文件- .include “EnDisInt.s“ /允许/禁止MCU各模块中断 .include “MCUinit.s“ /芯片初始化 .include “GeneralFun.s“ /该文件包含延时子程序 .include “SCI.s“ /串行通信 .include “LED.s“ /LED驱动 /包含中断处理子程序与中断向量表文件“Vectors08.s“- /注意:这个包含语句的存放位置必须放在最后 .include “Vectors08.s“ /中断处理子程序与中断向量表,LED汇编编程主函数 6,(2) LED驱动子程序LED.s 1,LED驱动子程序LED.s 2,.include “LED.h“ /该头文件包含LED驱动相关寄存器宏定义 /LEDinit:4连排LED初始化-* /功能:定义LED控制引脚的数据口和位选口为输出 * /入口:无 * /出口:无 * /堆栈深度:2 + 1 = 3 * /-*,LED驱动子程序LED.s 3,LEDinit: PSHA /保护A /数据口为输出到LED LDA #%11111111 STA LEDdata_D /位选口为输出到LED LDA LEDcs_D ORA #%00001111 STA LEDcs_D PULA /恢复A RTS,LED驱动子程序LED.s 4,/LEDshow: 在4连排LED上显示4个十进制数-* /功能:在4连排LED上显示HX所指向的4个数据 * /入口:HX = 待显示数据缓冲的首地址 * /出口:无 * /说明:HX所指向的缓冲区中的数据是数值的ASCII值 * /堆栈深度:2 + 4 + 4 = 10 * /内部调用:LEDshow1,DelayHX * /-*,LED驱动子程序LED.s 5,LEDshow: PSHA /保护A LDA #4 /循环显示4个LED LEDshow_1: PSHH /暂存显示缓冲首地址 PSHX PSHA /暂存循环计数器 /取要显示的1个数字 LDA ,X /把这个数字的ASCII码转换成数值A SUB #0 /设置要显示的LED位号(从左到右为3-0)X PULX PSHX DECX /显示这个数字 JSR LEDshow1,LED驱动子程序LED.s 6,/延时 LDHX #$FF JSR DelayHX PULA /恢复计数器 PULX /恢复显示缓冲首地址 PULH /指向下一个要显示的数字 AIX #1 /循环显示4个数字 DBNZA LEDshow_1 PULA /恢复A RTS,LED驱动子程序LED.s 7,/LEDshow1:在1个LED上显示数字-* /功能:在第X个LED上显示数字A(要查表转码) * /入口: * / (1)X:要显示的LED位号(从右到左0-3) * / (2)A:要显示的数字(0-9) * /出口:无 * /堆栈深度:2 + 1 + 1 = 4 * /-* LEDshow1: PSHH /保护H PSHA /保护A CLRH,LED驱动子程序LED.s 8,LDA CStable,X /查表取位选信号 STA LEDcs /送位选信号 PULA /恢复A TAX LDA Dtable,X /查表取显示码 STA LEDdata /送到LED数据线 PULH /恢复H RTS /片选表 0 1 2 3 CStable: .byte $F7,$FB,$FD,$FE /显示码表 0 1 2 3 4 5 6 7 8 9 Dtable: .byte $3F,$06,$5B,$4F,$66,$6D,$7D,$07,$7F,$6F,(3) LED驱动头文件LED.h,9.1.4 数码管08C语言实例 以下给出GP32对上述4位一体LED的汇编编程实例,表9-2列出了该例程的所有程序文件,具体内容不做介绍,读者参阅附带教学资料“MC08Ex2007 GP32GP32CC05_数码管LED”中的工程。,9.2LCD概述,9.2.1LCD的特点 低电压微功耗 平板型结构 使用寿命长 被动显示 显示信息量大且易于彩色化 无电磁辐射,9.2.2LCD的分类,按电光效应分类 电场效应类 电流效应类 电热写入效应类 热效应类,按显示内容分类 字段型(或称为笔划型) 点阵字符型 点阵图形型,LCD的分类,按LCD的采光方式分类 带背光源:在弱光或黑暗条件下使用 不带背光源:靠背面的反射膜将射入的自然光从下面反射出来完成的 。,LCD的分类,9.3点阵字符型LCD的接口特性,9.3.1点阵字符型液晶显示模块的基本特点 液晶显示屏是以若干58或511点阵块组成的显示字符群。 主控制电路为HD44780(HITACHI)及其它公司的兼容电路。 内部具有字符发生器ROM 具有64字节的自定义字符RAM 具有64字节的数据显示RAM 标准接口特性,与H68HC08系列MCU容易接口。 模块结构紧凑、轻巧、装配容易。 单+5V电源供电 低功耗、高可靠性。,9.3.2HD44780的引脚与时序,HD44780的引脚信号 HD44780的外部接口信号一般有14条,有的型号显示器使用16条,其中与MCU的接口有8条数据线、3条控制线。,HD44780的时序信号,D0-D7,9.3.3HD44780的编程结构,从编程角度看,HD44780内部主要由指令寄存器(IR)、数据寄存器(DR)、忙标志(BF)、地址计数器(AC)、显示数据寄存器(DD RAM)、字符发生器ROM(CG ROM)、字符发生器RAM(CG RAM)及时序发生电路构成。 指令寄存器(IR) 数据寄存器(DR) 忙标志(BF) 地址计数器(AC) 显示数据寄存器(DD RAM) 字符发生器ROM(CG ROM) 字符发生器RAM(CG RAM),9.3.4HD44780的指令集,清屏(Clear Display) 归位(Return Home) 输入方式设置(Entry Mode Set) 显示开关控制(Display ON/OFF Control) 光标或画面移位(Cursor or Display Shift) 功能设置(Function Set) CG RAM地址设置(CG RAM Address Set) DD RAM地址设置(DD RAM Address Set) 读忙标志BF和AC值(Read Busy Flag and Address Count) 写数据到DDRAM或CGRAM(Write Data to DDRAM or CG RAM) 读DDRAM或CGRAM数据(Read Data from DDRAM or CGRAM),9.4点阵字符型LCD编程实例,本节给出点阵字符型LCD的一个编程实例。在SD-HC08实验板上,LCD的数据线714脚(DB0DB7)分别与MCU的PTB0PTB7连接,LCD的控制线RS、R/、E(4、5、6脚)分别与MCU的PTC0、PTC1、PTC2连接,右图给出LCD的硬件连接方式。LCD的1、2、3脚为供电电源与亮度调节引脚。MT-IDE实验箱的扩展板的上还留有一排插孔,当LCD接在下排插孔时,LCD控制线与数据线与MCU的连接可以自行定义并通过下部接线孔接线。,9.4.1LCD编程汇编工程实例,LCD初始化、显示通用子函数 下面给出以GP32为例有关LCD初始化和LCD显示的通用子函数。它们是:LCD初始化子函数、LCD显示子函数。LCD初始化子函数用来对LCD做一些初始设置,LCD显示子函数用来将LCD缓冲区中的数据显示在LCD屏幕上。将它们应用到CCM3118、S08系列、S12系列中时只需要修改相应的头文件和宏定义中LCD寄存器的地址即可。,表9-4 LCD显示汇编工程文件,LCD初始化、显示子函数头文件:LCD.h,LCD初始化、显示子函数:LCD.s,LCD初始化、显示子函数:LCD.s,LCDshow: PSHA /保护A AIS #-1 /开辟1个字节的临时变量 /1. LCD初始化 JSR LCDinit /2. 显示第1行16个字符 /2.1设置显示首地址 BCLR #RS,LCDctrl /RS,R/W = 00(写的是指令) BCLR #RW,LCDctrl LDA #%10000000 /后7位为DD RAM地址($00) JSR LCDcommand,LCD初始化、显示子函数:LCD.s,/2.2写16个数据到DD RAM LDA #16 /SP+1初始 = 16(1行显示个数) STA 1,SP BSET #RS,LCDctrl /RS,R/W = 10(写的是数据) BCLR #RW,LCDctrl LCDshow_1: LDA ,X /取待显示的数据 JSR LCDcommand /向DD RAM写入数据 AIX #1 /指向下一个待显示的数据 DBNZ 1,SP,LCDshow_1 /若16个数据没写完则继续,LCD初始化、显示子函数:LCD.s,/3. 显示第2行16个字符 /3.1设置显示首地址 BCLR #RS,LCDctrl /RS,R/W = 00(写的是指令) BCLR #RW,LCDctrl LDA #%11000000 /后7位为DD RAM地址($40) JSR LCDcommand /3.2写16个数据到DD RAM LDA #16 /SP+1初始 = 16(1行显示个数) STA 1,SP BSET #RS,LCDctrl /RS,R/W = 10(写的是数据) BCLR #RW,LCDctrl LCDshow_2: LDA ,X /取待显示的数据,LCD初始化、显示子函数:LCD.s,JSR LCDcommand /向DD RAM写入数据 AIX #1 /指向下一个待显示的数据 DBNZ 1,SP,LCDshow_2 /若16个数据没写完则继续 AIS #1 /释放临时变量 PULA /恢复A RTS /LCDinit:初始化LCD(HD44780)-* /功能:初始化LCD(HD44780),设置显示方式,输入方式,并清屏 * /入口:无 * /出口:无 * /堆栈深度:2 + 3 + 4 = 9 * /内部调用:LCDcommand * /-*,LCD初始化、显示子函数:LCD.s,LCDinit: PSHH /保护H PSHX /保护X PSHA /保护A LDA #%11111111 /定义数据口(PTB0-7)为输出 STA LCDdataD LDA LCDctrlD /定义控制口(PTC0-2)为输出 ORA #%00000111 STA LCDctrlD /设置指令 BCLR #RS,LCDctrl /RS,R/W = 00 BCLR #RW,LCDctrl,LCD初始化、显示子函数:LCD.s,/1. 功能设置 LDA #%00111000 /|_ 可设任意值(0/1) /|_ F = 0,5*7点阵模式 /|_ N = 1,2行显示 /|_ DL = 1,8位数据总线 /|_ 固定为001 JSR LCDcommand,LCD初始化、显示子函数:LCD.s,/2. 显示开关控制 LDA #%00001000 /|_ B = 0,不闪烁 /|_ C = 0,关光标显示 /|_ D = 0,关显示 /|_ 固定为00001 JSR LCDcommand /3.清屏 LDA #%00000001 /清DD RAM内容,光标回原位,清AC JSR LCDcommand,LCD初始化、显示子函数:LCD.s,LDHX #$0200 /等待清屏完毕,时间 1.6ms JSR DelayHX /4.输入方式设置 LDA #%00000110 /|_ 显示不移动,光标左移(A = 1) /|_ 数据读写操作后,AC自动增1 /|_ 固定为000001 JSR LCDcommand,LCD初始化、显示子函数:LCD.s,/5.光标或画面移位设置 LDA #%00010100 /|_ 可设任意值(0/1) /|_ 光标右移一个字符位,AC自动加1 /|_ 固定为0001 JSR LCDcommand,LCD初始化、显示子函数:LCD.s,/6. 显示开关控制 LDA #%00001100 /|_ B = 0,不闪烁 /|_ C = 0,关光标显示 /|_ D = 1,开显示 /|_ 固定为00001 JSR LCDcommand PULA /恢复HX、A PULX PULH RTS,LCD初始化、显示子函数:LCD.s,/LCDcommand:执行A中的LCD命令-* /功能:执行A中的LCD命令,并延时 * /入口:A:存放指令或数据 * /出口:无 * /堆栈深度:2 + 2 = 4 * /-* LCDcommand: PSHX /保护X PSHH /保护H /1.等待 40us LDHX #$10 JSR DelayHX,LCD初始化、显示子函数:LCD.s,/2.数据送到LCD的数据线上 STA LCDdata /3.给出E信号的下降沿,使数据写入LCD BSET #E,LCDctrl NOP NOP NOP BCLR #E,LCDctrl /4.等待 40us LDHX #$10 JSR DelayHX PULH /恢复H PULX /恢复X RTS,LCD汇编编程主函数,/总头文件 .include “Includes.h“ /主程序 .area flash(abs) .org FlashStartAddr MainInit: /
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年镇江市高等专科学校辅导员考试真题
- 2024年甘肃陇南民康骨科医院招聘考试真题
- 养元饮品“脱实向虚”及其动因和后果研究
- 2025年二手交易电商平台信用体系建设与信用评价体系创新报告
- 2025年二手电商信用体系与消费者信任度提升策略报告
- 易清洁家具合成革材料行业深度调研及发展项目商业计划书
- 互动媒体设计行业跨境出海项目商业计划书
- 2025年二手电商平台信用评价与平台风险管理研究报告
- 单位换算平方题目及答案
- 代数竞赛题目及答案
- 《2025聘请财务顾问合同》
- T/ZGM 002-2021家用和类似用途纳滤饮用水净化装置
- 渐进多焦点镜片设计特点
- DB32/T 3390-2018一体化智能泵站应用技术规范
- 公共知识法律试题及答案
- 2025中国广电山东网络有限公司市县公司招聘145人笔试参考题库附带答案详解
- 天津市公安局为留置看护总队招聘警务辅助人员笔试真题2024
- 2024年重庆电力高等专科学校招聘笔试真题
- 2025年土木工程专业知识测试试卷及答案
- AI技术在市场营销中实现精准推广的方法与技巧
- 2025年商业模式与创新管理考试卷及答案
评论
0/150
提交评论