单片机ATMEGA128如何控制LCD

单片机ATMEGA128如何控制LCD,第1张

我给您一段公用的ATMEGA128控制LCD12864不带字库的屏幕驱动程序吧。不过我这个是菜单式的控制,所以...没有办法全部提供给你哦。

//LCD OCM12864-1引脚定则模义区

#define en_ON PORTG|=BIT(2)

#define en_OFF PORTG&=~BIT(2)

#define rw_R PORTA|=BIT(4)

#define rw_W PORTA&=~BIT(4)

#define rs_DATA PORTA|=BIT(3)

#define rs_COM PORTA&=~BIT(3)

#define cs1_ON PORTG|=BIT(1)

#define cs1_OFF PORTG&=~BIT(1)

#define cs2_ON PORTG|=BIT(0)

#define cs2_OFF PORTG&=~BIT(0)

#define dat_DDRC DDRC

#define dat_PORTC PORTC

#define dat_PINC PINC

void jian_cha_LCD() //状态检查,LCD是否忙?

{

uchar dat

rs_COM //RS=0

rw_R //RW=1

do

{

dat_DDRC=0xFF

dat_PORTC=0x00

en_ON //EN=1//读出当前忙闲状态

dat_DDRC=0x00

dat=dat_PINC

en_OFF //EN=0

dat=0x80&dat //仅当第7位为0时才可 *** 作(判别busy信号)

}

while(PINC&BIT(7)) //表示在0时是空闲状态.....否则,等待.....

dat_DDRC=0xff

}

/***************************************/

void write_COM_LCD(uchar COM)//写命令到LCD中

{

//jian_cha_LCD()

rs_COM//RS=0 //向LCD发送命令

rw_W //RW=0

dat_PORTC=COM //command :命令

en_ON

delay_nus(20) //EN=1

en_OFF //EN=0 //在EN的下降沿,数据被锁存写入

}

/***************************************/

void write_DATA_LCD(uchar DATA1)//写数据尺吵到LCD中

{

//jian_cha_LCD()

rs_DATA /陵盯侍/RS=1 //向LCD发送命令

rw_W //RW=0

dat_PORTC=DATA1 //DATA:数据

en_ON //EN=1

delay_nus(20)

en_OFF //EN=0 //在EN的下降沿,数据被锁存写入

}

//设置页地址x,范围0到7列地址y,范围0到63;

void setxy(uchar x,uchar y)

{

write_COM_LCD(SCRCLS) //光标归位,清除显示,地址AC到00H

write_COM_LCD(0xb8+x) //设置页地址

write_COM_LCD(0x40+y) //设置列地址

}

ui_AD_data=(ui_ADCH<<8)|UI_ADcl就是这里我没有看拆伏懂

看你这个程序,转换结果旅衡携应该是右对齐的,假定转换结果为1023(0x03ff),那么ADCL = 0XFF,ADCH = 0X03

ui_ADCL=ADCL也就等于0xff

ui_ADCH=ADCH也就等于0x03

ui_ADCH<<8,那么ui_ADCH就等于0x0300,再和ui_ADCL做或运算,则ui_AD_data=0x3ff,你所说的返回最大也才255,不拦李知道是怎么来的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12485978.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存