单片机,STC芯片,写了一个12864lcd的文字显示程序,程序下载到芯片了,可屏幕没反应,求详解释我是新手

#include<reg52.h>
#include<intrins.h>
#define ucharunsigned char
#define uintunsigned int
sbit rs=P2^2;
sbit rw=P2^3;
sbit en=P2^4;
sbit psb=P2^5;
/*********************************/
/* 1ms 延时程序(uchar 型) */
/*********************************/
void delay(uchar x)// 最大延时时间为250 毫秒
{
uchar i,j;
for(i=x;i>0;i--)
{
for(j=183;j>0;j--)
{
_nop_();
_nop_();
_nop_();
}
}
}
/*********************************/
/* 1ms 延时程序(uint 型) */
/*********************************/
void delayms(uintx) //最大延时时间为65536 毫秒
{
uint m,n;
for(m=x;m>0;m--)
{
for(n=123;n>0;n--)
{
_nop_();
_nop_();
_nop_();
}
}
}
/*********************************/
/* 12864 忙检测程序 */
/*********************************/
void r_busy()
{
P0=0xff;
rs=0;rw=1;
_nop_();
en=1;_nop_();_nop_();
while(P0&0x80);
en=0;
}
/*********************************/
/* 12864 写地址程序 */
/*********************************/
voidwrite_comm(uchar command)
{
r_busy();
rs=0;
rw=0;
P0=command;
delay(5);
en=1;
delay(5);
en=0;
}
/*********************************/
/* 12864 写数据程序 */
/*********************************/
voidwrite_date(uchar date)
{
r_busy();
rs=1;
rw=0;
P0=date;
delay(5);
en=1;
delay(5);
en=0;
}
void ledled_init()
{
psb=1; //选择液晶工作模式为并行传输
rw=0;
delay(5);
write_comm(0x30);//功能设定,8 位数据传输
delay(5);
write_comm(0x01);//清除显示
delay(50);
write_comm(0x06);
delay(1);
write_comm(0x0c);//整体显示
delay(10);
write_comm(0x02);//地址归位
delay(1);
}
void display(uchar*n,uchar k) //在液晶上显示
{
uchar i;
if(k==1)write_comm(0x80);
if(k==2)write_comm(0x90);
for(i=0;*n!='\0';i++)//直到字符串的结尾,跳出FOR 循环
write_date(*n++);
}
/********************************
*
*主函数
*
*********************************/
void main()
{
led_init();//液晶初始化
while(1)
{
display("你好",1); //液晶屏上显示“你好”2s 钟后,改为显示“好的”
delayms(2000);
display("好的",1);
delayms(2000);
}
}

void main()
{
//led_init();//液晶初始化
ledled_init();//这才是初始化的函数

while(1)
{
display("你好",1); //液晶屏上显示“你好”2s 钟后,改为显示“好的”
delayms(2000);
display("好的",1);
delayms(2000);
}
}
试试看吧,其实最好初始化下端口好一点
温馨提示:内容为网友见解,仅供参考
无其他回答

单片机,STC芯片,写了一个12864lcd的文字显示程序,程序下载到芯片了...
void main(){ \/\/led_init();\/\/液晶初始化 ledled_init();\/\/这才是初始化的函数 while(1){ display("你好",1); \/\/液晶屏上显示“你好”2s 钟后,改为显示“好的”delayms(2000);display("好的",1);delayms(2000);} } 试试看吧,其实最好初始化下端口好一点 ...

...keil软件写的LCM12864程序,用STC-ISP给单片烧程序时候很容易蓝屏...
是串口驱动的问题,开发程序,尤其是硬件这边经常跟串口打交道,一般的ghost系统由于是通用驱动,经常会在底层出问题。所以你最好重新装系统,别用ghost的,用安装的,这样就不会出驱动问题了,简单的解决方法是先用个USB转串口线试试吧。

51单片机实验,如何让LCD12864显示字符?程序如何下载到单片机里面呢?主 ...
也可以把12864的驱动程序单独编一个源文件(.c文件),添加到工程中 并用一个头文件(主要声明函数和变量)引导,主文件中包含头文件即可,编译链接不用你介入,都有是编译器的事 如我用STC12C单片机和液晶屏时:include<STC12C54.H> include<EEPROM.H> include<YEJING1602.H> 把液晶屏操作函数和EE...

为什么我插入12864写程序时,为什么STC-ISP无响应,当拔了12864烧程序时...
1,看看Stc的p1.0 p1.1端口是不是接了显示器的哪只脚,如果接了就把它断开。2,电源带载能力不够,而滤波电容过大,stc在低于某个电压时是禁止写存储器的,但可以正常执行程序。如果电源在这时能力不足,供电上不来,那肯定写不了。第一种建议禁用端口检测或者换只口,我一般都不敢用这两只脚...

stm32怎么用spi接口控制12864屏
可以。51试过以前使用12864液晶时使用单片机IO口模拟SPI总线,导致显示程序耗时多,频繁刷新屏幕有闪烁。STC新的单片机(比如STC12C5A60S2)自带有SPI总线接口,用SPI硬件驱动LCD无疑是一个很好的选择。做过LCD功能扩展的朋友们知道,LCD驱动程序的核心就是SPI通讯部分,我们只用改写这一部分程序就可以,...

ISD4004 与 LCD12864通过STC51单片机程序如何写
你想用STC单片机控制语音芯片ISD4004,用LCD12864做显示屏,估计你是想做一个音乐播放器或录音器之类的吧。这个工作量有点大,对初学者也很有难度。我的建议是:1、你要了解ISD4004,首先先去下载ISD4004的DATA SHEET,最好是同时找中文和英文的。里面肯定会有硬件电路图,也会教你怎么去控制。但是一般...

stc isp 在线编程问题
误人子弟啊,楼上。。可能是STC的驱动电流过小,不足以驱动液晶 还有就是p89c58和stc 89c51rc虽然都同属于51系列,但是内部资源多少还是有点不一样的,你应该确保移植程序时,程序不涉及不一样的功能模块 \/\/--- 楼主千万别信哈,51系列出来几十年了,功能是全球都认同的,事实上液晶驱动不需什么...

单片机的开发板只有一种吗,所有的程序都能在上面执行吗?
单片机是需要外围的电路才能工作的(比如LZ提到的开发板其实就是外围环境的一种)。不同的开发板一般外围设计也不会完全相同,因此实现相同效果的办法也不一定相同(比如以前同学的开发板上用12864液晶屏显示字符的程序放到另一个人的板子上就不行,后来分析了电路发现他们两个人的板子对液晶屏的控制一个是...

单片机程序超过8K怎么办?
这个你就需要加入外部的数据存储空间了!你可以有flash还有就是SD卡来存储你的图片什么的数据!这样程序就可以减少很多了!

单片机开发板怎么用?
1、一个CH340的USB转UART芯片,实现USB下载程序,为无串口的笔记本电脑提供下载方便。 2、板子上电源入口有一个自恢复保险丝,可以有效的保护您的电脑主板和开发板。加上这个保险,作为初学的你,即使不小心短路了,也不会烧主板和单片机。 3、板子自带单片机,一个STC89C52RC,有8K的程序空间和512字节的数据空间. ...

相似回答