?? armok0137251.txt
字號:
#include "delay.h"
#define dataport PORTB //定義數(shù)據(jù)寄存器端口
#define dirport_data DDRB //定義方向寄存器端口
#define conport PORTA
#define dirport_con DDRA
#define LCD_E (1 << 6) //引腳定義
#define LCD_RS (1 << 4)
#define LCD_RW (1 << 5)
#define lcd_set_e() (conport |= LCD_E) //置位與清零
#define lcd_set_rs() (conport |= LCD_RS)
#define lcd_set_rw() (conport |= LCD_RW)
#define lcd_clear_e() (conport &= ~LCD_E)
#define lcd_clear_rs() (conport &= ~LCD_RS)
#define lcd_clear_rw() (conport &= ~LCD_RW)
/*********************************************************/
void lcd_pulse(void); //產(chǎn)生LCD所需的短脈沖
void lcd_wait(void); //等待
void lcd_send(unsigned char data); //向LCD寫一個字節(jié)數(shù)據(jù)
void clrscr(void); //清屏函數(shù)
void gotoz(unsigned char z); //定位坐標
void gotoxy(unsigned char x,unsigned char y); //定位字符位置
void put_char(char c); //向LCD寫字符
void outtext(char* text); //向LCD寫字符串
void initgraph(void); //初始化LCD
/**************************************************************************************/
//函數(shù)名 :lcd_pulse
//屬性 :私有
//功能 :產(chǎn)生LCD所需的短脈沖
//輸入?yún)?shù) :無
//輸出參數(shù) :無
//返回值 :
//修改日期 :
//修改人 :
/**************************************************************************************/
void lcd_pulse(void)
{
lcd_set_e();
delay_nms(1);
lcd_clear_e();
delay_nms(1);
}
/**************************************************************************************/
//函數(shù)名 :lcd_wait
//屬性 :私有
//功能 :延時等待
//輸入?yún)?shù) :無
//輸出參數(shù) :無
//返回值 :
//修改日期 :
//修改人 :
/**************************************************************************************/
void lcd_wait(void) // medium delay (long for lcd, but much less than a second)
{
asm("nop");
}
/**************************************************************************************/
//函數(shù)名 :lcd_send
//屬性 :私有
//功能 :寫一個字符到LCD
//輸入?yún)?shù) :data--要顯示的字符
//輸出參數(shù) :無
//返回值 :
//修改日期 :
//修改人 :
/**************************************************************************************/
void lcd_send(unsigned char data) // send byte to lcd
{
lcd_wait();
dataport = data;
lcd_pulse();
}
/**************************************************************************************/
//函數(shù)名 :clrscr
//屬性 :私有
//功能 :清除屏幕
//輸入?yún)?shù) :無
//輸出參數(shù) :無
//返回值 :
//修改日期 :
//修改人 :
/**************************************************************************************/
void clrscr(void) // clear screen
{
lcd_clear_rs();
lcd_clear_rw();
lcd_send(0x01);
lcd_wait();
}
/**************************************************************************************/
//函數(shù)名 :gotoz
//屬性 :私有
//功能 :坐標定位
//輸入?yún)?shù) :z--位置
//輸出參數(shù) :無
//返回值 :
//修改日期 :
//修改人 :
/**************************************************************************************/
void gotoz(unsigned char z) // goto lcd memory address
{
lcd_clear_rs();
lcd_clear_rw();
lcd_send(z | 0x80);
}
/**************************************************************************************/
//函數(shù)名 :gotoxy
//屬性 :私有
//功能 :在LCD上的位置
//輸入?yún)?shù) :x--字符的列;y--字符的行
//輸出參數(shù) :
//返回值 :
//修改日期 :
//修改人 :
/**************************************************************************************/
void gotoxy(unsigned char x,unsigned char y)
{
gotoz((x)|((y)<<6));
}
/**************************************************************************************/
//函數(shù)名 :put_char
//屬性 :私有
//功能 :在LCD上顯示一個字符
//輸入?yún)?shù) :c--要顯示的字符
//輸出參數(shù) :
//返回值 :
//修改日期 :
//修改人 :
/**************************************************************************************/
void put_char(char c) // output single character
{
lcd_clear_rw();
lcd_set_rs();
lcd_send(c);
}
/**************************************************************************************/
//函數(shù)名 :outtext
//屬性 :私有
//功能 :輸出字符串到LCD顯示
//輸入?yún)?shù) :text--要顯示的字符串
//輸出參數(shù) :無
//返回值 :
//修改日期 :
//修改人 :
/**************************************************************************************/
void outtext(char* text) // output string
{
unsigned char i;
for(i = 0; text[i] && i < 16; i++)
put_char(text[i]);
}
/**************************************************************************************/
//函數(shù)名 :initgraph
//屬性 :私有
//功能 :初始化LCD
//輸入?yún)?shù) :無
//輸出參數(shù) :無
//返回值 :
//修改日期 :
//修改人 :
/**************************************************************************************/
void initgraph(void) // init display
{
dirport_data = 0xFF;
dirport_con |= (LCD_E | LCD_RS | LCD_RW);
lcd_clear_rs();
lcd_clear_rw();
lcd_send(0x3C);
lcd_send(0x3C);
lcd_send(0x3C);
lcd_send(0x06);
lcd_send(0x0C);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -