《单片机控制LCD液晶显示器(含程序)》由会员分享,可在线阅读,更多相关《单片机控制LCD液晶显示器(含程序)(16页珍藏版)》请在人人文库网上搜索。

1、液晶显示器一 实验目的: 1. 了解全点阵图形LCD的结构和原理掌握在MSP430上如何使用外设。2. 了解LCD显示器的工作原理、种类(笔段型、点阵字符型、点阵图形)及主要性能指标。3. 掌握图形点阵LCD的编程使用方法;理解LCD显示模块命令的种类、功能及使用方法。4. 了解LCD字符生成软件的使用方法(见附录)。二 实验内容:1. 在LCD上显示Hello和中文字“南京工业大学”。2. 通过键盘控制Hello或者中文字符在LCD上左右、上下移动。3. 学会使用字符生成软件来实现任意字符代码的生成和显示。4. 其他另外可以实现的目标:使字符在按键没有松动的情况下连续移动;实现字符的循环移动。

2、,即当字符串移动到边界时仍可以移动,显示不完的部分从另一边显示出来。三 实验原理:1. 图形点阵式液晶原理液晶是一种具有规则性分子排列的有机化合物,它既不是液体也不是固体,而是介于固态和液态之间的物质。液晶具有电光效应和偏光特性,这是它能用于显示的主要原因。常用的液晶显示器可分成3类,分别是扭曲向列型(Twisted Nematic)、超扭曲向列型(Super TN)和彩色薄膜型。字符点阵式属于扭曲向列型LCD。典型的字符点阵式液晶显示器是由控制器、驱动器、字符发生器ROM、字符发生器RAM和液晶屏组成,字符由5*7 点阵或5*10点阵组成。一般结果如图一所示:图一 128x64 点阵图形液晶。

3、模块方框示意图此次实验所用的LCD型号是RT12864CT。12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128*64全点阵液晶显示器组成。可完成图形显示,也可以显示8*4个(16*16)汉字。 管脚号管脚名称LEVER管脚功能描述1VSS0电源地2VDD+5.0V电源电压3V0-液晶显示器驱动电压4D/I(RS)H/LD/I=“H”,表示DB7DB0为显示数据D/I=“L”,表示DB7DB0为显示指令数据5R/WH/LR/W=“H”,E=“H”数据被读到DB7DB0R/W=“L”,E=“HL”数据被写到IR或DR6EH/R/W=“L”,E信号下降沿锁存DB7DB0R/W=“。

4、H”,E=“H”DDRAM数据读DB7DB07DB0H/L数据线8DB1H/L数据线9DB2H/L数据线10DB3H/L数据线11DB4H/L数据线12DB5H/L数据线13DB6H/L数据线14DB7H/L数据线15CS1H/LH:选择芯片(右半屏)信号16CS2H/LH:选择芯片(左半屏)信号17RETH/L复位信号,低电平复位18VOUT-10VLCD驱动负电压19LED+-LED背光板电源20LED-LED背光板电源表1:12864LCD的引脚说明128x64 点阵图形液晶模块的内部结构可分为三个部分:LCD 控制器,LCD 驱动器,LCD 显示装置。应注意的是,无背光液晶模块同EL、。

5、LED 背光的液晶模块内部结构有较大的区别,特别注意第19、20 脚的供电来源及相关参数,如图二所示:图 2 128x64 点阵图形液晶模块的内部结构12864LCD的指令系统及时序:该类液晶显示模块(即KS0108B及其兼容控制驱动器)的指令系统比较简单,总共只有七种。其指令表如表2所示:指令名称控制信号控制代码R/WRSDB7DB6DB5DB4DB3DB2DB1DB0显示开关0000111111/0显示起始行设置0011XXXXXX页设置0010111XXX列地址设置0001XXXXXX读状态10BUSY0ON/OFFRST0000写数据01写数据读数据11读数据表2:12864LCD指令。

6、表2. MCU与LCD、键盘连接电路图:LCD的714引脚分别连接到149的4451引脚(P5口),其他引脚2号引脚连接到J28排线上(与5V电源接通给LCD供电)、1-GND、436、537、638、1539、1642、1743;18接滑动变阻器R10(调节LCD的亮度)。键盘连接省略。3. LCD显示流程图:图 3 LCD显示主程序流程图 图4初始化子程序流程图图5 写指令子程序流程图 图 6 送数据子程序流程图四实验步骤和结果:通过调试可以正确的显示“Hello”或者“南京工业大学”,中英文字符的切换需要通过程序修改才能实现(可以试着用中断来实现),比较繁琐。同时通过键盘来实现字符在LC。

