找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2432|回复: 7
打印 上一主题 下一主题
收起左侧

AT89S51程序下载后能正常运行,断电重启后却不能正常运行了?

[复制链接]
跳转到指定楼层
楼主
ID:476623 发表于 2020-7-8 21:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AT89S51下载后能正常运行断电重启后却不能正常运行了,不知道是哪里出问题,网上也没有搜到解决方法 。程序是1602液晶屏的,我改了一点给40266液晶屏用 ,不知道是不是程序的问。特来这里求助,请知道的指点一下。谢谢 !

就是下面这个程序:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table0[]="QQJL WEIXINDOUSHIJIAOLIUGONGJU";  //31字符
uchar code table1[]="WWWCOM WANGZJI";  //15
uchar num;
sbit lcden=P2^7;
sbit lcdrs=P2^6;
void delay(uint z)//延时函数
{
         uintx,y;
         for(x=z;x>0;x--)
                  for(y=110;y>0;y--);
}
void write_com(uchar com)//LCD写指令函数
{
         lcdrs=0;//LCDRS为低时写指令
         P0=com;//LCD数据口送指令
         delay(5);//延时5毫秒
         lcden=1;
         delay(5);
         lcden=0;
}
void write_data(uchar date)//LCD写数据函数
{
         lcdrs=1;//LCDRS为低时写数据
         P0=date;//LCD数据口送数据
         delay(5);//延时5毫秒
         lcden=1;
         delay(5);
         lcden=0;
}
void init()//初始化函数
{
         
         lcden=0;//LCD使能信号端置零
         write_com(0x38);//LCD写显示模式设置的指令
         write_com(0x06);//LCD开显示,光标不显示、不闪烁
         write_com(0x06);//当读或写一个字符后地址指针加一且光标加一,整屏显示不移动
         write_com(0x01);//数据指针和所有显示清零
   
}
void main()
{      
         init();
         //第一行显示
         write_com(0x80+0x10);//第一行第一字符位置
         for(num=0;num<31;num++)   //这个数字20就是显示字数 个数
         {
                  write_data(table0[num]);
                  delay(200);
         }
         //第二行显示
         write_com(0x80+0x50);  
         for(num=0;num<15;num++)
         {
                  write_data(table1[num]);
                  delay(200);
         }
         for(num=0;num<40;num++)  
{
   write_com(0x18);     
   delay(200);
}
  while(1);
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:584814 发表于 2020-7-9 09:58 | 只看该作者
重新刷一下单片机,疑似这货有问题。
回复

使用道具 举报

板凳
ID:282850 发表于 2020-7-9 11:36 | 只看该作者
估计是硬件问题,重点关注复位、晶振2个部分,其它MCU我遇过有时正常,有时不能开机(LCD无显示)
回复

使用道具 举报

地板
ID:798572 发表于 2020-7-9 11:45 | 只看该作者
估计是硬件问题,检查一下复位
回复

使用道具 举报

5#
ID:608600 发表于 2020-7-9 11:48 | 只看该作者
可能是硬件问题,这种问题一般出现不在代码上面
回复

使用道具 举报

6#
ID:476623 发表于 2020-7-9 21:39 | 只看该作者
谢谢楼上的回复。
我刚开始也以为是硬件的问题,做了实验应该是代码的问题,换另外的代码就正常。
又在网上搜索学习一番,严重怀疑代码有问题,可能就是最后的移屏代码次序错了。现在这样:  write_com(0x18);     
   delay(200);
}
  while(1);
}
可能应该改为:
while(1);
{  write_com(0x18);     
   delay(200);
}
马上实验可是那里的问题。
回复

使用道具 举报

7#
ID:476623 发表于 2020-7-9 22:09 | 只看该作者
刚才试验了一下语法有错误通不过,还得好好学习一看怎么办。
回复

使用道具 举报

8#
ID:476623 发表于 2020-7-14 22:25 | 只看该作者
多谢各位的回复
问题找到了就代码的问题,这个代码固定显示好用,增加移屏显示不好用,改用别的代码后就正常了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表