性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

開始以這里為家,寫下我電磁加熱方面工作日志。5KW小炒灶LED動(dòng)感彩屏。有源代碼

     客戶訂制5KW的小炒灶方案,客戶要求數(shù)碼管顯示檔位就行。這幾天閑著沒事就畫蛇添足做了個(gè)動(dòng)感的顯示板。很漂亮,現(xiàn)在還是在源代碼的調(diào)試和編譯中。下面是我寫的源代碼保證正確。

先對(duì)于看圖黨先看看我原來上班的公司他們的元件手冊(cè)吧,顯示效果不錯(cuò)。如果

我們企業(yè)要生產(chǎn)的話可以去掉海爾標(biāo)志換成我們自己的商標(biāo)?;蛘唠娫?。

 

硬件設(shè)計(jì)過程:

 

 

 

 

 

 

 

//-------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------
//---------------------5KW-8KW商用電磁爐.東北電取暖設(shè)備通用顯示板可以定時(shí)設(shè)定溫度-----------------------------------
//---------------------張工 15615356586 版權(quán)所有僅供學(xué)習(xí)如有轉(zhuǎn)載必須寫明本版權(quán)信息?。。?---------------------------
//------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------2013年5月11于煙臺(tái)璽萌橘子洲---------------
//------------------------------------------------------------------------------------------------------------------

#include
#define uchar unsigned char
#define uint unsigned int
#define AD_SPEED 0x60; //0110,0000   1      1     90 個(gè)時(shí)鐘周期轉(zhuǎn)換一次
typedef unsigned char INT8U;
typedef unsigned int  INT16U;
INT16U ADC_result;          //這個(gè)我從MAIN函數(shù)復(fù)制過來的。

//---------------------------------------------------------------------
INT8U get_AD_result(INT8U channel);
void delay(INT8U delay_time);       //延時(shí)函數(shù)
float cikong,ad5;  //定義兩個(gè)個(gè)flost變量,分別磁控開關(guān)AD值A(chǔ)D4 和散熱片傳感器的AD值A(chǔ)D3。 
//--------------------------------------------------------------------
                    /*0,   1,   2,  3,    4,   5,   6,  7,   8,   9,    A,   b,*/
uchar code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,}; //定義數(shù)碼管編碼
//**************************************************引腳定義******************************************************
sbit shierjiao=P2^0;     //12腳
sbit shiyijiao=P2^1;     //11腳
sbit shijiao=P2^2;     //10腳
sbit jiujiao=P2^3;     //9腳
sbit shisanjiao=P2^4;     //13腳
sbit shisijiao=P2^5;     //14腳        
sbit shiwujiao=P2^6;       //15腳
sbit shiliujiao=P2^7;        //16腳
uint fenga=500,fengb=0,fengc=0;

//**************************************************** 各種延時(shí)子函數(shù)*******************************************************
void yanshi(uint xms)//延時(shí)多久需要計(jì)算。
  {
   uint x;
    for(x=xms;x>0;x--);
  }
//******************************************************************************************************************
//**************************************************************
void delay_10us(uint t)  //延時(shí)10微秒的指令。核對(duì)過時(shí)間很準(zhǔn)確
{
uint j;
for(;t>0;t--)
for(j=6;j>0;j--);
}
//************************************************************************************************************************
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
void delay_1ms(uint z)   //延時(shí)一毫秒的指令。核對(duì)過時(shí)間很準(zhǔn)確
{
    uint x,y;
    for(x=z;x>0;x--)
    for(y=995;y>0;y--);
}
//************************************************************************************************************************
//--------------------------------------左上角循環(huán)指示燈亮--------------------------------------------------
void xunhuan(uint on)
   {
     if(on>=1)
     {
   
  }
   }


void disp(uchar dispnum)  //數(shù)碼管顯示
   {
     uchar shi,ge;
  shi=dispnum/10;
  ge=dispnum%10;
  shiwujiao=1;//關(guān)閉個(gè)位鎖存
  shiliujiao=0;//開始送入十位的顯示鎖存數(shù)據(jù)。
  P0=table[shi];//送入10位的顯示數(shù)據(jù)
  delay_1ms(1); //增加亮度下
  shiliujiao=1;   //關(guān)閉十位的鎖存不再允許十位好用。
  P0=0x00;    //清零保證不干擾其它顯示
  shiwujiao=0;    //打開各位的顯示鎖存允許各位送入數(shù)據(jù)
  P0=table[ge];//送個(gè)各位顯示數(shù)據(jù)。
  delay_1ms(1);
  shiwujiao=1;//關(guān)閉個(gè)位鎖存信息。
  P0=0x00;    //清零保證不干擾其它顯示
   }
void guoled()  //鍋具圖標(biāo)
   {
    shijiao=1;shijiao=0;//打開鍋的顯示鎖存。
 P1=0X04;//送入鍋具的顯示數(shù)據(jù)
 delay_1ms(1);//等待下保證亮度
 shijiao=1;//關(guān)閉鍋的顯示鎖存
 P1=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
   }
void taiyang() //太陽圖標(biāo)
   {
    shijiao=1;shijiao=0;//打開太陽的顯示鎖存。
 P1=0X40;//送入太陽的顯示數(shù)據(jù)
 delay_1ms(1);//等待下保證亮度
 shijiao=1;//關(guān)閉太陽的顯示鎖存
 P1=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
   }

void dianresi()  //電熱絲圖標(biāo)
   {
    shiyijiao=1;shiyijiao=0;//打開電熱絲的顯示鎖存。
 P1=0X40;//送入電熱絲的顯示數(shù)據(jù)
 delay_1ms(1);//等待下保證亮度
 shiyijiao=1;//關(guān)閉電熱絲的顯示鎖存
 P1=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
   }

void sheshidu() //攝氏度圖標(biāo)
   {
    shisijiao=1;shisijiao=0;//打開攝氏度的顯示鎖存。
 P0=0X20;//送入攝氏度的顯示數(shù)據(jù)
 delay_1ms(1);//等待下保證亮度
 shisijiao=1;//關(guān)閉攝氏度的顯示鎖存
 P0=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
   }

void xuehua()//雪花圖標(biāo)
   {
    shijiao=1;shijiao=0;//打開雪花的顯示鎖存。
 P1=0X02;//送入雪花的顯示數(shù)據(jù)
 delay_1ms(2);//等待下保證亮度
 shijiao=1;//關(guān)閉雪花的顯示鎖存
 P1=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
   }

void baowen()//保溫圖標(biāo) 鍋冒熱氣的
   {
    shijiao=1;shijiao=0;//打開保溫的顯示鎖存。
 P1=0X08;//送入保溫的顯示數(shù)據(jù)
 delay_10us(200);//等待下保證亮度
 shijiao=1;//關(guān)閉保溫的顯示鎖存
 P1=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
   } 
  //08方向右04 方向下  01方向上 02方向左邊  10風(fēng)扇中間點(diǎn)  20攝氏度 40 百分比 80信號(hào)的第三段
void fengshan ()//風(fēng)扇轉(zhuǎn)動(dòng)圖標(biāo)
   {
     shisijiao=1;shisijiao=0;//打開風(fēng)扇點(diǎn)的顯示鎖存。
  P0=0X10;//送入風(fēng)扇點(diǎn)的顯示數(shù)據(jù)
  delay_10us(1);//等待下保證亮度
  shisijiao=1;//關(guān)閉風(fēng)扇點(diǎn)的顯示鎖存
  P0=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
 //--------------------------------------------------------------------------
 //--10 空氣2
    if(fenga>=1)
  { 
     shijiao=0;//打開風(fēng)扇葉子A2的顯示鎖存。
  P1=0X20;//送入風(fēng)扇葉子的顯示數(shù)據(jù)
  delay_10us(10);//等待下保證亮度
     shijiao=1;//關(guān)閉風(fēng)扇葉子A2的顯示鎖存
  fenga--;
  if(fenga==0)
      {
  fengb=500;  //設(shè)定風(fēng)扇葉B的開啟參數(shù)
      }
  }
  if(fengb>=1)
  {
     shiyijiao=0;//打開風(fēng)扇葉子A2的顯示鎖存。
  P1=0X20;//送入風(fēng)扇葉子的顯示數(shù)據(jù)
  delay_10us(10);//等待下保證亮度
     shiyijiao=1;//關(guān)閉風(fēng)扇葉子A2的顯示鎖存
  fengb--;
  if(fengb==0)
     {
  fengc=500;  //設(shè)定風(fēng)扇葉C的開啟參數(shù)     
     }
  }
  if(fengc>=1)
  {
     shierjiao=0;//打開風(fēng)扇葉子A2的顯示鎖存。
  P1=0X20;//送入風(fēng)扇葉子的顯示數(shù)據(jù) 
  delay_10us(10);//等待下保證亮度
     shierjiao=1;//關(guān)閉風(fēng)扇葉子A2的顯示鎖存
  fengc--;
  if(fengc==0)
     {
  fenga=500;  //設(shè)定風(fēng)扇葉C的開啟參數(shù)     
     }
  }
 P0=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
 P1=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。  
}

void kaiguan(uchar kk)
   {
     if(kk==1)
   {
       jiujiao=1;
       jiujiao=0;//開打開關(guān)標(biāo)志的鎖存
       P0=0x08;
    delay_10us(8);
    jiujiao=1;//關(guān)閉開關(guān)標(biāo)志的鎖存
    P0=0x00;  //清顯示
   }
     if(kk==0)
   {
       jiujiao=1;
       jiujiao=0;//開打開關(guān)標(biāo)志的鎖存
       P0=0x40;
    delay_10us(20);
    jiujiao=1;//關(guān)閉開關(guān)標(biāo)志的鎖存
    P0=0x00;  //清顯示
   }
   }

void dingshi_led() //定時(shí)的標(biāo)志
   {
    jiujiao=1;jiujiao=0;//打開定時(shí)的顯示鎖存。
 P0=0X80;//送入定時(shí)的顯示數(shù)據(jù)
 delay_10us(2);//等待下保證亮度
 jiujiao=1;//關(guān)閉攝氏度的顯示鎖存
 P0=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
   }


void shangbiao()   //商標(biāo)的標(biāo)志
   {
    shierjiao=1;shierjiao=0;//打開商標(biāo)的顯示鎖存。
 P1=0X04;//送入商標(biāo)的顯示數(shù)據(jù)
 delay_10us(30);//等待下保證亮度
 shierjiao=1;//關(guān)閉商標(biāo)的顯示鎖存
 P1=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
   }
 
void lvye()//綠色葉子
   {
    shierjiao=1;shierjiao=0;//打開商標(biāo)的顯示鎖存。
 P1=0X04;//送入商標(biāo)的顯示數(shù)據(jù)
 delay_10us(30);//等待下保證亮度
 shierjiao=1;//關(guān)閉商標(biāo)的顯示鎖存
 P1=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
   }
  
void main()
  {

  P1M0=0Xff;
  P1M1=0X00;
 
  P0M0=0Xff;
  P0M1=0X00;
 
  P2M0=0Xff;
  P2M1=0X00;
  
  P2=0xff;
   while(1)
     {
/*         disp(27);
   guoled();
   taiyang();
   dianresi();
   sheshidu();
   sheshidu();
   xuehua();
   baowen();
*/
   fengshan();
   kaiguan(0);
   dingshi_led();
   shangbiao(); 
  }
  }

全部回復(fù)(13)
正序查看
倒序查看
2013-05-11 22:51

看到用延時(shí),還有拼音就。。。。

 

0
回復(fù)
2013-05-11 23:02
@jakehusonic
看到用延時(shí),還有拼音就。。。。 

是的。因?yàn)榇a要賣的。這樣方便客戶修改。難道我還讓客戶查單詞???道理不就一樣么??蛻舸騻€(gè)電話我不方便上網(wǎng)的話也可以告訴他改第幾行。

延時(shí)是必須的。沒有幾個(gè)人不用延時(shí)吧?只是延時(shí)形式不同罷了。 感謝回帖哈。

0
回復(fù)
my.mai
LV.9
4
2013-05-11 23:52
@wangchongpapa001
是的。因?yàn)榇a要賣的。這樣方便客戶修改。難道我還讓客戶查單詞???道理不就一樣么。客戶打個(gè)電話我不方便上網(wǎng)的話也可以告訴他改第幾行。延時(shí)是必須的。沒有幾個(gè)人不用延時(shí)吧?只是延時(shí)形式不同罷了。感謝回帖哈。
雖然我不懂程序,但是還是支持一下。
0
回復(fù)
2013-05-12 00:57
@my.mai
雖然我不懂程序,但是還是支持一下。
感謝麥工哈。嘿嘿這么晚也不休息啊
0
回復(fù)
2013-05-12 10:55

謝謝分享

0
回復(fù)
王秋冬
LV.5
7
2013-05-12 13:56
@ljw20060802
謝謝分享
留個(gè)記號(hào),下次光臨。
0
回復(fù)
2013-05-12 23:38

 

寫完了下面的是完整的。生成HEX文件就可以燒錄到芯片里面用了、

 

//-------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------
//---------------------5KW-8KW商用電磁爐.東北電取暖設(shè)備通用顯示板可以定時(shí)設(shè)定溫度-----------------------------------
//---------------------張工 15615356586 版權(quán)所有僅供學(xué)習(xí)如有轉(zhuǎn)載必須寫明本版權(quán)信息?。。?---------------------------
//------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------2013年5月11于煙臺(tái)璽萌橘子洲---------------
//------------------------------------------------------------------------------------------------------------------

#include
#define uchar unsigned char
#define uint unsigned int
#define AD_SPEED 0x60; //0110,0000   1      1     90 個(gè)時(shí)鐘周期轉(zhuǎn)換一次
typedef unsigned char INT8U;
typedef unsigned int  INT16U;
INT16U ADC_result;          //這個(gè)我從MAIN函數(shù)復(fù)制過來的。

//---------------------------------------------------------------------
INT8U get_AD_result(INT8U channel);
void delay(INT8U delay_time);       //延時(shí)函數(shù)
float cikong,ad5;  //定義兩個(gè)個(gè)flost變量,分別磁控開關(guān)AD值A(chǔ)D4 和散熱片傳感器的AD值A(chǔ)D3。 
//--------------------------------------------------------------------
                    /*0,   1,   2,  3,    4,   5,   6,  7,   8,   9,    A,   b,*/
uchar code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,}; //定義數(shù)碼管編碼
//**************************************************引腳定義******************************************************
sbit shierjiao=P2^0;     //12腳
sbit shiyijiao=P2^1;     //11腳
sbit shijiao=P2^2;     //10腳
sbit jiujiao=P2^3;     //9腳
sbit shisanjiao=P2^4;     //13腳
sbit shisijiao=P2^5;     //14腳        
sbit shiwujiao=P2^6;       //15腳
sbit shiliujiao=P2^7;        //16腳
sbit sda=P3^2; // 數(shù)據(jù)
sbit scl=P3^3; // 時(shí)鐘
sbit lock=P3^4;// 鎖
uint fenga=100,fengb=0,fengc=0,kongqi1=100,kongqi2=0,kongqi3=0,kongqi4=0,shui1=100,shui2=0,shui3=0,shui4=0,shui5=0,tt,pl;
uchar aa=0,bb=0,cc=0,dd=0,ee=0,ff=0,sudu=750,kg=0,hh=0,ll=0,rr=0,qq=0,jj=0,yy=0,dispnum,fs=0;
uint yyjiange,RXone,RXSDA,qinglingYES;
//**************************************************** 各種延時(shí)子函數(shù)*******************************************************
void yanshi(uint xms)//延時(shí)多久需要計(jì)算。
  {
   uint x;
    for(x=xms;x>0;x--);
  }
//******************************************************************************************************************
//**************************************************************
void delay_10us(uint t)  //延時(shí)10微秒的指令。核對(duì)過時(shí)間很準(zhǔn)確
{
uint j;
for(;t>0;t--)
for(j=6;j>0;j--);
}
//************************************************************************************************************************
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
void delay_1ms(uint z)   //延時(shí)一毫秒的指令。核對(duì)過時(shí)間很準(zhǔn)確
{
    uint x,y;
    for(x=z;x>0;x--)
    for(y=995;y>0;y--);
}
//************************************************************************************************************************

void disp()  //數(shù)碼管顯示
   {
     uchar shi,ge;
  shi=dispnum/10;
  ge=dispnum%10;
  shiwujiao=1;//關(guān)閉個(gè)位鎖存
  shiliujiao=0;//開始送入十位的顯示鎖存數(shù)據(jù)。
  P0=table[shi];//送入10位的顯示數(shù)據(jù)
  delay_10us(20); //增加亮度下
  shiliujiao=1;   //關(guān)閉十位的鎖存不再允許十位好用。
  P0=0x00;    //清零保證不干擾其它顯示
  shiwujiao=0;    //打開各位的顯示鎖存允許各位送入數(shù)據(jù)
  P0=table[ge];//送個(gè)各位顯示數(shù)據(jù)。
  delay_10us(20);
  shiwujiao=1;//關(guān)閉個(gè)位鎖存信息。
  P0=0x00;    //清零保證不干擾其它顯示
   }
void guoled()  //鍋具圖標(biāo)
   {
    if(aa>=1)
 {
     shijiao=1;shijiao=0;//打開鍋的顯示鎖存。
  P1=0X04;//送入鍋具的顯示數(shù)據(jù)
  delay_10us(30);//等待下保證亮度
  shijiao=1;//關(guān)閉鍋的顯示鎖存
  P1=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
 }
   }
void taiyang() //太陽圖標(biāo) 
   {
    if(bb>=1)
 {
     shijiao=1;shijiao=0;//打開太陽的顯示鎖存。
  P1=0X40;//送入太陽的顯示數(shù)據(jù)
  delay_10us(10);//等待下保證亮度
  shijiao=1;//關(guān)閉太陽的顯示鎖存
  P1=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
 }
   }

void dianresi()  //電熱絲圖標(biāo)
   {
    if(cc>=1)
 {
     shiyijiao=1;shiyijiao=0;//打開電熱絲的顯示鎖存。
  P1=0X40;//送入電熱絲的顯示數(shù)據(jù)
  delay_10us(8);//等待下保證亮度
  shiyijiao=1;//關(guān)閉電熱絲的顯示鎖存
  P1=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
 }
   }

