| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1390 人关注过本帖
标题:基于89S52用键盘调节1602液晶光标位置的的C程序哪错了,高手请进!
只看楼主 加入收藏
canghai168
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-10-17
收藏
 问题点数:0 回复次数:4 
基于89S52用键盘调节1602液晶光标位置的的C程序哪错了,高手请进!
这是一个的用定时器计时的程序,为什么光标的位置调不了?高手请看下是程序的问题还是我液晶的问题,还请下载到自己的板子试试再回答,谢谢!!!
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
sbit RS=P2^5;
sbit RW=P2^6;
sbit E=P2^7;
sbit s1=P3^2; //一个独立按键   
uchar num,count,shi,fen,miao,s1num,flag;
uchar code table[]="  2007-7-10 MOD" ;
uchar code table1[]="   00:00:00     ";
void write_sfm(uchar ,uchar );
void delay(uchar del)//延期时
{
    int i,j;
    for(i=0; i<=del; i++)
    for(j=0; j<=2; j++)               
;
}
void write_com(uchar com)    //液晶写命令
{
     RS=0;
     P0=com;
     delay(5);
     E=1;
     delay(5);
     E=0;
}
void write_date(uchar date)     //液晶写数据
{
    RS=1;
    P0=date;
    delay(5);
    E=1;
    delay(5);
    E=0;
}
void init()   
{
    RW=0;
    E=0;
    write_com(0x38);
    write_com(0x0c);
    write_com(0x06);
    write_com(0x01);
    write_com(0x80);
    write_com(0x02);
    for(num=0;num<15;num++)
       {
        write_date(table[num]);
        delay(5);
        }
     write_com(0x80+0x40);
    for(num=0;num<16;num++)
        {
        write_date(table1[num]);
        delay(5);
        }
        TMOD=0x01;                //定时器初始化
        TH0=(65536-50000)%256;
        TL0=(65536-50000)/256;
        EA=1;
        ET0=1;
        TR0=1;
}
void time0() interrupt 1
{
        TH0=(65536-50000)%256;
        TL0=(65536-50000)/256;
        count++;
 }
void write_sfm(uchar add,uchar date )  //写入时分秒
{
    uchar shi,ge;
    shi=date/10;
    ge=date%10;
    write_com(0x80+0x40+add);
    write_date(0x30+shi);
    write_date(0x30+ge);
}
void keyscan()      //键盘扫描程序
{
    if(s1=0)
    {     
        delay(5);
        if(s1==0)
        {
            while(!s1);
            s1num++;   
            if(s1num==1)
                {
                    TR0=0;
                    write_com(0x80+0x40+10);
                    write_com(0x0f);   
                }
            if(s1num==2)
                {
                    write_com(0x80+0x40+7);
   
                }
             if(s1num==3)
                {
                    write_com(0x80+0x40+4);
   
                }
            if(s1num==4)
                {
                     TR0=1;
                     write_com(0x0c);
                }
         }
    }        
}
void main()
{
    init();
    while(1)
    {
        keyscan();
        if(count==40)
        {
            count=0;
            miao++;
            if(miao==60)
            {
                miao=0;
                fen++;
                if(fen==60)
                {
                    fen=0;
                    shi++;
                    if(shi==24)
                        shi=0;
                    write_sfm(2,shi);
                }
                write_sfm(6,fen);
            }
   
        }
        write_sfm(9,miao);


    }
}
搜索更多相关主题的帖子: 液晶 光标 键盘 
2010-10-17 12:46
canghai168
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-10-17
收藏
得分:0 
高手来没,本人正在做一个时钟板子ds1302、ds18b20,后面的程序就差光标调不了,现在连用定时器都调不了光标。。。。
2010-10-17 13:04
canghai168
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-10-17
收藏
得分:0 
有外东西写错了,你们要改下。就是在键盘扫描程序的第三行是if(s1==0)
2010-10-17 21:19
humin_qin
Rank: 2
等 级:论坛游民
帖 子:22
专家分:37
注 册:2010-11-20
收藏
得分:0 
你的液晶是怎么搞定的,能不能发个1602的程序贴?
2010-12-01 16:50
dtdt159
Rank: 1
等 级:新手上路
帖 子:9
专家分:2
注 册:2011-2-11
收藏
得分:0 
你的液晶是怎么搞定的

www.|www.|www.||www.|www.
2011-02-11 16:15
快速回复:基于89S52用键盘调节1602液晶光标位置的的C程序哪错了,高手请进!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025206 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved