⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd1.c

📁 使用c51单片机制作的气象五要素采集程序 包括DS1302温度以及TLC2543、24c04
💻 C
📖 第 1 页 / 共 4 页
字号:
                       sy=20;
                       sx=164;
               }
               if(sum<10)
               Displayz(sx,sy,92);
               if((sum>0)&&(sy>=20))
               {
                        if(keyTemp==15)//后退键
                        {
                                if(sum==6)
                                {
                                        Displayz(sx,sy,93);
                                        sy=34;
                                        sx=114;
                                        Displayz(sx,sy,92);
                                        sum--;
                                        flag1=1;
                                }
                                if((sum%2==0)&&(sum!=6))
                                {sy=sy-4;sum--;
                                Displayz(sx,sy+4,93);}
                                else
                                {
                                        if(flag1==0)
                                        {sy=sy-2;sum--;
                                        Displayz(sx,sy+2,93);}
                                }
                                flag1=0;
                       }
               }
               if(keyTemp<=9)//数字键
               {
                      Displayz(sx,sy,keyTemp);
                      sum++;
                      if(sum%2==0)
                      sy=sy+4;
                      else
                      sy=sy+2;
                      rbuf[sum-1]=keyTemp;
               }
               if(i >= 5)
               {
                      i = 0;
                      v_Get1302();
               }
               delay3();
               i++;
               if(curtime1[1] !=time)
               {
                      time=curtime1[1];
                      clock();
                      count3++;
               }
               if(count3==5)
               flags=1;
               if((keyTemp==10)||(keyTemp==11)||(keyTemp==12)||(keyTemp==14))//上翻 下翻 MENU clear
               flags=1;
               if((keyTemp==13)&&(sum==10)||(flags==1))
               h=0;
        }while(h==1);
        if(flags==1)
        {
               LCD_Init();
               Battery(P1&0x03);
               display_page1();//先显示翰正科技
        }
        if(keyTemp==13)//回车键
        {
               if(sum==10) //设置系统时间
               {
                      curtime1[0]=0;
                      curtime1[1]=rbuf[8]*10+rbuf[9];
                      curtime1[2]=rbuf[6]*10+rbuf[7];
                      curtime1[3]=rbuf[4]*10+rbuf[5];
                      curtime1[4]=rbuf[2]*10+rbuf[3];
                      curtime1[5]=1;
                      curtime1[6]=rbuf[0]*10+rbuf[1];
                      v_Set1302(curtime1);
               }
               LCD_Init();
               Battery(P1&0x03);
               display_page1();//先显示翰正科技
        }
}

void shezhi2(void)
{
       uchar sx,sy,flags=0,sum=0,h=1,flag2=0,time,count3=0,i=0;
        keyTemp=100;
        sy=13;
        sx=100;
        v_Get1302();
        time=curtime1[1];
        do
        {      FeedDog();
               keyTemp=Scan_Key();
               if(sum==20)
               {
                        if(keyTemp<=9)
                        keyTemp=100;
               }
               FeedDog();
               if(sum==6)
               {
                       sy=13;
                       sx=120;
               }
               if(sum==10)
               {
                       sy=13;
                       sx=160;
               }
               if(sum==16)
               {
                       sy=13;
                       sx=180;
               }
               if(sum<20)
               Displayz(sx,sy,92);
               if((sum>0)&&(sy>=13))
               {
                        if(keyTemp==15)//后退键
                        {
                                if(sum==6)
                                {
                                        Displayz(sx,sy,93);
                                        sy=27;
                                        sx=100;
                                        Displayz(sx,sy,92);
                                        sum--;
                                        flag2=1;
                                }
                                if(sum==10)
                                {
                                        Displayz(sx,sy,93);
                                        sy=21;
                                        sx=120;
                                        Displayz(sx,sy,92);
                                        sum--;
                                        flag2=1;
                                }
                                if(sum==16)
                                {
                                        Displayz(sx,sy,93);
                                        sy=21;
                                        sx=160;
                                        Displayz(sx,sy,92);
                                        sum--;
                                        flag2=1;
                                }
                                if((sum%2==0)&&(sum!=6)&&(sum!=10)&&(sum!=16))
                                {sy=sy-4;sum--;
                                Displayz(sx,sy+4,93);}
                                else
                                {
                                        if(flag2==0)
                                        {
                                                sy=sy-2;sum--;
                                                Displayz(sx,sy+2,93);
                                        }
                                }
                                flag2=0;
                       }
               }
               if(keyTemp<=9) //数字键
               {
                      Displayz(sx,sy,keyTemp);
                      sum++;
                      if(sum%2==0)
                      sy=sy+4;
                      else
                      sy=sy+2;
                      rbuf[sum-1]=keyTemp+0x30;
               }
               if(i >= 5)
               {
                      i = 0;
                      v_Get1302();
               }
               delay3();
               i++;
               if(curtime1[1] !=time)
               {
                      time=curtime1[1];
                      clock();
                      count3++;
               }
               if(count3==5)
               flags=1;
               if((keyTemp==10)||(keyTemp==11)||(keyTemp==12)||(keyTemp==14))//上翻 下翻 MENU clear
               flags=1;
               if((keyTemp==13)&&(sum==20)||(flags==1))
               h=0;
        }while(h==1);
        if(flags==1)
        {
               LCD_Init();
               Battery(P1&0x03);
               display_page1();//先显示翰正科技
        }
        if(keyTemp==13)
        {
               if(sum==20) //保存日常维护时间
               {
                      AT24C64_W(&rbuf,100,20);
               }
               LCD_Init();
               Battery(P1&0x03);
               display_page1();//先显示翰正科技
        }
}