void sheshidu() //攝氏度圖標(biāo)  
   {
    if(dd>=1)
 {
     shisijiao=1;shisijiao=0;//打開攝氏度的顯示鎖存。
  P0=0X20;//送入攝氏度的顯示數(shù)據(jù)
  delay_10us(10);//等待下保證亮度
  shisijiao=1;//關(guān)閉攝氏度的顯示鎖存
  P0=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
 }
   }

void xuehua()//雪花圖標(biāo) 
   {
    if(ee>=1)
 {
     shijiao=1;shijiao=0;//打開雪花的顯示鎖存。
  P1=0X02;//送入雪花的顯示數(shù)據(jù)
  delay_10us(40);//等待下保證亮度
  shijiao=1;//關(guān)閉雪花的顯示鎖存
  P1=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
 }
   }

void baowen()//保溫圖標(biāo) 鍋冒熱氣的 
   {
    if(ff>=1)
 {
    shijiao=1;shijiao=0;//打開保溫的顯示鎖存。
 P1=0X08;//送入保溫的顯示數(shù)據(jù)
 delay_10us(20);//等待下保證亮度
 shijiao=1;//關(guān)閉保溫的顯示鎖存
 P1=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
 }
   } 
  //08方向右04 方向下  01方向上 02方向左邊  10風(fēng)扇中間點(diǎn)  20攝氏度 40 百分比 80信號(hào)的第三段
void fengshan ()//風(fēng)扇轉(zhuǎn)動(dòng)圖標(biāo) 
   {
    if(fs>=1)
    {
     shisijiao=1;shisijiao=0;//打開風(fēng)扇點(diǎn)的顯示鎖存。
  P0=0X10;//送入風(fēng)扇點(diǎn)的顯示數(shù)據(jù)
  delay_10us(1);//等待下保證亮度
  shisijiao=1;//關(guān)閉風(fēng)扇點(diǎn)的顯示鎖存
  P0=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
 //--------------------------------------------------------------------------
 if(kongqi1>=1)
   {
     shiyijiao=0;//打開空氣1的顯示鎖存。
  P1=0X02;//送入空氣1的顯示數(shù)據(jù)
  delay_10us(10);//等待下保證亮度
     shiyijiao=1;//關(guān)閉空氣1的顯示鎖存
  kongqi1--;
  if(kongqi1==0)
      {
  kongqi2=sudu;  //設(shè)定空氣2的開啟參數(shù)
      }
  P1=0x00;//清數(shù)據(jù)防止干擾   
   }
 if(kongqi2>=1)
   {
     shiyijiao=0;//打開空氣2的顯示鎖存。
  P1=0X04;//送入空氣2的顯示數(shù)據(jù)
  delay_10us(10);//等待下保證亮度
     shiyijiao=1;//關(guān)閉空氣2的顯示鎖存
  kongqi2--;
  if(kongqi2==0)
      {
  kongqi3=sudu;  //設(shè)定空氣3的開啟參數(shù)
      }
  P1=0x00;//清數(shù)據(jù)防止干擾   
   }
 if(kongqi3>=1)
   {
     shijiao=0;//打開空氣3的顯示鎖存。
  P1=0X10;//送入空氣3的顯示數(shù)據(jù)
  delay_10us(10);//等待下保證亮度
     shijiao=1;//關(guān)閉空氣3的顯示鎖存
  kongqi3--;
  if(kongqi3==0)
      {
  kongqi4=sudu;  //設(shè)定空氣4的開啟參數(shù)
      }
  P1=0x00;//清數(shù)據(jù)防止干擾   
   }
 if(kongqi4>=1)
   {
     shiyijiao=0;//打開空氣3的顯示鎖存。
  shierjiao=0;//
  P1=0X80;//送入空氣3的顯示數(shù)據(jù)
  delay_10us(10);//等待下保證亮度
     shiyijiao=1;//關(guān)閉空氣3的顯示鎖存
  shierjiao=1;
  kongqi4--;
  if(kongqi4==0)
      {
  kongqi1=sudu;  //設(shè)定空氣4的開啟參數(shù)
      }
  P1=0x00;//清數(shù)據(jù)防止干擾   
   }
 //--10 空氣2
    if(fenga>=1)
  { 
     shijiao=0;//打開風(fēng)扇葉子A2的顯示鎖存。
  P1=0X20;//送入風(fēng)扇葉子的顯示數(shù)據(jù)
  delay_10us(10);//等待下保證亮度
     shijiao=1;//關(guān)閉風(fēng)扇葉子A2的顯示鎖存
  fenga--;
  if(fenga==0)
      {
  fengb=sudu;  //設(shè)定風(fēng)扇葉B的開啟參數(shù)
      }
  }
  if(fengb>=1)
  {
     shiyijiao=0;//打開風(fēng)扇葉子A2的顯示鎖存。
  P1=0X20;//送入風(fēng)扇葉子的顯示數(shù)據(jù)
  delay_10us(10);//等待下保證亮度
     shiyijiao=1;//關(guān)閉風(fēng)扇葉子A2的顯示鎖存
  fengb--;
  if(fengb==0)
     {
  fengc=sudu;  //設(shè)定風(fēng)扇葉C的開啟參數(shù)     
     }
  }
  if(fengc>=1)
  {
     shierjiao=0;//打開風(fēng)扇葉子A2的顯示鎖存。
  P1=0X20;//送入風(fēng)扇葉子的顯示數(shù)據(jù) 
  delay_10us(10);//等待下保證亮度
     shierjiao=1;//關(guān)閉風(fēng)扇葉子A2的顯示鎖存
  fengc--;
  if(fengc==0)
     {
  fenga=sudu;  //設(shè)定風(fēng)扇葉C的開啟參數(shù)     
     }
  }
 P0=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
 P1=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
 } 
}

void kaiguan() 
   {
     if(kg==1)
   {
       jiujiao=1;
       jiujiao=0;//開打開關(guān)標(biāo)志的鎖存
       P0=0x08;
    delay_10us(9);
    jiujiao=1;//關(guān)閉開關(guān)標(biāo)志的鎖存
    P0=0x00;  //清顯示
   }
     if(kg==0)
   {
       jiujiao=1;
       jiujiao=0;//開打開關(guān)標(biāo)志的鎖存
       P0=0x40;
    delay_10us(9);
    jiujiao=1;//關(guān)閉開關(guān)標(biāo)志的鎖存
    P0=0x00;  //清顯示
   }
   }

void dingshi_led() //定時(shí)的標(biāo)志 
   {
    if(hh>=1)
 {
    jiujiao=1;jiujiao=0;//打開定時(shí)的顯示鎖存。
 P0=0X80;//送入定時(shí)的顯示數(shù)據(jù)
 delay_10us(2);//等待下保證亮度
 jiujiao=1;//關(guān)閉攝氏度的顯示鎖存
 P0=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
 }
   }


void shangbiao()   //商標(biāo)的標(biāo)志  
   {
        if(ll>=1)
  {
     shierjiao=1;shierjiao=0;//打開商標(biāo)的顯示鎖存。
  P1=0X04;//送入商標(biāo)的顯示數(shù)據(jù)
  delay_10us(30);//等待下保證亮度
  shierjiao=1;//關(guān)閉商標(biāo)的顯示鎖存
  P1=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
  }
   }
 
void lvye()//綠色葉子  
   {
    if(rr>=1)
 {
     shierjiao=1;shierjiao=0;//打開葉子的顯示鎖存。
  P1=0X01;//送入葉子的顯示數(shù)據(jù)
  delay_10us(30);//等待下保證亮度
  shierjiao=1;//關(guān)閉葉子的顯示鎖存
  P1=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
 }
   }
 
void shuilengLED()//循環(huán)水
   {
   if(qq>=1)
   {
    if(shui1>=1)
    {
     shijiao=0;//打開循環(huán)水的顯示鎖存。
  P1=0X01;//送入循環(huán)水的顯示數(shù)據(jù)
  delay_10us(30);//等待下保證亮度
  shijiao=1;//關(guān)閉循環(huán)水的顯示鎖存
  P1=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
  shui1--;
  if(shui1==0)
     {
       shui2=100;//送入水2滅的時(shí)間
     }
     }
    if(shui2>=1)
    {
  shui2--;
  if(shui2==0)
     {
       shui3=100;//送入水3亮的時(shí)間
     }
    }
    if(shui3>=1)
    {
     shijiao=0;//打開循環(huán)水的顯示鎖存。
  P1=0X01;//送入循環(huán)水的顯示數(shù)據(jù)
  delay_10us(30);//等待下保證亮度
  shijiao=1;//關(guān)閉循環(huán)水的顯示鎖存
  P1=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
  shui3--;
  if(shui3==0)
     {
       shui4=100;//送入水4滅的時(shí)間
     }
    }
    if(shui4>=1)
    {
  shui4--;
  if(shui4==0)
     {
       shui5=1500;//送入水5亮的時(shí)間
     }
    }
    if(shui5>=1)
    {
     shijiao=0;//打開循環(huán)水的顯示鎖存。
  P1=0X01;//送入循環(huán)水的顯示數(shù)據(jù)
  delay_10us(30);//等待下保證亮度
  shijiao=1;//關(guān)閉循環(huán)水的顯示鎖存
  P1=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
  shui5--;
  if(shui5==0)
     {
       shui1=200;//送入水4滅的時(shí)間
     }
    }
  }
   }

