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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

自己單片機洗衣機控制程序

  [復制鏈接]
跳轉到指定樓層
樓主
ID:81192 發表于 2015-5-26 16:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
洗衣機控制
  1. #include<reg52.h>
  2. #include <intrins.h>

  3. #define uint unsigned int
  4. #define uchar  unsigned char


  5. sbit rs=P2^0;//定義寫數據(命令)
  6. sbit rw=P2^1;//定義讀寫控制
  7. sbit en=P2^2;//定義使模塊使能
  8. sbit rst=P2^3;

  9. sbit scl=P3^6;//定義IIC
  10. sbit sda=P3^7;

  11. sbit s1=P1^2;//功能鍵
  12. sbit s2=P1^0;//加數鍵
  13. sbit s3=P1^1;//減數鍵
  14. sbit s4=P1^4;//
  15. sbit s5=P1^3;


  16. sbit fw=P3^3;
  17. sbit d1z=P1^5;
  18. sbit d1f=P1^6;
  19. sbit d2t=P1^7;

  20. uchar zshi,fshi,zong,tuoshi,s1num;
  21. uchar kk,zz,ftuoshi,fzshi,ffshi,fzong,s5num,s4num;
  22. uchar w,h,t,k,f,g,x;



  23. uchar code mb1[]="正轉時間: 00秒";
  24. uchar code mb2[]="反轉時間:00秒";
  25. uchar code mb3[]="總洗衣時間:00分";
  26. uchar code mb4[]="總脫水時間:00分";

  27. void ys(uint z)//延時子程序
  28. {
  29.         uint x,y;
  30.                 for(x=z;x>0;x--)
  31.                         for(y=110;y>0;y--);

  32. }

  33. void writecom12864(uchar com,uchar add)//寫命令
  34. {
  35.         rs=0;
  36.         rw=0;
  37.         P0=com;
  38.         ys(5);
  39.         rw=1;
  40.         ys(5);

  41.         rw=0;
  42.         P0=add;
  43.         ys(5);
  44.         rw=1;
  45.         ys(5);
  46. }
  47. void writedat12864(uchar dat)//寫數據
  48. {
  49.        
  50.         rs=1;
  51.         rw=0;
  52.         P0=dat;
  53.         ys(5);
  54.         rw=1;
  55.         ys(5);
  56. }

  57. uchar readcom12864(uchar add)//讀命令程序
  58. {   
  59.         uchar Data;
  60.         rs = 0;
  61.         P0= add;                //Reg Addr
  62.         rw = 0;
  63.         rw = 1;
  64.         P0 = 0xff;       
  65.         en = 0;
  66.         Data = P0;
  67.         en = 1;
  68.     return Data;
  69. }
  70. void busy(void)//讀忙程序
  71. {
  72.         uchar temp;
  73.         do
  74.         {
  75.                 temp = readcom12864(0x0f);
  76.         }while(temp & 0x80);
  77. }
  78. void clear()//清屏
  79. {
  80.         uchar temp;
  81.         temp = readcom12864(0x01);
  82.         temp |= 0x40;
  83.         writecom12864(0x01, temp);
  84.         busy();
  85.         busy();
  86. }
  87. void gbxy(uchar x,uchar y)//光標坐標
  88. {
  89.         writecom12864(0x05,x);
  90.         writecom12864(0x06,y);
  91. }
  92. void ret(void)
  93. {
  94.         rst = 0;
  95.         ys(50);//Delay100ms(1);
  96.         rst= 1;
  97.         ys(50);//Delay100ms(1);
  98. }
  99. void init12864()//初始化
  100. {
  101.         uchar i;
  102.         ys(50);
  103.         writecom12864(0x01, 0x02); /* 顯示功能打開,鍵盤關*/
  104.         writecom12864(0x02, 0x7f); /* 128x64,   BG Code  64列                        */
  105.         writecom12864(0x03, 0x03); /* 正常顯示范圍,不允許中斷,ASCII 1 ,16*16字體,正常字體,不反白,文字模式    */
  106.         writecom12864(0x04, 0x02);//光標設定
  107.         writecom12864(0x10, 0x70);        /* (1/9偏壓,Cont=100111)(1/8,效果也行,B0110_1110)                        */
  108.         writecom12864(0x11, 0xf0); /* 升壓開,內升壓,內部V0,內部偏壓,ICON順序不變,SEG=143, COM=63                */
  109.         writecom12864(0x12, 0xf7);        /* 12.5Khz,        X6,        大電流11110111        */
  110.         clear();       
  111.         ys(50);

  112.         gbxy(0,0);       
  113.         for(i=0;i<14;i++)
  114.         {
  115.                 writedat12864(mb1[i]);
  116.                 ys(20);
  117.         }
  118.         gbxy(0,0x10);
  119.         for(i=0;i<14;i++)
  120.         {
  121.                 writedat12864(mb2[i]);
  122.                 ys(20);
  123.         }
  124.         gbxy(0,0x1f);
  125.         for(i=0;i<16;i++)
  126.         {
  127.                 writedat12864(mb3[i]);
  128.                 ys(20);
  129.         }
  130.         gbxy(0,0x2f);
  131.         for(i=0;i<16;i++)
  132.         {
  133.                 writedat12864(mb4[i]);
  134.                 ys(20);
  135.         }

  136.         TMOD=0X11;
  137.         T2CON=0;
  138.         TH0=(65536-50000)/256;
  139.         TL0=(65536-50000)%256;
  140.         TH1=(65536-50000)/256;
  141.         TL1=(65536-50000)%256;

  142.         RCAP2L=0xb0;
  143.         RCAP2H=0x3c;

  144.         EA=1;
  145.         ET2=1;
  146.         ET0=1;
  147.         ET1=1;
  148.         TR0=0;
  149.         TR1=0;
  150. }
  151. void disp(uchar dat)//液晶顯示
  152. {
  153.         uchar shi,ge;
  154.         shi=dat/10;
  155.         ge=dat%10;
  156.         writedat12864(0x30+shi);
  157.         writedat12864(0x30+ge);
  158. }
  159. ////////////////////
  160. void ysus()
  161. {
  162.         _nop_();_nop_();_nop_();
  163.         _nop_();_nop_();_nop_();
  164.         _nop_();_nop_();
  165. }
  166. void start()
  167. {
  168.         sda=1;
  169.         ysus();
  170.         scl=1;
  171.         ysus();
  172.         sda=0;
  173.         ysus();
  174. }
  175. void stop()
  176. {
  177.         sda=0;
  178.         ysus();
  179.         scl=1;
  180.         ysus();
  181.         sda=1;
  182.         ysus();
  183. }
  184. void ack()
  185. {
  186.         uchar i;
  187.         scl=1;
  188.         ysus();
  189.         while((sda==1)&&(i<200))i++;
  190.         scl=0;
  191.         ysus();
  192. }
  193. void writebyte(uchar dat)
  194. {
  195.         uchar i;
  196.         scl=0;
  197.         for(i=0;i<8;i++)
  198.         {
  199.                 if(dat&0x80)
  200.                 {
  201.                         sda=1;
  202.                 }
  203.                 else
  204.                         sda=0;
  205.                 dat=dat<<1;
  206.                 ysus();
  207.                 scl=1;
  208.                 ysus();
  209.                 scl=0;
  210.                 ysus();
  211.         }
  212.         sda=1;
  213.         ysus();
  214. }
  215. uchar readbyte()
  216. {
  217.         uchar i,j;
  218.         scl=0;
  219.         ysus();
  220.         sda=1;
  221.         ysus();
  222.         for(i=0;i<8;i++)
  223.         {
  224.                 scl=1;
  225.                 ysus();
  226.                 j=j<<1;
  227.                 if(sda)
  228.                         j++;
  229.                 scl=0;
  230.                 ysus();
  231.         }
  232.         return j;
  233. }
  234. void writeiic(uchar add,uchar dat)
  235. {
  236.         start();
  237.         writebyte(0xa0);
  238.         ack();
  239.         writebyte(add);
  240.         ack();
  241.         writebyte(dat);
  242.         ack();
  243.         stop();
  244. }
  245. uchar readiic(uchar dat)
  246. {
  247.         uchar a;
  248.         start();
  249.         writebyte(0xa0);
  250.         ack();
  251.         writebyte(dat);
  252.         ack();

  253.         start();
  254.         writebyte(0xa1);
  255.         ack();
  256.         a=readbyte();
  257.         stop();
  258.         return a;
  259. }
  260. //////////////////////////
  261. void key()
  262. {
  263.         if(s1==0)
  264.         {       
  265.                 ys(5);
  266.                 if(s1==0)
  267.                 {
  268.                         fw=0;
  269.                         ys(100);
  270.                         fw=1;
  271.                         s1num++;
  272.                         while(!s1);
  273.                         ys(5);
  274.                         while(!s1);
  275.                         if(s1num==1)
  276.                         {
  277.                                 gbxy(10,0);
  278.                                 writecom12864(0x04, 0x05);
  279.                         }
  280.                         if(s1num==2)
  281.                         {
  282.                                 writeiic(1,zshi);
  283.                                 gbxy(10,0x10);
  284.                         }
  285.                         if(s1num==3)
  286.                         {
  287.                                 writeiic(2,fshi);
  288.                                 gbxy(12,0x1f);
  289.                         }
  290.                         if(s1num==4)
  291.                         {
  292.                                 writeiic(3,zong);
  293.                                 gbxy(12,0x2f);
  294.                         }
  295.                         if(s1num==5)
  296.                         {
  297.                                 s1num=0;
  298.                                 writeiic(4,tuoshi);
  299.                                 writecom12864(0x04, 0x00);
  300.                         }
  301.                 }
  302.         }
  303.         if(s1num!=0)
  304.         {
  305.                 if(s2==0)
  306.                 {
  307.                         ys(5);
  308.                         if(s2==0)
  309.                         {
  310.                                 fw=0;
  311.                                 ys(100);
  312.                                 fw=1;
  313.                                 while(!s2);
  314.                                 ys(5);
  315.                                 while(!s2);
  316.                                 if(s1num==1)
  317.                                 {
  318.                                         zshi++;
  319.                                         if(zshi==100)
  320.                                                 zshi=0;
  321.                                         writeiic(1,zshi);
  322.                                         gbxy(10,0);
  323.                                         disp(zshi);
  324.                                 }
  325.                                 if(s1num==2)
  326.                                 {
  327.                                         fshi++;
  328.                                         if(fshi==100)
  329.                                                 fshi=0;
  330.                                         writeiic(2,fshi);
  331.                                         gbxy(10,0x10);
  332.                                         disp(fshi);
  333.                                 }
  334.                                 if(s1num==3)
  335.                                 {
  336.                                         zong++;
  337.                                         if(zong==100)
  338.                                                 zong=0;
  339.                                         writeiic(3,zong);
  340.                                         gbxy(12,0x1f);
  341.                                         disp(zong);
  342.                                 }
  343.                                 if(s1num==4)
  344.                                 {
  345.                                         tuoshi++;
  346.                                         if(tuoshi==100)
  347.                                                 tuoshi=0;
  348.                                         writeiic(4,tuoshi);
  349.                                         gbxy(12,0x2f);
  350.                                         disp(tuoshi);
  351.                                 }
  352.                         }       
  353.                 }
  354.                 if(s3==0)
  355.                 {
  356.                         ys(5);
  357.                         if(s3==0)
  358.                         {
  359.                                 fw=0;
  360.                                 ys(100);
  361.                                 fw=1;
  362.                                 while(!s3);
  363.                                 ys(5);
  364.                                 while(!s3);
  365.                                 if(s1num==1)
  366.                                 {
  367.                                         zshi--;
  368.                                         if(zshi==-1)
  369.                                                 zshi=99;
  370.                                         writeiic(1,zshi);
  371.                                         gbxy(10,0);
  372.                                         disp(zshi);
  373.                                 }
  374.                                 if(s1num==2)
  375.                                 {
  376.                                         fshi--;
  377.                                         if(fshi==-1)
  378.                                                 fshi=99;
  379.                                         writeiic(2,fshi);
  380.                                         gbxy(10,0x10);
  381.                                         disp(fshi);
  382.                                 }
  383.                                 if(s1num==3)
  384.                                 {
  385.                                         zong--;
  386.                                         if(zong==-1)
  387.                                                 zong=99;
  388.                                         writeiic(3,zong);
  389.                                         gbxy(12,0x1f);
  390.                                         disp(zong);
  391.                                 }
  392.                                 if(s1num==4)
  393.                                 {
  394.                                         tuoshi--;
  395.                                         if(tuoshi==-1)
  396.                                                 tuoshi=99;
  397.                                         writeiic(4,tuoshi);
  398.                                         gbxy(12,0x2f);
  399.                                         disp(tuoshi);
  400.                                 }
  401.                         }
  402.                 }
  403.         }
  404.         if(s4==0)
  405.         {
  406.                 ys(5);
  407.                 if(s4==0)
  408.                 {
  409.                         s4num++;
  410.                         while(!s4);
  411.                         ys(5);
  412.                         while(!s4);
  413.                         if(s4num==1)
  414.                         {
  415.                                 k=0;
  416.                                 TR0=1;
  417.                                 TR2=1;
  418.                                 d1z=0;
  419.                                 kk=0;
  420.                                 zz=0;

  421.                                 fw=0;
  422.                                 ys(200);
  423.                                 fw=1;
  424.                         }
  425.                         if(s4num==2)
  426.                         {
  427.                                 s4num=0;
  428.                                 TR0=0;
  429.                                 TR2=0;
  430.                                 k=1;
  431.                                 d1z=1;
  432.                                 d1f=1;
  433.                                 kk=1;
  434.                                 zz=0;

  435.                                 zshi=readiic(1);
  436.                                 fshi=readiic(2);
  437.                                 zong=readiic(3);

  438.                                 gbxy(10,0);
  439.                                 disp(zshi);
  440.                        
  441.                                 gbxy(10,0x10);
  442.                                 disp(fshi);       
  443.                        
  444.                                 gbxy(12,0x1f);
  445.                                 disp(zong);
  446.                        
  447.                                 gbxy(12,0x2f);
  448.                                 disp(tuoshi);
  449.                        
  450.                                 fw=0;
  451.                                 ys(200);
  452.                                 fw=1;
  453.                         }
  454.                 }
  455.         }
  456.         if(s5==0)
  457.         {
  458.                 ys(5);
  459.                 if(s5==0)
  460.                 {
  461.                         s5num++;
  462.                         while(!s5);
  463.                         if(s5num==1)
  464.                         {
  465.                                 TR1=1;
  466.                                 d2t=0;

  467.                                 fw=0;
  468.                                 ys(200);
  469.                                 fw=1;
  470.                         }
  471.                         if(s5num==2)
  472.                         {
  473.                                 s5num=0;
  474.                                 TR1=0;
  475.                                 d2t=1;
  476.                        
  477.                                 tuoshi=readiic(4);
  478.                                 gbxy(12,0x2f);
  479.                                 disp(tuoshi);
  480.        
  481.                                 fw=0;
  482.                                 ys(200);
  483.                                 fw=1;
  484.                         }
  485.                 }
  486.         }
  487. }

  488. void main()
  489. {
  490.         ret();
  491.         init12864();
  492.         zshi=readiic(1);
  493.         fshi=readiic(2);
  494.         zong=readiic(3);
  495.         tuoshi=readiic(4);

  496.         gbxy(10,0);
  497.         disp(zshi);

  498.         gbxy(10,0x10);
  499.         disp(fshi);       

  500.         gbxy(12,0x1f);
  501.         disp(zong);

  502.         gbxy(12,0x2f);
  503.         disp(tuoshi);       
  504.         while(1)
  505.         {
  506.                 fzshi=readiic(1);
  507.                 ffshi=readiic(2);
  508.                 fzong=readiic(3);
  509.                 ftuoshi=readiic(4);
  510.                 key();
  511.                 if(k==1)
  512.                 {
  513.                         d1z=1;
  514.                         d1f=1;
  515.                         TR0=0;
  516.                         TR2=0;
  517.                         zz=0;
  518.                         kk=1;
  519.                 }       
  520.                 if(w==20)
  521.                 {
  522.                         w=0;
  523.                         if(kk!=1)
  524.                         {
  525.                                 zshi--;
  526.                                 if(zshi==-1)
  527.                                 {
  528.                                         zshi=readiic(1);
  529.                                         TR2=0;
  530.                                         d1z=1;

  531.                                         ys(4000);
  532.                                         d1f=0;
  533.                                         TR2=1;

  534.                                         zz=1;
  535.                                         kk=1;
  536.                                 }
  537.                                 gbxy(10,0);
  538.                                 disp(zshi);
  539.                         }
  540.                         if(zz==1)
  541.                         {
  542.                                 TR2=1;
  543.                                 fshi--;
  544.                                 if(fshi==-1)
  545.                                 {
  546.                                         d1f=1;
  547.                                         fshi=readiic(2);

  548.                                         zz=0;
  549.                                         kk=0;
  550.                                         TR2=0;
  551.                
  552.                                         ys(4000);
  553.                                         d1z=0;
  554.                                         TR2=1;
  555.                                 }
  556.                                 gbxy(10,0x10);
  557.                                 disp(fshi);
  558.                         }
  559.                 }
  560.         }
  561. }
  562. void t0() interrupt 1//控制洗衣總時間
  563. {
  564.        
  565.         TH0=(65536-50000)/256;
  566.         TL0=(65536-50000)%256;
  567.         t++;
  568.         if(t==20)
  569.         {
  570.                 t=0;
  571.                 h++;
  572.                 if(h==60)
  573.                 {
  574.                         h=0;
  575.                         zong--;
  576.                         if(zong==0)
  577.                         {
  578.                                 zz=0;
  579.                                 kk=1;
  580.                                 k=1;
  581.                                 zong=fzong;
  582.                                 zshi=fzshi;
  583.                                 fshi=ffshi;

  584.                                 gbxy(10,0);
  585.                                 disp(zshi);
  586.                        
  587.                                 gbxy(10,0x10);
  588.                                 disp(fshi);       
  589.                        
  590.                                 gbxy(12,0x1f);
  591.                                 disp(zong);

  592.                                 fw=0;
  593.                                 ys(2000);
  594.                                 fw=1;
  595.                         }
  596.                         gbxy(12,0x1f);
  597.                         disp(zong);
  598.                 }
  599.         }       
  600. }
  601. void t1() interrupt 3//控制脫水時間
  602. {
  603.         TH1=(65536-50000)/256;
  604.         TL1=(65536-50000)%256;
  605.         g++;
  606.         if(g==20)
  607.         {
  608.                 g=0;
  609.                 f++;
  610.                 if(f==60)
  611.                 {
  612.                         f=0;
  613.                         tuoshi--;
  614.                         if(tuoshi==0)
  615.                         {
  616.                                 TR1=0;
  617.                                 d2t=1;
  618.                                 tuoshi=ftuoshi;
  619.                                
  620.                                 fw=0;
  621.                                 ys(2000);
  622.                                 fw=1;
  623.                         }
  624.                         gbxy(12,0x2f);
  625.                         disp(tuoshi);
  626.                 }
  627.         }
  628. }
  629. void t2() interrupt 5//控制電機正反轉時間
  630. {
  631.         TF2=0;
  632.         w++;
  633. }