void bjcx(uchar n)
{
        uchar i;
        n -= 1;
        AT24C64_R(&rbuf,200+n*18,18);
        Displayz(84,13,rbuf[1]-0x30);
        Displayz(84,15,rbuf[2]-0x30);
        Displayz(84,17,rbuf[3]-0x30);
        //在时钟里读出来的(变动)并存在24c卡里
        Displayz(156,21,rbuf[7]-0x30);//年
        Displayz(156,23,rbuf[8]-0x30);
        Displayz(156,27,rbuf[9]-0x30);//月
        Displayz(156,29,rbuf[10]-0x30);
        Displayz(156,33,rbuf[11]-0x30);//日
        Displayz(156,35,rbuf[12]-0x30);
        Displayz(180,21,rbuf[13]-0x30);//时
        Displayz(180,23,rbuf[14]-0x30);
        Displayz(180,27,rbuf[15]-0x30);//分
        Displayz(180,29,rbuf[16]-0x30);
        Displayz(204,17,rbuf[17]-0x30);//未
        if(rbuf[6]==0x41)
        {        //A相断线报警
                Displayz(132,17,81);//A
                for(i=0;i<3;i++)//相断线
                Displayz(132,19+i*2,77+i);
                for(i=0;i<2;i++) //报警
                Displayz(132,25+i*2,20+i);
        }
        if(rbuf[6]==0x42)
        {        //B相断线报警
                Displayz(132,17,82);//A
                for(i=0;i<3;i++)//相断线
                Displayz(132,19+i*2,77+i);
                for(i=0;i<2;i++) //报警
                Displayz(132,25+i*2,20+i);
        }
        if(rbuf[6]==0x43)
        {        //C相断线报警
                Displayz(132,17,83);//A
                for(i=0;i<3;i++)//相断线
                Displayz(132,19+i*2,77+i);
                for(i=0;i<2;i++) //报警
                Displayz(132,25+i*2,20+i);
        }
        if(rbuf[6]==0x53)
        {        //太阳能报警
                for(i=0;i<3;i++)//太阳能
                Displayz(132,17+i*2,70+i);
                for(i=0;i<2;i++) //报警
                Displayz(132,23+i*2,20+i);
                Displayz(132,27,93);
        }
        if(rbuf[6]==0x5a)
        {        //振动报警
                for(i=0;i<2;i++)//振动
                Displayz(132,17+i*2,73+i);
                for(i=0;i<2;i++) //报警
                Displayz(132,21+i*2,20+i);
                Displayz(132,25,93);
                Displayz(132,27,93);
        }
        if(rbuf[6]==0x48)
        {
               //红外线报警
               for(i=0;i<2;i++)//红外
               Displayz(132,17+i*2,75+i);
               for(i=0;i<2;i++) //报警
               Displayz(132,21+i*2,20+i);
               Displayz(132,25,93);
               Displayz(132,27,93);
        }
}