void huoliLED() 
   {

    if(jj>=1)
 {
    shiliujiao=0;//打開火力的顯示鎖存。
 P0=0X80;//送入火力的顯示數(shù)據(jù)
 delay_10us(1);//等待下保證亮度
 shiliujiao=1;//關(guān)閉火力的顯示鎖存
  if(jj>=2)
  {
      shiwujiao=0;//打開火力的顯示鎖存。
   P1=0X80;//送入火力的顯示數(shù)據(jù)
   delay_10us(1);//等待下保證亮度
   shiwujiao=1;//關(guān)閉火力的顯示鎖存
   P1=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
   if(jj>=3)
   {
       shisijiao=0;//打開火力的顯示鎖存。
    P1=0X80;//送入火力的顯示數(shù)據(jù)
    delay_10us(1);//等待下保證亮度
    shisijiao=1;//關(guān)閉火力的顯示鎖存
    P1=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
    if(jj>=4)
    {
       shisanjiao=1;shisanjiao=0;//打開葉子的顯示鎖存。
    P1=0X80;//送入葉子的顯示數(shù)據(jù)
    delay_10us(1);//等待下保證亮度
    shisanjiao=1;//關(guān)閉葉子的顯示鎖存
    P1=0x00; //清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。
    }
   }
  }
  }
   }

void LEDdisp() //最終顯示的子函數(shù)包含了報(bào)警信息和檔位信息 
 {
   switch(yy)
      {
     case 0://關(guān)閉整個(gè)屏幕
  P1=0X00;P0=0X00;//把兩個(gè)數(shù)據(jù)總線全部給拉低
  break;
     case 1://檔位1
  dispnum=1;//送顯示數(shù)據(jù)
  break;
     case 2://檔位2
  dispnum=2;//送顯示數(shù)據(jù)
  break;
     case 3://檔位3
  dispnum=3;//送顯示數(shù)據(jù)
  break;
     case 4://檔位4
  dispnum=4;//送顯示數(shù)據(jù)
  break;
     case 5://檔位5
  dispnum=5;//送顯示數(shù)據(jù)
  break;
     case 6://檔位零
  dispnum=0;//送顯示數(shù)據(jù)
  break;
     case 7://打開循環(huán)水 水泵標(biāo)志屏幕的左上角那個(gè)
  qq=1;
  break;
     case 8://關(guān)閉循環(huán)水 水泵標(biāo)志
  qq=0;
  break;
     case 9://打開風(fēng)冷 風(fēng)扇標(biāo)志 數(shù)碼管下方的風(fēng)扇標(biāo)志
  fs=1;
  break;
     case 10://關(guān)閉 風(fēng)冷 風(fēng)扇的標(biāo)志
  fs=0;
  break;
     case 11://打開 鍋具的標(biāo)志 位于紅太陽左邊的那個(gè)有水滴標(biāo)志
  aa=1;
  break;
     case 12://關(guān)閉 鍋具的標(biāo)志
  aa=0;
  break;
     case 13://打開綠葉 炒菜標(biāo)志
  rr=1;
  break;
     case 14://關(guān)閉綠葉 炒菜標(biāo)志
  rr=0;
  break;
     case 15://定時(shí)圖標(biāo)打開
  hh=1;
  break;    
     case 16://定時(shí)圖標(biāo)關(guān)閉
  hh=0;
  break;
     case 17://攝氏度標(biāo)志打開
  dd=1;
  break;
     case 18://攝氏度標(biāo)志關(guān)閉
  dd=0;
  break;
     case 19://水量標(biāo)志1打開  需要清2 3 4段的顯示
  jj=1;
  break;
     case 20://水量標(biāo)志2打開
  jj=2;
  break;
     case 21://水量標(biāo)志3打開
  jj=3;
  break;
     case 22://水量標(biāo)志4打開
  jj=4;
  break;
     case 23://水量標(biāo)志關(guān)閉
  jj=0;
  break;
     case 24://電熱絲標(biāo)志打開
  cc=1;
  break;
     case 25://電熱絲標(biāo)志關(guān)閉
  cc=0;
  break;
     case 26://雪花標(biāo)志開
  ee=1;
  break;
     case 27://雪花標(biāo)志關(guān)
  ee=0;
  break;
     case 28://保溫標(biāo)志開
  ff=1;
  break;
     case 29://保溫標(biāo)志關(guān)
  ff=0;
  break;
     case 30://左下角開關(guān)標(biāo)志
  kg=1;
  break;
     case 31://左下角開關(guān)標(biāo)志
  kg=0;
  break;
   }

 }
 //**************************************************外部中斷*****************************
void exint0()interrupt 0
{   
 
         yy++;
  
  
}
//---------------------------------------------------------------------------------------------
void RX()
  {
    if(scl==0) //時(shí)鐘線拉低告訴MCU要接收信號(hào)了
     {
    if(qinglingYES==1)//檢測(cè)是不是允許清零
       {
      yy=0;  //把YY清零
      qinglingYES=0;//不在允許清零
    }
    if(sda==0) //如果數(shù)據(jù)線被拉低了那么就加一次數(shù)據(jù)
        {
       if(RXone>=1)//允許接收一次
       {
            yy++;//接收的數(shù)據(jù)加
      RXone=0;//防止再次接收
       }
     }
    if(sda==1)
       {
       if(RXone==0)//檢測(cè)是不是已經(jīng)打開了防止再次接收的參數(shù)
       {
         RXone=1;//允許再次接收
       }
    }
  }
 if(scl==1)
     {
   qinglingYES=1;
         LEDdisp();
      disp();
   guoled();
   taiyang();
   dianresi();
   sheshidu();
   sheshidu();
   xuehua();
   baowen();

   fengshan();
   kaiguan();
   dingshi_led();
   shangbiao();
   lvye();
  shuilengLED();
  huoliLED();
  yyjiange++;
  }
  }
//---------------------------------------------------------------------------------------------
void main()
  {

  P1M0=0Xff;
  P1M1=0X00;
 
  P0M0=0Xff;
  P0M1=0X00;
 
  P2M0=0Xff;
  P2M1=0X00;
  
  P2=0xff;
   while(1)
     {
         RX();//開始接收數(shù)據(jù)
  }
  }

