?? ocmj12232c-1(并口).h
字號:
#ifndef _OCMJ12232_H_
#define _OCMJ12232_H_
//引腳定義
//p2 ---- 并口數(shù)據(jù)通信
#define DB_DIR P2DIR
#define DB_OUT P2OUT
#define DB_IN P2IN
#define DB_SEL P2SEL
//控制引腳 ---- P3
//E ---- P3.0
//RW ---- P3.1
//RS ---- P3.2
// RW:H -- 讀取 L -- 寫
// RS:H -- 數(shù)據(jù) L -- 命令
#define E_H P3OUT |= 0X01
#define E_L P3OUT &= ~0X01
#define RW_H P3OUT |= 0X02
#define RW_L P3OUT &= ~0X02
#define RS_H P3OUT |= 0X04
#define RS_L P3OUT &= ~0X04
#define COMMAND 0
#define DATA 1
void init_port(void);
unsigned char read_RAM(void);
unsigned char read_BF(void);
void check_BF(void);
void write_lcd(unsigned char data_com,unsigned char value);
void init_lcd (void);
void write_data(unsigned char *data);
void delay_xus(int us);
void delay_xms(int ms);
void clrram (void);
void go(unsigned char xxx, unsigned char yyy);
/****************** 引腳初始化 ******************/
void init_port(void)
{
DB_OUT = 0X00;
DB_DIR = 0X00;
P3DIR = 0X07;
P3OUT = 0X00;
}
/****************** 讀取RAM數(shù)據(jù) ******************/
//沒有完成
unsigned char read_RAM(void)
{
unsigned char ret = 0;
_NOP();
return ret;
}
/****************** 讀取busy標(biāo)志位 ******************/
//BF = H 忙 BF = L 空閑 (bit7)
//讀取BF標(biāo)志位,讀取了兩次,不知道對不對
unsigned char read_BF(void)
{
unsigned char ret;
DB_DIR = 0X00;
RS_L;
RW_H;
E_H;
_NOP();
_NOP();
ret = DB_IN;
E_L;
_NOP();
_NOP();
_NOP();
_NOP();
E_H;
_NOP();
_NOP();
ret = DB_IN;
E_L;
_NOP();
_NOP();
_NOP();
_NOP();
return ret;
}
/****************** 檢查BF標(biāo)志位,直到 BF = 0 ******************/
void check_BF(void)
{
unsigned char temp;
do
{
temp = read_BF();
}while((temp & 0x80) == 0x80);
}
/****************** 寫數(shù)據(jù)或命令 ******************/
void write_lcd(unsigned char data_com,unsigned char value)
{
//check_BF();
unsigned char temp;
do
{
temp = read_BF();
}while((temp & 0x80) == 0x80);
DB_DIR = 0XFF;
if(data_com == DATA)
{
RS_H;
RW_L;
}
else if(data_com == COMMAND)
{
RS_L;
RW_L;
}
else
return ;
DB_OUT = value;
E_H;
_NOP();
E_L;
DB_DIR = 0X00;
/*if((data_com == COMMAND) && (value == 0x01))
delay_xms(10);
else
delay_xus(75);*/
}
/****************** 初始化******************/
void init_lcd (void)
{
write_lcd (COMMAND,0x30); /*30---基本指令動作*/
write_lcd (COMMAND,0x01); /*清屏,地址指針指向00H*/
write_lcd (COMMAND,0x06); /*光標(biāo)的移動方向*/
write_lcd (COMMAND,0x0c); /*開顯示,關(guān)游標(biāo)*/
}
/*------------------- 寫數(shù)據(jù) --------------------*/
void write_data(unsigned char *data)
{
//寫數(shù)據(jù)之前必須先指定AC值
write_lcd(COMMAND,0x30);//基本指令集
//write_lcd(COMMAND,0X80);//設(shè)定DDRAM AC值 = 0
while(*data)
{
write_lcd(DATA,*data);
data++;
}
}
/*-------------- 清DDRAM ------------------*/
void clrram (void)
{
write_lcd (COMMAND,0x30);//基本指令集動作
write_lcd (COMMAND,0x01);//清除顯示
}
/*-------------- 光標(biāo)定位 ---------------*/
void go(unsigned char xxx, unsigned char yyy)
{
write_lcd(COMMAND,0x30);
if(yyy==0)
write_lcd(COMMAND,0x80+xxx);
else if(yyy==1)
write_lcd(COMMAND,0x90+xxx);
}
/*------------------- 延 時 --------------------*/
void delay_xus (int us) //delay time
{
do
{
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
}while(us--);
}
void delay_xms(int ms)
{
do
{
delay_xus(1000);
}while(ms--);
}
#endif /*_OCMJ12232_H_*/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -