📄 hardinterface.h
字号:
#include "msp430x44x.h"
#include <stdio.h>
//#include <math.h>
//#include <string.h>
/********以下为专为430控制器定义lcd的接口*******************/
#define P5_0_DB0 0x01
#define P5_1_DB1 0x02
#define P5_2_DB2 0x04
#define P5_3_DB3 0x08
#define P5_4_DB4 0x10
#define P5_5_DB5 0x20
#define P5_6_DB6 0x40
#define P5_7_DB7 0x80
#define P2_RW 0x01 //P2_0_RW
#define P2_RD 0x02 //P2_1_EN
#define P2_RES 0x04 //P2_2_RES
#define P2_A0 0x40 //P2_6_A0
/********************************************************/
/* 程序参数定义,根据用户选择的LCM型号修改 */
#define PARA 0x14;
/*-------------------240160的SYSTEM SET 参数-------------------------------*/
//const unsigned char SysTab[8]={0x32,0x87,0x07,0x27,0x2d,0xf0,0x28,0x00};
const unsigned char SysTab[8]={0x32,0x87,0x07,0x13,0x25,0xF0,0x14,0x00};
/*-------------------240160的SCROLL 参数-------------------------------*/
const unsigned char ScrTab[10]={0x00,0x00,0xF0,0x60,0x02,0xD2,0xD0,0x12,0x00,0x00};
/*--- read state bit--- */
void BFRead(void)
{
unsigned char temp;
P2OUT|=P2_RW; //WR=1
while(1)
{
P5DIR=0x00;
P2OUT&=~P2_A0; //A0=0
P2OUT&=~P2_RD; //RD=0
temp=P5IN;
_NOP();
P2OUT|=P2_RD; //RD=1
P5DIR=0xFF;
if ((temp&0x40)==0) break; //BF为第6位,BF=0显示存储器空闲
}
}
/*write Command */
void WRCommand(unsigned command)
{
P2OUT|=P2_RD; //RD=1
P5OUT=command;
P2OUT|=P2_A0; //A0=1
P2OUT&=~P2_RW; //WR=0
_NOP();
_NOP();
P2OUT|=P2_RW; //WR=1
}
/* write data */
void WRData(unsigned char data)
{
P2OUT|=P2_RD; //RD=1
P5OUT=data;
P2OUT&=~P2_A0; //A0=0
P2OUT&=~P2_RW; //WR=0
_NOP();
_NOP();
P2OUT|=P2_RW; //WR=1
}
/*读参数和显示数据*/
unsigned char RDData(void)
{
unsigned char temp;
P5DIR=0x00;
P2OUT|=P2_A0; //A0=1
P2OUT|=P2_RW; //WR=1
P2OUT&=~P2_RD; //RD=0
temp=P5IN;
_NOP();
_NOP();
_NOP();
P2OUT|=P2_RD; //RD=1
P5DIR=0xFF;
return(temp);
}
/* open dispaly */
void DisOn(void)
{
WRCommand(0x59);
WRData(0x54); //画面显示但不闪烁 光标显示关闭
}
/* Off dispaly */
void DisOff(void)
{
WRCommand(0x58);
WRData(0x56);
}
/*清显示RAM*/
void CLRDisplay(void)
{
unsigned int i;
WRCommand(0x4c); //光标右移
WRCommand(0x46); //设置光标指针0x0000
WRData(0x00);
WRData(0x00);
WRCommand(0x42); //设置数据写入
for(i=0;i<5420;i++)
{
WRData(0x00);
}
}
/******initialize lcd*****/
void Init_LCD(void)
{
unsigned int i;
P2SEL=0x00;
P5SEL=0x00;
P2DIR|=0x47;
P5DIR|=0xFF;
P2OUT&=~P2_RES;
for(i=0;i<200;i++)
{
_NOP();
}
P2OUT|=P2_RES;
_NOP();
WRCommand(0x40); //设置SYSTEM SET参数
for(i=0;i<8;i++)
{
WRData(SysTab[i]);
}
WRCommand(0x44); //设置 Scroll参数
for(i=0;i<10;i++)
{
WRData(ScrTab[i]);
}
WRCommand(0x5b); //设置显示合成方式
WRData(0x09); //一区文本,二区,三区为图形:DM2=1,DM1=0,OV=0,MX1=0,MX2=1(或逻辑)
WRCommand(0x5a); //设置画面水平移动量
WRData(0x00);
DisOff();
CLRDisplay();
WRCommand(0x5d); //CSRFORM代码
WRData(0x07); //设置光标水平点为CSX=8
WRData(0x87); //设置光标为块状形式,CSY=8 CM=1
DisOn();
CLRDisplay();
}
/********以下为专为430控制器-触摸屏定义的接口*******************/
#define P3_TCS 0x01 /* //P3_0_TCS*/
#define P3_TDIN 0x02 /* //P3_1_TDIN */
#define P3_TDOUT 0x04 /* //P3_2_TDOUT*/
#define P3_TDCLK 0x08 /*//P3_3_TDCLK*/
#define P3_TBUSY 0x10 /*//P3_4_TBUSY*/
#define P2_TINT 0x20 /*//P2_5_TINT*/
/********************************************************/
/***time_lapse****/
void delay(unsigned int i)
{
while(i--);
}
/*****read from 7843**/
unsigned int ReadFrom7843(void) //SPI 读数据
{
unsigned char count=0;
unsigned int Num=0;
for(count=0;count<12;count++)
{
Num<<=1;
P3OUT|= P3_TDCLK;
delay(10); //下降沿有效
P3OUT&=~P3_TDCLK;
delay(5);
if((P3IN& P3_TDOUT)==P3_TDOUT)
{ Num++;
}
}
return(Num);
}
/*****write to 7843*******/
void WriteTo7843(unsigned char num) //SPI写数据
{
unsigned char count=0;
P3OUT &=~P3_TDCLK;
for(count=0;count<8;count++)
{
if ((num&0X80)==0X80) P3OUT|= P3_TDIN;
else P3OUT &=~P3_TDIN;
num <<= 1;
P3OUT &=~P3_TDCLK;
delay(10);
P3OUT|= P3_TDCLK;
delay(10);
}
P3OUT &=~P3_TDCLK;
}
/*****initialize touch*****/
void int_touch() //SPI开始
{
P3SEL&=~0x1f;
P2SEL&=~0x20;
P2DIR&=~0x20;
P2IE=0x20;
P2IES|=0x20;
//P2IFG=0x00;
P3DIR|=(P3_TCS+P3_TDIN+P3_TDCLK);
P3DIR&=~(P3_TBUSY+P3_TDOUT);
P3OUT&=~P3_TDCLK;
P3OUT|=P3_TCS;
P3OUT|=P3_TDIN;
P3OUT|=P3_TDCLK;
P3OUT&=~P3_TCS;
WriteTo7843(0x80);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -