一步一步学MSP430FR5739之LCD.docx
- 文档编号:26926345
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:17
- 大小:949.61KB
一步一步学MSP430FR5739之LCD.docx
《一步一步学MSP430FR5739之LCD.docx》由会员分享,可在线阅读,更多相关《一步一步学MSP430FR5739之LCD.docx(17页珍藏版)》请在冰豆网上搜索。
一步一步学MSP430FR5739之LCD
一步一步学MSP430FR5739之LCD5110
OS:
Windows8Pro32bit
IDE:
CodeComposerStudiov5.1.1
Board:
TIMSP430FR5739
今天要做的就是给MSP430FR5739配一个LCD。
第一步WDTCTL=WDTPW+WDTHOLD;//StopWDT
1、首先定义好相应管教
P2DIR=BIT5+BIT6;//设置I/O口的方向
P1DIR=BIT0+BIT1+BIT2;
#defineDIN_HP1OUT|=BIT1
#defineDIN_LP1OUT&=~BIT1
#defineCLK_HP1OUT|=BIT0
#defineCLK_LP1OUT&=~BIT0
#defineDC_HP1OUT|=BIT2
#defineDC_LP1OUT&=~BIT2
#defineCE_HP2OUT|=BIT5
#defineCE_LP2OUT&=~BIT5
#defineRST_HP2OUT|=BIT6
#defineRST_LP2OUT&=~BIT6
2、调用LCD初始化程序
/**********************************************
**名称:
LCD_Init(void)
**功能:
初始化液晶
**说明:
**备注:
**日期:
2011年2月27日
**********************************************/
voidLCD_Init(void)
{
P2DIR=BIT5+BIT6;//+BIT4+BIT0+BIT1;//设置P4口的方向
P1DIR=BIT0+BIT1+BIT2;
RST_L;//复位
RST_H;
write_command(0x21);//工作模式,水平寻址,扩展指令
write_command(0x13);//设置偏置系统(BSx)1:
48
write_command(0xc8);//设置电压VLCD=3.06+0.06*Vop,对比度调整
write_command(0x06);//VLCD温度系数2
write_command(0x20);//工作模式,水平寻址,常规指令
write_command(0x0c);//普通模式
write_command(0x40);//起始页地址0
write_command(0x80);//起始列地址0
LCD_clear();//清全屏
}
3、调用其他需要的函数
display_chinese_string_huanhang(1,0,4,Characters[0]);
/**********************************************
**名称:
display_chinese_string_huanhang(ucharx,uchary,ucharn,constuchar*str)
**功能:
输出一串16*16的汉字
**说明:
x:
0-4
y:
0-2
n:
要显示汉字的个数
str:
汉字的首地址
**备注:
每行最多只能显示5个汉字(n*16<=84)并且可以换行显示
**日期:
2011年2月27日
**********************************************/
voiddisplay_chinese_string_huanhang(ucharx,uchary,ucharn,constuchar*str)
{
uchari;
for(i=0;i { display_chinese(x++,y,str+i*32); if(x==5) { x=0; y++; } } } 代码: LCD5110说明: ] (申明以下内容部分来自Baidu文库) Nokia5110是一款经典机型,可能由于经典的缘故,旧机器很多,所以很多电子工程师就把旧机器的屏幕拆下来,自己驱动Nokia5110,用于开发的设备显示,取代LCD1602。 使用Nokia5110液晶的四大理由 1) 性价比高,LCD1602可以显示32个字符,而Nokia5110可以显示15个汉字,30个字符。 Nokia5110裸屏仅8.8元,LCD1602一般15元左右,LCD12864一般50~70元。 2) 接口简单,仅四根I/O线即可驱动,LCD1602需11根I/O线,LCD12864需12根。 3) 速度快,是LCD12864的20倍,是LCD1602的40倍。 4) Nokia5110工作电压3.3V,正常显示时工作电流200uA以下,具有掉电模式,适合电池供电的便携式移动设备。 Nokia5110原理图: 商家把该引出的管脚都引出了,下面就可以连接C8051F的相应管脚,写程序驱动5110了。 Nokia5110和Nokia3110是兼容的,用的都是同一款驱动芯片PHILIPSPCD8544。 (1) SPI接口时序写数据/命令 Nokia5110(PCD8544)的通信协议是一个没有MISO只有MOSI的SPI协议,如果单片机有富裕的SPI接口,也可以利用硬件SPI,但通常没有必要,只需要软件程序模拟即可。 /********************************************** **名称: write_command(ucharcmd) **功能: 向液晶中写命令 **说明: cmd: 要写的命令 **备注: **日期: 2011年2月27日 **********************************************/ voidwrite_command(ucharcmd) { uchari; CE_L;//允许写入数据 DC_L;//DC=0写入命令 for(i=0;i<8;i++) { if(cmd&0x80) DIN_H; else DIN_L; CLK_L;//上升沿采样 cmd<<=1; CLK_H; } CE_H;//禁止写入 } /********************************************** **名称: write_data(uchardat) **功能: 向液晶中写入数据 **说明: dat: 待写入的数据 **备注: 参考数据手册 **日期: 2011年2月27日 **********************************************/ voidwrite_data(uchardat) { uchari; CE_L;// DC_H; for(i=0;i<8;i++) { if(dat&0x80) DIN_H; else DIN_L; CLK_L; dat<<=1; CLK_H; } CE_H; } (2) Nokia5110的初始化 接通电源后,内部寄存器和RAM的内容是不确定的,这需要一个RES低电平脉冲复位一下。 当VDD变为高电平,达到VDDmin(或更高)之后,最多100ms,RST输入低电平(电平幅度<0.3VDD)。 5110复位时序 /********************************************** **名称: LCD_Init(void) **功能: 初始化液晶 **说明: **备注: **日期: 2011年2月27日 **********************************************/ voidLCD_Init(void) { P2DIR=BIT5+BIT6;//+BIT4+BIT0+BIT1;//设置P4口的方向 P1DIR=BIT0+BIT1+BIT2; RST_L;//复位 RST_H; write_command(0x21);//工作模式,水平寻址,扩展指令 write_command(0x13);//设置偏置系统(BSx)1: 48 write_command(0xc8);//设置电压VLCD=3.06+0.06*Vop,对比度调整 write_command(0x06);//VLCD温度系数2 write_command(0x20);//工作模式,水平寻址,常规指令 write_command(0x0c);//普通模式 write_command(0x40);//起始页地址0 write_command(0x80);//起始列地址0 LCD_clear();//清全屏 } (3)设置Nokia5110液晶的坐标 Nokia5110(PCD8544)的命令集: 命令字符解释: 要注意的是“功能设置”命令的“H”和“V”。 H=0使用基本指令集命令,H=1使用扩展指令集命令。 V=0水平寻址,V=1垂直寻址。 48*84点阵的格式如上图,数据以字节8bit为单位下载到PCD8544的48*84bit显示数据RAM矩阵。 列通过地址指针寻址,地址范围为X0~83(1010011),Y0~5(101)。 地址不允许超过这个范围。 在垂直寻址(V=1),Y地址在每个字节之后递增,经最后的Y地址(Y=5)之后,Y绕回0,X递增到下一列的地址。 在水平寻址模式(V=0),X地址在每个字节之后递增,经最后的X地址(X=83)之后,X绕回0,Y递增到下一行的地址。 经每一个最后地址之后(X=83,Y=5),地址指针绕回地址(X=0,Y=0)。 /********************************************** **名称: set_pos(ucharx,uchary) **功能: 设置RAM地址 **说明: x: 0-83 y: 0-5 **备注: 参考数据手册 **日期: 2011年2月27日 **********************************************/ voidset_pos(ucharx,uchary) { write_command(0x40|y); write_command(0x80|x);//0 } (4)显示英文字符 英文字符占用6*8个点阵,通过建立一个ASCII的数组font6x8[][6]来寻址。 而这个数字的行号对应(字符ASCII码-32)。 ASCII码表如下: /********************************************** **名称: display(ucharx,uchary,ucharc) **功能: 液晶输出字符(6*8字符) **说明: x: 0-83 y: 0-5 c: 待显示的字符 **备注: 每行最多只能显示14个字符(6*n<=84) **日期: 2011年2月27日 **********************************************/ voiddisplay_char(ucharx,uchary,ucharc) { uchari; c-=32;//获取地址指针 x*=6;//字宽 set_pos(x,y);//设置显示地址 for(i=0;i<6;i++) write_data(font6x8[c][i]);//写入点阵数据 } 如要在NOKIA5110输出大写“A”,对应数组的行号为33,对应的元素为 {0x00,0x7C,0x12,0x11,0x12,0x7C},水平寻址(V=0) NOKIA5110一行可以显示14个字符,可以显示六行。 (5)显示汉字 显示汉字可以采用两种点阵方式,一种是12*12点阵,一种是16*16点阵,网上也有一个自动提取字模的小软件“5110液晶显示屏汉字提取程序”,这个小程序只适用于水平寻址(V=0)。 5110液晶显示屏汉字提取程序下载: 采用12*12点阵汉字时,由于不是8的整数倍数,因此行与行之间只能隔开,这样才能完整显示一个汉字。 //欢 {0x0A,0x92,0x62,0x9E,0x02,0x18,0x87,0x74,0x84,0x14,0x0C,0x00,0x02,0x01,0x00,0x04,0x05,0x02,0x01,0x00,0x01,0x02,0x04,0x00}, 12*12点阵 /********************************************** **名称: display_chinese(ucharx,uchary,constuchar*str) **功能: 显示单个16*16的汉字 **说明: x: 0-4 y: 0-2 str: 汉字的首地址 **备注: 每行最多只能显示5个汉字(n*16<=84) **日期: 2011年2月27日 **********************************************/ voiddisplay_chinese(ucharx,uchary,constuchar*str) { uchari,j; x*=16;//字宽 y*=2;//两行显示 for(i=0;i<2;i++) { set_pos(x,y+i);//设置显示的地址 for(j=0;j<16;j++) { write_data(str[j+i*16]); } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一步一步 MSP430FR5739 LCD
![提示](https://static.bdocx.com/images/bang_tan.gif)