main()
{
        //uchar rbuf[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},wbuf[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
        uchar j;
        uint i;
        uchar coun=1,count1=0,time=0,time1[7],flag2=0;
        uint min1,min2,min;
        uchar record=0,record1=0,hz_shu=0;//地址的汉字个数
        Fmq=1;
        /*
        rbuf[0]=1;rbuf[1]=2;rbuf[2]=3; //卡号
        AT24C64_W(&rbuf,0,3);

        for(i=0;i<9;i++)//读出日常维护起始设置
        rbuf[i]=i;
        AT24C64_W(&rbuf,100,9);

        for(i=0;i<9;i++)//读出日常维护结束设置
        rbuf[i]=i+2;
        AT24C64_W(&rbuf,106,9);

        rbuf[0]=1;rbuf[1]=4;rbuf[2]=5;//编号
        AT24C64_W(&rbuf,3,3);

        rbuf[0]=0+0x30;//总的记录号
        AT24C64_W(&rbuf,199,1);
        rbuf[0]=0+0x30;
        AT24C64_W(&rbuf,722,1);
        for(i=0;i<18;i++)//存的报警量
        rbuf[i]=0+0x30;
        AT24C64_W(&rbuf,200,18);
        AT24C64_W(&rbuf,218,18);
        AT24C64_W(&rbuf,236,18);
        AT24C64_W(&rbuf,254,18);
        AT24C64_W(&rbuf,272,18);
        AT24C64_W(&rbuf,290,18);
        AT24C64_W(&rbuf,308,18);
        AT24C64_W(&rbuf,326,18);
        AT24C64_W(&rbuf,344,18);
        AT24C64_W(&rbuf,362,18);
        AT24C64_W(&rbuf,380,18);
        AT24C64_W(&rbuf,398,18);
        AT24C64_W(&rbuf,416,18);
        AT24C64_W(&rbuf,434,18);
        AT24C64_W(&rbuf,452,18);
        AT24C64_W(&rbuf,470,18);
        AT24C64_W(&rbuf,488,18);
        AT24C64_W(&rbuf,506,18);
        AT24C64_W(&rbuf,524,18);
        AT24C64_W(&rbuf,542,18);
        AT24C64_W(&rbuf,560,18);
        AT24C64_W(&rbuf,578,18);
        AT24C64_W(&rbuf,596,18);
        AT24C64_W(&rbuf,614,18);
        AT24C64_W(&rbuf,632,18);
        AT24C64_W(&rbuf,650,18);
        AT24C64_W(&rbuf,668,18);
        AT24C64_W(&rbuf,686,18);
        AT24C64_W(&rbuf,704,18);
        AT24C64_W(&rbuf,722,18);*/

        uart_int();
        I2C_Init();
	LCD_Init();
        //v_Set1302(curtime1);
        v_Get1302();
        Battery(P1&0x03);
        display_page1();//先显示翰正科技
        for(i=0;i<10;i++)//延时30s
        delay3();
        AT24C64_R(&rbuf,0,3);         //读卡号
        for(j=0;j<3;j++)
        rbuf[j]=rbuf[j]-0x30;
        if((rbuf[0]==255)&&(rbuf[1]==255)&&(rbuf[2]==255))                  //为假,显示无效卡
        {
                LCD_Init();
                display_page7();//显示无效卡
                i = 0;
                do
                {
                        if(i == 5)
                        {
                               i = 0;
                               AT24C64_R(&rbuf,0,3);
                               for(j=0;j<3;j++)
                               rbuf[j]=rbuf[j]-0x30;
                        }
                        delay3();
                        i++;
                }while((rbuf[0]==255)&&(rbuf[1]==255)&&(rbuf[2]==255)) ;
                LCD_Init();
                display_page1();//先显示翰正科技
        }
        while(1)
        {
                FeedDog();
                /////////////////////////////////
                //test
                keyTemp=Scan_Key();
                //if(keyTemp == 1)
                if((receiveFinish==1)) //接收数据结束
                {
                        AT24C64_R(&rbuf,104,6);//读出日常维护起始时间 日 时 分
                        for(j=0;j<6;j++)
                        rbuf[j]=rbuf[j]-0x30;
                        min1=((rbuf[0]*10+rbuf[1])*24+rbuf[2]*10+rbuf[3])*60+rbuf[4]*10+rbuf[5];
                        AT24C64_R(&rbuf,114,6);//读出日常维护起始时间 日 时 分
                        for(j=0;j<6;j++)
                        rbuf[j]=rbuf[j]-0x30;
                        min2=((rbuf[0]*10+rbuf[1])*24+rbuf[2]*10+rbuf[3])*60+rbuf[4]*10+rbuf[5];
                        v_Get1302();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -