LCD1602显示字符.doc_第1页
LCD1602显示字符.doc_第2页
LCD1602显示字符.doc_第3页
LCD1602显示字符.doc_第4页
LCD1602显示字符.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

沈阳理工大学课程设计专用纸 No10成 绩 评 定 表学生姓名班级学号 专 业计算机科学与技术课程设计题目评语组长签字:成绩日期 2013 年1月 日 课程设计任务书学 院信息学院专 业计算机科学与技术学生姓名付磊班级学号 1003050424课程设计题目字符液晶显示装置设计实践教学要求与任务:要求:利用51单片机+1602字符lcd设计字符液晶显示系统,。需要有按钮控制显 示的开始和停止。完成以下设计环节: (1)使用Uvision2开发平台,采用C语言或汇编语言设计软件程序。 (2)使用PROTEUS仿真软件,设计仿真原理图并运行软件程序,完成系统仿真。工作计划与进度安排: 第18周:布置课程设计任务,查阅资料,分组设计,实验室组装与调试。 第19周:调试,验收,答辩,编写课程设计报告。指导教师: 2012年 月 日专业负责人: 2012年 月 日学院教学副院长: 2012年 月 日沈阳理工大学目 录1 仿真电路图设计12 工作原理22.1 液晶显示原理22.2 1602LCD工作原理33 程序及流程图54 运行与结果95 心得体会116 参考文献111 仿真电路图设计LCD1602:第 1 脚:VSS 为地电源。 第 2 脚:VDD接 5V正电源。 第 3 脚:VEE为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个 10K 的电位器调整对比度。 第 4 脚:RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 接8051 P3.5第 5 脚:R/W 为读写信号线,高电平时进行读操作,低电平时进行写操作。当 RS和 R/W共同为低电平时可以写入指令或者显示地址,当 RS 为低电平 R/W 为高电平时可以读忙信号,当 RS 为高电平 R/W为低电平时可以写入数据。 接8051 P3.6。第 6 脚:E端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。接8051 P3.7。 第 714脚:D0D7为 8 位双向数据线。接8051 P1口。 8051:P3.2 P3.3 接按钮。2 工作原理2.1 液晶显示原理液晶显示的原理是利用液晶的物理特性,即当通电时导通,排列变的有秩序,使光线容易通过;不通电时排列混乱,阻止光线通过。让液晶如闸门般地阻隔或让光线穿透。从技术上简单地说,液晶面板包含了两片相当精致的无钠玻璃素材,称为Substrates,中间夹著一层液晶。当光束通过这层液晶时,液晶本身会排排站立或扭转呈不规则状,因而阻隔或使光束顺利通过。大多数液晶都属于有机复合物,由长棒状的分子构成。在自然状态下,这些棒状分子的长轴大致平行。将液晶倒入一个经精良加工的开槽平面,液晶分子会顺着槽排列,所以假如那些槽非常平行,则各分子也是完全平行的。通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。液晶显示的分类方法有很多种,通常可按其显示方式分为段式LCD、字符式LCD、点阵式LCD等。除了黑白显示外,液晶显示器还有多灰度有彩色显示等。如果根据驱动方式来分,可以分为静态驱动(Static)、单纯矩阵驱动(Simple Matrix)和主动矩阵驱动(Active Matrix)三种。点阵图形式液晶由MN个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共168=128个点组成,屏上6416个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的 000H00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是LCD显示的基本原理。 字符的显示 用LCD显示一个字符时比较复杂,因为一个字符由68或88点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。点阵最好是用二位数组,基本思路也就是单片机两个IO口控制点阵的行和列,定义一个二位数组控制点阵每一行要亮拿几个灯,然后下一行亮那几个灯,以此类推。 0-9和A-Z二维代码:0x1C,0x22,0x22,0x22,0x22,0x22,0x22,0x1C,/0 0x08,0x18,0x08,0x08,0x08,0x08,0x08,0x1C,/1 0x1C,0x22,0x02,0x02,0x1C,0x20,0x20,0x3E,/2 0x1C,0x22,0x02,0x1C,0x02,0x02,0x22,0x1C,/3 0x08,0x18,0x28,0x48,0x7C,0x08,0x08,0x08,/4 0x3E,0x20,0x20,0x3E,0x02,0x02,0x22,0x1C,/5 0x1C,0x22,0x20,0x3C,0x22,0x22,0x22,0x1C,/6 0x3E,0x02,0x04,0x08,0x10,0x10,0x10,0x10,/7 0x1C,0x22,0x22,0x1C,0x22,0x22,0x22,0x1C,/8 0x1C,0x22,0x22,0x22,0x1E,0x02,0x22,0x1C,/9 0x00,0x1C,0x22,0x22,0x22,0x3E,0x22,0x22,/A 0x00,0x3C,0x22,0x22,0x3E,0x22,0x22,0x3C,/B 0x00,0x1C,0x22,0x20,0x20,0x20,0x22,0x1C,/C 0x00,0x3C,0x22,0x22,0x22,0x22,0x22,0x3C,/D 0x00,0x3E,0x20,0x20,0x3E,0x20,0x20,0x3E,/E 0x00,0x3E,0x20,0x20,0x3E,0x20,0x20,0x20,/F 0x00,0x1C,0x22,0x20,0x3E,0x22,0x22,0x1C,/G 0x00,0x22,0x22,0x22,0x3E,0x22,0x22,0x22,/H 0x00,0x1C,0x08,0x08,0x08,0x08,0x08,0x1C,/I 0x00,0x3E,0x08,0x08,0x08,0x08,0x28,0x18,/J 0x00,0x20,0x2C,0x30,0x20,0x30,0x2C,0x20,/K 0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x3E,/L 0x00,0x42,0x66,0x5A,0x42,0x42,0x42,0x42,/M 0x00,0x00,0x2C,0x32,0x22,0x22,0x22,0x22,/N 0x00,0x1C,0x22,0x22,0x22,0x22,0x22,0x1C,/O 0x00,0x3C,0x22,0x22,0x3C,0x20,0x20,0x20,/P 0x00,0x1C,0x22,0x22,0x22,0x2A,0x26,0x1F,/Q 0x00,0x38,0x24,0x24,0x38,0x30,0x28,0x24,/R 0x00,0x1C,0x22,0x20,0x1C,0x02,0x22,0x1C,/S 0x00,0x3E,0x08,0x08,0x08,0x08,0x08,0x08,/T 0x00,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,/U 0x00,0x22,0x22,0x22,0x14,0x14,0x08,0x00,/V 0x00,0x41,0x41,0x49,0x55,0x55,0x63,0x41,/W 0x00,0x00,0x42,0x24,0x18,0x18,0x24,0x42,/X 0x00,0x22,0x22,0x14,0x08,0x10,0x20,0x00,/Y 0x00,0x3E,0x02,0x04,0x08,0x10,0x20,0x3E,/Z2.2 1602LCD工作原理1602LCD 分为带背光和不带背光两种,基控制器大部分为 HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别1602LCD 主要技术参数: 显示容量:162 个字符 芯片工作电压:4.55.5V 工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V 字符尺寸:2.954.35(WH)mm 引脚功能说明 1602LCD 采用标准的 14脚(无背光)或 16脚(带背光)接口,各引脚接口说明如表 10-13所示: 编号 符号 引脚说明 编号 符号 引脚说明 1 VSS 电源地 9 D2 数据 2 VDD 电源正极 10 D3 数据 3 VL 液晶显示偏压 11 D4 数据 4 RS 数据/命令选择 12 D5 数据 5 R/W 读/写选择 13 D6 数据 6 E 使能信号 14 D7 数据 7 D0 数据 15 BLA 背光源正极 8 D1 数据 16 BLK 背光源负极 LCD寄存器的选择ER/WRS功能说明100写入命令寄存器101写入数据寄存器110读取忙碌标志及RAM地址111读取RAM数据0X不动作LCD指令表指令功能控制线数据线RSR/WD7D6D5D4D3D2D1D0清除屏幕0000000001清除屏幕,并把光标移至左上角光标回到原点000000001x光标移至左上角,显示内容不变设定进入模式00000001I/DSI/D=1:地址递增,I/D=0:地址递减 S=1:开启显示屏,S=0:关闭显示屏显示器开关0000001DCBD=1:开启显示幕 C=1:开启光标 B=1:光标所在位置的字符闪烁移位方式000001S/CR/LxxS/C=0、R/L=0:光标左移;S/C=0、R/L=1:光标右移 S/C=1、R/L=0:字符和光标左移;S/C=1、R/L=1:字符和光标右移功能设定00001DLNFxxDL=1:数据长度为8位,DL=0:数据长度为4位 N=1:双列字,N=0:单列字;F=1:5x10字形,F=0:5x7字形CG RAM地址设定0001CG RAM地址将所要操作的CG RAM地址放入地址计数器DD RAM地址设定001DD RAM地址将所要操作的DD RAM地址放入地址计数器忙碌标志位BF01BF地址计数器内容读取地址计数器,并查询LCM是否忙碌,BF表示LCM忙碌写入数据10写入数据将数据写入CG RAM或DD RAM读取数据11读取数据读取CG RAM或DD RAM的数据图 2.1 1602LCD 内部显示地址 例如第二行第一个字符的地址是 40H,那么是否直接写入 40H 就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位 D7恒定为高电平 1 所以实际写入的数据应该是 01000000B(40H)+10000000B(80H)=11000000B(C0H)。 在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。 1602 液晶模块内部的字符发生存储器(CGROM)已经存储了 160 个不同的点阵字符图形,如图 10-58 所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是 01000001B (41H),显示时模块把地址 41H中的点阵字符图形显示出来,我们就能看到字母“A”3 程序及流程图开始EA=1; IT0=1;EX0=1; IT1=1;EX1=1; while(1);等待外部中断0等待外部中断1图 3.1主函数流程程序#include #include sbit rs= P35; /寄存器类型,1表示数据寄存器,2表示指令寄存器sbit rw = P36; /读写选择,1表示读,0表示写sbit ep = P37; /读写使能,下降沿使能void delay(unsigned char ms) /延时 unsigned char i; while(ms-) for(i = 0; i100; i+) bit lcd_bz() /判断忙碌 bit result; rs = 0; rw = 1; ep = 1; 图 3.2 判断是否忙碌流程 _nop_(); _nop_(); _nop_(); _nop_(); result = (bit)(P1 & 0x80); ep = 0; return result; void lcd_wcmd(unsigned char cmd) /写指令 while(lcd_bz(); rs = 0; rw = 0; ep = 0; _nop_(); _nop_(); P1 = cmd; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; void lcd_pos(unsigned char pos) /指示初始位置 lcd_wcmd(pos|0x80); void lcd_wdat(unsigned char dat) /写数据 while(lcd_bz();/ rs = 1; rw = 0; 图 3.3 写命令流程 ep = 0; P1 = dat; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; void lcd_wstr(const unsigned char *s) / 写串 unsigned char i = 0; while(si != 0) lcd_wdat(si); delay(100); i+; void lcd_init() /初始化 lcd_wcmd(0x38); /功能设定 delay(1); lcd_wcmd(0x0c); /显示开关 delay(1); lcd_wcmd(0x06); /设定进入模式 delay(1); lcd_wcmd(0x01); /清屏 delay(1); vo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论