各位好!本人用AT89S52单片机控制12864显示几个汉字,但是只有背景亮,不显示字!现求助于大伙!谢谢! 5

#include"reg52.h"#include<stdio.h>sbitEN=P3^1;//定义读写使能信号,高电平有效sbitR_W=P3^0;//定义读写选择信号... #include"reg52.h"
#include<stdio.h>
sbit EN=P3^1; //定义读写使能信号,高电平有效
sbit R_W=P3^0; //定义读写选择信号,1为读选通,0为写选通
sbit R_S=P3^6; //数据指令选择信号,1为数据操作,0为写指令或读状态
unsigned char l,xh,dz;

/*延时子函数*/
void delay_us(long int delay_us)
{
while(delay_us --);
}

void delay_ms(long int delay_ms)
{
unsigned char a,b;
while(delay_ms)
{
for(b=4;b>0;b--)
for(a=123;a>0;a--);
}
}

/*写指令子函数*/
void write_cmd(unsigned char com)
{
delay_ms(10); //延时
R_W=0; //写选通
R_S=0; //写指令
delay_us(20); //延时
P2=com; //将要写的数据送给P2口
EN=1; //使能有效
delay_ms(10); //延时
EN=0; //关闭使能信号

}

/*写数据子函数*/
void write_data(unsigned char dat)
{
delay_ms(10); //延时
R_S=1; //数据操作
R_W=0; //写选通
delay_us(20); //延时
P2=dat; //将要写的数据送给P2口
EN=1; //使能有效
delay_ms(10); //延时
EN=0; //关闭使能信号

}
/*初始化子程序*/
void sub_int() //初始化子函数
{
// P2=0xff;
// P3=0xff;
EN=0; //关闭使能信号
delay_ms(250);
write_cmd(0x30);
delay_us(250);
write_cmd(0x30);
delay_us(80);
write_cmd(0x0f);
delay_us(250);
write_cmd(0x01);
delay_ms(50);
write_cmd(0x06);
delay_ms(10);

}

/*扩充指令集清屏*/
void clrsreen( )
{
unsigned char m,n;
write_cmd(0x34);
write_cmd(0x36);
for(m=0;m<32;m++)
{
write_cmd(m+0x80);
write_cmd(0x80);
for(n=0;n<32;n++)
{
write_data(0x00);
}
}
}
/*显示汉字子程序--正常*/
void showhz(unsigned char code *s)
{
while(*s>0)
{
write_data(*s);
s++;
delay_us(250);
}
}

/*主函数*/
void main()
{

sub_int(); //调用初始化函数进行初始化操作
clrsreen(); //扩充指令清屏
/*基本指令清屏*/
write_cmd(0x30);
write_cmd(0x01);
delay_us(50);
/*屏幕滚动显示5次*/
for(;;)

{
write_cmd(0x80);
showhz("课程设计");
delay_us(50); }}
展开
 我来答
我是chooperman
2011-12-05 · 超过21用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:58万
展开全部
编程没问题的话就是你硬件的问题了 如果你是自己买的12864装的话 可能把12864的一个对比度的引脚电压给搞错了 叫vout的脚 不是0v就是5v 你试试看
更多追问追答
追问
我的12864是买的别人集成好的!我主要考虑程序的问题,麻烦大侠看看,谢谢啊!
追答
我看过你程序 应该没问题 我上面说的也是我原来做的时候遇到的问题 你仔细看看吧
Hust_YQU
2011-12-07 · 超过10用户采纳过TA的回答
知道答主
回答量:26
采纳率:0%
帮助的人:25.8万
展开全部
程序移植的时候注意下:
时钟频率大小,这个涉及到指令周期,导致你的程序中delay时间是否同预期的一致问题。因为很多芯片对时序是有要求的,12864也是如此。
还是时序问题,比较下指令周期,不同控制器是不一样的。
引脚定义,一般这个都会考虑,但还是要仔细核对检查,有一条线错了,都可能导致屏幕点不亮。屏幕点不亮一般是时序这方面有问题——当然先排除硬件问题以及背光灯问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
生活如歌_
2011-12-05 · TA获得超过1.5万个赞
知道大有可为答主
回答量:7398
采纳率:78%
帮助的人:2193万
展开全部
你的12864是什么驱动?
追问
ST7920
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式