51单片机LCD显示
按图片电路与LCD时序图程序,显示1或是一个我看的懂的程序也行,小弟初学者,请前辈指教一下,要用C语言,小弟只能看懂C,LCD时序图地址http://zhidao.bai...
按图片电路与LCD时序图程序,显示1或是一个我看的懂的程序也行,小弟初学者,请前辈指教一下,
要用C语言,小弟只能看懂C ,LCD时序图地址 http://zhidao.baidu.com/question/200570851.html?quesup1 展开
要用C语言,小弟只能看懂C ,LCD时序图地址 http://zhidao.baidu.com/question/200570851.html?quesup1 展开
2010-12-07
展开全部
你说的是那类液晶!1602?这类基于HD44780液晶芯片,操作上都大同小异
都是通过写入命令,读出数据,界面数据变化时通过不断的刷新变化,忙闲查询可以用命令,也可以用延时函数5ms就可以了,下面是个简单的例子
想要复杂点的可以去我百度空间里面找
#include<AT89X51.H>
sbit lcden=P3^4;
sbit lcdrs=P3^5;
unsigned char code tab[]="libinQQ490251568";
unsigned char code tab1[]="51binyf.com" ;
void delay(unsigned char z);
void into();
void xie_com(unsigned char com);
void xie_date(unsigned char date);
void main()
{ unsigned char num;
into();
for(num=0;num<16;num++)
{
xie_date(tab[num]);
delay(20);
}
xie_com(0x40+0x80+0x03); //使数据指针指到第二行 起始,+1----16可以使它在屏幕的任意位置显示,
for(num=0;num<11;num++)
{
xie_date(tab1[num]);
delay(20);
}
while(1);
}
void delay(unsigned char z)
{unsigned i,k;
for(i=z;i>0;i--)
for(k=110;k>0;k--);
}
void into()// 此函数中写入一些显示前的准备数据
{
lcden=0;//写指令之前为E为低电平,
xie_com(0x38);//8为数据传送,显示2行,5x7点阵显示字符
xie_com(0x0f);//开显示,有光标且闪动 0f光标闪烁,0e光标不闪烁
xie_com(0x06);//写入一个字符后光标+1,指针也+1。字符整屏不移动
xie_com(0x80);//数据指针初始化即在第一行最左边,后面每个字符地址就加一,第二行首地址是C0
xie_com(0x01);//清屏指令
}
void xie_com(unsigned char com) //写指令函数
{
lcdrs=0; //RS=0写指令
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void xie_date(unsigned char date) //写数据 函数
{
lcdrs=1;//RS=1写数据
P0=date;
delay(5);
lcden=1;//资料上说E端有一个高脉冲时候执行一次指令,实际应用中他内部
delay(5);//检测到E端有一个电平跳变就可以执行指令
lcden=0;
}
都是通过写入命令,读出数据,界面数据变化时通过不断的刷新变化,忙闲查询可以用命令,也可以用延时函数5ms就可以了,下面是个简单的例子
想要复杂点的可以去我百度空间里面找
#include<AT89X51.H>
sbit lcden=P3^4;
sbit lcdrs=P3^5;
unsigned char code tab[]="libinQQ490251568";
unsigned char code tab1[]="51binyf.com" ;
void delay(unsigned char z);
void into();
void xie_com(unsigned char com);
void xie_date(unsigned char date);
void main()
{ unsigned char num;
into();
for(num=0;num<16;num++)
{
xie_date(tab[num]);
delay(20);
}
xie_com(0x40+0x80+0x03); //使数据指针指到第二行 起始,+1----16可以使它在屏幕的任意位置显示,
for(num=0;num<11;num++)
{
xie_date(tab1[num]);
delay(20);
}
while(1);
}
void delay(unsigned char z)
{unsigned i,k;
for(i=z;i>0;i--)
for(k=110;k>0;k--);
}
void into()// 此函数中写入一些显示前的准备数据
{
lcden=0;//写指令之前为E为低电平,
xie_com(0x38);//8为数据传送,显示2行,5x7点阵显示字符
xie_com(0x0f);//开显示,有光标且闪动 0f光标闪烁,0e光标不闪烁
xie_com(0x06);//写入一个字符后光标+1,指针也+1。字符整屏不移动
xie_com(0x80);//数据指针初始化即在第一行最左边,后面每个字符地址就加一,第二行首地址是C0
xie_com(0x01);//清屏指令
}
void xie_com(unsigned char com) //写指令函数
{
lcdrs=0; //RS=0写指令
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void xie_date(unsigned char date) //写数据 函数
{
lcdrs=1;//RS=1写数据
P0=date;
delay(5);
lcden=1;//资料上说E端有一个高脉冲时候执行一次指令,实际应用中他内部
delay(5);//检测到E端有一个电平跳变就可以执行指令
lcden=0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
51单片机有很多不同公司出的不同的芯片,它们都算是51单片机,所以你要结合你想使用的芯片找相关的资料。不过我建议你使用avr单片机,价格上不会贵很多,但是,功能强劲多了,集成了很多东西。
参考选型指南:http://www.zymcu.com/Atmel_file/Atmel01.htm
参考选型指南:http://www.zymcu.com/Atmel_file/Atmel01.htm
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
您好:
您可以在线和我交谈,我发程序和电路图给你,不过你要自己稍稍移植一下。
您可以在线和我交谈,我发程序和电路图给你,不过你要自己稍稍移植一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询