找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2177|回復: 2
打印 上一主題 下一主題
收起左側(cè)

幫幫唄 怎么寫實現(xiàn)一鍵切換功能;我寫的主函數(shù)沒效果,其他函數(shù)正常

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:81211 發(fā)表于 2015-9-4 09:18 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg51.h>
#include"LCD.h"
#include"ds1302.h"
#include"temp.h"
sbit check=P1^0;


void timeLcdDisplay();
void tempLcdDisplay(int temp);
void time_transfer();
void temp_transfer();
void main()
{check=1;
        while(1)  //想在溫度和時間之間一鍵切換
        {
if(check==0)
{
Delay1ms(10);
        while(check==0)
        {temp_transfer();}

}
else{
time_transfer();

}
}}
       
void time_transfer()
{  uint a;
LcdInit();
        Ds1302Init();
        for(a=0;a<60;a++)
        {
       
        Ds1302ReadTime();
                timeLcdDisplay();       
}}
void temp_transfer()
{uint a,b;
       

       
LcdInit();                         //3êˉLCD1602
        LcdWriteCom(0x88);        //D′μ· 80±íê3êμ·
        LcdWriteData('C');
        for(a=0;a<200;a++)
        {
               
        tempLcdDisplay(Ds18b20ReadTemp());
                        Delay1ms(200);
        }}
void timeLcdDisplay()
{
        LcdWriteCom(0x80+0X40);
        LcdWriteData('0'+TIME[2]/16);                                //ê±
        LcdWriteData('0'+(TIME[2]&0x0f));                                 
        LcdWriteData('-');
        LcdWriteData('0'+TIME[1]/16);                                //·
        LcdWriteData('0'+(TIME[1]&0x0f));       
        LcdWriteData('-');
        LcdWriteData('0'+TIME[0]/16);                                //
        LcdWriteData('0'+(TIME[0]&0x0f));

        LcdWriteCom(0x80);
        LcdWriteData('2');
        LcdWriteData('0');
        LcdWriteData('0'+TIME[6]/16);                        //ê
        LcdWriteData('0'+(TIME[6]&0x0f));
        LcdWriteData('-');
        LcdWriteData('0'+TIME[4]/16);                        //
        LcdWriteData('0'+(TIME[4]&0x0f));
        LcdWriteData('-');
        LcdWriteData('0'+TIME[3]/16);                        //è
        LcdWriteData('0'+(TIME[3]&0x0f));
        LcdWriteCom(0x8D);
        LcdWriteData('0'+(TIME[5]&0x07));        //Dú                         
}
void tempLcdDisplay(int temp)
{
unsigned char datas[] = {0, 0, 0, 0, 0}; //¨òêy×é
        float tp;  
        if(temp< 0)                                //μ±èμaoêy
          {
                  LcdWriteCom(0x80);                //D′μ· 80±íê3êμ·
            LcdWriteData('-');                  //êo
                //òòaáèμèêêμêèμ21£ùò1£ùè·′ó3-
                temp=temp-1;
                temp=~temp;
                tp=temp;
                temp=tp*0.0625*100+0.5;       
                //ááDêyμí*100£+0.5êéáè£òòaCóμêy×aaDíμê±oò°Dêyμ
                //oóμêy×ˉè¥μ£21üê·′óóú0.5£+0.5oó′óóú0.5μíê1á£Dóú0.5μí
                //óé0.5£1êúDêyμoó£

          }
        else
          {                       
                  LcdWriteCom(0x80);                //D′μ· 80±íê3êμ·
            LcdWriteData('+');                 //êy
                tp=temp;//òòaêyY′|àíóDDêyμùòè3òμDí±á
                //è1èêyμ′£′yêyμ-íê21ü±éí
                temp=tp*0.0625*100+0.5;       
                //ááDêyμí*100£+0.5êéáè£òòaCóμêy×aaDíμê±oò°Dêyμ
                //oóμêy×ˉè¥μ£21üê·′óóú0.5£+0.5oó′óóú0.5μíê1á£Dóú0.5μí
                //óé0.5£1êúDêyμoó£
        }
        datas[0] = temp / 10000;
        datas[1] = temp % 10000 / 1000;
        datas[2] = temp % 1000 / 100;
        datas[3] = temp % 100 / 10;
        datas[4] = temp % 10;

        LcdWriteCom(0x82);                  //D′μ· 80±íê3êμ·
        LcdWriteData('0'+datas[0]); //°ù

       
        LcdWriteCom(0x83);                 //D′μ· 80±íê3êμ·
        LcdWriteData('0'+datas[1]); //ê

        LcdWriteCom(0x84);                //D′μ· 80±íê3êμ·
        LcdWriteData('0'+datas[2]); //

        LcdWriteCom(0x85);                //D′μ· 80±íê3êμ·
        LcdWriteData('.');                 //ê .ˉ

        LcdWriteCom(0x86);                 //D′μ· 80±íê3êμ·
        LcdWriteData('0'+datas[3]); //êDêyμ  

        LcdWriteCom(0x87);                 //D′μ· 80±íê3êμ·
        LcdWriteData('0'+datas[4]); //êDêyμ  
}




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:74784 發(fā)表于 2015-9-4 10:50 | 只看該作者
你想別人怎么幫你???
回復

使用道具 舉報

板凳
ID:81211 發(fā)表于 2015-9-4 10:59 | 只看該作者
怎么寫實現(xiàn)一鍵切換功能;我寫的主函數(shù)沒效果,其他函數(shù)正常


void main()
{
        uchar System_Mode;
       
       
        while(1)
        {
                if(key0==0)
                        System_Mode=1;
                if(key0==1)
                        System_Mode=2;
               
   switch(System_Mode)
                { case 1:
                        temp_transfer();
      break;
      case 2:
      time_transfer();
                        break;
                        default:
                        break;}
}
}
       
void time_transfer()
{
LcdInit();
        Ds1302Init();
        while(1)
        {
        Ds1302ReadTime();
                timeLcdDisplay();       
                if(key0==0) break;
        }}
void temp_transfer()
{LcdInit();                         
        LcdWriteCom(0x88);       
        LcdWriteData('C');
        while(1)
        {
        tempLcdDisplay(Ds18b20ReadTemp());
                        Delay1ms(100);
                if(key0==1) break;
        }}
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表