专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
LPC1343与1602显示
2019-03-25 20:09
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
NXP MCU
1933
6
1108
proteus用lpc1343与160l液晶调试,液晶一直没有正确显示,请求助
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
nmg
1楼-- · 2019-03-26 02:54
_NXP LPC1000_ 最好把程序发上来
如果连接没问题,应该是程序的问题
加载中...
feiyun
2楼-- · 2019-03-26 04:47
#include "LPC13xx.h" /* LPC13xx Peripheral Registers */
#include "lcd016.h"
//延时函数
void delay()
{
unsigned int i=5552;
while(--i);
}
void delay_nms(int i)
{
i=i+10;
while(i--);
}
//检查LCD是否忙
int LCD_busy()
{
/* int flag;
GPIOSetValue( 2, 0, 0 ); //写命令
GPIOSetValue( 2, 1,1 ); //读选择端
GPIOSetValue( 2, 2, 1 ); //E使能
GPIOSetDir( 2, 11, 0 );
delay_nms(100);
if((LPC_GPIO2->DATA&(1<<11)))
//if(LCD_BF==1) //数据满
flag=1; //标志位置1
else
flag=0;
GPIOSetDir( 2, 11, 1 );
GPIOSetValue( 2, 2, 0 ); //E使能
return flag;*/
unsigned int i=10000;
while(--i);
}
//写命令
/*void LCD_write_cmdata(unsigned char cmdata)
{
int i;
// while(LCD_busy()); //等待空闲
GPIOSetValue( 2, 2, 0);
GPIOSetValue( 2, 0, 0 );
GPIOSetValue( 2, 1, 0 );
delay_nms(1);
for(i=0;i<8;i++)
{
if(cmdata&0x01)
{
GPIOSetValue( 2, 4+i, 1 );
}
else
GPIOSetValue( 2, 4+i, 0 );
cmdata= cmdata>>0x01;
}
GPIOSetValue( 2, 2, 1);
delay_nms(2);
GPIOSetValue( 2, 2, 0);
GPIOSetValue( 2, 2, 1);
}
//写数据
void LCD_write_wodata(unsigned char wodata)
{
int i;
// while(LCD_busy()); //等待空闲
GPIOSetValue( 2, 0, 1 ); //写数据
GPIOSetValue( 2, 1, 0);
GPIOSetValue( 2, 2, 0);
delay_nms(1);
for(i=0;i<8;i++)
{
if(wodata&0x01)
{
GPIOSetValue( 2, 4+i, 1 );
}
else
GPIOSetValue( 2, 4+i, 0 );
wodata= wodata>>0x01;
}
GPIOSetValue( 2, 2, 1);
delay_nms(1);
GPIOSetValue( 2, 2, 0);
delay_nms(1);
GPIOSetValue( 2, 2, 1);
} */
//LCD初始化
void LCD_write_cmdata(unsigned char cmdata)
{
int i;
LCD_busy(); //等待空闲
// GPIOSetValue( 2, 2, 0);
LPC_GPIO2->DATA&=(~(0x001<<2));
// GPIOSetValue( 2, 0, 0 );
LPC_GPIO2->DATA&=(~(0x001));
// GPIOSetValue( 2, 1, 0 );
LPC_GPIO2->DATA&=(~(0x001<<1));
delay_nms(1);
/* for(i=0;i<8;i++)
{
if(cmdata&0x01)
{
GPIOSetValue( 2, 4+i, 1 );
}
else
GPIOSetValue( 2, 4+i, 0 );
cmdata= cmdata>>0x01;
}*/
LPC_GPIO2->DATA&=(0x00f);
LPC_GPIO2->DATA|=(cmdata<<4);
//GPIOSetValue( 2, 2, 1);
LPC_GPIO2->DATA|=(0x01<<2);
delay_nms(2);
//GPIOSetValue( 2, 2, 0);
LPC_GPIO2->DATA&=(~(0x001<<2));
// GPIOSetValue( 2, 2, 1);
LPC_GPIO2->DATA|=(0x01<<2);
}
//写数据
void LCD_write_wodata(unsigned char wodata)
{
int i;
LCD_busy();
// GPIOSetValue( 2, 2, 0);
LPC_GPIO2->DATA&=(~(0x001<<2));
// GPIOSetValue( 2, 0, 1 );
LPC_GPIO2->DATA|=((0x001));
// GPIOSetValue( 2, 1, 0 );
LPC_GPIO2->DATA&=(~(0x001<<1));
delay_nms(1);
LPC_GPIO2->DATA&=(0x00f);
LPC_GPIO2->DATA|=(wodata<<4);
//GPIOSetValue( 2, 2, 1);
delay_nms(2);
LPC_GPIO2->DATA|=(0x01<<2);
delay_nms(2);
//GPIOSetValue( 2, 2, 0);
LPC_GPIO2->DATA&=(~(0x001<<2));
// GPIOSetValue( 2, 2, 1);
LPC_GPIO2->DATA|=(0x001<<2);
}
void LCD_Init()
{
LCD_write_cmdata(0x38); //显示设置
delay_nms(6);
LCD_write_cmdata(0x0e); //显示开关与光标设置
delay_nms(6);
LCD_write_cmdata(0x03);
delay_nms(6);
LCD_write_cmdata(0x06);
delay_nms(6);
LCD_write_cmdata(0x1f);
delay_nms(6);
LCD_write_cmdata(0x01);
delay_nms(6);
}
加载中...
feiyun
3楼-- · 2019-03-26 08:23
精彩回答 2 元偷偷看……
加载中...
feiyun
4楼-- · 2019-03-26 09:38
已解决
加载中...
休息休息
5楼-- · 2019-03-26 13:34
楼主能不能把工程发给我,谢谢
加载中...
休息休息
6楼-- · 2019-03-26 16:18
休息休息 发表于 2016-11-7 22:38
楼主能不能把工程发给我,谢谢
Q2921175784
加载中...
一周热门
更多
>
相关问题
相关文章
IMX6UL定时器按键消抖实验
0个评论
IMX6UL 裸机C语言IO 输入中断编程
0个评论
Cortex-A7 IO 输入中断系统分析
0个评论
IMX6UL裸机实现C语言按键输入实验
0个评论
IMX6UL裸机实现C语言蜂鸣器实验
0个评论
通过结构体的方式来定义和使用寄存器地址
0个评论
IMX6UL裸机实现C语言LED点亮与闪烁
0个评论
I.MX6U处理器LED灯点亮汇编程序之命令行方式编译与链接
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
如果连接没问题,应该是程序的问题
#include "lcd016.h"
//延时函数
void delay()
{
unsigned int i=5552;
while(--i);
}
void delay_nms(int i)
{
i=i+10;
while(i--);
}
//检查LCD是否忙
int LCD_busy()
{
/* int flag;
GPIOSetValue( 2, 0, 0 ); //写命令
GPIOSetValue( 2, 1,1 ); //读选择端
GPIOSetValue( 2, 2, 1 ); //E使能
GPIOSetDir( 2, 11, 0 );
delay_nms(100);
if((LPC_GPIO2->DATA&(1<<11)))
//if(LCD_BF==1) //数据满
flag=1; //标志位置1
else
flag=0;
GPIOSetDir( 2, 11, 1 );
GPIOSetValue( 2, 2, 0 ); //E使能
return flag;*/
unsigned int i=10000;
while(--i);
}
//写命令
/*void LCD_write_cmdata(unsigned char cmdata)
{
int i;
// while(LCD_busy()); //等待空闲
GPIOSetValue( 2, 2, 0);
GPIOSetValue( 2, 0, 0 );
GPIOSetValue( 2, 1, 0 );
delay_nms(1);
for(i=0;i<8;i++)
{
if(cmdata&0x01)
{
GPIOSetValue( 2, 4+i, 1 );
}
else
GPIOSetValue( 2, 4+i, 0 );
cmdata= cmdata>>0x01;
}
GPIOSetValue( 2, 2, 1);
delay_nms(2);
GPIOSetValue( 2, 2, 0);
GPIOSetValue( 2, 2, 1);
}
//写数据
void LCD_write_wodata(unsigned char wodata)
{
int i;
// while(LCD_busy()); //等待空闲
GPIOSetValue( 2, 0, 1 ); //写数据
GPIOSetValue( 2, 1, 0);
GPIOSetValue( 2, 2, 0);
delay_nms(1);
for(i=0;i<8;i++)
{
if(wodata&0x01)
{
GPIOSetValue( 2, 4+i, 1 );
}
else
GPIOSetValue( 2, 4+i, 0 );
wodata= wodata>>0x01;
}
GPIOSetValue( 2, 2, 1);
delay_nms(1);
GPIOSetValue( 2, 2, 0);
delay_nms(1);
GPIOSetValue( 2, 2, 1);
} */
//LCD初始化
void LCD_write_cmdata(unsigned char cmdata)
{
int i;
LCD_busy(); //等待空闲
// GPIOSetValue( 2, 2, 0);
LPC_GPIO2->DATA&=(~(0x001<<2));
// GPIOSetValue( 2, 0, 0 );
LPC_GPIO2->DATA&=(~(0x001));
// GPIOSetValue( 2, 1, 0 );
LPC_GPIO2->DATA&=(~(0x001<<1));
delay_nms(1);
/* for(i=0;i<8;i++)
{
if(cmdata&0x01)
{
GPIOSetValue( 2, 4+i, 1 );
}
else
GPIOSetValue( 2, 4+i, 0 );
cmdata= cmdata>>0x01;
}*/
LPC_GPIO2->DATA&=(0x00f);
LPC_GPIO2->DATA|=(cmdata<<4);
//GPIOSetValue( 2, 2, 1);
LPC_GPIO2->DATA|=(0x01<<2);
delay_nms(2);
//GPIOSetValue( 2, 2, 0);
LPC_GPIO2->DATA&=(~(0x001<<2));
// GPIOSetValue( 2, 2, 1);
LPC_GPIO2->DATA|=(0x01<<2);
}
//写数据
void LCD_write_wodata(unsigned char wodata)
{
int i;
LCD_busy();
// GPIOSetValue( 2, 2, 0);
LPC_GPIO2->DATA&=(~(0x001<<2));
// GPIOSetValue( 2, 0, 1 );
LPC_GPIO2->DATA|=((0x001));
// GPIOSetValue( 2, 1, 0 );
LPC_GPIO2->DATA&=(~(0x001<<1));
delay_nms(1);
LPC_GPIO2->DATA&=(0x00f);
LPC_GPIO2->DATA|=(wodata<<4);
//GPIOSetValue( 2, 2, 1);
delay_nms(2);
LPC_GPIO2->DATA|=(0x01<<2);
delay_nms(2);
//GPIOSetValue( 2, 2, 0);
LPC_GPIO2->DATA&=(~(0x001<<2));
// GPIOSetValue( 2, 2, 1);
LPC_GPIO2->DATA|=(0x001<<2);
}
void LCD_Init()
{
LCD_write_cmdata(0x38); //显示设置
delay_nms(6);
LCD_write_cmdata(0x0e); //显示开关与光标设置
delay_nms(6);
LCD_write_cmdata(0x03);
delay_nms(6);
LCD_write_cmdata(0x06);
delay_nms(6);
LCD_write_cmdata(0x1f);
delay_nms(6);
LCD_write_cmdata(0x01);
delay_nms(6);
}
Q2921175784
一周热门 更多>