7、D屏幕上的上下左右的移动。五附录:1字模软件使用方法:首先打开“PCtoLCD2002.exe”,显示界面如下图7所示:图 7 字符生成软件界面然后点击选项菜单,通过上面程序所述,选项中要选择:阴码、逐列式、逆向、16进制、C51格式,点击确定。如图8所示设置:图8 字符软件设置界面接着在左下方空白 格子里输入要显示字符,点击“生成字模”,变会出现对应的字符编码,复制到程序中编译即可。2.程序(键盘扫描函数省略):/* 文件名称: main.c* 文件说明 根据键盘的控制,移动字符串Hello或者南京工业大学,行列键盘的7用于字符串左移,8用于字符串下移,9用于字符串右移,5用于字符串上移。按。

8、键每按一下向各自的方向移动一个点阵的位置。*/#define MSP430F149_H 0#include #ifndef LCD_IN_USE#include lcd.c#endif#ifndef KEY_BOARD#include keyboard12.c#endif#define TOP 0 / 竖直方向零点#define BOTTOM 64 / 竖直方向坐标最大值#define LEFT 0 / 水平方向坐标最小值#define RIGHT 128 / 水平方向坐标最大值#define EN_WIDTH 40 / Hello 字符串的长度#define CH_WIDTH 96 / 中文。

9、字符串的长度#define OP_CHINESE 1 / 选择显示中文字符#define OP_ENGLISH 2 / 选择显示英文字符void drawStr(unsigned char x,unsigned char y); void op_Select(char OP);unsigned char showData=/16*8点阵的“Hello”0x08,0x20,0xF8,0x3F,0x08,0x21,0x00,0x01,0x00,0x01,0x08,0x21,0xF8,0x3F,0x08,0x20,/*H,0*/0x00,0x00,0x00,0x1F,0x80,0x22,0x80,0。

10、x22,0x80,0x22,0x80,0x22,0x00,0x13,0x00,0x00,/*e,1*/0x00,0x00,0x08,0x20,0x08,0x20,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,/*l,2*/0x00,0x00,0x08,0x20,0x08,0x20,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,/*l,3*/0x00,0x00,0x00,0x1F,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x20,0x00,0x1F,0x00,。

11、0x00,/*o,4*/;unsigned char showData_1= /16*16点点阵的南京工业大学“0x04,0x00,0xE4,0xFF,0x24,0x00,0x24,0x08,0x64,0x09,0xA4,0x09,0x24,0x09,0x3F,0x7F, 0x24,0x09,0xA4,0x09,0x64,0x09,0x24,0x48,0x24,0x80,0xE4,0x7F,0x04,0x00,0x00,0x00,/*南,0*/0x04,0x00,0x04,0x40,0x04,0x20,0xE4,0x1B,0x24,0x02,0x24,0x42,0x25,0x82,0x26,0。

12、x7E, 0x24,0x02,0x24,0x02,0x24,0x02,0xE4,0x0B,0x04,0x10,0x04,0x60,0x04,0x00,0x00,0x00,/*京,1*/0x00,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0xFC,0x3F, 0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x00,0x20,0x00,0x00,/*工,2*/0x00,0x40,0x10,0x40,0x60,0x40,0x80,0x43,。

13、0x00,0x40,0xFF,0x7F,0x00,0x40,0x00,0x40, 0x00,0x40,0xFF,0x7F,0x00,0x42,0x00,0x41,0xC0,0x40,0x30,0x40,0x00,0x40,0x00,0x00,/*业,3*/0x20,0x80,0x20,0x80,0x20,0x40,0x20,0x20,0x20,0x10,0x20,0x0C,0x20,0x03,0xFF,0x00, 0x20,0x03,0x20,0x0C,0x20,0x10,0x20,0x20,0x20,0x40,0x20,0x80,0x20,0x80,0x00,0x00,/*大,4*/0x40。

14、,0x04,0x30,0x04,0x11,0x04,0x96,0x04,0x90,0x04,0x90,0x44,0x91,0x84,0x96,0x7E,0x90,0x06,0x90,0x05,0x98,0x04,0x14,0x04,0x13,0x04,0x50,0x04,0x30,0x04,0x00,0x00,/*学,5*/;const unsigned char mapTbl=0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff;unsigned char px, / 显示字符串的X位置py, / 显示字符串的Y位置width; / 字符串的宽度unsigned c。

