首页 单片机控制LCD液晶显示器(含程序)

单片机控制LCD液晶显示器(含程序)

举报
开通vip

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

单片机控制LCD液晶显示器(含程序)
PAGE/NUMPAGES液晶显示器实验目的:了解全点阵图形LCD的结构和原理掌握在MSP430上如何使用外设。了解LCD显示器的工作原理、种类<笔段型、点阵字符型、点阵图形>及主要性能指标。掌握图形点阵LCD的编程使用方法;理解LCD显示模块命令的种类、功能及使用方法。了解LCD字符生成软件的使用方法〔见附录。实验内容:在LCD上显示Hello和中文字"XX工业大学"。通过键盘控制Hello或者中文字符在LCD上左右、上下移动。学会使用字符生成软件来实现任意字符代码的生成和显示。其他另外可以实现的目标:使字符在按键没有松动的情况下连续移动;实现字符的循环移动,即当字符串移动到边界时仍可以移动,显示不完的部分从另一边显示出来。实验原理:图形点阵式液晶原理液晶是一种具有规则性分子排列的有机化合物,它既不是液体也不是固体,而是介于固态和液态之间的物质。液晶具有电光效应和偏光特性,这是它能用于显示的主要原因。常用的液晶显示器可分成3类,分别是扭曲向列型〔TwistedNematic、超扭曲向列型〔SuperTN和彩色薄膜型。字符点阵式属于扭曲向列型LCD。典型的字符点阵式液晶显示器是由控制器、驱动器、字符发生器ROM、字符发生器RAM和液晶屏组成,字符由5*7点阵或5*10点阵组成。一般结果如图一所示:图一128x64点阵图形液晶模块方框示意图此次实验所用的LCD型号是RT12864CT。12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128*64全点阵液晶显示器组成。可完成图形显示,也可以显示8*4个〔16*16汉字。管脚号管脚名称LEVER管脚功能描述1VSS0电源地2VDD+5.0V电源电压3V0-液晶显示器驱动电压4D/IH/LD/I="H",表示DB7∽DB0为显示数据D/I="L",表示DB7∽DB0为显示指令数据5R/WH/LR/W="H",E="H"数据被读到DB7∽DB0R/W="L",E="H→L"数据被写到IR或DR6EH/R/W="L",E信号下降沿锁存DB7∽DB0R/W="H",E="H"DDRAM数据读DB7∽DB07DB0H/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、LED背光的液晶模块内部结构有较大的区别,特别注意第19、20脚的供电来源及相关参数,如图二所示:图2128x64点阵图形液晶模块的内部结构12864LCD的指令系统及时序:该类液晶显示模块〔即KS0108B及其兼容控制驱动器的指令系统比较简单,总共只有七种。其指令表如表2所示:指令名称控制信号控制代码R/WRSDB7DB6DB5DB4DB3DB2DB1DB0显示开关0000111111/0显示起始行设置0011XXXXXX页设置0010111XXX列地址设置0001XXXXXX读状态10BUSY0ON/OFFRST0000写数据01写数据读数据11读数据表2:12864LCD指令表MCU与LCD、键盘连接电路图:LCD的7—14引脚分别连接到149的44—51引脚,其他引脚2号引脚连接到J28排线上〔与5V电源接通给LCD供电、1--GND、4—36、5—37、6—38、15—39、16—42、17—43;18接滑动变阻器R10〔调节LCD的亮度。键盘连接省略。3.LCD显示流程图:图3LCD显示主程序流程图图4初始化子程序流程图图5写指令子程序流程图图6送数据子程序流程图四.实验步骤和结果:通过调试可以正确的显示"Hello"或者"XX工业大学",中英文字符的切换需要通过程序修改才能实现<可以试着用中断来实现>,比较繁琐。同时通过键盘来实现字符在LCD屏幕上的上下左右的移动。五.附录:1.字模软件使用方法:首先打开"PCtoLCD2002.exe",显示界面如下图7所示:图7字符生成软件界面然后点击选项菜单,通过上面程序所述,选项中要选择:阴码、逐列式、逆向、16进制、C51格式,点击确定。如图8所示设置:图8字符软件设置界面接着在左下方空白格子里输入要显示字符,点击"生成字模",变会出现对应的字符编码,复制到程序中编译即可。2.程序<键盘扫描函数省略>:/******************************************************************************文件名称:main.c*文件说明根据键盘的控制,移动字符串"Hello"或者"XX工业大学",行列键盘的"7"用于字符串左移,"8"用于字符串下移,"9"用于字符串右移,"5"用于字符串上移。按键每按一下向各自的方向移动一个点阵的位置。******************************************************************************/#defineMSP430F149_H0#include#ifndefLCD_IN_USE#include"lcd.c"#endif#ifndefKEY_BOARD#include"keyboard12.c"#endif#defineTOP0//竖直方向零点#defineBOTTOM64//竖直方向坐标最大值#defineLEFT0//水平方向坐标最小值#defineRIGHT128//水平方向坐标最大值#defineEN_WIDTH40//Hello字符串的长度#defineCH_WIDTH96//中文字符串的长度#defineOP_CHINESE1//选择显示中文字符#defineOP_ENGLISH2//选择显示英文字符voiddrawStr;voidop_Select;unsignedcharshowData[]={//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,0x22,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,0x00,/*"o",4*/};unsignedcharshowData_1[]={//16*16点点阵的"XX工业大学"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,0x7E,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,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,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*/};constunsignedcharmapTbl[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};unsignedcharpx,//显示字符串的X位置py,//显示字符串的Y位置width;//字符串的宽度unsignedchar*showBuf;//显示数据缓冲区voidmain<>{WDTCTL=WDTHOLD+WDTPW;//关闭看门狗init_LCD<>;//初始化点阵LCDinit_Keyboard<>;//初始化键盘op_Select;//选择显示字符类型drawStr;//显示字符串while<1>{key_Event<>;//检测按键事件if//有按键{key_Flag=0x00;//清除按键标识if//上移{ifTOP>//如果可以上移{clear_Rect;//清除chip1可能有数据的三个区域clear_Rect;//清除chip2可能有数据的三个区域drawStr;//显示字符px=px-1;}}elseif//左移{ifLEFT>//如果可以左移{clear_Rect;clear_Rect;drawStr;py=py-1;}}elseif//下移{if//如果可以下移{clear_Rect;clear_Rect;drawStr;px=px+1;}}elseif//右移{if//如果可以右移{clear_Rect;clear_Rect;drawStr;py=py+1;}}}}}voiddrawStr{unsignedchartmpv,t1,t2,t3;if<==0x00>//如果刚好位于某一页的开始{for{move_To;//移动到指定页write_Data]>;//填写数据move_To;//由于显示的字符是16*N点阵,占用两页,现在移动到下页write_Data+1]>;//填写数据}}else{t1=;for{move_To;//移动位置t2=showBuf[2*];//取得要显示的数据t2=t2&mapTbl[8-t1];//获取数据的低〔8-t1>位t2=t2<;//填写数据move_To;//移动t2=showBuf[2*];//取得数据t2=t2>><8-t1>;//右移<8-t1>t3=showBuf[2*+1];t3=t3&mapTbl[8-t1];//取得低<8-t1>位t3=t3<;//组合成要显示的数据write_Data;//显示数据move_To;//移动到下一页t2=showBuf[2*+1];t2=t2>><8-t1>;//右移<8-t1>位write_Data;//填写数据}}}voidop_Select{if{width=CH_WIDTH;//设定字符串长度px=0;//初始化显示位置,X坐标py=0;//Y坐标showBuf=showData_1;}elseif{width=EN_WIDTH;//设定字符串长度px=24;//初始化显示位置,X坐标py=40;//Y坐标showBuf=showData;}}LCD显示函数:#includevoidwrite_Command{P4OUT&=0xfb;//禁止ENP5DIR=0xff;P4OUT&=0xfc;//rs=0,r/w=0P5OUT=cmd;P4OUT|=0x04;//使能P4OUT&=0xfb;//禁止}voidmove_To{unsignedchartmp;tmp=;if//如果位置在Chip1{P4OUT&=0xbf;//cs2=0P4OUT|=0x08;//cs1=1write_Command<0xb8+x>;//设置xwrite_Command<0x40+tmp>;//设置y}elseif63>//在chip2{P4OUT&=0xF7;//cs1=0P4OUT|=0x40;//cs2=1write_Command<0xb8+x>;//设置xwrite_Command<0x40+tmp-64>;//设置y}}voidwrite_Data{P5DIR=0x00;//置位输入模式P4OUT|=0x02;//r/w=1读状态P4OUT|=0x04;//chip使能while<==0x80>;//检测LCD是否忙P4OUT&=0xfb;//disableENP5DIR=0xff;P4OUT&=0xfc;//rs=0,r/w=0P4OUT|=0x01;//rs=1P5OUT=content;P4OUT|=0x04;//p2.2=1使能P4OUT&=0xfb;//p2.2=0禁止}voidclear_Rect{unsignedchartmpv,tmp;for;tmpv++>{for;tmp++>{move_To;//移动write_Data<0x00>;//在当前位置写0,即清除当前位置的显示内容}}}voidinit_LCD<>{P5DIR=0xff;//设置P3输出模式P5OUT=0x00;//初始值为0P4DIR|=0xcf;//P2.0~P3,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.系统原理图:
本文档为【单片机控制LCD液晶显示器(含程序)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥20.0 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
zxiang
多年工作经验
格式:doc
大小:73KB
软件:Word
页数:13
分类:建设工程
上传时间:2022-02-01
浏览量:1