復制代碼


評分

參與人數 2黑幣 +55 收起 理由
我不是我 + 5 共享資料的黑幣獎勵!想看
admin + 50 共享資料的積分獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:80992 發表于 2015-5-27 13:10 | 只看該作者
回復

使用道具 舉報

板凳
ID:101014 發表于 2016-3-22 16:20 來自手機 | 只看該作者
xtitxjg 發表于 2015-5-27 13:10

我來看看是怎么寫的程序
回復

使用道具 舉報

地板
ID:101014 發表于 2016-3-22 16:22 來自手機 | 只看該作者
xtitxjg 發表于 2015-5-27 13:10

我來看看是怎么寫的程序
回復

使用道具 舉報

5#
ID:113523 發表于 2016-4-13 18:12 | 只看該作者
只有程序嗎
回復

使用道具 舉報

6#
ID:114329 發表于 2016-4-15 08:20 | 只看該作者
我來看看是怎么寫的程序
回復

使用道具 舉報

7#
ID:83018 發表于 2016-5-2 10:22 | 只看該作者
我也來看看那
回復

使用道具 舉報

8#
ID:159575 發表于 2017-1-3 16:36 來自手機 | 只看該作者
不錯啊
回復

使用道具 舉報

9#
ID:167884 發表于 2017-3-3 14:47 | 只看該作者
我也想看看這程序,
回復

