微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > MSP430控制手机液晶屏

MSP430控制手机液晶屏

时间:11-13 来源:互联网 点击:
液晶屏为2.4寸TFT彩屏,

#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_DATA8(uchar pd);
void LCD_WR_CMD(uchar index,uint val);
unsigned int LCD_RD_REG16(uchar index);

void LCD_WR_Data(uint val);
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_DATA(unsigned char lcd_data)
{
P4DIR&=0XFF;
P4OUT|=lcd_data;
};
unsigned int GET_LCD_DATA()
{
unsigned int lcd_data1;
P4DIR|=0X00;
lcd_data1=P4IN;
return(lcd_data1);
};

void LCD_WR_REG(uchar index)
{
SET_LCD_RS_LOW();
SET_LCD_CS_LOW ( );
//DATA = index;
SET_LCD_DATA(index);
SET_LCD_WR_LOW();
SET_LCD_WR_HIGH();
SET_LCD_CS_HIGH();
SET_LCD_RS_LOW();
}

void LCD_WR_DATA8(uchar pd)
{
SET_LCD_RS_HIGH();
SET_LCD_CS_LOW();
//DATA = pd;
SET_LCD_DATA(pd);
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();
//DATA = index;
SET_LCD_DATA(index);
SET_LCD_WR_LOW();
SET_LCD_WR_HIGH();
SET_LCD_CS_HIGH();
SET_LCD_RS_LOW();

SET_LCD_RS_HIGH();
SET_LCD_CS_LOW();
//DATA = (uchar)(val>>8);
SET_LCD_DATA(val>>8);
SET_LCD_WR_LOW();
SET_LCD_WR_HIGH();
SET_LCD_CS_HIGH();
SET_LCD_RS_LOW();
SET_LCD_RS_HIGH();
SET_LCD_CS_LOW();
//DATA = (uchar)val;
SET_LCD_DATA(val);
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_DATA(index);
_nop_();
_nop_();

SET_LCD_WR_LOW();
_nop_();
_nop_();

SET_LCD_WR_HIGH();
_nop_();
_nop_();

SET_LCD_RS_HIGH();
_nop_();
_nop_();

//DATA = 0xFF;
SET_LCD_DATA(0xff);
_nop_();
_nop_();

SET_LCD_RD_LOW();
_nop_();
_nop_();
SET_LCD_RD_HIGH();
pd=GET_LCD_DATA();
//pd = DATA;

pd = pd<8;

_nop_();
_nop_();
//DATA = 0xFF;
SET_LCD_DATA(0xff);
SET_LCD_RD_LOW();
_nop_();
_nop_();
SET_LCD_RD_HIGH();
ppd=GET_LCD_DATA();
pd = pd + ppd;
SET_LCD_CS_HIGH();
SET_LCD_RS_LOW();
return pd;
}

void LCD_WR_Data(uint val)
{
//SET_LCD_RS_HIGH();
//SET_LCD_CS_LOW();
//DATA = (uchar)(val>>8);
SET_LCD_DATA(val>>8);
SET_LCD_WR_LOW();
SET_LCD_WR_HIGH();
//SET_LCD_RS_HIGH();
//DATA = (uchar)val;
SET_LCD_DATA((uchar)val);
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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top