久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3999|回復: 3
打印 上一主題 下一主題
收起左側

繼無AD單片機不用延時函數寫電壓力鍋程序并初次仿真實物實驗成功 附源程序

[復制鏈接]
跳轉到指定樓層
樓主
剛好有個壞的電壓力鍋電腦板正常,記下它各個功能還有電路圖,確定拆下它20腳的單片機,自己用51單片機寫程序實現它各種功能,包括它預約時間調節,各種功能時間的不同,工作中花樣動態畫"00",壓力到后開始倒計時并保溫在60-70度左右,開始操作時各個對應LED燈對應閃耀,溫度超高熱敏電阻開路短路報警顯示E4并全LED燈閃耀。今天實測了一下保溫功能,并對應新小霸王電壓力鍋保溫的溫度(各個測保溫水溫如下圖65度-75度范圍)
加熱穩定后溫控器各顯示72度如圖


自己用實際電阻調節到一定溫度的實測




仿真實驗也成功,只是它檢測按鍵有兩三個數值不同,實物測試很靈敏的,可能我只用三句無延時檢測12個按鍵檢測方式不一樣吧。它電路確實復用很多IO口,按鍵LED燈數碼管等等都復用了。如下圖,有模擬的壓力開關,熱敏電阻。都一一測試




還有預約時間,預約時間倒計時,時間到就開始對應的工作




如果有問題顯示錯誤E4并閃耀所有LED燈,這時候所有按鍵無效。




