找回密码
 立即注册

QQ登录

只需一步,快速开始

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

妹纸求教1602问题

[复制链接]
跳转到指定楼层
楼主
ID:56673 发表于 2013-11-6 14:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问一下大神们  我用1602写了一个时钟 都正常运行了  后来想加一个一开始从右向左移动的滚动进入的程序   结果滚动显示后时钟就运行不起来了怎么回事啊……求解


#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcdrs=P1^0;
sbit lcdrw=P1^1;
sbit lcden=P2^5;
sbit dula=P2^6;
sbit wela=P2^7;
sbit K1=P3^4;
sbit K2=P3^5;
sbit K3=P3^6;  
uchar code table[]="    now is";
uchar code table1[]="   00:00:00" ;
uchar aa,shi,fen,miao,shiw,gew;
void write_sfm(uchar wei,uchar shu);
void delay(uint z)
{
uint x;
uchar y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_con(uchar com)
{
lcdrw=0;
    lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar dat)
{   
  lcdrw=0;
lcdrs=1;
P0=dat;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void keyscan()
{
uchar key;
if(K1==0)
  {
   delay(50);
   if(K1==0)
     {
    while(!K1);
    key++;
    if(key==1)
     {
      TR0=0;
      write_con(0x0f);
      write_con(0x80+0x40+10) ;
     }
    if(key==2)
     {
      write_con(0x80+0x40+7);
     }
    if(key==3)
     {
      write_con(0x80+0x40+4);
     }
    if(key==4)
     {
      key=0;
      write_con(0x0c);
      TR0=1;
     }
     
     }
      
  }
  if(key!=0)
  {
   if(K2==0)
    {
     delay(50);
     if(K2==0)
      {
          while(!K2);
       if(key==1)
        {
         miao++;
         if(miao==60)  miao=0;
         write_sfm(9,miao);
         write_con(0x80+0x40+10);
        }
       if(key==2)
        {
         fen++;
         if(fen==60)  fen=0;
         write_sfm(6,fen);
         write_con(0x80+0x40+7);
        }
       if(key==3)
        {
         shi++;
         if(shi==24)  shi=0;
         write_sfm(3,shi);
         write_con(0x80+0x40+4);
        }
      
      }
    }
   if(K3==0)
    {
     delay(50);
     if(K3==0)
      {
       while(!K3);
       if(key==1)
        {
         miao--;
         if(miao==-1)  miao=0;
         write_sfm(9,miao);
         write_con(0x80+0x40+10);
        }
       if(key==2)
        {
         fen--;
         if(fen==-1)  fen=0;
         write_sfm(6,fen);
         write_con(0x80+0x40+7);
        }
       if(key==3)
        {
         shi--;
         if(shi==-1)  shi=0;
         write_sfm(3,shi);
         write_con(0x80+0x40+4);
        }
      
      }
    }
  }      

}

void init()
{ uchar i;
dula=0;
wela=0;
write_con(0x38);   //4位总线  双行显示 5*7点阵
write_con(0x0f);   //显示开  无光标 无闪烁
write_con(0x06);   // 光标右移  字符不移动
write_con(0x01); //清屏
write_con(0x80+17);   //将数据写到隐藏地方
for(i=0;i<10;i++)
  {
   write_data(table[i]);
   delay(5);
  }
    write_con(0x80+0x40+17);   //第二行数据
delay(50);
for(i=0;i<11;i++)
  {
   write_data(table1[i]);
   delay(50);
  }
for(i=0;i<16;i++)
{
  write_con(0x18);
  delay(500);
}
TMOD=0x01;
TH0=(65535-50000)/256;
    TL0=(65535-50000)%256;
TR0=1;
EA=1;
ET0=1;


}
void time_()   interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
aa++;
}  
void write_sfm(uchar wei,uchar shu)    //在wei 处写数据 shu
{
uchar shiw,gew;
write_con(0x80+0x40+wei);
shiw=shu/10;
gew=shu%10;
write_data(0x30+shiw);
    write_data(0x30+gew);

}
main()
{  init();
while(1)
  {
   keyscan();
   if(aa==20)     
   {
    aa=0;
    miao++;
    if(miao==60)
     {
      miao=0;
      fen++;
      if(fen==60)
       {
        fen=0;
        shi++;
        if(shi==24)
         {
          shi=0;
         }
        write_sfm(3,shi);
       }
      write_sfm(6,fen);
     }
    write_sfm(9,miao);
   
   
   }   
  }
     
}

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

使用道具 举报

沙发
ID:1 发表于 2013-11-23 19:57 | 只看该作者
现在运行是什么情况?
回复

使用道具 举报

板凳
ID:153199 发表于 2016-12-24 09:24 | 只看该作者
你好你的问题解决了吗,求分享
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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