网站大量收购闲置独家精品文档,联系QQ:2885784924

字符型LCD控制实验.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
字符型LCD控制实验

微机原理与接口技术实验报告 实验名称:字符型LCD控制实验 班 级: 姓 名: 学 号: 实验日期: 成 绩: 字符型LCD控制实验 实验目的 1、了解字符型LCD的基本工作原理 2、掌握字符型LCD控制程序的设计和调试方法 实验仪器 单片机开发板、万利仿真机、稳压电源、计算机 实验原理 字符型LCD介绍 液晶显示器具有功耗低,寿命长的特点。是目前单片机应用的重要领域,无论机器,仪表,等都可以看到他的身影。液晶显示器常见外观如图4-42所示。 图4-42 液晶显示器常见外观 此外,还有彩色点阵LCD等。这里以1602字符型液晶为例说明。1602字符型型液晶可以显示2行16个字符。 1602字符型LCD命令 1602液晶模块内部的控制器共有11条控制指令。如表4-8所示。 表4-8 1602液晶模块指令表 1602的接口电路与工作时序 LCD与单片机接口电路如图4-48所示。调整电位器RP400可改变LCD的对比度。LCD的工作时序如图4-49所示。从图中可以看出,写入命令或数据时,在LCD使能端E的下降沿时锁存数据;读状态或数据时,在LCD使能端E为高电平时输出数据。 图4-48 1602LCD接口图 (a)读时序图 (b)写时序图 图4-49 1602LCD读写时序图 1602字符型LCD驱动程序设计 1602驱动程序设计主要是读写程序的设计。由时序图可知,LCD的工作时序与51单片机的读写时序不同。只能用软件模拟的方式产生工作时序。驱动程序可分为四种情况:LCD写命令、LCD读状态、LCD读数据、LCD写数据。流程图如图4-50所示。 图4-50 1602LCD驱动程序流程图 在1602的基本读写程序基础上,还要再设计光标控制、打印字符串、显示开关、清屏等子程序。由于一些子程序只要一条命令即可完成,这里以印字符串为例说明。其它子程序均可不再编写。在1602LCD上显示字符串程序流程图如图4-51所示。 图4-51 1602LCD显示字符串程序 实验内容 #includereg52.h #includeintrins.h #includelcd1602.c #define uchar unsigned char #define uint unsigned int uchar num; uchar code table[]=0123456789abcdef; uchar code table1[]=hello world; /*****数码管端口定义*******************/ sbit LEDCLK=P3^4; sbit LEDDIN=P2^3; /************************************************************** 延时函数 *功能: 可随意设置延时时间,延时时间为(tt*9+16)us.晶振为12MHz ***************************************************************/ void delay_us(unsigned int tt) { while(tt--) { ; } } void close_led() { uchar i; for(i=8;i0;i--) { LEDCLK=0; LEDDIN=1; _nop_(); LEDCLK=1; _nop_(); } } void main() { close_led(); lcd_init(); Write_com(0X80+0x10);//写地址 for(num=0;num16;num++) { Write_dat(table[num]); delay_ms(2); } Write_com(0X80+0x40+0x10); for(num=0;num11;num++) { Write_dat(table1[num]); delay_ms(2); } for(num=0;num16;num++) { Write_com(0x1C); delay_ms(1000); } while(1) { ; } } 显示结果: 思考题 1、当输入的字符串长度超过16个字时,显示情况如何,说明原因。 答:显示不完,因为1602一行只能显示16个字符区间(在不移动屏幕的情况下)所以,显示依然只是显示16个字符而且是前面写入的16个字符。 2、编写程序在LCD上显示一个任务进度条程序。 void main() { close_led(); lcd_init(); //

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档