1、首先我们打开Keil μVision编译器,新建一个工程,然后保存在硬盘上的位置,然后选择Atmel-AT89C51单片机为模型,并启动器添加STARTUP.A51文件,然后在当前目禅昌录下新建一个C文件,并将其添加入工作路径。
2、导入51单片机的头文件以及LCD1602的头文件。
3、创建一个延时函数,可以传入想要具体延时的时长,其内部实现是由一个二重循环,两个循环的次数相乘积。
4、然后创建写命令的函数,指定RS和E同时为0时,才可以写入命令,设定完成后,将com写入输出端口,规定写命令时,E为正脉冲,然后空 *** 作一个机器周期等待机器反应。
5、然后创建写数据的函数,规定写数据时,E为正脉冲,规定当RS=1和RW=0时才可以写入数据,然后将数据从输出端口输出,最后让E产生正跳变。
6、然后创建初始化LCD1602的函数,指定显示模式位两行显示,5*7,8位数据、整体显示,无光标,无闪烁、写入一个字符后地址指针加1,袜袭毁最后进行清屏 *** 作。
7、最后在主函数中首先执行LCD1602的初始化函数,首先创建一个无告备限循环,然后添加两个字符串,这里以两行显示百度经验的网址为例,再进行延时以及使用清屏函数进行刷新。
程序如下:#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define LCD_IO P2
sbit LCD_RS = P3^0
sbit LCD_RW = P3^7
sbit LCD_EN = P3^1
uchar count
uint sec
uchar code LCD_line1[] = "321 + 123 "
uchar code LCD_line2[] = " = 444 "
//---------------------------------------------------
void delay(uint z)
{
uint x, y
for(x = zx >0x--) for(y = 10y >0y--)
}
//---------------------------------------------------
void W_LCD_Com(uchar com) //拦旁写指令
{
LCD_RS = 0 LCD_EN = 0// LCD_RS和R/W同时为低电平时,可以写入指令.
LCD_IO = com delay(5) //下面用EN输入一个高脉冲.
LCD_EN = 1 delay(5) LCD_EN = 0
}
//---------------------------------------------------
void W_LCD_Dat(uchar dat) //写数据
{
LCD_RS = 1 LCD_EN = 0// LCD_RS为高,LCD_RW为低时,可以写入数据.
LCD_IO = dat delay(5) //下面用EN输入一个高脉冲.
LCD_EN = 1 delay(5) LCD_EN = 0
}
//---------------------------------------------------
void W_LCD_STR(uchar *s) //写字符简含橡串
{
while(*s >0) {W_LCD_Dat(*s) s++}
}
//---------------------------------------------------
void init()
{
W_LCD_Com(0x38)
W_LCD_Com(0x0c)
W_LCD_Com(0x06)
W_LCD_Com(0x01)
W_LCD_Com(0x80)W_LCD_STR(LCD_line1)
W_LCD_Com(0xC0)W_LCD_STR(LCD_line2)
}
//---------------------------------------------------
void main()
{
init()
while(1)
}
//---------------------------------------------------
电路老隐可见:
http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/e9a4f10963e835c463d98677.html
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)