⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hardinterface.h

📁 msp430和nrf905的例子,联系qqliuyong007@163.com
💻 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 + -