专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
TI
12864显示求助
2019-08-03 21:18
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
12873
4
1072
12864显示一直出问题,背景能亮,但是无法显示。忙检测无法跳出,就算屏蔽了不执行忙检测也没有显示。刚从51转到430.求教
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
D-player
1楼-- · 2019-08-03 22:17
这是我写的12864的C文件。这个文件在51上执行没有任何问题。真心不明白啊
#include "msp430x54x.h"
#include <stdlib.h>
#include <stdio.h>
#include "PIN_DEF.H"
#include "12864.h"
#define unchar unsigned char
#define unint unsigned int
//12864初始化 控制端口置为输出
void _12864_init()
{
P3DIR|=BIT7;
P3OUT|=BIT7;
P1DIR|=BIT2;
P1OUT&=~BIT2;
RW_OUT_MOD;
E_OUT_MOD;
RS_OUT_MOD;
}
//检测忙信号
unchar busy()
{
unchar result;
unchar record;
data_in_mod;
RS_OUT_MOD;
RW_OUT_MOD;
E_OUT_MOD;
RW_H;
RS_L;
E_H;
__delay_cycles(100);
record=P4IN;
result=(unchar)(record&0x80);
E_L;
return(result);
}
//写指令
void write(unchar cmd)
{
while(busy());
RS_OUT_MOD;
RW_OUT_MOD;
E_OUT_MOD;
RS_L;
RW_L;
E_L;
__delay_cycles(100);
data_out_mod;
P4OUT=cmd;
__delay_cycles(100);
E_H;
__delay_cycles(100);
E_L;
}
//写数据
void write_data(unchar data)
{
RS_OUT_MOD;
RW_OUT_MOD;
E_OUT_MOD;
RS_H;
RW_L;
E_L;
__delay_cycles(100);
data_out_mod;
P4OUT=data;
__delay_cycles(100);
E_H;
__delay_cycles(100);
E_L;
}
//读数据
unchar read_data()
{
RS_OUT_MOD;
RW_OUT_MOD;
E_OUT_MOD;
unchar data;
while(busy());
data_in_mod;
RS_H;
RW_L;
__delay_cycles(100);
data=P4IN;
E_L;
return(data);
}
//确定基本参数如基本动作还是高级动作
void LCD_init()
{
write(0x30);
__delay_cycles(100);
write(0x0c);
__delay_cycles(100);
write(0x01);
__delay_cycles(100);
}
//基本动作显示字符的显示位子
void lcd_pos(unchar X,unchar Y)
{
unchar pos;
if(X==0)
{X=0x80;}
else if(X==1)
{X=0x90;}
else if(X==2)
{X=0x88;}
else if(X==3)
{X=0x98;}
pos=X+Y;
write(pos);
}
//清屏
void LCD_clear()
{
unchar hang,lie;
write(0x34);//开扩充指令集
for(hang=0;hang<32;hang++)
{
write(0x80+hang);//先写Y坐标
write(0x80);//写X坐标
for(lie=0;lie<16;lie++)
{
write_data(0X00);
}
}
for(hang=0;hang<32;hang++)
{
write(0x80+hang);//先写Y坐标
write(0x88);//写X坐标
//X范围0~7
for(lie=0;lie<16;lie++)
{
write_data(0X00);
}
}
write(0x36);
write(0x30);
}
加载中...
xyz549040622
2楼-- · 2019-08-03 22:41
忙检测都跳不出来?是不是时序问题呢?430的延时不够?你网上找个430的12864程序烧进去试试,但极力怀疑是不是你对430不熟悉引起的问题,所以建议你先烧别人好的工程试试
加载中...
dirtwillfly
3楼-- · 2019-08-04 02:30
好长的代码
加载中...
dirtwillfly
4楼-- · 2019-08-04 04:18
精彩回答 2 元偷偷看……
加载中...
一周热门
更多
>
相关问题
CPLD的方波输出
4 个回答
11个版本Quartus II 软件下载,安装包网盘合集,附教程,47G!
20 个回答
请大家帮忙到21IC发展大家谈支持我申请新版面
20 个回答
【通知】21ic中国电子网服务条款 (所有人员必读)
1 个回答
满载而归乙亥年,大展鸿途庚子年---集签赢好礼
20 个回答
携手ADI,踏上电子工程师之巅—车辆电气化视频,答题领奖!
1 个回答
如何提升论坛质量,看你了!
20 个回答
【最终名单】二姨家喊你来拿100份新年大礼啦~
20 个回答
相关文章
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
TI
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
#include "msp430x54x.h"
#include <stdlib.h>
#include <stdio.h>
#include "PIN_DEF.H"
#include "12864.h"
#define unchar unsigned char
#define unint unsigned int
//12864初始化 控制端口置为输出
void _12864_init()
{
P3DIR|=BIT7;
P3OUT|=BIT7;
P1DIR|=BIT2;
P1OUT&=~BIT2;
RW_OUT_MOD;
E_OUT_MOD;
RS_OUT_MOD;
}
//检测忙信号
unchar busy()
{
unchar result;
unchar record;
data_in_mod;
RS_OUT_MOD;
RW_OUT_MOD;
E_OUT_MOD;
RW_H;
RS_L;
E_H;
__delay_cycles(100);
record=P4IN;
result=(unchar)(record&0x80);
E_L;
return(result);
}
//写指令
void write(unchar cmd)
{
while(busy());
RS_OUT_MOD;
RW_OUT_MOD;
E_OUT_MOD;
RS_L;
RW_L;
E_L;
__delay_cycles(100);
data_out_mod;
P4OUT=cmd;
__delay_cycles(100);
E_H;
__delay_cycles(100);
E_L;
}
//写数据
void write_data(unchar data)
{
RS_OUT_MOD;
RW_OUT_MOD;
E_OUT_MOD;
RS_H;
RW_L;
E_L;
__delay_cycles(100);
data_out_mod;
P4OUT=data;
__delay_cycles(100);
E_H;
__delay_cycles(100);
E_L;
}
//读数据
unchar read_data()
{
RS_OUT_MOD;
RW_OUT_MOD;
E_OUT_MOD;
unchar data;
while(busy());
data_in_mod;
RS_H;
RW_L;
__delay_cycles(100);
data=P4IN;
E_L;
return(data);
}
//确定基本参数如基本动作还是高级动作
void LCD_init()
{
write(0x30);
__delay_cycles(100);
write(0x0c);
__delay_cycles(100);
write(0x01);
__delay_cycles(100);
}
//基本动作显示字符的显示位子
void lcd_pos(unchar X,unchar Y)
{
unchar pos;
if(X==0)
{X=0x80;}
else if(X==1)
{X=0x90;}
else if(X==2)
{X=0x88;}
else if(X==3)
{X=0x98;}
pos=X+Y;
write(pos);
}
//清屏
void LCD_clear()
{
unchar hang,lie;
write(0x34);//开扩充指令集
for(hang=0;hang<32;hang++)
{
write(0x80+hang);//先写Y坐标
write(0x80);//写X坐标
for(lie=0;lie<16;lie++)
{
write_data(0X00);
}
}
for(hang=0;hang<32;hang++)
{
write(0x80+hang);//先写Y坐标
write(0x88);//写X坐标
//X范围0~7
for(lie=0;lie<16;lie++)
{
write_data(0X00);
}
}
write(0x36);
write(0x30);
}
一周热门 更多>