通过谷歌翻译得到的,具体情况不太清楚
#include <reg51.h>//51寄存器文件#include <intrins.h>
typedef unsigned char BYTE//用BYTE代替unsigned char
typedef unsigned int WORD//WORD代替unsigned int
typedef bit BOOL //用BOOL代替bit
sbit rs = P2^6//复位端
sbit rw = P2^5//写数据端
sbit ep = P2^7//使能端
BYTE code dis1[] = {"welcome!,I'm Tom"}
//LCD侧忙函数
BOOL lcd_bz()
{
BOOL result
rs = 0
rw = 1
ep = 1
_nop_()
_nop_()
_nop_()
_nop_()
result = (BOOL)(P0 &0x80)//检测P0最高位是否为1
ep = 0
return result//返回侧忙结果
}
// 写入指令数据到LCD
lcd_wcmd(BYTE cmd)
{
while(lcd_bz())
rs = 0
rw = 0
ep = 0
_nop_()
_nop_()
P0 = cmd//将8位指令通过P0口传给碧袜1602
_nop_()
_nop_()//用于产生一个脉冲宽度
_nop_()
_nop_()
ep = 1
_nop_()
_nop_()
_nop_()
_nop_()
ep = 0
}
//设定显示位置
lcd_pos(BYTE pos)
{
lcd_wcmd(pos | 0x80)
}
//写入字符显示数据到LCD
lcd_wdat(BYTE dat)
{
while(lcd_bz())
rs = 1
rw = 0
ep = 0
P0 = dat//将8位数据通过P0口传给1602
_nop_()
_nop_()
_nop_()//用于产蔽唯生一个脉冲宽度
_nop_()
ep = 1
_nop_()
_nop_()
_nop_()
_nop_()
ep = 0
}
//LCD初始化设定
lcd_init()
{
lcd_wcmd(0x38) ////16*2显示,5*7点阵,8位数据
lcd_wcmd(0x0c) //显示开,关光标
lcd_wcmd(0x06) //移动光标
lcd_wcmd(0x01) //清除LCD的显示内宏慧培容
}
main()
{
BYTE i
lcd_init() //初始化LCD
lcd_pos(4) //设置显示位置为第一行的第5个字符
i = 0
while(dis1[i] != '\0')
{ //显示字符"welcome!"
lcd_wdat(dis1[i])
i++
}
while(1)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)