MSP430控制手机液晶屏
#include msp430xG43x.h>
#define uchar unsigned char
#define uint unsigned int
#include "qqp.H"
#include "ascii hex(8x16).h"
#include "GB2312.h"
uint color[]={0xf800,0x07e0,0x001f,0xffe0,0x0000,0xffff,0x07ff,0xf81f};
void delay_us(uint t);
void delay_us(uint t);
#define LCD_CONTROL_PORT P5OUT
#define LCD_CONTROL_DIR_PORT P5DIR
#define LCD_RST 0x01
#define LCD_RD 0x02
#define LCD_RS 0x04
#define LCD_CS 0x08
#define LCD_WR 0x10
void LCD_WR_REG(uchar index);
void LCD_WR_DA
void LCD_WR_CMD(uchar index,uint val);
unsigned int LCD_RD_REG16(uchar index);
void LCD_WR_Da
void LCD_Init();
void LCD_test();
void LCD_QQ();
void LCD_clear(uint p);
void DisplayChar(uchar casc,uchar postion_x,uchar postion_y);
void DisplayGB2312(uchar gb,uchar postion_x,uchar postion_y);
void DisplayString(uchar *s,uchar x,uchar y);//英文字符串显示.
void delay_us(uint t)
{
t+=170;
while(--t);
}
void delay_ms(uint t)
{
uchar i,j;
while(--t)
{
j=5;
while(--j)
while(--i);
}
}
void SET_LCD_CONTROL_PORT()
{
LCD_CONTROL_DIR_PORT&=0X1F;
}
voidSET_LCD_RST_HIGH(){LCD_CONTROL_PORT|=LCD_RST; };
voidSET_LCD_RST_LOW() {LCD_CONTROL_PORT&=~LCD_RST;};
voidSET_LCD_RD_HIGH(){LCD_CONTROL_PORT|=LCD_RST;};
voidSET_LCD_RD_LOW() {LCD_CONTROL_PORT&=~LCD_RD;};
void SET_LCD_RS_HIGH(){LCD_CONTROL_PORT|=LCD_RS; };
void SET_LCD_RS_LOW() {LCD_CONTROL_PORT&=~LCD_RS;};
void SET_LCD_CS_HIGH(){LCD_CONTROL_PORT|=LCD_CS; };
void SET_LCD_CS_LOW() {LCD_CONTROL_PORT&=~LCD_CS;};
voidSET_LCD_WR_HIGH(){LCD_CONTROL_PORT|=LCD_WR; };
voidSET_LCD_WR_LOW() {LCD_CONTROL_PORT&=~LCD_WR;};
void SET_LCD_DA
{
P4DIR&=0XFF;
P4OUT|=lcd_da
};
unsigned int GET_LCD_DA
{
unsigned int lcd_da
P4DIR|=0X00;
lcd_da
return(lcd_da
};
void LCD_WR_REG(uchar index)
{
SET_LCD_RS_LOW();
SET_LCD_CS_LOW ( );
//DA
SET_LCD_DA
SET_LCD_WR_LOW();
SET_LCD_WR_HIGH();
SET_LCD_CS_HIGH();
SET_LCD_RS_LOW();
}
void LCD_WR_DA
{
SET_LCD_RS_HIGH();
SET_LCD_CS_LOW();
//DA
SET_LCD_DA
SET_LCD_WR_LOW();
SET_LCD_WR_HIGH();
SET_LCD_CS_HIGH();
SET_LCD_RS_LOW();
}
void LCD_WR_CMD(uchar index,uint val)
{
SET_LCD_RS_LOW();
SET_LCD_CS_LOW();
//DA
SET_LCD_DA
SET_LCD_WR_LOW();
SET_LCD_WR_HIGH();
SET_LCD_CS_HIGH();
SET_LCD_RS_LOW();
SET_LCD_RS_HIGH();
SET_LCD_CS_LOW();
//DA
SET_LCD_DA
SET_LCD_WR_LOW();
SET_LCD_WR_HIGH();
SET_LCD_CS_HIGH();
SET_LCD_RS_LOW();
SET_LCD_RS_HIGH();
SET_LCD_CS_LOW();
//DA
SET_LCD_DA
SET_LCD_WR_LOW();
SET_LCD_WR_HIGH();
SET_LCD_CS_HIGH();
SET_LCD_RS_LOW();
}
unsigned int LCD_RD_REG16(uchar index)
{
unsigned int pd,ppd;
SET_LCD_RS_LOW();
SET_LCD_CS_LOW();
_nop_();
_nop_();
SET_LCD_DA
_nop_();
_nop_();
SET_LCD_WR_LOW();
_nop_();
_nop_();
SET_LCD_WR_HIGH();
_nop_();
_nop_();
SET_LCD_RS_HIGH();
_nop_();
_nop_();
//DA
SET_LCD_DA
_nop_();
_nop_();
SET_LCD_RD_LOW();
_nop_();
_nop_();
SET_LCD_RD_HIGH();
pd=GET_LCD_DA
//pd = DA
pd = pd<8;
_nop_();
_nop_();
//DA
SET_LCD_DA
SET_LCD_RD_LOW();
_nop_();
_nop_();
SET_LCD_RD_HIGH();
ppd=GET_LCD_DA
pd = pd + ppd;
SET_LCD_CS_HIGH();
SET_LCD_RS_LOW();
return pd;
}
void LCD_WR_Da
{
//SET_LCD_RS_HIGH();
//SET_LCD_CS_LOW();
//DA
SET_LCD_DA
SET_LCD_WR_LOW();
SET_LCD_WR_HIGH();
//SET_LCD_RS_HIGH();
//DA
SET_LCD_DA
SET_LCD_WR_LOW();
SET_LCD_WR_HIGH();
//SET_LCD_CS_HIGH();
//SET_LCD_RS_LOW();
}
void LCD_Init()
{
SET_LCD_CONTROL_PORT();
//LCD_RST = 0;
SET_LCD_RST_LOW();
delay_ms(200);
//LCD_RST = 1;
SET_LCD_RST_HIGH();
delay_ms(200);
//initializing funciton 1
delay_us(10);
LCD_WR_CMD(0xA1,0x00);
LCD_WR_CMD(0xA0,0x00);
delay_us(10);
LCD_WR_CMD(0x70,0xC8);//Start osc
MSP430控制手机液晶 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)