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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 968|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

新人求助,為什么我的程序把lcd的部分加上后就沒(méi)反應(yīng)了?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
這里是程序和仿真,為什么把lcd的部分加上后就沒(méi)反應(yīng)了(╥_╥)
  1. #include <reg52.h>
  2. #include <intrins.h>


  3. //定義電機(jī)
  4. sbit IN1 =P3^4;
  5. sbit IN2 =P3^5;
  6. sbit IN3 =P3^6;
  7. sbit IN4 =P3^7;
  8. //定義1602
  9. sbit RS = P2^0;
  10. sbit RW = P2^1;
  11. sbit EN = P2^2;

  12. //按鍵引腳
  13. sbit K1        =P1^6;
  14. //低液位檢測(cè)引腳
  15. sbit K2        =P1^7;
  16. //蜂鳴器引腳
  17. sbit BUZZ =P1^2;
  18. //定義中間變量
  19. unsigned char Time_num=0;
  20. unsigned char mode=0;
  21. unsigned char mode_step=0;
  22. int tempcout=0;
  23. static unsigned char flag=0;
  24. unsigned int count=0;


  25. void delayms(unsigned char x)
  26. {
  27.   unsigned char i ;
  28.   while(x--)
  29.     for(i = 0 ; i < 120 ; i++) ;
  30. }



  31. void LCD_Init();
  32. void LCD_writecmd(unsigned char cmd);
  33. void LCD_writedata(unsigned char dat);
  34. void LCD_showstring(unsigned char x,unsigned char y, unsigned char *str);
  35. void LCD_clear();

  36. void lcd_display()
  37. {
  38.         unsigned char num = 0;
  39.         LCD_Init();
  40.         while(1)
  41.         {
  42.                 count++;
  43.                 if(K1==0)
  44.                 {
  45.                         if(count<=40)
  46.                         {
  47.                                 LCD_showstring(1,1,"STIRRING");
  48.                                 delayms(500);
  49.                                 LCD_Init();
  50.                         }
  51.                         if(40<count&&count<=100)
  52.                         {
  53.                                 LCD_showstring(1,1,"BLOWING");
  54.                                 delayms(500);
  55.                                 LCD_Init();
  56.                         }
  57.                 }
  58.         }

  59. }

  60. void keyscan(void)
  61. {

  62.   if((K1==0)&&(flag==0))    //方向按鍵按下
  63.   {
  64.     flag=1;

  65.     delayms(10);
  66.     if(K1==0)
  67.     {
  68.       if(Time_num==0)//時(shí)間相差30s
  69.       {
  70.         mode=1;   //啟動(dòng)按鈕
  71.                
  72.                 delayms(50);
  73.       }
  74.       else//30s以內(nèi)
  75.       {
  76.         mode=2;   //啟動(dòng)按鈕
  77.       }
  78.       tempcout=0;
  79.       mode_step=0;
  80.       Time_num=30;
  81.     }
  82.   }
  83.   else if(K1==1)
  84.   {
  85.     flag=0;
  86.   }
  87. }




  88. //定時(shí)器0初始化
  89. void Timer_init()
  90. {
  91.   TMOD=0x01;//定時(shí)器0
  92.   TH0=(65536-50000)/256;
  93.   TL0=(65536-50000)%256;
  94.   ET0=1;
  95.   TR0=1;
  96.   EA=1;         //打開(kāi)中斷
  97. }



  98. void main(void)                  
  99. {
  100.   Timer_init();
  101.   while(1)
  102.   {
  103.     keyscan();
  104.         lcd_display();
  105.     BUZZ=K2;    //有信號(hào)就報(bào)
  106.     if(K2==0)//
  107.     {
  108.       IN1=0;
  109.       IN2=0;
  110.       IN3=0;
  111.       IN4=0;
  112.       Time_num=0;
  113.       tempcout=0;
  114.       mode_step=0;
  115.       mode=0;
  116.     }
  117.     delayms(5);

  118.   }
  119. }




  120. void timer0(void) interrupt 1
  121. {
  122.   TH0=(65536-50000)/256;
  123.   TL0=(65536-50000)%256;
  124.   if(mode==1)//模式1
  125.   {
  126.     switch(mode_step)
  127.     {
  128.     case 0://攪拌兩秒鐘
  129.       IN1=0;
  130.       IN2=1;
  131.       IN3=0;
  132.       IN4=0;
  133.         

  134.         
  135.       if(++tempcout!=20)return;//1s
  136.       tempcout=0;
  137.       if(--Time_num!=28)return;//攪拌2s之后進(jìn)行吹泡
  138.       IN1=0;
  139.       IN2=0;
  140.       IN3=0;
  141.       IN4=1;
  142.       mode_step++;
  143.       break;
  144.     case 1://吹泡泡3s
  145.       if(++tempcout!=20)return;//1s
  146.       tempcout=0;
  147.       if(--Time_num!=25)return;//吹泡泡3s
  148.       IN1=0;
  149.       IN2=0;
  150.       IN3=0;
  151.       IN4=0;
  152.       mode_step++;
  153.       break;
  154.     case 2://等待
  155.       if(++tempcout!=20)return;//1s
  156.       tempcout=0;
  157.       if(--Time_num!=0)return;//等待結(jié)束
  158.       mode_step=0;
  159.       mode=0;
  160.       break;

  161.     }
  162.   }
  163.   else if(mode==2)//模式2
  164.   {
  165.     switch(mode_step)
  166.     {
  167.     case 0:////吹泡泡3s
  168.       IN1=0;
  169.       IN2=0;
  170.       IN3=0;
  171.       IN4=1;

  172.       if(++tempcout!=20)return;//1s
  173.       tempcout=0;
  174.       if(--Time_num!=27)return;//吹泡泡3s
  175.       IN1=0;
  176.       IN2=0;
  177.       IN3=0;
  178.       IN4=0;
  179.       mode_step++;
  180.       break;
  181.     case 1://等待
  182.       if(++tempcout!=20)return;//1s
  183.       tempcout=0;
  184.       if(--Time_num!=0)return;//等待結(jié)束
  185.       mode_step=0;
  186.       mode=0;
  187.       break;
  188.     }
  189.   }
  190.   else
  191.   {
  192.     tempcout=0;//清0
  193.   }

  194. }

  195. //初始化1602
  196. void LCD_Init()
  197. {
  198.         LCD_writecmd(0x38);
  199.         LCD_writecmd(0x0c);
  200.         LCD_writecmd(0x06);
  201.         LCD_writecmd(0x01);
  202. }
  203. //發(fā)送指令到1602
  204. void LCD_writecmd(unsigned char cmd)
  205. {
  206.         RS=0;
  207.         RW=0;
  208.         P0=cmd;
  209.         EN=1;
  210.         _nop_();
  211.         _nop_();
  212.         EN=0;
  213. }
  214. //發(fā)送數(shù)據(jù)到1602
  215. void LCD_writedata(unsigned char dat)
  216. {
  217.         RS=1;
  218.         RW=0;
  219.         P0=dat;
  220.         EN=1;
  221.         _nop_();
  222.         _nop_();
  223.         EN=0;
  224. }

  225. //1602顯示
  226. void LCD_showstring(unsigned char x,unsigned char y, unsigned char *str)
  227. {
  228.         unsigned char i=0;
  229.         if (y==0)
  230.         {
  231.                 LCD_writecmd(0x80+x);
  232.         }
  233.         else
  234.         {
  235.                 LCD_writecmd(0x80+0x40+x);
  236.         }
  237.         while (str[i] !='\0')
  238.         {
  239.                 LCD_writedata(str[i]);
  240.                 i++;
  241.         }
  242. }
  243. //清空屏幕
  244. void LCD_clear()
  245. {
  246.         LCD_writecmd(0x01);
  247. }
