lcd 1602驱动程序怎么写

lcd 1602驱动程序怎么写,第1张

#include<reg52.h>

#include <intrins.h>

#define uchar unsigned char

#define uint unsigned int

sbit RS = P2^1

sbit RW = P2^2

sbit E = P2^3

uchar idata wlcome[16]={"asdfghjklpoiuytr"}

uchar idata lcdtimer[16]={"qwertyuioplkjhgf"}

void delayus(uint a)//微秒延时//

{

while(a--)

}

void delay(uint dell)//毫秒延时//

{

uchar x

for(delldell>0dell--)

for(x=110x>0x--)

}

void wr_com(uchar temp)//写指令//0

{

RS=0

RW=0

P0=temp

E=1

E=0

}

void wr_data(uchar num)//写数据//

{

RS=1

RW=0

P0=num

E=1

E=0

}

void disp_lcd(uchar addr,uchar *templ)

{

uchar i

wr_com(addr)

delay(50)

for(i=0i<16i++)

{

wr_data(templ[i])

delay(50)

}

}

void lcd_init()//初始化液晶//

{

wr_com(0x30)

delay(50)

wr_com(0x38)

delay(50)

wr_com(0x01)

delay(50)

wr_com(0x06)

delay(50)

wr_com(0x0c)

delay(50)

}

void main()

{

lcd_init()

while(1)

{

disp_lcd(0x80,wlcome)

disp_lcd(0xc0,lcdtimer)

}

}

1 注意是忙返回1,不忙返回0

result=(BOOL)(P0&0X80)//这里是查看是否在繁忙状态。如果不忙STA7(接到P0^7)应该是0

return result

2 如果不想在忙时等,只能用if语句判断,忙则退出,并返回一个不成功标志。主程序可以在一定时间后或空闲时重试。

3 无论如何,不应该在while循环里面写数据,你不需要也不应该多次写同一数据的


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存