2221|6

4

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

希望各位大友们给看看 [复制链接]

#include
#define uint unsigned int
#define uchar unsigned char
sbit key1=P1^0;                  
sbit key2=P1^1;               
sbit key3=P1^2;               
sbit key4=P1^3;               
sbit lcden=P2^2;          
sbit lcdrs=P2^0;               
sbit lcdrw=P2^1;       
sbit led=P2^4;                
sbit sound=P2^5;               
uint a,b,i,min,hour,minge,minshi,hourge,hourshi,amin,ahour,aminge,aminshi,ahourge,ahourshi,sec;
//unsigned char code x[]={0xFF,0xC7,0x83,0x01,0x00,0x00,0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,0xFF};
//unsigned char code z[]={0xFF,0xE3,0xC1,0x80,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0x7F,0xFF,0xFF};
uchar code table1[]={'0','1','2','3','4','5','6','7','8','9'};
uchar code table2[]="Time:00:00      "        ;
uchar code Alarm_1[]="Alarm:00:00     ";
uchar code nul[]="                 ";
uchar num1,num2;
void delay(unsigned int xms)        //????
{
        uint i,j;                                                  
         for(i=xms;i>0;i--)
                 for(j=124;j>0;j--);
}
void write_com(uchar com)                 //?LCD命令控制
{
        delay(5) ;
        lcdrs=0;
        P0=com;
        delay(5);
        lcden=1;
        delay(5);
        lcden=0;       
}
void write_data(uchar date)                   //?LCD数据控制
{
        delay(5);
        lcdrs=1;
        P0=date;
        delay(5);
        lcden=1;
        delay(5);
        lcden=0;
}
void time()                                                               
{
        while(1)
        {
                if(key1==0)                    
                {
                         delay(10);
                        if(key1==0)
                        {
                               
                                if(hour==23)                                 //        设置时间
                                        hour=0;
                                else
                                        hour++;
                                hourge=hour%10;
                                hourshi=hour/10;
                                write_com(0x0f);
                                delay(2);
                                write_com(0x80+6);
                                write_data(table1[hourge]);
                                delay(5);
                                write_com(0x80+5);
                                delay(2);
                                write_data(table1[hourshi]);
                                while(!key1);
                                //delay(1);
                                               
                        }
                }
                if(key2==0)
                 {
                        delay(10);
                        if(key2==0)
                        {
                               
                                if(min==59)                                        //分钟设置
                                        min=0;
                                else
                                        min++;
                                minge=min%10;
                                minshi=min/10;
                                write_com(0x0f);
                                write_com(0x80+9);
                                write_data(table1[minge]);
                                delay(1);
                                write_com(0x80+8);
                                write_data(table1[minshi]);
                                delay(1);
                                while(!key2);
                               
                       
                                       
                        }
                }
                if(key3==0)
                {
                        delay(10);
                        if(key3==0)
                        {
                                write_com(0x0c);
                                TR1=1;
                                while(!key3);
                                break;       
                        }
                }
        }
}
void alarm()                                       
{
        while(1)
        {
                if(key1==0)
                {
                         delay(10);
                        if(key1==0)
                        {
                                if(ahour==24)                               
                                        ahour=0;
                                else
                                        ahour++;
                                ahourge=ahour%10;
                                ahourshi=ahour/10;
                                write_com(0x0f);
                                //delay(2);
                               
                                write_com(0x80+0x40+8);
                                write_data(':');
                                write_com(0x80+0x40+7);
                                write_data(table1[ahourge]);
                                delay(1);
                                write_com(0x80+0x40+6);
                                //delay(2);
                               
                                write_data(table1[ahourshi]);
                                delay(1);
                                while(!key1);
                        }
                }
                if(key2==0)
                 {
                        delay(10);
                        if(key2==0)
                        {
                               
                                if(amin==59)                               
                                        amin=0;
                                else
                                        amin++;
                                aminge=amin%10;
                                aminshi=amin/10;
                                write_com(0x0f);
                                //delay(2);
                                write_com(0x80+0x40+10);
                                write_data(table1[aminge]);
                                delay(1);
                                write_com(0x80+0x40+9);
                        //        delay(2);
                                write_data(table1[aminshi]);
                                delay(1);
                                while(!key2);
                        }
                }
                if(key3==0)
                {
                        delay(10);
                        if(key3==0)
                        {
                                write_com(0x0c);
                                write_com(0x80+0x40);
                                for(i=0;i<11;i++)
                                write_data(nul);
                                while(!key3);
                                break;       
                        }
                }
        }
}
void keyscan()                               
{       
         if(key1==0)                               
         {
                 delay(10);
                if(key1==0)
                {       
                        while(!key1);
                        time();
                       
                }       
        }   
         else if(key2==0)                       
         {
                 delay(10);
                if(key2==0)
                {
                        while(!key2)
                        {
                        ahourge=ahour%10;
                        ahourshi=ahour/10;
                        write_com(0x80+0x40+7);
                        write_data(table1[ahourge]);
                        delay(5);
                        write_com(0x80+0x40+6);
                        delay(2);
                        write_data(table1[ahourshi]);
                        aminge=amin%10;
                        aminshi=amin/10;
                        write_com(0x80+0x40+10);
                        write_data(table1[aminge]);
                        delay(5);
                        write_com(0x80+0x40+9);
                        delay(2);
                        write_data(table1[aminshi]);
                        write_com(0x80+0x40);
                        for(i=0;i<11;++i)
                        write_data(Alarm_1);       
                        }
                        write_com(0x80+0x40);
                        for(i=0;i<11;i++)
                        write_data(nul);
                }
         }
        else if(key3==0)                                       
         {
                 delay(10);
                if(key3==0)
                {       
                        while(!key3);
                                        ahourge=ahour%10;
                        ahourshi=ahour/10;
                        write_com(0x80+0x40+7);
                        write_data(table1[ahourge]);
                        delay(5);
                        write_com(0x80+0x40+6);
                        delay(2);
                        write_data(table1[ahourshi]);
                        aminge=amin%10;
                        aminshi=amin/10;
                        write_com(0x80+0x40+10);
                        write_data(table1[aminge]);
                        delay(5);
                        write_com(0x80+0x40+9);
                        delay(2);
                        write_data(table1[aminshi]);
                        write_com(0x80+0x40);
                        for(i=0;i<11;++i)
                        write_data(Alarm_1);       
                        alarm();
                                       
                }
         }
else if(key4==0)                                       
                 delay(5);
                if(key4==0)
                {
                        while(!key4);
                        a=a+1;
                        if(a%2==0)
                        {
                                for(b=0;b<6;b++)
                                {
                                        sound=~sound;
                                        delay(200);
                                }
                                sound=1;
                        }
                        else if(a%2==1)
                        {
                                sound=0;
                                delay(300);
                                sound=1;
                                delay(300);
                        }
                         sound=1;
                }
         }
}
void lcd_init()                       
        lcden=0;
        lcdrw=0;
        write_com(0x38);
        write_com(0x0c);
        write_com(0x06);
        write_com(0x01);
        delay(2);
        write_com(0x80);
                        for(i=0;i<16;i++)
                        {
                                write_data(table2);
                                delay(1);
                        }
}
void init()                               
        key1=1;key2=1;key3=1;key4=1;sec=0;a=0;sound=1;amin=1;
        //led=1;
        TMOD=0x11;
        TH1=0x3C;
        TL1=0xB0;
        EA=1;
        ET1=1;
        TR1=1;
}
void led1() interrupt 3               
{
        TH1=0x3C;
        TL1=0xB0;
        num1++;
        num2++;
        if(num1==10)       
        {
                num1=0;
                led=~led;
               
        }
        if(amin==min&&ahour==hour&&a%2==0)
                        sound=0;
}
void main()
{
        lcd_init();
        init();
        while(1)
        {
                keyscan();
       
        if(num2==20)               
        {
                num2=0;
                if(hour==23&&min==59&&sec==59)
                {
                        hour=0;min=0;sec=0;               
                }
                else if(sec==59&&min==59)
                {
                        sec=0;min=0;hour++;
                }
                else if(sec==59)
                {
                        sec=0;min++;
                }
                else
                        sec++;
                        minge=min%10;
                        minshi=min/10;
                        write_com(0x80+9);
                        write_data(table1[minge]);
                        delay(5);
                        write_com(0x80+8);
                //        delay(2);
                        write_data(table1[minshi]);
                        hourge=hour%10;
                        hourshi=hour/10;
                        write_com(0x80+6);
                        write_data(table1[hourge]);
                        delay(5);
                        write_com(0x80+5);
                //        delay(2);
                        write_data(table1[hourshi]);
                        write_com(0x80+7);
                        write_data(':');
                               
        }
        }
}

