|
发表于 2011-3-13 16:24:50
|
显示全部楼层
给你参考下吧,自己写的,已经通过
-----------------------------------------------------------------------------------------------------------------------
//接线方式:(ST7920)
//LCD_RS ----->PB2
//LCD_WR ----->PB1
//LCD_EN ----->PB0
//LCD_PSB----->VCC(默认输出1并口)
//LCD_RST----->VCC(默认输出1置位)
//LCD_DB ----->PA
//定义MCU与LCD接口
#define LCD_CR PORTB //LCD控制位端口
#define LCD_DB PORTA //LCD数据位端口
#define LCD_DD DDRA //LCD数据位方向
#define LCD_DI PINA //BF输入方向
#define LCD_BUSY BIT(7) //BF状态位
#define KEY_CH PINC //8位单按键
#define LCD_RS_H() LCD_CR|= BIT(2) //LCD写数据
#define LCD_RS_L() LCD_CR&=~BIT(2) //LCD写指令
#define LCD_RW_H() LCD_CR|= BIT(1) //LCD写操作
#define LCD_RW_L() LCD_CR&=~BIFLCD_EN ----->PB0
//LCD_PSB----->VCC(默认输出1并口)
//LCD_RST----->VCC(默认输出1置位)
//LCD_DB ----->PA
//定义MCU与LCD接口
#define LCD_CR PORTB //LCD控制位端口
#define LCD_DB PORTA //LCD数据位端口
#define LCD_DD DDRA //LCD数据位方向
#define LCD_DI PINA //BF输入方向
#define LCD_BUSY BIT(7) //BF状态位
#define KEY_CH PINC //8位单按键
#define LCD_RS_H() LCD_CR|= BIT(2) //LCD写数据
#define LCD_RS_L() LCD_CR&=~BIT(2) //LCD写指令
#define LCD_RW_H() LCD_CR|= BIT(1) //LCD写操作
#define LCD_RW_L() LCD_CR&=~BIT(1) //LCD读操作
#define LCD_EN_H() LCD_CR|= BIT(0) //LCD使能关闭
#define LCD_EN_L() LCD_CR&=~BIT(0) //LCD使能开启
//*****************************************************************LCD显示函数段
void lcd_init()//LCD初始化
{
delay_ms(1);
lcd_write(0,0X01);//清屏
lcd_write(0,0X0C);//开显示关游标(0X0F开游标)
lcd_write(0,0X80);//显示光标移动设置
}
void lcd_write(unsigned char cord,unsigned char data)//LCD写操作
{
lcd_check_busy();
LCD_EN_L();//使能开启
if(!cord)
LCD_RS_L();//0写指令
else
LCD_RS_H();//1写数据
LCD_RW_L();//写操作
LCD_DB=data;//传送数据
LCD_EN_H(); //使能关闭
delay_ms(1);
LCD_EN_L(); //使能开启
}
void lcd_check_busy()//LCD查忙
{
LCD_DD&=~LCD_BUSY;//配置DB7对应口的方向为输入
LCD_RS_L();//写指令
delay_ms(1);
LCD_RW_H();//读操作
LCD_EN_H();//使能关闭
while(!(LCD_DI&LCD_BUSY))//检查DB7判断忙否
LCD_EN_L();//使能开启
LCD_DD|=0XFF;
}
void lcd_set_grid(unsigned char x,unsigned char y)//为写内置字符选择地址8*4
{
unsigned char addr;
switch(y)
{
case 0:addr=0X80+x;break;//第1行
case 1:addr=0X90+x;break;//第2行
case 2:addr=0X |
|