15、har * showBuf; / 显示数据缓冲区void main()WDTCTL = WDTHOLD + WDTPW; / 关闭看门狗init_LCD(); / 初始化点阵LCDinit_Keyboard(); / 初始化键盘op_Select(OP_CHINESE); / 选择显示字符类型drawStr(px,py); /显示字符串 while(1)key_Event(); /检测按键事件if(key_Flag= 0x01) /有按键 key_Flag=0x00; /清除按键标识if(key_val=0x05) /上移 if(pxTOP) /如果可以上移 clear_Rect(px/8,0。

16、,3,64); /清除chip1可能有数据的三个区域clear_Rect(px/8,64,3,64); /清除chip2可能有数据的三个区域drawStr(px-1,py); /显示字符px = px-1;else if (key_val=0x07) /左移 if(pyLEFT) /如果可以左移 clear_Rect(px/8,0,3,64);clear_Rect(px/8,64,3,64);drawStr(px,py-1);py=py-1;else if (key_val=0x08) /下移 if(px(8-t1); /右移(8-t1)t3 = showBuf2*(tmpv-y)+1;t3 。

17、= t3 & mapTbl8-t1; /取得低(8-t1)位t3=t3(8-t1); /右移(8-t1)位write_Data(t2); /填写数据 void op_Select(char OP)if(OP=OP_CHINESE)width = CH_WIDTH; / 设定字符串长度px=0; / 初始化显示位置,X坐标py=0; / Y坐标showBuf = showData_1;else if (OP=OP_ENGLISH)width = EN_WIDTH; / 设定字符串长度px=24; / 初始化显示位置,X坐标py=40; / Y坐标showBuf = showData; LCD显示。

18、函数:#include void write_Command(char cmd)P4OUT &= 0xfb; /禁止 ENP5DIR = 0xff; P4OUT &= 0xfc; /rs=0 ,r/w=0P5OUT = cmd;P4OUT |= 0x04; /使能P4OUT &= 0xfb; /禁止void move_To(char x,char y)unsigned char tmp;tmp=(y&0x7f);if(tmp63) /在 chip2 P4OUT &= 0xF7; /cs1=0 P4OUT |= 0x40; /cs2=1write_Command(0xb8 + x); /设置 x。

19、write_Command(0x40 + tmp-64); /设置 yvoid write_Data(char content)P5DIR = 0x00; / 置位输入模式P4OUT |= 0x02; / r/w=1 读状态P4OUT |= 0x04; / chip 使能while(P3IN & 0x80)=0x80);/检测LCD是否忙P4OUT &= 0xfb;/disable ENP5DIR = 0xff;P4OUT &= 0xfc; /rs=0 ,r/w=0P4OUT |= 0x01; /rs=1P5OUT = content;P4OUT |= 0x04; /p2.2=1 使能P4OU。

20、T &= 0xfb; /p2.2=0 禁止void clear_Rect(unsigned char x,unsigned char y,unsigned char h,unsigned char w)unsigned char tmpv,tmp;for(tmpv=x;tmpv(x+h);tmpv+)for(tmp=y;tmp(y+w);tmp+)move_To(tmpv,tmp);/移动write_Data(0x00); /在当前位置写0,即清除当前位置的显示内容void init_LCD()P5DIR = 0xff; / 设置P3输出模式 P5OUT = 0x00; / 初始值为0P4DI。

21、R |= 0xcf; / P2.0P3,P2.6,p2.7 置为输出模式P4OUT |= 0x48 ; / cs1,cs2 为1,reset=0_NOP();_NOP();_NOP();P4OUT |= 0x04; / en=1P4OUT |= 0x80;write_Command(0xc0); /write_Command(0x3f); /显示开clear_Rect(0,0,8,64); /清除第一块clear_Rect(0,64,8,64); /清除第二块3.系统原理图:欢迎您的光临,Word文档下载后可修改编辑.双击可删除页眉页脚.谢谢!你的意见是我进步的动力,希望您提出您宝贵的意见!让我们共同学习共同进步!学无止境.更上一层楼。