好了,以下是實物程序,仿真程序下面下載,就改兩個數值,一個保溫按鍵0xcf,一個數碼管串聯著兩個二極管(仿真可以直接點亮,實物不行)
單片機源程序如下:
  1. #include<reg52.h>
  2. sfr T2MOD=0XC9; //定義定時器2
  3. #define u8  unsigned char
  4. #define u16 unsigned int
  5. u16 wen;
  6. sbit Rwen=P0^0;sbit yali=P3^4;sbit zhufan=P3^5;sbit P36=P3^6;sbit P37=P3^7;
  7. bit F_20s,F_10s,F_100ms,F_4ms,F_1ms ,F_err,F_led,F_bao,F_time,F_time1,
  8. F_timeok,F_shan,F_yaliok,F_ok,F_key,F_flag,F_keyok;
  9. sbit a=P2^4;sbit b=P2^5;sbit c=P2^6;sbit d=P2^7; //4個數碼管
  10. u8 code tab[26]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
  11. 0xfb,0xf9,0xf8,0xd8,0xc8,0xc0,0xef,0xcf,0xce,0xcc,0xc8,0xc0,0x8c,
  12. //數字0-9與動態畫雙"00"保溫"b"熱敏電阻開路短路報警“E4"
  13. 0xff,0x83,0x86};
  14. u8 time,time1,us,s,M,keyok,keybuf,ds1,shu,s1=0,shan,LED=8,j,keyjs,dw[4];

  15. void disp()
  16. { u8 s0,dp=0;static u8 i=0,a=8;if(s1==0)s0=0;else s0=23;
  17.   if(F_bao){dw[0]=24;dw[1]=24;dw[2]=24;dw[3]=24;}//保溫顯示bbbb優先
  18.   else if((F_time)||(F_timeok)){dw[0]=ds1%100/10;dw[1]=ds1%10;dw[2]=shu%100/10;
  19.      dw[3]=shu%10;if(i==1)dp=0x80;else dp=0;zhufan=0;}//定時預約時間顯示
  20.   else if(!F_ok){dw[0]=s0;dw[1]=s1;dw[2]=shu%100/10;dw[3]=shu%10;
  21.           if(F_err){M=0;dw[0]=23;dw[1]=25;dw[2]=4;dw[3]=23;
  22.                   }F_timeok=0;zhufan=0;ds1=0;}//上電顯示0000出錯顯示E4
  23.    else{dw[0]=10+j;dw[1]=16+j;if(F_yaliok){dw[0]=23;dw[1]=22;}
  24.         dw[2]=shu%100/10;dw[3]=shu%10;}//工作顯示動態00并顯示對應時間
  25.    if(i>=4){i=0;a=8;}P36=1;P37=1;a<<=1;P2=a;
  26.    P1=tab[dw[i]]+dp;i++;
  27.    }
  28. //一旦工作中,除取消按鍵外所有按鍵無效,出錯顯示E4并全LED閃所有按鍵無效
  29. void ScanKey()        //按鍵掃描
  30. {  P2=0;P1=0xdd;if(P1!=keybuf){keybuf=P1;keyjs=6;F_key=1;}
  31.    if(F_key){keyjs--;if(keyjs==0){P1=0x22;F_key=0;if(keybuf!=0xdd){
  32.    keyok=keybuf|P1; F_keyok=1;shan=0;s=0;F_20s=0;}}}//12個按鍵處理
  33.    if(!F_shan){static bit F_x;F_x=~F_x;//避免2個LED同時亮時干擾
  34.       P1=0x80;P1>>=LED;//10個LED處理程序,對應各個功能亮,如果預約煮,加上預約LED亮
  35.          if(F_x){if(F_led){P36=0;P37=1;}else{P36=1;P37=0;}}
  36.      if(((F_time)||(F_timeok))&&(!F_x)){if(!F_led)P1|=1;else P1=1;P36=1;P37=0;}
  37.          if(F_err){P1=0xa7;if(F_x){P36=0;P37=1;}else{P36=1;P37=0;}}}
  38. //處理RICE,WARM,CHICKEN,CONJEE,LEGU,FISH,CAKE,MEAT,SOUP,TIME燈及閃耀程序
  39. }

  40. void main(void)
  41. { bit F_jia,F_jian;u8 s10,ds,ms,ms1,yanshi;yanshi=0;F_yaliok=0;Rwen=0;
  42.   T2MOD=0;T2CON=0;    //定時器2初始化,向上計數,16位自動重裝模式
  43.   TL2=(65536-1000)%256;TH2=(65536-1000)/256; //設置定時初值,完成一次中斷為65536us=65ms
  44.   RCAP2L=(65536-1000)%256;RCAP2H=(65536-1000)/256; //設置定時重載值
  45.   TR2=1;IE=0xa0;        //EA=1,ET2=1;
  46.   TMOD=0x02;TH0=0x00;TL0=0x00;ET0=1;//定時0自動重裝模式2

  47. while(1)
  48. {if(F_1ms){if(time1==2)P1|=0xdd;//仿真撤除實物不能撤
  49.                 //因為數碼af段串聯有in4148二極管
  50.      F_1ms=0;if(F_err){time=0;ms++;if(ms>=254){ms=0;F_shan=~F_shan;}}
  51.          P36=1;P37=1;if(time1==3)ScanKey();
  52.      if((!F_shan)&&(F_4ms)){F_4ms=0;disp();}}
  53.    //0ms-2ms掃數碼管,2ms-3ms掃數碼管af段,3ms-4ms掃按鍵后返回0ms循環掃
  54. if(F_100ms){u8 shubuf;F_100ms=0;s10++;if(s10>=100){s10=0;F_10s=1;}
  55.     if((F_keyok)&&(!F_bao)&&(!F_ok)){ ms1=0;shan=0;//100ms處理按鍵結果
  56.           switch(keyok)//一旦工作或者保溫下面按鍵就無效
  57.      {case 0x7d: s1=22;shu=12;F_flag=1;LED=0;F_led=1;break;//RICE 煮飯
  58.       case 0x5f: s1=22;shu=15;F_flag=1;LED=6;F_led=1;break;//CONJEE粥
  59.       case 0xbd: s1=22;shu=13;F_flag=1;LED=5;F_led=0;break;//MEAT肉類
  60.       case 0x9f:       F_jia=1;F_keyok=0;break;//JIA
  61.       case 0xed: s1=22;shu=40;F_flag=1;LED=7;F_led=1;break;//LEGU 蹄筋
  62.       case 0xf5: s1=22;shu=25;F_flag=1;LED=6;F_led=0;break;//SOUP煲湯
  63.           case 0xd7:      F_jian=1;F_keyok=0;break;//JIAN
  64.       case 0xf9: s1=22;shu=05;F_flag=1;LED=0;F_led=0;break;//FISH 蒸魚
  65.       case 0xdb: s1=22;shu=12;F_flag=1;LED=5;F_led=1;break;//CHICKEN 雞
  66.       case 0xde: s1=22;shu=18;F_flag=1;LED=2;F_led=0;break;//CAKE  蛋糕
  67. case 0xfc:if(!F_time)ds=25;F_time=1;F_time1=1;F_led=0;break;//TIME預約
  68.       default:  break;}yanshi=0;shubuf=shu;}
  69.           //功能時間存入shubuf緩存,預約時間完后用到。
  70.         if((F_flag)||(F_time)){if(F_time){if(F_time1)ds+=5;F_time1=0;
  71.            shu=ds;if(shu>=60){ds=0;ds1++;if(ds1==24)ds1=0;}}
  72.         F_keyok=0;ms1++;if(ms1>=5){F_shan=~F_shan;ms1=0;shan++;
  73.            if(shan>=10){if(F_flag==F_time){F_ok=1;F_flag=0;j=0;F_time=0;F_timeok=1;
  74.            }else if(F_flag){F_ok=1;F_flag=0;j=0;}else {
  75.                   F_time=0;shu=0;}F_shan=0;}}}
  76.          //各功能初始調節并500ms閃耀(顯示跟對應LED燈)還有預約調節并完成,
  77.         if(F_ok){ms++;if(ms>=5){ms=0;j++;if(yali){F_yaliok=1;zhufan=0;}
  78.               else if(wen>50)zhufan=1;if((F_timeok)||(F_yaliok)){if(F_20s){M++;
  79.             F_20s=0;}if(M==3){shu--;if((!shu)&&(ds1)){shu=59;ds1--;}
  80.              else if(!shu){if(F_timeok){F_timeok=0;shu=shubuf;}
  81.                  else{F_ok=0;F_yaliok=0;keyok=0xcf;}}M=0;}//仿真為0xff實物為0xcf        
  82.               }}}
  83. //工作中"0"500ms加1畫,如果壓力到,顯示P,并每分鐘開始降1,如果為0,跳到保溫
  84.         if((F_10s)&&((F_ok)||(F_bao))){Rwen=1;TR0=1;while(!Rwen){
  85.              if(F_err)break;}TR0=0;wen=us*256+TL0;TL0=0;us=0;Rwen=0;
  86. //550k(-10度)=17200/18202(us>70條件);35.2k(50度)=1067/1183;
  87. //30k(54度)=927/1011;20k(66度)667;4.4k(114度)=131/147;
  88. //1.85k(147度)=55/63;1.5k(156度)=43/51;1.1k(170度)=31/35;
  89. //0.5k(208度)=15/23無意發現兩個wen數(如上208度中15/23)的結果
  90. //雖然兩個測溫電容都為104,但是后來我實測一個為93容量一個為100容量
  91.              if((F_err)||(wen<15)){F_err=0;yanshi++;if(yanshi>=10){F_bao=0;
  92.              F_err=1;F_time=0;F_ok=0;F_timeok=0;zhufan=0;yanshi=0;}}
  93.              if(F_bao){if(wen<667)zhufan=0;else zhufan=1;}else if(F_ok){
  94.                  if(wen<=50){zhufan=0;yanshi++;if(yanshi>=10){yanshi=0;F_ok=0;
  95.                  keyok=0xcf;}}else zhufan=1;}F_10s=0;} //仿真為0xff實物為0xcf
  96. //10秒檢測一下溫度,如果保溫中,達到66度后停止加熱,如果煮飯中,并且壓力失靈,
  97. //溫度達到156度停止加熱,如果熱敏電阻開路或短路,容錯10次后顯示E4并全閃LED燈
  98.         if(F_jia){shu++;if(shu>99)shu=0;F_jia=0;}
  99.         if((F_jian)&&(shu>0)){shu--;F_jian=0;}//加減鍵
  100.         if(keyok==0xcf){keyok=0;F_flag=0;shu=0;s1=0;ds1=0;ds=0;//仿真為0xff實物為0xcf
  101.              F_timeok=0;F_shan=0;if((F_ok)||(F_time)){F_time=0;F_ok=0;}
  102.                  else F_bao=~F_bao;if(F_bao){zhufan=1;LED=2;F_led=1;}
  103.                  else{zhufan=0;LED=8;}}//WARM 保溫取消
  104.       }//保溫按鍵單獨處理,隨時可用
  105.         if(j>=6)j=0;}
  106. }

  107. void time0()interrupt 1
  108. {us++;if(us>70)F_err=1;}
  109. void t2() interrupt 5
  110. {   TF2=0;F_1ms=1;         //1ms標志
  111.     time++;time1++;if(time1==4){time1=0;F_4ms=1;}
  112.     if(time==100)//100ms標志位置1
  113.     { s++;if(s==200){F_20s=1;s=0;}F_100ms=1; time=0; }
  114. }            
