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

📄 并口.c

📁 430的LCD驱动电路和简单的消抖程序
💻 C
字号:
#ifndef _L12864_H_
#define _L12864_H_


#include <msp430x14x.h>

#define	LCD_DI			BIT7			//LCD_DI -> P2.7
#define LCD_DI_DIR		P2DIR
#define LCD_DI_LO		P2OUT &= ~LCD_DI
#define LCD_DI_HI		P2OUT |= LCD_DI

#define	LCD_RW			BIT6			//LCD_RW -> P2.6
#define LCD_RW_DIR		P2DIR
#define LCD_RW_LO		P2OUT &= ~LCD_RW
#define LCD_RW_HI		P2OUT |= LCD_RW

#define	LCD_EN			BIT5			//LCD_EN -> P2.5
#define LCD_EN_DIR		P2DIR
#define LCD_EN_LO		P2OUT &= ~LCD_EN
#define LCD_EN_HI		P2OUT |= LCD_EN

#define	LCD_PSB			BIT0			//LCD_CS1 -> P4.0//PSB
#define LCD_PSB_DIR		P4DIR
#define LCD_PSB_LO		P4OUT &= ~LCD_PSB
#define LCD_PSB_HI		P4OUT |= LCD_PSB

#define	LCD_RST			BIT2			//LCD_RST -> P4.2
#define LCD_RST_DIR		P4DIR
#define LCD_RST_LO		P4OUT &= ~LCD_RST
#define LCD_RST_HI		P4OUT |= LCD_RST

#define LCD_DATA_IN		P5IN
#define LCD_DATA_OUT		P5OUT
#define LCD_DATA_DIR		P5DIR

void LCD_Init(void);
void LCD_CheckBusy(void);
void LCD_Delayt(unsigned int dtime);
void LCD_WriteComm(unsigned char wdata);
void LCD_WriteByte(unsigned char wdata);
void LCD_SetXY(unsigned char X, unsigned char Y);
void LCD_WriteDEC(unsigned char X, unsigned char Y, unsigned char wdata);
void LCD_WriteString(unsigned char X, unsigned char Y, unsigned char *String);
void LCD_Init(void);
unsigned char CheckBusy(void);
void LCD_Delayt(unsigned int dtime);
void LCD_WriteComm(unsigned char wdata);
void LCD_WriteByte(unsigned char wdata);
void LCD_SetXY(unsigned char X,unsigned char Y);
void LCD_WriteDEC(unsigned char X,unsigned char Y,unsigned char Num);
void LCD_WriteString(unsigned char X,unsigned char Y,unsigned char *String);




void LCD_Delayt(unsigned int dtime) {
	unsigned int itemp;
	for(itemp=0;itemp<dtime;itemp++);
}

void LCD_Init(void) {
	LCD_PSB_DIR |= LCD_PSB;			//PSB -> 并行模式
	LCD_PSB_HI;
	
	LCD_RST_DIR |= LCD_RST;			//RST -> 复位输出
	LCD_RST_LO;				//复位状态
	LCD_Delayt(1000);
	
	LCD_DI_DIR |= LCD_DI;
	LCD_DI_LO;
	LCD_RW_DIR |= LCD_RW;
	LCD_RW_LO;
	LCD_EN_DIR |= LCD_EN;
	LCD_EN_LO;
	
	LCD_Delayt(1000);
	LCD_RST_HI;				//正常状态
	
	LCD_WriteComm(0x30);
	LCD_WriteComm(0x0C);
	LCD_WriteComm(0x01);
	LCD_WriteComm(0x02);
	LCD_WriteComm(0x06);
}

void LCD_CheckBusy(void) {
	unsigned char Flag;
	LCD_DI_LO;
	LCD_RW_HI;
	LCD_DATA_DIR = 0x00;
	do {
		LCD_EN_HI;
		Flag = LCD_DATA_IN;
		LCD_EN_LO;
	} while(Flag & 0x80);
	LCD_DATA_DIR = 0xFF;
}

void LCD_WriteComm(unsigned char wdata) {
	LCD_CheckBusy();
	
	LCD_DI_LO;
	LCD_RW_LO;
	LCD_EN_HI;
	
	LCD_DATA_OUT = wdata;
	LCD_EN_LO;
}

void LCD_WriteByte(unsigned char wdata) {
	LCD_CheckBusy();
	
	LCD_DI_HI;
	LCD_RW_LO;
	LCD_EN_HI;
	
	LCD_DATA_OUT = wdata;
	LCD_EN_LO;
}


void LCD_SetXY(unsigned char X, unsigned char Y) {
	switch(Y) {
		case 1:
			LCD_WriteComm(0x7F + X);
			break;
		case 2:
			LCD_WriteComm(0x8F + X);
			break;
		case 3:
			LCD_WriteComm(0x87 + X);
			break;
		case 4:
			LCD_WriteComm(0x97 + X);
	}
}

void LCD_WriteDEC(unsigned char X, unsigned char Y, unsigned char wdata) {
	LCD_SetXY(X,Y);
	LCD_WriteByte((wdata/10) + 0x30); 
	LCD_WriteByte((wdata%10) + 0x30);
}

void LCD_WriteString(unsigned char X, unsigned char Y, unsigned char *String) { 
    	unsigned char temp;
	LCD_SetXY(X,Y);
	temp = *String;
	while(temp!=0) {
    		LCD_WriteByte(temp);
    		temp = *(++String);
	}  
}
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -