您的位置 首页 制造

51单片机 LCD12864

有了LCD12864,人机交互就友好的多了。原理图:上代码:程序可能,驱动12864液晶显示文字本程序有问题,见实际效果,1数码管在

有了LCD12864,人机交互就友爱的多了。

原理图:

上代码:

//程序或许,驱动12864液晶显现文字
//本程序有问题,见实际效果,1数码管在接入串口线乱码;2无法多页显现
#include
#define uint unsigned int
#define uchar unsigned char
//端口声明
sbit duanxuan=P2^6; //数码管段选端
sbit weixuan=P2^7; //数码管位选端
sbit lcd12864_RS=P3^5; //12864数据/指令挑选端
sbit lcd12864_WR=P3^6; //读/写挑选端
sbit lcd12864_E=P3^4; //信号时能端
sbit lcd12864_PSB=P3^7; //串/并挑选端
//显现数据界说
uchar display_date0[]=”闫伟 luobin 彭超:”; //榜首行显现文字
uchar display_date1[]=”欢迎你们来到我家”; //第二行显现文字
uchar display_date2[]=”咱们是朋友–永久”; //第三行显现文字
uchar display_date3[]=”王春林2012-7-6-N”; //第四行显现文字

//相关函数声明
void delay(uint); //延时函数声明
void system_init(); //体系初始化函数
void writting_order(uchar); //写入指令函数
void lcd_init(); //初始化函数
void writting_date(uchar); //写入数据函数
void display1(); //显现函数
//void display2();
//主函数
void main()
{
system_init(); //体系初始化
lcd_init(); //lcd初始化-指令设置
display1(); //显现
while(1);
}
//延时函数主体
void delay(uint s)
{
uint i,j;
for(i=s;i>0;i–)
{
for(j=110;j>0;j–)
{
}
}
}
//体系初始化函数主体
void system_init()
{
//避免数码管乱码,封闭数码管
duanxuan=0;
weixuan=0;
}
//lcd12864写入指令函数主体
void writting_order(uchar order_date)
{
lcd12864_WR=0; //WR-0,写
lcd12864_RS=0; //RS-0,写指令
lcd12864_E=0;
P0=order_date;
delay(5);
lcd12864_E=1; //E高脉冲有用
delay(5);
lcd12864_E=0; //回到0,是为了避免误写入数据
}
//lcd12864初始化函数主体
void lcd_init()
{
lcd12864_PSB=1; //挑选并口
writting_order(0x01); //AC指针归零
delay(5);
writting_order(0x03); //指针归零,游标原点
delay(5);
writting_order(0x0d); //显现开,游标关,循序反白
delay(5);
writting_order(0x06); //写入数据AC主动加以,游标主动右移一位
delay(5);
writting_order(0x30); //8位数据,根本指令操作
delay(5);
}
//lcd12864写入显现数据函数主体
void writting_date(uchar disolay_data)
{
lcd12864_WR=0; //写
lcd12864_RS=1; //数据
lcd12864_E=0;
P0=disolay_data; //写入数据
delay(5);
lcd12864_E=1; //E高脉冲有用
delay(5);
lcd12864_E=0;
}
//显现函数主体__榜首页
void display1()
{
uint number;
//写榜首行数据
writting_order(0x80);
for(number=0;number<16;number++)
{
writting_date(display_date0[number]); //循环写入榜首行文字
}
//写第二行数据
writting_order(0x90);
for(number=0;number<16;number++)
{
writting_date(display_date1[number]);
}
//写第三行数据
writting_order(0x88);
for(number=0;number<16;number++)
{
writting_date(display_date2[number]);
}
//写第四行数据
writting_order(0x98);
for(number=0;number<16;number++)
{
writting_date(display_date3[number]);
}
}

以上,完毕。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/zhizao/259197.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部