使用道具 舉報

10#
ID:168107 發表于 2017-3-4 15:21 | 只看該作者
我來看看是怎么寫的程序
回復

使用道具 舉報

11#
ID:168219 發表于 2017-3-5 00:07 來自手機 | 只看該作者
我也想做一個洗衣機設計
回復

使用道具 舉報

12#
ID:168926 發表于 2017-3-7 20:27 | 只看該作者
我也來看看
回復

使用道具 舉報

13#
ID:177599 發表于 2017-4-26 14:09 | 只看該作者
我是來學習的
回復

使用道具 舉報

14#
ID:67838 發表于 2023-11-3 00:42 | 只看該作者
我也想看看這程序,
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91av视频在线播放 | 狠狠爱网址 | 国产女人与拘做受免费视频 | 久久久99国产精品免费 | 欧美中文一区 | 黄网站涩免费蜜桃网站 | 福利视频网站 | www.4虎影院 国产999精品久久久影片官网 | 91精品一区二区三区久久久久久 | 中文字幕在线观看一区二区 | 精品一区二区三区免费视频 | 国产日韩欧美在线播放 | 久久久久久久久久爱 | 日韩欧美在线视频 | 国产精品久久久久aaaa樱花 | 成人福利网 | 国产在线视频在线观看 | 五月精品视频 | 久久99国产精品久久99果冻传媒 | av手机在线免费观看 | 日韩中文一区二区三区 | 青娱乐av| 欧美操操操| 日韩欧美三级 | 一级一片在线观看 | 久久精品视频12 | 美女拍拍拍网站 | 爱爱视频日本 | 中文字幕在线观看国产 | 精品国产亚洲一区二区三区大结局 | 日韩aⅴ在线观看 | 亚洲欧美综合 | 日韩一区二区三区视频 | 欧美日韩国产不卡 | 很黄很污的网站 | 久久综合一区二区三区 | 免费成人av | 国产高清性xxxxxxxx | 四虎成人在线播放 | 国产在线不卡 | 国产一区二区精品在线观看 |