电子屏幕的51c语言程序,单片机控制LCD液晶显示器(含程序)相关推荐

  1. rs232通信接口单片机51c语言,AT89C51单片机控制的CAN总线RS232接口电路设计

    内容介绍 原文档由会员 jiji888 发布 AT89C51单片机控制的CAN总线/RS232接口电路设计 1.44万字 我自己原创的毕业设计,今年最新的,仅在本站独家提交,大家放心使用 目录 引言1 ...

  2. 51单片机led灯闪烁程序C语言,51单片机控制led灯闪烁程序

    Keil 写程序的过程,建立工程-->保存工程-->建立文件-->添加文件到工程-->编写程序-->编译-->下载程序. #include sbit LED = P ...

  3. 按钮查询方式控制交通灯c语言程序,单片机控制交通灯(内含程序和实物图)

    模拟交通灯控制系统 摘要:随着经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通拥塞已成为一个国际性的问题.因此,设计可靠.安全.便捷的多功能交通灯控制系统有极大的现实必要性.根据交通灯在实际控制中的 ...

  4. 单片机c语言ds1302,STC单片机控制DS1302 (1TMCU C程序)

    #include "REG51.H" #include "INTRINS.H" typedef unsigned char BYTE; sbit SCLK =  ...

  5. led交通灯c语言程序设计,单片机控制的交通灯C语言编程.doc

    单片机控制的交通灯C语言编程 单片机控制的交通灯 红灯停,绿灯行,黄灯闪烁提示行人红绿灯即将切换.四个方向各有一个红.黄.绿显示和两个数码管. 东西道为人行道(20秒),南北道为车行道(60秒),黄灯 ...

  6. 单片机显示屏c语言程序,51单片机驱动1602液晶显示器c程序

    51单片机驱动1602液晶显示器c程序 /* 程序效果:单片机控制液晶显示器1602显示字母数字,用户自行更改io 程序版权:http://www.51hei.com */ #include //头文 ...

  7. c语言程序设计论文背单词系统,C语言课程设计-背单词系统(含程序)

    C语言课程设计-背单词系统(含程序) 综合性程序设计报告 设计题目: 背单词系统 指导教师: XXX 班 级: 学 号: 设 计 者: XXX 成 绩: _______________ 设计时间: 年 ...

  8. 单片机c语言控制显示器,单片机实现LCD液晶显示器控制原理..docx

    摘 要 LCD液晶显示已经是人机界面的关键技术. 本文对基于单片机的LCD夜晶显示器 控制系统进行了研究. 首先在绪论中介绍了本课题的课题背景. 研究意义及完成的功能.本系统是以单 片机的基本语言C语 ...

  9. 单片机 c语言 p1控制流水灯,单片机控制的流水灯程序

    我们前边学了点亮LED小灯,然后又学了LED小灯闪烁,下边我们要进一步了解一下如何让8个小灯依次一个一个点亮,流动起来. 图1 LED小灯电路图 通过前面的课程,我们可以了解到控制引脚P0.0通过了7 ...

最新文章

  1. 了解了解一下SQLSERVER里的鬼影记录
  2. datatable复制一行数据到本表
  3. html 使用符号设置固定链接,让woocommerce使用数字id的固定链接插件
  4. LinQ高级查询、组合查询
  5. Error: org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block: BP-965200530-172.21.
  6. 簇的局部变量中布尔类型_java基础2(变量、常量、数据类型)
  7. VC++6.0怎么打开工程
  8. 嵌入式、快速人脸算法库Vision.Face SDK开放下载!已经商用检验
  9. 有人说PHP会死?PHP“世界第一”
  10. 嵌入式系统——指令平均时钟数和运算速度MIPS计算
  11. 西门子PLC s7-1200学习之路
  12. 数字后端设计流程小结
  13. 乐橙tp1 html调用,乐橙TP1的妙用
  14. 如何取消html中页眉的下划线,Word文档页眉的横线怎么去掉?页脚的横线怎么去掉?...
  15. BI工具进化图鉴,Qlik Sense和Qlik View有何区别?
  16. JetsonXavierAGX配置Yolov5环境
  17. android 键盘开发demo,Android自定义键盘之中文键盘demo
  18. 腾讯云Java工程师一面 + 被捞一面 + 二面面经(附答案)
  19. 关于SAP十个常见问题集锦
  20. linux系统桌面文件消失,Ubuntu 更新文件 桌面 菜单丢失, 打算 换 mac os

热门文章

  1. Qt多个平台安装与维护
  2. error: can‘t create transaction lock on /var/lib/rpm/.rpm.lock (Permission denied)
  3. 字母不同类型_只是我的类型跟踪字母的演变,第2部分
  4. 阿里云服务器被检测到有wa kuang程序
  5. 全国计算机优秀教师奖励大会,55位国内高校计算机专业优秀教师将获得公益性奖励...
  6. python模糊神经网络预测_一种基于模糊神经网络的化学分子生物毒性预测模型算法的制作方法...
  7. oracle 查询秒,oracle 查询N秒之前的数据
  8. MySQL优化之超大分页查询
  9. 域名抢注自动提交程序详解
  10. 算法比赛经历--蓝桥杯,天梯赛,力扣,牛客,cf,acwing,acm