復制代碼

以上的.c文件: keil打開生成并直接仿真用.rar (3.07 KB, 下載次數: 18)
Proteus7.5版本仿真: proteus仿真電路圖.rar (21.31 KB, 下載次數: 19)

51hei圖片20210412134928.png (83.25 KB, 下載次數: 103)

51hei圖片20210412134928.png

51hei圖片20210505210736.png (83.18 KB, 下載次數: 88)

51hei圖片20210505210736.png

51hei圖片20210505211034.png (82.92 KB, 下載次數: 85)

51hei圖片20210505211034.png

51hei圖片20210505220840.png (83.23 KB, 下載次數: 74)

51hei圖片20210505220840.png

51hei圖片20210505221036.png (83.23 KB, 下載次數: 71)

51hei圖片20210505221036.png

評分

參與人數 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:712493 發表于 2021-5-6 21:26 | 只看該作者
這么逆天,我以前看見電話機壞了到廠里畫個板裝上。你這個連程序都寫上了
回復

使用道具 舉報

板凳
ID:992856 發表于 2021-12-15 20:30 | 只看該作者
你好呀,想請教你一些問題
回復

使用道具 舉報

地板
ID:992856 發表于 2021-12-15 20:30 | 只看該作者
你好啊,我的出了點問題,可以請教一下嘛
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 激情91| 91高清在线观看 | 国产综合精品一区二区三区 | 俺去俺来也www色官网cms | 久久精品亚洲精品国产欧美 | 日韩高清中文字幕 | 中文字字幕在线中文乱码范文 | 国产成人99久久亚洲综合精品 | 免费成人高清在线视频 | 欧美一区二区三区在线观看视频 | 日本久久精品 | 久久99蜜桃综合影院免费观看 | 日韩一区二区三区av | 欧美国产精品一区二区三区 | 亚洲天堂日韩精品 | 狠狠操狠狠搞 | 天天操夜夜操 | 国产网站在线免费观看 | 97国产成人| 国产在线一区二区 | 日韩高清一区 | 久久国产区 | 人人干人人玩 | 成人免费淫片aa视频免费 | 夜夜摸天天操 | 国产在线观看网站 | 在线观看亚洲精品视频 | 91九色视频| 国产日韩一区二区三免费高清 | 97av视频| 最近中文字幕免费 | 国产精品a久久久久 | 国产乱人伦| 一区二区三区四区不卡视频 | 久久91精品国产一区二区 | 久国产| 日韩中文字幕在线观看视频 | 国产午夜久久 | 97精品视频在线 | 国产成人精品一区二区三区视频 | 亚洲精品视频三区 |