復(fù)制代碼




屏幕截圖 2024-02-09 155056.png (119.05 KB, 下載次數(shù): 54)

屏幕截圖 2024-02-09 155056.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1096929 發(fā)表于 2024-2-10 16:59 | 只看該作者
280行,串口,并口。
回復(fù)

使用道具 舉報(bào)

板凳
ID:161164 發(fā)表于 2024-2-10 21:30 | 只看該作者
寫(xiě)命令/數(shù)據(jù)后要等40us
清屏后要等2ms

回復(fù)

使用道具 舉報(bào)

地板
ID:1110660 發(fā)表于 2024-2-14 15:38 | 只看該作者
把lcd的循環(huán)刪了,其他程序都能動(dòng)了,但是lcd還是顯示不了(╥_╥)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 人人看人人射 | 国产精品免费一区二区三区四区 | 欧美精品一区二区在线观看 | xxx.在线观看 | 久久免费视频观看 | 亚洲成人精品 | 永久看片 | 一级片在线免费播放 | 9191在线观看| a级黄色毛片免费播放视频 国产精品视频在线观看 | 日韩在线免费电影 | 日本免费在线观看视频 | 久久99精品国产99久久6男男 | 国产精品18久久久久久久 | 伊人二区 | 日本一区二区三区免费观看 | 在线看av网址 | 一级毛片在线看 | 国产欧美一区二区三区在线看 | 91在线免费观看 | 成人国产精品入口免费视频 | 最新国产在线 | 秋霞在线一区 | 国产一区二区三区免费观看在线 | 奇米av | 在线一区观看 | 国产午夜精品福利 | 国产精品一区二区欧美 | 国产一级免费在线观看 | 国产精品久久国产精品99 gif | 请别相信他免费喜剧电影在线观看 | 91网站在线播放 | 色婷婷国产精品综合在线观看 | 国产午夜精品一区二区三区四区 | 国产精品久久久久久久久久久免费看 | 激情婷婷成人 | 男女视频在线看 | 盗摄精品av一区二区三区 | 国产欧美日韩综合精品一区二区 | 国产美女在线精品免费 | 网页av|