学友们,老师们,能给看看什么地方错了吗?给改下!


101.png (30.78 KB, 下载次数: 0)

这是什么错误,能改下吗?

这是什么错误,能改下吗?
此帖出自51单片机论坛

最新回复

把报错信息的图片发上来,是提示write_com(0x01),还是delay(2)..  详情 回复 发表于 2016-12-9 21:17
点赞 关注
 

回复
举报

3471

帖子

11

TA的资源

五彩晶圆(高级)

沙发
 
你看看,write_com 这个函数,定义和声明的地方,是不是哪里少了个分号。
此帖出自51单片机论坛
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
ienglgge 发表于 2016-12-9 20:35
你看看,write_com 这个函数,定义和声明的地方,是不是哪里少了个分号。

我看了下,没有少啊
此帖出自51单片机论坛

点评

把0x80那一行,注释掉,看看错误有什么变化。如果还是在write_com的语句上,看看函数定义,声明,以及前后是不是有语法错误。  详情 回复 发表于 2016-12-9 20:59
 
 
 

回复

3471

帖子

11

TA的资源

五彩晶圆(高级)

4
 
小小胡先生 发表于 2016-12-9 20:39
我看了下,没有少啊

把0x80那一行,注释掉,看看错误有什么变化。如果还是在write_com的语句上,看看函数定义,声明,以及前后是不是有语法错误。
此帖出自51单片机论坛
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

5
 
ienglgge 发表于 2016-12-9 20:59
把0x80那一行,注释掉,看看错误有什么变化。如果还是在write_com的语句上,看看函数定义,声明,以及前 ...

注释了就提示上一行出错
此帖出自51单片机论坛

点评

把报错信息的图片发上来,是提示write_com(0x01),还是delay(2)..  详情 回复 发表于 2016-12-9 21:17
 
 
 

回复

3471

帖子

11

TA的资源

五彩晶圆(高级)

6
 
小小胡先生 发表于 2016-12-9 21:12
注释了就提示上一行出错

把报错信息的图片发上来,是提示write_com(0x01),还是delay(2)..
此帖出自51单片机论坛
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

7
 
谢谢啦,我找到了
此帖出自51单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表