0
回復(fù)
lj53
LV.5
9
2013-05-13 08:06
@wangchongpapa001
 寫完了下面的是完整的。生成HEX文件就可以燒錄到芯片里面用了、 //-------------------------------------------------------------------------------------------------------------//------------------------------------------------------------------------------------------------------------------//---------------------5KW-8KW商用電磁爐.東北電取暖設(shè)備通用顯示板可以定時(shí)設(shè)定溫度-----------------------------------//---------------------張工15615356586版權(quán)所有僅供學(xué)習(xí)如有轉(zhuǎn)載必須寫明本版權(quán)信息?。?!----------------------------//------------------------------------------------------------------------------------------------------------------//------------------------------------------------------------------------2013年5月11于煙臺(tái)璽萌橘子洲---------------//------------------------------------------------------------------------------------------------------------------#include#defineucharunsignedchar#defineuintunsignedint#defineAD_SPEED0x60;//0110,0000  1     1    90個(gè)時(shí)鐘周期轉(zhuǎn)換一次typedefunsignedcharINT8U;typedefunsignedint INT16U;INT16UADC_result;         //這個(gè)我從MAIN函數(shù)復(fù)制過來的。//---------------------------------------------------------------------INT8Uget_AD_result(INT8Uchannel);voiddelay(INT8Udelay_time);      //延時(shí)函數(shù)floatcikong,ad5; //定義兩個(gè)個(gè)flost變量,分別磁控開關(guān)AD值A(chǔ)D4 和散熱片傳感器的AD值A(chǔ)D3。 //--------------------------------------------------------------------                   /*0,  1,  2, 3,   4,  5,  6, 7,  8,  9,   A,  b,*/ucharcodetable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,};//定義數(shù)碼管編碼//**************************************************引腳定義******************************************************sbitshierjiao=P2^0;    //12腳sbitshiyijiao=P2^1;    //11腳sbitshijiao=P2^2;    //10腳sbitjiujiao=P2^3;    //9腳sbitshisanjiao=P2^4;    //13腳sbitshisijiao=P2^5;    //14腳       sbitshiwujiao=P2^6;      //15腳sbitshiliujiao=P2^7;       //16腳sbitsda=P3^2;//數(shù)據(jù)sbitscl=P3^3;//時(shí)鐘sbitlock=P3^4;//鎖uintfenga=100,fengb=0,fengc=0,kongqi1=100,kongqi2=0,kongqi3=0,kongqi4=0,shui1=100,shui2=0,shui3=0,shui4=0,shui5=0,tt,pl;ucharaa=0,bb=0,cc=0,dd=0,ee=0,ff=0,sudu=750,kg=0,hh=0,ll=0,rr=0,qq=0,jj=0,yy=0,dispnum,fs=0;uintyyjiange,RXone,RXSDA,qinglingYES;//****************************************************各種延時(shí)子函數(shù)*******************************************************voidyanshi(uintxms)//延時(shí)多久需要計(jì)算。 {  uintx;   for(x=xms;x>0;x--); }//******************************************************************************************************************//**************************************************************voiddelay_10us(uintt) //延時(shí)10微秒的指令。核對(duì)過時(shí)間很準(zhǔn)確{uintj;for(;t>0;t--)for(j=6;j>0;j--);}//************************************************************************************************************************//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@voiddelay_1ms(uintz)  //延時(shí)一毫秒的指令。核對(duì)過時(shí)間很準(zhǔn)確{   uintx,y;   for(x=z;x>0;x--)   for(y=995;y>0;y--);}//************************************************************************************************************************voiddisp() //數(shù)碼管顯示  {    ucharshi,ge; shi=dispnum/10; ge=dispnum%10; shiwujiao=1;//關(guān)閉個(gè)位鎖存 shiliujiao=0;//開始送入十位的顯示鎖存數(shù)據(jù)。 P0=table[shi];//送入10位的顯示數(shù)據(jù) delay_10us(20);//增加亮度下 shiliujiao=1;  //關(guān)閉十位的鎖存不再允許十位好用。 P0=0x00;   //清零保證不干擾其它顯示 shiwujiao=0;   //打開各位的顯示鎖存允許各位送入數(shù)據(jù) P0=table[ge];//送個(gè)各位顯示數(shù)據(jù)。 delay_10us(20); shiwujiao=1;//關(guān)閉個(gè)位鎖存信息。 P0=0x00;   //清零保證不干擾其它顯示  }voidguoled() //鍋具圖標(biāo)  {   if(aa>=1) {    shijiao=1;shijiao=0;//打開鍋的顯示鎖存。  P1=0X04;//送入鍋具的顯示數(shù)據(jù)  delay_10us(30);//等待下保證亮度  shijiao=1;//關(guān)閉鍋的顯示鎖存  P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。 }  }voidtaiyang()//太陽圖標(biāo)   {   if(bb>=1) {    shijiao=1;shijiao=0;//打開太陽的顯示鎖存。  P1=0X40;//送入太陽的顯示數(shù)據(jù)  delay_10us(10);//等待下保證亮度  shijiao=1;//關(guān)閉太陽的顯示鎖存  P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。 }  }voiddianresi() //電熱絲圖標(biāo)  {   if(cc>=1) {    shiyijiao=1;shiyijiao=0;//打開電熱絲的顯示鎖存。  P1=0X40;//送入電熱絲的顯示數(shù)據(jù)  delay_10us(8);//等待下保證亮度  shiyijiao=1;//關(guān)閉電熱絲的顯示鎖存  P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。 }  }voidsheshidu()//攝氏度圖標(biāo)    {   if(dd>=1) {    shisijiao=1;shisijiao=0;//打開攝氏度的顯示鎖存。  P0=0X20;//送入攝氏度的顯示數(shù)據(jù)  delay_10us(10);//等待下保證亮度  shisijiao=1;//關(guān)閉攝氏度的顯示鎖存  P0=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。 }  }voidxuehua()//雪花圖標(biāo)   {   if(ee>=1) {    shijiao=1;shijiao=0;//打開雪花的顯示鎖存。  P1=0X02;//送入雪花的顯示數(shù)據(jù)  delay_10us(40);//等待下保證亮度  shijiao=1;//關(guān)閉雪花的顯示鎖存  P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。 }  }voidbaowen()//保溫圖標(biāo)鍋冒熱氣的   {   if(ff>=1) {   shijiao=1;shijiao=0;//打開保溫的顯示鎖存。 P1=0X08;//送入保溫的顯示數(shù)據(jù) delay_10us(20);//等待下保證亮度 shijiao=1;//關(guān)閉保溫的顯示鎖存 P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。 }  }  //08方向右04方向下 01方向上 02方向左邊 10風(fēng)扇中間點(diǎn) 20攝氏度 40百分比80信號(hào)的第三段voidfengshan()//風(fēng)扇轉(zhuǎn)動(dòng)圖標(biāo)   {   if(fs>=1)   {    shisijiao=1;shisijiao=0;//打開風(fēng)扇點(diǎn)的顯示鎖存。  P0=0X10;//送入風(fēng)扇點(diǎn)的顯示數(shù)據(jù)  delay_10us(1);//等待下保證亮度  shisijiao=1;//關(guān)閉風(fēng)扇點(diǎn)的顯示鎖存  P0=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。 //-------------------------------------------------------------------------- if(kongqi1>=1)  {    shiyijiao=0;//打開空氣1的顯示鎖存。  P1=0X02;//送入空氣1的顯示數(shù)據(jù)  delay_10us(10);//等待下保證亮度    shiyijiao=1;//關(guān)閉空氣1的顯示鎖存  kongqi1--;  if(kongqi1==0)     {  kongqi2=sudu; //設(shè)定空氣2的開啟參數(shù)     }  P1=0x00;//清數(shù)據(jù)防止干擾     } if(kongqi2>=1)  {    shiyijiao=0;//打開空氣2的顯示鎖存。  P1=0X04;//送入空氣2的顯示數(shù)據(jù)  delay_10us(10);//等待下保證亮度    shiyijiao=1;//關(guān)閉空氣2的顯示鎖存  kongqi2--;  if(kongqi2==0)     {  kongqi3=sudu; //設(shè)定空氣3的開啟參數(shù)     }  P1=0x00;//清數(shù)據(jù)防止干擾     } if(kongqi3>=1)  {    shijiao=0;//打開空氣3的顯示鎖存。  P1=0X10;//送入空氣3的顯示數(shù)據(jù)  delay_10us(10);//等待下保證亮度    shijiao=1;//關(guān)閉空氣3的顯示鎖存  kongqi3--;  if(kongqi3==0)     {  kongqi4=sudu; //設(shè)定空氣4的開啟參數(shù)     }  P1=0x00;//清數(shù)據(jù)防止干擾     } if(kongqi4>=1)  {    shiyijiao=0;//打開空氣3的顯示鎖存。  shierjiao=0;//  P1=0X80;//送入空氣3的顯示數(shù)據(jù)  delay_10us(10);//等待下保證亮度    shiyijiao=1;//關(guān)閉空氣3的顯示鎖存  shierjiao=1;  kongqi4--;  if(kongqi4==0)     {  kongqi1=sudu; //設(shè)定空氣4的開啟參數(shù)     }  P1=0x00;//清數(shù)據(jù)防止干擾     } //--10空氣2   if(fenga>=1) {     shijiao=0;//打開風(fēng)扇葉子A2的顯示鎖存。  P1=0X20;//送入風(fēng)扇葉子的顯示數(shù)據(jù)  delay_10us(10);//等待下保證亮度    shijiao=1;//關(guān)閉風(fēng)扇葉子A2的顯示鎖存  fenga--;  if(fenga==0)     {  fengb=sudu; //設(shè)定風(fēng)扇葉B的開啟參數(shù)     } } if(fengb>=1) {    shiyijiao=0;//打開風(fēng)扇葉子A2的顯示鎖存。  P1=0X20;//送入風(fēng)扇葉子的顯示數(shù)據(jù)  delay_10us(10);//等待下保證亮度    shiyijiao=1;//關(guān)閉風(fēng)扇葉子A2的顯示鎖存  fengb--;  if(fengb==0)    {  fengc=sudu; //設(shè)定風(fēng)扇葉C的開啟參數(shù)         } } if(fengc>=1) {    shierjiao=0;//打開風(fēng)扇葉子A2的顯示鎖存。  P1=0X20;//送入風(fēng)扇葉子的顯示數(shù)據(jù)   delay_10us(10);//等待下保證亮度    shierjiao=1;//關(guān)閉風(fēng)扇葉子A2的顯示鎖存  fengc--;  if(fengc==0)    {  fenga=sudu; //設(shè)定風(fēng)扇葉C的開啟參數(shù)         } } P0=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。 P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。 } }voidkaiguan()   {    if(kg==1)  {      jiujiao=1;      jiujiao=0;//開打開關(guān)標(biāo)志的鎖存      P0=0x08;   delay_10us(9);   jiujiao=1;//關(guān)閉開關(guān)標(biāo)志的鎖存   P0=0x00; //清顯示  }    if(kg==0)  {      jiujiao=1;      jiujiao=0;//開打開關(guān)標(biāo)志的鎖存      P0=0x40;   delay_10us(9);   jiujiao=1;//關(guān)閉開關(guān)標(biāo)志的鎖存   P0=0x00; //清顯示  }  }voiddingshi_led() //定時(shí)的標(biāo)志   {   if(hh>=1) {   jiujiao=1;jiujiao=0;//打開定時(shí)的顯示鎖存。 P0=0X80;//送入定時(shí)的顯示數(shù)據(jù) delay_10us(2);//等待下保證亮度 jiujiao=1;//關(guān)閉攝氏度的顯示鎖存 P0=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。 }  }voidshangbiao()  //商標(biāo)的標(biāo)志    {       if(ll>=1)  {    shierjiao=1;shierjiao=0;//打開商標(biāo)的顯示鎖存。  P1=0X04;//送入商標(biāo)的顯示數(shù)據(jù)  delay_10us(30);//等待下保證亮度  shierjiao=1;//關(guān)閉商標(biāo)的顯示鎖存  P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。  }  } voidlvye()//綠色葉子    {   if(rr>=1) {    shierjiao=1;shierjiao=0;//打開葉子的顯示鎖存。  P1=0X01;//送入葉子的顯示數(shù)據(jù)  delay_10us(30);//等待下保證亮度  shierjiao=1;//關(guān)閉葉子的顯示鎖存  P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。 }  } voidshuilengLED()//循環(huán)水  {  if(qq>=1)  {   if(shui1>=1)   {    shijiao=0;//打開循環(huán)水的顯示鎖存。  P1=0X01;//送入循環(huán)水的顯示數(shù)據(jù)  delay_10us(30);//等待下保證亮度  shijiao=1;//關(guān)閉循環(huán)水的顯示鎖存  P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。  shui1--;  if(shui1==0)    {      shui2=100;//送入水2滅的時(shí)間    }    }   if(shui2>=1)   {  shui2--;  if(shui2==0)    {      shui3=100;//送入水3亮的時(shí)間    }   }   if(shui3>=1)   {    shijiao=0;//打開循環(huán)水的顯示鎖存。  P1=0X01;//送入循環(huán)水的顯示數(shù)據(jù)  delay_10us(30);//等待下保證亮度  shijiao=1;//關(guān)閉循環(huán)水的顯示鎖存  P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。  shui3--;  if(shui3==0)    {      shui4=100;//送入水4滅的時(shí)間    }   }   if(shui4>=1)   {  shui4--;  if(shui4==0)    {      shui5=1500;//送入水5亮的時(shí)間    }   }   if(shui5>=1)   {    shijiao=0;//打開循環(huán)水的顯示鎖存。  P1=0X01;//送入循環(huán)水的顯示數(shù)據(jù)  delay_10us(30);//等待下保證亮度  shijiao=1;//關(guān)閉循環(huán)水的顯示鎖存  P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。  shui5--;  if(shui5==0)    {      shui1=200;//送入水4滅的時(shí)間    }   } }  }voidhuoliLED()   {   if(jj>=1) {   shiliujiao=0;//打開火力的顯示鎖存。 P0=0X80;//送入火力的顯示數(shù)據(jù) delay_10us(1);//等待下保證亮度 shiliujiao=1;//關(guān)閉火力的顯示鎖存  if(jj>=2)  {     shiwujiao=0;//打開火力的顯示鎖存。   P1=0X80;//送入火力的顯示數(shù)據(jù)   delay_10us(1);//等待下保證亮度   shiwujiao=1;//關(guān)閉火力的顯示鎖存   P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。   if(jj>=3)   {      shisijiao=0;//打開火力的顯示鎖存。    P1=0X80;//送入火力的顯示數(shù)據(jù)    delay_10us(1);//等待下保證亮度    shisijiao=1;//關(guān)閉火力的顯示鎖存    P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。    if(jj>=4)    {      shisanjiao=1;shisanjiao=0;//打開葉子的顯示鎖存。    P1=0X80;//送入葉子的顯示數(shù)據(jù)    delay_10us(1);//等待下保證亮度    shisanjiao=1;//關(guān)閉葉子的顯示鎖存    P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。    }   }  } }  }voidLEDdisp()//最終顯示的子函數(shù)包含了報(bào)警信息和檔位信息  {  switch(yy)     {    case0://關(guān)閉整個(gè)屏幕  P1=0X00;P0=0X00;//把兩個(gè)數(shù)據(jù)總線全部給拉低  break;    case1://檔位1  dispnum=1;//送顯示數(shù)據(jù)  break;    case2://檔位2  dispnum=2;//送顯示數(shù)據(jù)  break;    case3://檔位3  dispnum=3;//送顯示數(shù)據(jù)  break;    case4://檔位4  dispnum=4;//送顯示數(shù)據(jù)  break;    case5://檔位5  dispnum=5;//送顯示數(shù)據(jù)  break;    case6://檔位零  dispnum=0;//送顯示數(shù)據(jù)  break;    case7://打開循環(huán)水水泵標(biāo)志屏幕的左上角那個(gè)  qq=1;  break;    case8://關(guān)閉循環(huán)水水泵標(biāo)志  qq=0;  break;    case9://打開風(fēng)冷風(fēng)扇標(biāo)志數(shù)碼管下方的風(fēng)扇標(biāo)志  fs=1;  break;    case10://關(guān)閉風(fēng)冷風(fēng)扇的標(biāo)志  fs=0;  break;    case11://打開鍋具的標(biāo)志位于紅太陽左邊的那個(gè)有水滴標(biāo)志  aa=1;  break;    case12://關(guān)閉鍋具的標(biāo)志  aa=0;  break;    case13://打開綠葉炒菜標(biāo)志  rr=1;  break;    case14://關(guān)閉綠葉炒菜標(biāo)志  rr=0;  break;    case15://定時(shí)圖標(biāo)打開  hh=1;  break;        case16://定時(shí)圖標(biāo)關(guān)閉  hh=0;  break;    case17://攝氏度標(biāo)志打開  dd=1;  break;    case18://攝氏度標(biāo)志關(guān)閉  dd=0;  break;    case19://水量標(biāo)志1打開 需要清234段的顯示  jj=1;  break;    case20://水量標(biāo)志2打開  jj=2;  break;    case21://水量標(biāo)志3打開  jj=3;  break;    case22://水量標(biāo)志4打開  jj=4;  break;    case23://水量標(biāo)志關(guān)閉  jj=0;  break;    case24://電熱絲標(biāo)志打開  cc=1;  break;    case25://電熱絲標(biāo)志關(guān)閉  cc=0;  break;    case26://雪花標(biāo)志開  ee=1;  break;    case27://雪花標(biāo)志關(guān)  ee=0;  break;    case28://保溫標(biāo)志開  ff=1;  break;    case29://保溫標(biāo)志關(guān)  ff=0;  break;    case30://左下角開關(guān)標(biāo)志  kg=1;  break;    case31://左下角開關(guān)標(biāo)志  kg=0;  break;  } } //**************************************************外部中斷*****************************voidexint0()interrupt0{           yy++;    }//---------------------------------------------------------------------------------------------voidRX() {   if(scl==0)//時(shí)鐘線拉低告訴MCU要接收信號(hào)了    {   if(qinglingYES==1)//檢測(cè)是不是允許清零      {     yy=0; //把YY清零     qinglingYES=0;//不在允許清零   }   if(sda==0)//如果數(shù)據(jù)線被拉低了那么就加一次數(shù)據(jù)       {      if(RXone>=1)//允許接收一次      {           yy++;//接收的數(shù)據(jù)加     RXone=0;//防止再次接收      }    }   if(sda==1)      {      if(RXone==0)//檢測(cè)是不是已經(jīng)打開了防止再次接收的參數(shù)      {        RXone=1;//允許再次接收      }   }  } if(scl==1)    {  qinglingYES=1;        LEDdisp();     disp();  guoled();  taiyang();  dianresi();  sheshidu();  sheshidu();  xuehua();  baowen();  fengshan();  kaiguan();  dingshi_led();  shangbiao();  lvye();  shuilengLED();  huoliLED();  yyjiange++;  } }//---------------------------------------------------------------------------------------------voidmain() { P1M0=0Xff; P1M1=0X00;  P0M0=0Xff; P0M1=0X00;  P2M0=0Xff; P2M1=0X00;   P2=0xff;  while(1)    {        RX();//開始接收數(shù)據(jù) } }
