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

📄 lcd1.c

📁 使用c51单片机制作的气象五要素采集程序 包括DS1302温度以及TLC2543、24c04
💻 C
📖 第 1 页 / 共 4 页
字号:
                        for(i=0;i<7;i++)
                        time1[i]=curtime1[i];
                        min=(time1[0]*24+time1[1])*60+time1[2];
                        if((min<min1)||(min>min2))
                        {
                                AT24C64_R(&rbuf,199,1);//读出记录号
                                record=rbuf[0]-0x30;
                                if(record==30)
                                record=0;
                                LCD_Init();
                                Battery(P1&0x03);
                                display_page3(1);//报警提示
                                //AT24C64_R(&rbuf,3,3);//读出编号
                                for(i=0;i<3;i++)
                                Displayz(84,13+i*2,receive[i+1]-0x30);
                                AT24C64_R(&rbuf,1000,1);//读出汉字的个数
                                hz_shu=rbuf[0]-0x30;
                                //test
                                //for(j=0;j<2;j++)//显示汉字
                                for(j=0;j<hz_shu;j++)//显示汉字
                                {
                                        AT24C64_R(&rbuf,1001+j*32,32);
                                        Display(108,13+j*2);
                                }
                                //test
                                //switch(1)
                                switch(checkOder())
                                {
                                        case 1: //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);
                                                Fmq=1;//蜂鸣器报警
                                                receiveFinish=0;
                                                break;
                                        case 2: //B相断线报警
                                                Displayz(132,17,82);//B
                                                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);
                                                Fmq=1;//蜂鸣器报警
                                                receiveFinish=0;
                                                break;
                                        case 3://C相断线报警
                                                Displayz(132,17,83);//C
                                                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);
                                                Fmq=1;//蜂鸣器报警
                                                receiveFinish=0;
                                                break;
                                        case 4: //太阳能报警
                                                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);
                                                Fmq=1;//蜂鸣器报警
                                                receiveFinish=0;
                                                break;
                                        case 5: //振动报警
                                                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);
                                                Fmq=1;//蜂鸣器报警
                                                receiveFinish=0;
                                                break;
                                        case 6: //红外线报警
                                                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);
                                                Fmq=1;//蜂鸣器报警
                                                receiveFinish=0;
                                                break;
                                        default:
                                                receiveFinish=0;
                                                break;
                                }
                                rbuf[0]=record+1+0x30; //记录号
                                for(i=1;i<7;i++)
                                rbuf[i]=receive[i];
                                rbuf[7]=time1[6]/10+0x30;//时间 年
                                rbuf[8]=time1[6]%10+0x30;
                                rbuf[9]=time1[4]/10+0x30;//时间 月
                                rbuf[10]=time1[4]%10+0x30;
                                rbuf[11]=time1[3]/10+0x30;//时间 日
                                rbuf[12]=time1[3]%10+0x30;
                                rbuf[13]=time1[2]/10+0x30;//时间 时
                                rbuf[14]=time1[2]%10+0x30;
                                rbuf[15]=time1[1]/10+0x30;//时间 分
                                rbuf[16]=time1[1]%10+0x30;
                                AT24C64_W(&rbuf,200+record*18,17);//报警数据
                                rbuf[0]=record+1+0x30;
                                AT24C64_W(&rbuf,199,1);//总的记录数
                                v_Get1302();
                                time=curtime1[1];
                                keyTemp = 100;
                                i=0;count1=0;
                                do
                                {
                                        keyTemp=Scan_Key();
                                        if(i >= 5)
                                        {
                                                i = 0;
                                                v_Get1302();
                                        }
                                        delay3();
                                        i++;
                                        if(curtime1[1] !=time) //时钟一分钟刷新一次
                                        {
                                                time=curtime1[1];
                                                clock();
                                                count1++;
                                        }
                                        if(count1==5) //5分钟超时退出
                                        keyTemp=20;
                                }while(keyTemp==100);
                                if(keyTemp==14)//清除键
                                {
                                        LCD_Init();
                                        Battery(P1&0x03);
                                        display_page6();
                                        v_Get1302();
                                        time=curtime1[1];
                                        keyTemp = 100;
                                        i=0;count1=0;

                                        do
                                        {
                                                keyTemp=Scan_Key();
                                                if(i >= 5)
                                                {
                                                        i = 0;
                                                        v_Get1302();
                                                }
                                                delay3();
                                                i++;
                                                if(curtime1[1] !=time)
                                                {
                                                        time=curtime1[1];
                                                        clock();
                                                        count1++;
                                                }
                                                if(count1==5)
                                                keyTemp=20;
                                        }while(keyTemp==100);
                                        if(keyTemp==13)//回车键
                                        {
                                                LCD_Init();
                                                Battery(P1&0x03);
                                                display_page1();
                                                rbuf[0]=0x31;//把1存到一个地址里
                                                AT24C64_W(&rbuf,200+record*18+17,1);
                                        }
                                        else
                                        {
                                                LCD_Init();
                                                Battery(P1&0x03);
                                                display_page1();
                                                rbuf[0]=0x30;//把0存到一个地址里
                                                AT24C64_W(&rbuf,200+record*18+17,1);
                                        }
                                        rbuf[0]=0x30;
                                }
                                else   //不是清除键
                                {
                                        LCD_Init();
                                        Battery(P1&0x03);
                                        display_page1();
                                        rbuf[0]=0x30;//把0存到一个地址里
                                        AT24C64_W(&rbuf,200+record*18+17,1);
                                }
                       } //在时间段呢
                }//接受结束
                keyTemp=Scan_Key();
                if(keyTemp==12)//MENU
                {
                        v_Get1302();
                        time=curtime1[1];
                        LCD_Init();
                        Battery(P1&0x03);
                        display_page2();
                        for(i=0;i<6;i++) //系统时间设置
                        Displayf(94,14+i*2,10+i);
                        keyTemp = 100;
                        coun=1; min1=1 ; i=0;count1=0;
                        do
                        {
                                 keyTemp=Scan_Key();
                                 if(i >= 5)
                                 {
                                         i = 0;
                                         v_Get1302();
                                 }
                                 delay3();
                                 i++;
                                 if(keyTemp==11) //down
                                 {
                                        if(coun==3)
                                        coun=1;
                                        else
                                        coun++;
                                 }
                                 if(keyTemp==10) //up
                                 {
                                        if(coun==1)
                                        coun=3;
                                        else
                                        coun--;
                                 }
                                 switch(coun)
                                 {
                                        case 1:
                                             for(i=0;i<6;i++) //系统时间设置
                                             Displayf(94,14+i*2,10+i);
                                             for(i=0;i<4;i++)//日常维护
                                             Displayz(134,14+i*2,16+i);
                                             for(i=0;i<2;i++)//设置
                                             Displayz(134,22+i*2,14+i);
                                             for(i=0;i<6;i++)//报警记录查询查询
                                             Displayz(174,14+i*2,20+i);
                                             break;
                                       case 2:
                                             for(i=0;i<6;i++) //系统时间设置
                                             Displayz(94,14+i*2,10+i);
                                             for(i=0;i<4;i++)//日常维护
                                             Displayf(134,14+i*2,16+i);
                                             for(i=0;i<2;i++)//设置
                                             Displayf(134,22+i*2,14+i);
                                             for(i=0;i<6;i++)//报警记录查询查询
                                             Displayz(174,14+i*2,20+i);
                                             break;
                                       case 3:
                                             for(i=0;i<6;i++) //系统时间设置
                                             Displayz(94,14+i*2,10+i);
                                             for(i=0;i<6;i++)//报警记录查询查询
                                             Displayf(174,14+i*2,20+i);
                                             for(i=0;i<4;i++)//日常维护
                                             Displayz(134,14+i*2,16+i);
                                             for(i=0;i<2;i++)//设置
                                             Displayz(134,22+i*2,14+i);
                                             break;
                                       default:
                                             break;
                                 }
                                 if(curtime1[1] !=time)
                                 {
                                        time=curtime1[1];
                                        clock();
                                        count1++;
                                 }
                                 if(count1==5)
                                 keyTemp=20;
                                 if((keyTemp==13)||(keyTemp==15)||(keyTemp==20))
                                 min1=0;
                        }while(min1==1);
                        if(keyTemp==13)//回车
                        {
                                v_Get1302();
                                time=curtime1[1];
                                count1=0;
                                if(coun==1)
                                {
                                        AT24C64_R(&rbuf,0,3); //判断是否是管理员
                                        for(j=0;j<3;j++)
                                        rbuf[j]=rbuf[j]-0x30;
                                        if((rbuf[0]==1)&&(rbuf[1]==2)&&(rbuf[2]==3))
                                        {
                                                LCD_Init();
                                                Battery(P1&0x03);
                                                display_page4();
                                                shezhi1();
                                        }
                               }
                               if(coun==2)
                               {
                                        LCD_Init();
                                        Battery(P1&0x03);
                                        display_page5();
                                        AT24C64_R(&rbuf,0,3);
                                        for(j=0;j<3;j++)
                                        rbuf[j]=rbuf[j]-0x30;
                                        Displayz(200,13,rbuf[0]);
                                        Displayz(200,15,rbuf[1]);
                                        Displayz(200,17,rbuf[2]);
                                        shezhi2();
                               }
                               if(coun==3)
                               {
                                        LCD_Init();
                                        Battery(P1&0x03);
                                        display_page3(2);
                                        //AT24C64_R(&rbuf,3,3);//编号
                                        //Displayz(84,13,rbuf[0]);
                                        //Displayz(84,15,rbuf[1]);
                                        //Displayz(84,17,rbuf[2]);
                                        AT24C64_R(&rbuf,1000,1);//读出汉字的个数
                                        hz_shu=rbuf[0]-0x30;
                                        //test
                                        //for(j=0;j<1;j++)//显示汉字
                                        for(j=0;j<hz_shu;j++)//显示汉字
                                        {
                                                AT24C64_R(&rbuf,1001+j*32,32);
                                                Display(108,13+j*2);
                                        }
                                        AT24C64_R(&rbuf,199,1); //记录号
                                        record=rbuf[0]-0x30;
                                        AT24C64_R(&rbuf,722,1); //第三十条记录号
                                        record1=rbuf[0]-0x30;
                                        if((record>0)&&(record1!=30))
                                        {count1=record; flag2=0;}
                                        if(record1==30)
                                        {count1=record; flag2=1;}
                                        v_Get1302();
                                        time=curtime1[1];
                                        j=0;
                                        bjcx(count1);

                                        do
                                        {
                                                keyTemp=Scan_Key();
                                                if(flag2==0)
                                                {
                                                        if((keyTemp==10))
                                                        {
                                                                count1--;
                                                                if(count1==0)
                                                                count1=record;
                                                                AT24C64_R(&rbuf,200+count1*18,18);
                                                                bjcx(count1);
                                                        }
                                                        if(keyTemp==11)
                                                        {
                                                                count1++;
                                                                if(count1>record)
                                                                count1=1;
                                                                AT24C64_R(&rbuf,200+count1*18,18);
                                                                bjcx(count1);
                                                        }
                                                }
                                                if(flag2==1)
                                                {
                                                        if(keyTemp==10)
                                                        {
                                                                count1--;
                                                                if(count1==0)
                                                                count1=30;
                                                                AT24C64_R(&rbuf,200+count1*18,18);
                                                                bjcx(count1);
                                                        }
                                                        if(keyTemp==11)
                                                        {
                                                                count1++;
                                                                if(count1==31)
                                                                count1=1;
                                                                AT24C64_R(&rbuf,200+count1*18,18);
                                                                bjcx(count1);
                                                        }
                                                }

                                                if(i >= 5)
                                                {
                                                        i = 0;
                                                        v_Get1302();
                                                }
                                                delay3();
                                                i++;
                                                if(curtime1[1] !=time)
                                                {
                                                        time=curtime1[1];
                                                        clock();
                                                        j++;
                                                }
                                                if(j==5)
                                                keyTemp=15;
                                        }while(keyTemp!=15);
                                        LCD_Init();
                                        Battery(P1&0x03);
                                        display_page1();
                                 }
                         }
                         else
                         {
                                 LCD_Init();
                                 Battery(P1&0x03);
                                 display_page1();
                         }
                 }
        }
}

⌨️ 快捷键说明

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