




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
苏州大学实验报告院、系年级专业姓名学号课程名称成绩指导教师同组实验者实验日期实验名称:液晶LCD显示实验 一实验目的理解点阵字符型LCD的显示原理;理解HD44780的原理框图;了解字符型液晶显示模块的控制器HD44780的引脚信号以及HD44780的显示和编程方法;理解HD44780与MCU的接线图。 二实验内容理解点阵字符型LCD原理,运行与理解各子程序,编制一个点阵字符型LCD程序。MCU的PTD7-PTD0接LCD数据线, PTC2-PTC0接LCD控制线,在LCD上显示当前时间,格式形如时:分:秒。时间的开始值可以通过PC方的串口通信程序来进行指定。 三实验过程(一)原理图图9-1 HD44780原理框图(二)接线图图9-2 MCU与LCD的连接LCD(HD44780)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16DB7DB6DB5DB4DB3DB2DB1DB0ER/WRSV0VddVSS+5VPTD7PTD6PTD5PTD4PTD3PTD2PTD1PTD0PTC2PTC1PTC0(三)基本原理HD44780 驱动模块是用低功耗CMOS 技术制造的LCD 控制器,主要由I/O 缓冲器、指令寄存器、数据寄存器、地址计数器、字符发生器等构成。可与八位的微处理器相连,接口简单方便,指令功能强,可组合成各种输入、显示和移位方式以满足不同的要求,能使液晶显示器显示大小写英文字母、数字和符号。它的电极图形是由若干个58 或511 点阵块组成的字符块集,每一个字符块是一个字符位,每一位都可以显示一个字符。 四编程(一)流程图开始SCI初始化子程序头文件和声明定时器初始化子程序开放SCI接收中断、定时器1溢出中断,开放总中断结束人工复位1 ?开始把当前计时值改变为接收到的计时初始值结束开始等待SCI接收中断事件的发生取得计时初始值分钟达到60则清零计时值的秒加1秒达到60则清零,分钟值加1结束等待定时器溢出中断事件的发生图9-3 液晶LCD显示流程图(及其中断子程序)(二)所用寄存器名称及其各个位指令寄存器(IR):IR用于MCU向HD44780写入指令码。数据寄存器(DR):DR用于寄存数据。忙标志(BF):BF=1,表示组件正在进行内部操作,不能接受外部指令或数据。地址计数器(AC):AC作为DD RAM或CG RAM的地址指针。显示数据寄存器(DD RAM):DD RAM用于存储显示数据,共有80个字符码。字符发生器ROM(CG ROM):CG ROM由8位字符码生成57点阵字符160种和510点阵字符32种,其中大部分与ASCII码兼容。字符发生器RAM(CG RAM):CG RAM是提供给用户自定义特殊字符用的,它的容量仅为64字节,编址为003FH。(三)主要代码段1汇编方式:液晶LCD显示的主程序部分代码MainInit: /复位后程序从此开始执行 /系统初始化 SEI /关中断 /1.堆栈初始化为RAM最高端 LDHX #RAMEndAddr+1 /HX=#RAMEndAddr+1 TXS /HX-1-SP /2.系统初始化 JSR MCUInit /初学时跳过此处 /3.串行口初始化 JSR SCIInit /4.定时器1初始化 JSR Timer1init /调定时器1初始化子程序 /5.LCD初始化 JSR InitLCD /调定时器1初始化子程序 /开放SCI接收中断 BSET #5,SCC2 /设置接收中断允许 CLI /开中断 /给Time0-2时分秒赋初值0、0、0 LDA #$0 STA Time STA Time+1 STA Time+2 /LCD缓冲区初始化 LDA #$20 /空格 MOV #32,*I1 /LCD缓冲区长度 LDHX #LCDbuf /LCD缓冲区首地址LCDInit1: STA ,X AIX #1 DBNZ *I1,LCDInit1 MOV #$30,LCDbuf MOV #$30,LCDbuf+1 MOV #$3a,LCDbuf+2 MOV #$30,LCDbuf+3 MOV #$30,LCDbuf+4 MOV #$3a,LCDbuf+5 MOV #$30,LCDbuf+6 MOV #$30,LCDbuf+7 /把LCD_Buf为首址32个字符送LCD显示 LDHX #LCDbuf JSR LCDShow /程序总循环入口MainLoop: JMP MainLoop液晶LCD显示的中断子程序部分代码/Timer1Int:定时器1溢出中断子程序-*/功能:给内存单元Time0-2(时分秒)赋值 */入口:无 */出口:无 */-*Timer1Int: SEI /关总中断 PSHH /保护H INC Time+2 /秒数加1 LDA Time+2 CMP #60 BNE Timer1Int_1 /秒数未增加到60,转 LDA #0 /秒数增加到60,清0 STA Time+2 INC Time+1 /分钟数加1 LDA Time+1 CMP #60 BNE Timer1Int_1 /分钟数未增加到60,转 LDA #0 /分钟数增加到60,清0 STA Time+1 INC Time /小时数加1 LDA Time CMP #24 BNE Timer1Int_1 /小时数未增加到24,转 LDA #0 /小时数增加到24,清0 STA TimeTimer1Int_1: LDA T1SC BCLR #TOFBit,T1SC /清除定时器溢出标志位 PULH /恢复H CLI /开总中断 /处理供LCD显示用的时、分和秒的各位 /时 LDA Time CLRH LDX #10 DIV ADD #$30 STA LCDbuf PSHH PULA ADD #$30 STA LCDbuf+1 /分 LDA Time+1 CLRH LDX #10 DIV ADD #$30 STA LCDbuf+3 PSHH PULA ADD #$30 STA LCDbuf+4 /秒 LDA Time+2 CLRH LDX #10 DIV ADD #$30 STA LCDbuf+6 PSHH PULA ADD #$30 STA LCDbuf+7 /把LCD_Buf为首址32个字符送LCD显示 LDHX #LCDbuf JSR LCDShow RTI/SCIRecINT:SCI接收中断子程序-*/功能:接收3字节基准时分秒放入内存单元Time0-2 */入口:无 * /出口:Time0-2 */-*SCIRecINT: SEI /关总中断 PSHH /保护H LDA #$3 LDHX #Time JSR SCIReN /接收3字节数据 PULH /恢复H CLI /开总中断 RTI /中断返回2C语言方式:液晶LCD显示的主程序部分代码/主函数void main() INT8U i,j; DisMCUInt(); /禁止总中断 MCUInit(); /芯片初始化 SCIInit(); /串行口初始化 Timer1Init(); /定时器初始化 LcdInit(); /LCD初始化 EnSCIReInt(); /开放SCI接收中断 EnT1OverflowInt(); /开放Timer1溢出中断 T1SC &= (1TSTOPBit); /允许定时器1计数 EnMCUInt(); /开放总中断 /给时分秒赋值初始化 time0 = 0; /时 time1 = 0; /分 time2 = 0; /秒 /LCD缓冲区初始化 lcd_buffer0=0; lcd_buffer1=0; lcd_buffer2=:; lcd_buffer3=0; lcd_buffer4=0; lcd_buffer5=:; lcd_buffer6=0; lcd_buffer7=0; for(i=8;i32;i+) lcd_bufferi= ; /空格 /显示00:00:00 LcdShow(INT8U *)lcd_buffer); while(1) 液晶LCD显示的中断程序部分代码#pragma interrupt_handler isrSCIRe void isrSCIRe(void) DisMCUInt(); /禁止总中断 SCIReN(3,(INT8U *)time); /接收时分秒3个字节的数据 EnMCUInt(); /开放总中断#pragma interrupt_handler isrTimer1void isrTimer1(void) DisMCUInt(); time2+; /秒加1 if(time2 != 60) goto exit; /秒未增加到60,转exit time2 = 0; /秒增加到60,清0,分加1 time1+; if(time1 != 60) goto exit; /分未增加到60,转exit time1 = 0; /分增加到60,清0,时加1 time0+; if(time0 != 24) goto exit; /时未增加到24,转exit time0 = 0; /时增加到24,清0exit:T1SC&= (1TOFBit); /清除定时器溢出标志位 EnMCUInt(); /LCD显示时、分和秒 lcd_buffer0=time0/10 + 0x30; lcd_buffer1=time0%10 + 0x30; lcd_buffer3=time1/10 + 0x30; lcd_buffer4=time1%10 + 0x30; lcd_buffer6=time2/10 + 0x30; lcd_buffer7=time2%10 + 0x30; LcdShow(INT8U *)lcd_buffer);五实验问答(根据实验指导书所列举的问题)1请简述LCD有哪些特点?答:(1)低电压微功耗。LCD的工作电压一般为35V,每平方厘米的液晶显示屏的工作电流为A级。(2)平板型结构。这种结构具有使用方便、生产工艺简单等优点。(3)使用寿命长。LCD器件本身几乎没有劣化问题。若能注意器件防潮、防压、防止划伤、防止紫外线照射、防静电等,同时注意使用温度,LCD可以使用很长时间。(4)被动显示。对LCD来说,环境光线越强显示内容越清晰。(5)显示信息量大且易于彩色化。LCD与CRT相比,由于LCD没有荫罩限制,像素可以做得很小,这对于高清晰电视是一种理想的选择方案。同时,液晶易于彩色化,方法也很多。特别是液晶的彩色可以做得更逼真。(6)无电磁辐射。CRT工作时,不仅会产生X射线,还会产生其它电磁辐射,影响环境。LCD则不会有这类问题。 2LCD的种类有哪些?答:液晶显示器件分类方法有多种,这里简要给出几种。按电光效应分为电场效应类、电流效应类、电热写入效应类和热效应类。其中电场效应类又可分为扭曲向列效应(TN)类、宾主效应(GH)类和超扭曲效应(STN)类等。MCU系统中应用较广泛的是TN型和STN型液晶器件。按显示内容分类,LCD可分为字段型(或称为笔划型)、点阵字符型、点阵图形型三种。字段型LCD是指以长条笔划状显示像素组成的液晶显示器件。点阵字符型LCD是指显示的基本单元由一定数量点阵组成,专门用于显示数字、字母、常用图形符号及少量自定义符号或汉字。点阵图形型除了可显示字符外,还可以显示各种图形信息、汉字等,显示自由度大。LCD器件按其采光方式分类,分为带背光源与不带背光源两大类。不带背光的LCD显示是靠背面的反射膜将射入的自然光从下面反射出来完成的。 3数字可以直接在LCD上显示吗?答:不可以,需要转换成字符型的值。 4本实验在HD44780 LCD显示屏基础上进行,MCU向LCD输送指令和数据,是通过不同的数据线吗?答:是同一组数据线,但RS、RW、E是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基金从业考试速成班 上及答案解析
- 小区农田开发管理合同
- 证券从业考试都是选择题及答案解析
- 区房屋抵押买卖协议
- 农业种植养殖业综合开发合作协议
- 办公文具批发及定制合同协议
- 房地产开发合同审查及风险防范
- 船舶货物运输风险防护方案
- 煤炭勘探疏散通道设计
- 化学工业废气排放情况细则
- 职业发展与就业创业指导ppt课件完整版
- 挠度计算模板表格(自动版)
- (中职中专)财经法规与会计职业道德课件完整版电子教案
- 宝钢集团生产安全事故案例汇编
- DB37T 5151-2019 园林绿化工程资料管理规程
- Q∕GDW 11612.43-2018 低压电力线高速载波通信互联互通技术规范 第4-3部分:应用层通信协议
- 贝多芬F大调浪漫曲—小提琴谱(带钢伴谱)
- 压力传感器(课堂PPT)
- 热力厂锅炉车间2#锅炉大修施工方案
- (施工方案)场地三通一平施工方案
- 深圳市政府投资市政工程施工质量检查用表
评论
0/150
提交评论