來頂一頂...我也不懂程序
0
回復(fù)
firefox886
LV.9
10
2013-05-13 09:29
@wangchongpapa001
是的。因?yàn)榇a要賣的。這樣方便客戶修改。難道我還讓客戶查單詞啊?道理不就一樣么??蛻舸騻€(gè)電話我不方便上網(wǎng)的話也可以告訴他改第幾行。延時(shí)是必須的。沒有幾個(gè)人不用延時(shí)吧?只是延時(shí)形式不同罷了。感謝回帖哈。
延時(shí)是要用的,但是一般工程上不會(huì)你這么搞,用定時(shí)器延時(shí)?。?/div>
0
回復(fù)
2013-05-18 14:38
@wangchongpapa001
 寫完了下面的是完整的。生成HEX文件就可以燒錄到芯片里面用了、 //-------------------------------------------------------------------------------------------------------------//------------------------------------------------------------------------------------------------------------------//---------------------5KW-8KW商用電磁爐.東北電取暖設(shè)備通用顯示板可以定時(shí)設(shè)定溫度-----------------------------------//---------------------張工15615356586版權(quán)所有僅供學(xué)習(xí)如有轉(zhuǎn)載必須寫明本版權(quán)信息?。?!----------------------------//------------------------------------------------------------------------------------------------------------------//------------------------------------------------------------------------2013年5月11于煙臺(tái)璽萌橘子洲---------------//------------------------------------------------------------------------------------------------------------------#include#defineucharunsignedchar#defineuintunsignedint#defineAD_SPEED0x60;//0110,0000  1     1    90個(gè)時(shí)鐘周期轉(zhuǎn)換一次typedefunsignedcharINT8U;typedefunsignedint INT16U;INT16UADC_result;         //這個(gè)我從MAIN函數(shù)復(fù)制過來的。//---------------------------------------------------------------------INT8Uget_AD_result(INT8Uchannel);voiddelay(INT8Udelay_time);      //延時(shí)函數(shù)floatcikong,ad5; //定義兩個(gè)個(gè)flost變量,分別磁控開關(guān)AD值A(chǔ)D4 和散熱片傳感器的AD值A(chǔ)D3。 //--------------------------------------------------------------------                   /*0,  1,  2, 3,   4,  5,  6, 7,  8,  9,   A,  b,*/ucharcodetable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,};//定義數(shù)碼管編碼//**************************************************引腳定義******************************************************sbitshierjiao=P2^0;    //12腳sbitshiyijiao=P2^1;    //11腳sbitshijiao=P2^2;    //10腳sbitjiujiao=P2^3;    //9腳sbitshisanjiao=P2^4;    //13腳sbitshisijiao=P2^5;    //14腳       sbitshiwujiao=P2^6;      //15腳sbitshiliujiao=P2^7;       //16腳sbitsda=P3^2;//數(shù)據(jù)sbitscl=P3^3;//時(shí)鐘sbitlock=P3^4;//鎖uintfenga=100,fengb=0,fengc=0,kongqi1=100,kongqi2=0,kongqi3=0,kongqi4=0,shui1=100,shui2=0,shui3=0,shui4=0,shui5=0,tt,pl;ucharaa=0,bb=0,cc=0,dd=0,ee=0,ff=0,sudu=750,kg=0,hh=0,ll=0,rr=0,qq=0,jj=0,yy=0,dispnum,fs=0;uintyyjiange,RXone,RXSDA,qinglingYES;//****************************************************各種延時(shí)子函數(shù)*******************************************************voidyanshi(uintxms)//延時(shí)多久需要計(jì)算。 {  uintx;   for(x=xms;x>0;x--); }//******************************************************************************************************************//**************************************************************voiddelay_10us(uintt) //延時(shí)10微秒的指令。核對(duì)過時(shí)間很準(zhǔn)確{uintj;for(;t>0;t--)for(j=6;j>0;j--);}//************************************************************************************************************************//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@voiddelay_1ms(uintz)  //延時(shí)一毫秒的指令。核對(duì)過時(shí)間很準(zhǔn)確{   uintx,y;   for(x=z;x>0;x--)   for(y=995;y>0;y--);}//************************************************************************************************************************voiddisp() //數(shù)碼管顯示  {    ucharshi,ge; shi=dispnum/10; ge=dispnum%10; shiwujiao=1;//關(guān)閉個(gè)位鎖存 shiliujiao=0;//開始送入十位的顯示鎖存數(shù)據(jù)。 P0=table[shi];//送入10位的顯示數(shù)據(jù) delay_10us(20);//增加亮度下 shiliujiao=1;  //關(guān)閉十位的鎖存不再允許十位好用。 P0=0x00;   //清零保證不干擾其它顯示 shiwujiao=0;   //打開各位的顯示鎖存允許各位送入數(shù)據(jù) P0=table[ge];//送個(gè)各位顯示數(shù)據(jù)。 delay_10us(20); shiwujiao=1;//關(guān)閉個(gè)位鎖存信息。 P0=0x00;   //清零保證不干擾其它顯示  }voidguoled() //鍋具圖標(biāo)  {   if(aa>=1) {    shijiao=1;shijiao=0;//打開鍋的顯示鎖存。  P1=0X04;//送入鍋具的顯示數(shù)據(jù)  delay_10us(30);//等待下保證亮度  shijiao=1;//關(guān)閉鍋的顯示鎖存  P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。 }  }voidtaiyang()//太陽圖標(biāo)   {   if(bb>=1) {    shijiao=1;shijiao=0;//打開太陽的顯示鎖存。  P1=0X40;//送入太陽的顯示數(shù)據(jù)  delay_10us(10);//等待下保證亮度  shijiao=1;//關(guān)閉太陽的顯示鎖存  P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。 }  }voiddianresi() //電熱絲圖標(biāo)  {   if(cc>=1) {    shiyijiao=1;shiyijiao=0;//打開電熱絲的顯示鎖存。  P1=0X40;//送入電熱絲的顯示數(shù)據(jù)  delay_10us(8);//等待下保證亮度  shiyijiao=1;//關(guān)閉電熱絲的顯示鎖存  P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。 }  }voidsheshidu()//攝氏度圖標(biāo)    {   if(dd>=1) {    shisijiao=1;shisijiao=0;//打開攝氏度的顯示鎖存。  P0=0X20;//送入攝氏度的顯示數(shù)據(jù)  delay_10us(10);//等待下保證亮度  shisijiao=1;//關(guān)閉攝氏度的顯示鎖存  P0=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。 }  }voidxuehua()//雪花圖標(biāo)   {   if(ee>=1) {    shijiao=1;shijiao=0;//打開雪花的顯示鎖存。  P1=0X02;//送入雪花的顯示數(shù)據(jù)  delay_10us(40);//等待下保證亮度  shijiao=1;//關(guān)閉雪花的顯示鎖存  P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。 }  }voidbaowen()//保溫圖標(biāo)鍋冒熱氣的   {   if(ff>=1) {   shijiao=1;shijiao=0;//打開保溫的顯示鎖存。 P1=0X08;//送入保溫的顯示數(shù)據(jù) delay_10us(20);//等待下保證亮度 shijiao=1;//關(guān)閉保溫的顯示鎖存 P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。 }  }  //08方向右04方向下 01方向上 02方向左邊 10風(fēng)扇中間點(diǎn) 20攝氏度 40百分比80信號(hào)的第三段voidfengshan()//風(fēng)扇轉(zhuǎn)動(dòng)圖標(biāo)   {   if(fs>=1)   {    shisijiao=1;shisijiao=0;//打開風(fēng)扇點(diǎn)的顯示鎖存。  P0=0X10;//送入風(fēng)扇點(diǎn)的顯示數(shù)據(jù)  delay_10us(1);//等待下保證亮度  shisijiao=1;//關(guān)閉風(fēng)扇點(diǎn)的顯示鎖存  P0=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。 //-------------------------------------------------------------------------- if(kongqi1>=1)  {    shiyijiao=0;//打開空氣1的顯示鎖存。  P1=0X02;//送入空氣1的顯示數(shù)據(jù)  delay_10us(10);//等待下保證亮度    shiyijiao=1;//關(guān)閉空氣1的顯示鎖存  kongqi1--;  if(kongqi1==0)     {  kongqi2=sudu; //設(shè)定空氣2的開啟參數(shù)     }  P1=0x00;//清數(shù)據(jù)防止干擾     } if(kongqi2>=1)  {    shiyijiao=0;//打開空氣2的顯示鎖存。  P1=0X04;//送入空氣2的顯示數(shù)據(jù)  delay_10us(10);//等待下保證亮度    shiyijiao=1;//關(guān)閉空氣2的顯示鎖存  kongqi2--;  if(kongqi2==0)     {  kongqi3=sudu; //設(shè)定空氣3的開啟參數(shù)     }  P1=0x00;//清數(shù)據(jù)防止干擾     } if(kongqi3>=1)  {    shijiao=0;//打開空氣3的顯示鎖存。  P1=0X10;//送入空氣3的顯示數(shù)據(jù)  delay_10us(10);//等待下保證亮度    shijiao=1;//關(guān)閉空氣3的顯示鎖存  kongqi3--;  if(kongqi3==0)     {  kongqi4=sudu; //設(shè)定空氣4的開啟參數(shù)     }  P1=0x00;//清數(shù)據(jù)防止干擾     } if(kongqi4>=1)  {    shiyijiao=0;//打開空氣3的顯示鎖存。  shierjiao=0;//  P1=0X80;//送入空氣3的顯示數(shù)據(jù)  delay_10us(10);//等待下保證亮度    shiyijiao=1;//關(guān)閉空氣3的顯示鎖存  shierjiao=1;  kongqi4--;  if(kongqi4==0)     {  kongqi1=sudu; //設(shè)定空氣4的開啟參數(shù)     }  P1=0x00;//清數(shù)據(jù)防止干擾     } //--10空氣2   if(fenga>=1) {     shijiao=0;//打開風(fēng)扇葉子A2的顯示鎖存。  P1=0X20;//送入風(fēng)扇葉子的顯示數(shù)據(jù)  delay_10us(10);//等待下保證亮度    shijiao=1;//關(guān)閉風(fēng)扇葉子A2的顯示鎖存  fenga--;  if(fenga==0)     {  fengb=sudu; //設(shè)定風(fēng)扇葉B的開啟參數(shù)     } } if(fengb>=1) {    shiyijiao=0;//打開風(fēng)扇葉子A2的顯示鎖存。  P1=0X20;//送入風(fēng)扇葉子的顯示數(shù)據(jù)  delay_10us(10);//等待下保證亮度    shiyijiao=1;//關(guān)閉風(fēng)扇葉子A2的顯示鎖存  fengb--;  if(fengb==0)    {  fengc=sudu; //設(shè)定風(fēng)扇葉C的開啟參數(shù)         } } if(fengc>=1) {    shierjiao=0;//打開風(fēng)扇葉子A2的顯示鎖存。  P1=0X20;//送入風(fēng)扇葉子的顯示數(shù)據(jù)   delay_10us(10);//等待下保證亮度    shierjiao=1;//關(guān)閉風(fēng)扇葉子A2的顯示鎖存  fengc--;  if(fengc==0)    {  fenga=sudu; //設(shè)定風(fēng)扇葉C的開啟參數(shù)         } } P0=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。 P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。 } }voidkaiguan()   {    if(kg==1)  {      jiujiao=1;      jiujiao=0;//開打開關(guān)標(biāo)志的鎖存      P0=0x08;   delay_10us(9);   jiujiao=1;//關(guān)閉開關(guān)標(biāo)志的鎖存   P0=0x00; //清顯示  }    if(kg==0)  {      jiujiao=1;      jiujiao=0;//開打開關(guān)標(biāo)志的鎖存      P0=0x40;   delay_10us(9);   jiujiao=1;//關(guān)閉開關(guān)標(biāo)志的鎖存   P0=0x00; //清顯示  }  }voiddingshi_led() //定時(shí)的標(biāo)志   {   if(hh>=1) {   jiujiao=1;jiujiao=0;//打開定時(shí)的顯示鎖存。 P0=0X80;//送入定時(shí)的顯示數(shù)據(jù) delay_10us(2);//等待下保證亮度 jiujiao=1;//關(guān)閉攝氏度的顯示鎖存 P0=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。 }  }voidshangbiao()  //商標(biāo)的標(biāo)志    {       if(ll>=1)  {    shierjiao=1;shierjiao=0;//打開商標(biāo)的顯示鎖存。  P1=0X04;//送入商標(biāo)的顯示數(shù)據(jù)  delay_10us(30);//等待下保證亮度  shierjiao=1;//關(guān)閉商標(biāo)的顯示鎖存  P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。  }  } voidlvye()//綠色葉子    {   if(rr>=1) {    shierjiao=1;shierjiao=0;//打開葉子的顯示鎖存。  P1=0X01;//送入葉子的顯示數(shù)據(jù)  delay_10us(30);//等待下保證亮度  shierjiao=1;//關(guān)閉葉子的顯示鎖存  P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。 }  } voidshuilengLED()//循環(huán)水  {  if(qq>=1)  {   if(shui1>=1)   {    shijiao=0;//打開循環(huán)水的顯示鎖存。  P1=0X01;//送入循環(huán)水的顯示數(shù)據(jù)  delay_10us(30);//等待下保證亮度  shijiao=1;//關(guān)閉循環(huán)水的顯示鎖存  P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。  shui1--;  if(shui1==0)    {      shui2=100;//送入水2滅的時(shí)間    }    }   if(shui2>=1)   {  shui2--;  if(shui2==0)    {      shui3=100;//送入水3亮的時(shí)間    }   }   if(shui3>=1)   {    shijiao=0;//打開循環(huán)水的顯示鎖存。  P1=0X01;//送入循環(huán)水的顯示數(shù)據(jù)  delay_10us(30);//等待下保證亮度  shijiao=1;//關(guān)閉循環(huán)水的顯示鎖存  P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。  shui3--;  if(shui3==0)    {      shui4=100;//送入水4滅的時(shí)間    }   }   if(shui4>=1)   {  shui4--;  if(shui4==0)    {      shui5=1500;//送入水5亮的時(shí)間    }   }   if(shui5>=1)   {    shijiao=0;//打開循環(huán)水的顯示鎖存。  P1=0X01;//送入循環(huán)水的顯示數(shù)據(jù)  delay_10us(30);//等待下保證亮度  shijiao=1;//關(guān)閉循環(huán)水的顯示鎖存  P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。  shui5--;  if(shui5==0)    {      shui1=200;//送入水4滅的時(shí)間    }   } }  }voidhuoliLED()   {   if(jj>=1) {   shiliujiao=0;//打開火力的顯示鎖存。 P0=0X80;//送入火力的顯示數(shù)據(jù) delay_10us(1);//等待下保證亮度 shiliujiao=1;//關(guān)閉火力的顯示鎖存  if(jj>=2)  {     shiwujiao=0;//打開火力的顯示鎖存。   P1=0X80;//送入火力的顯示數(shù)據(jù)   delay_10us(1);//等待下保證亮度   shiwujiao=1;//關(guān)閉火力的顯示鎖存   P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。   if(jj>=3)   {      shisijiao=0;//打開火力的顯示鎖存。    P1=0X80;//送入火力的顯示數(shù)據(jù)    delay_10us(1);//等待下保證亮度    shisijiao=1;//關(guān)閉火力的顯示鎖存    P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。    if(jj>=4)    {      shisanjiao=1;shisanjiao=0;//打開葉子的顯示鎖存。    P1=0X80;//送入葉子的顯示數(shù)據(jù)    delay_10us(1);//等待下保證亮度    shisanjiao=1;//關(guān)閉葉子的顯示鎖存    P1=0x00;//清掉顯示的數(shù)據(jù)防止干擾其它顯示段碼。    }   }  } }  }voidLEDdisp()//最終顯示的子函數(shù)包含了報(bào)警信息和檔位信息  {  switch(yy)     {    case0://關(guān)閉整個(gè)屏幕  P1=0X00;P0=0X00;//把兩個(gè)數(shù)據(jù)總線全部給拉低  break;    case1://檔位1  dispnum=1;//送顯示數(shù)據(jù)  break;    case2://檔位2  dispnum=2;//送顯示數(shù)據(jù)  break;    case3://檔位3  dispnum=3;//送顯示數(shù)據(jù)  break;    case4://檔位4  dispnum=4;//送顯示數(shù)據(jù)  break;    case5://檔位5  dispnum=5;//送顯示數(shù)據(jù)  break;    case6://檔位零  dispnum=0;//送顯示數(shù)據(jù)  break;    case7://打開循環(huán)水水泵標(biāo)志屏幕的左上角那個(gè)  qq=1;  break;    case8://關(guān)閉循環(huán)水水泵標(biāo)志  qq=0;  break;    case9://打開風(fēng)冷風(fēng)扇標(biāo)志數(shù)碼管下方的風(fēng)扇標(biāo)志  fs=1;  break;    case10://關(guān)閉風(fēng)冷風(fēng)扇的標(biāo)志  fs=0;  break;    case11://打開鍋具的標(biāo)志位于紅太陽左邊的那個(gè)有水滴標(biāo)志  aa=1;  break;    case12://關(guān)閉鍋具的標(biāo)志  aa=0;  break;    case13://打開綠葉炒菜標(biāo)志  rr=1;  break;    case14://關(guān)閉綠葉炒菜標(biāo)志  rr=0;  break;    case15://定時(shí)圖標(biāo)打開  hh=1;  break;        case16://定時(shí)圖標(biāo)關(guān)閉  hh=0;  break;    case17://攝氏度標(biāo)志打開  dd=1;  break;    case18://攝氏度標(biāo)志關(guān)閉  dd=0;  break;    case19://水量標(biāo)志1打開 需要清234段的顯示  jj=1;  break;    case20://水量標(biāo)志2打開  jj=2;  break;    case21://水量標(biāo)志3打開  jj=3;  break;    case22://水量標(biāo)志4打開  jj=4;  break;    case23://水量標(biāo)志關(guān)閉  jj=0;  break;    case24://電熱絲標(biāo)志打開  cc=1;  break;    case25://電熱絲標(biāo)志關(guān)閉  cc=0;  break;    case26://雪花標(biāo)志開  ee=1;  break;    case27://雪花標(biāo)志關(guān)  ee=0;  break;    case28://保溫標(biāo)志開  ff=1;  break;    case29://保溫標(biāo)志關(guān)  ff=0;  break;    case30://左下角開關(guān)標(biāo)志  kg=1;  break;    case31://左下角開關(guān)標(biāo)志  kg=0;  break;  } } //**************************************************外部中斷*****************************voidexint0()interrupt0{           yy++;    }//---------------------------------------------------------------------------------------------voidRX() {   if(scl==0)//時(shí)鐘線拉低告訴MCU要接收信號(hào)了    {   if(qinglingYES==1)//檢測(cè)是不是允許清零      {     yy=0; //把YY清零     qinglingYES=0;//不在允許清零   }   if(sda==0)//如果數(shù)據(jù)線被拉低了那么就加一次數(shù)據(jù)       {      if(RXone>=1)//允許接收一次      {           yy++;//接收的數(shù)據(jù)加     RXone=0;//防止再次接收      }    }   if(sda==1)      {      if(RXone==0)//檢測(cè)是不是已經(jīng)打開了防止再次接收的參數(shù)      {        RXone=1;//允許再次接收      }   }  } if(scl==1)    {  qinglingYES=1;        LEDdisp();     disp();  guoled();  taiyang();  dianresi();  sheshidu();  sheshidu();  xuehua();  baowen();  fengshan();  kaiguan();  dingshi_led();  shangbiao();  lvye();  shuilengLED();  huoliLED();  yyjiange++;  } }//---------------------------------------------------------------------------------------------voidmain() { P1M0=0Xff; P1M1=0X00;  P0M0=0Xff; P0M1=0X00;  P2M0=0Xff; P2M1=0X00;   P2=0xff;  while(1)    {        RX();//開始接收數(shù)據(jù) } }
做完了效果圖如下。有視頻。這里能上傳視頻么? 
0
回復(fù)
2013-05-18 16:08
@wangchongpapa001
做完了效果圖如下。有視頻。這里能上傳視頻么?[圖片] 
0
回復(fù)
三月天_
LV.4
13
2013-05-20 14:08
@wangchongpapa001
效果視頻連接http://v.youku.com/v_show/id_XNTU4NTkxNzQw.html
這位兄弟有大愛呀。。。。
0
回復(fù)
zhouboak
LV.8
14
2013-06-04 19:34
@三月天_
這位兄弟有大愛呀。。。。

路過

0
回復(fù)
發(fā)