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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

超聲波模塊跟GSM模塊沖突了,怎么改單片機程序?

[復制鏈接]
跳轉到指定樓層
樓主
ID:985137 發表于 2022-5-3 18:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
先謝謝大家
  1. void Init_Timer()
  2. {
  3.     PCON=0x00;         
  4.     SCON=0x50;         
  5.     TMOD=0x21;         
  6.     TL0 =0x00;
  7.     TH0 =0x4C;
  8.     TL1 =0xfd;   
  9.     TH1 =0xfd;
  10.     TR0 =1;
  11.     TR1 =1;
  12.     ET0 =1;
  13.     ES  =1;
  14.     EA  =1;
  15. }

  16. void inter() interrupt 4
  17. {
  18.         date = SBUF;
  19.         if(RI)
  20.         RI = 0;
  21. }

  22. //外部中斷0
  23. void initex()
  24. {
  25.   TMOD=0x09;                    //定時器T0工作方式1  GATE0=1
  26.   IT0=1;                        //設置為下降沿中斷方式
  27.   EX0=1;                        //開外部中斷                    
  28. }
  29. void int0() interrupt 0
  30. {
  31. t=(TH0*256+TL0);//計算高電平持續的時間,上升沿到來時候開始計時,下降沿到來進入外部中斷,關閉計時器,停止計時
  32. TH0=0;
  33. TL0=0;
  34. }

  35. /*主函數*/
  36. uchar global_state = 0;
  37. uchar count_num = 0;  //輸入的數字個數
  38. void main()
  39. {  
  40.     uchar i;
  41.     uchar passwd;  
  42.            uchar key_value = 0;
  43.         uchar temp_key_value = 0xff;
  44.         Lock = 1;  //剛上電 鎖是需要保持閉合

  45.         Init_Timer();
  46.         initex();

  47.          lcd_init();        //LCD1602初始化  
  48.         while(1)        //進入不斷循環
  49.           {
  50.                    temp_key_value = Calkey_scan();          //讀取矩陣按鍵的鍵值
  51.                 if(temp_key_value != 0xff)
  52.                 {
  53.                         key_value = temp_key_value;
  54.                 }
  55.                 switch(global_state)
  56.                 {
  57.                         case 0:         //初始化狀態
  58.                                 display1();         //顯示歡迎語句        -- "welcome"
  59.                                 zyx = 1;         //紫外線
  60.                                 zm = 0;
  61.                                 display5();  //顯示Current T=
  62.                                 Read_Temperature(); //讀取溫度值
  63.                                 display7();  //顯示溫度
  64.                                 Alarm();         //報警
  65.                                 wenk();                 //溫控

  66.                                 HC05_Init();  //超聲波
  67.                                 
  68.                                 if(SetKey==0)        //設置鍵                          
  69.                                 {         
  70.                                            clear();         //清屏
  71.                                          global_state = 3;   //切換運行狀態                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
  72.                                   }
  73.                                                                                                                                                                                                                                                                                                                                                                                                                               
  74.                                 if(key_value == 13)  //存餐按鍵被按下
  75.                                 {
  76.                                 key_value = 0xff;  //將按鍵值清除                                
  77.                                 if(distance>300)
  78.                                 {
  79.                                 TMOD=0x21;                                         
  80.                                 global_state = 4;                  
  81.                                 }
  82.                                 else
  83.                                 {
  84.                                   clear();        //清屏,準備下一屏的顯示
  85.                                   display10();        
  86.                                   delay(1000);
  87.                                   clear();        //清屏,準備下一屏的顯示
  88.                                   global_state = 0;  //返回到初始界面
  89.                                 }
  90.                                 }
  91.                                  
  92.                                 if(key_value == 14)  //取餐按鍵被按下
  93.                                 {
  94.                                     key_value = 0xff;  //將按鍵值清除
  95.                                         clear();    //清屏,準備下一屏的顯示
  96.                                         global_state = 2;  //切換運行狀態
  97.                                         count_num = 0;   //清除數字按鍵變量
  98.                                         for(i = 0;i < 4;i++)  //清空輸入的密碼數組
  99.                                         inpPasswd[i] = ' '-0x30;
  100.                                 }
  101.                             break;

  102.                         case 1:                //密碼生成狀態                                                

  103.                                    display2();         //顯示密碼生成界面
  104.                                 GSM_PDU();
  105.                     GSM_PDU_SMS();
  106.                                 global_state = 0;  //返回到初始界面
  107.                                 clear();        //清屏,準備下一屏的顯示                                
  108.                             break;

  109.                         case 2:          //輸入密碼狀態
  110.                            display4();           //顯示輸入密碼界面
  111.                            if((key_value >= 0) && (key_value <= 9))          //如果按下的為0-9的數字按鍵
  112.                            {                              
  113.                                 if(count_num <= 3)         //如果按鍵次數小于4次
  114.                                         {
  115.                                         inpPasswd[count_num] = key_value; //將按鍵值存入數組,并顯示
  116.                                                    count_num++;
  117.                                     }
  118.                                          key_value = 0xff;  //將按鍵值清除
  119.                            }
  120.                                                                                                          
  121.                            if(key_value == 15) //清除按鍵被按下
  122.                            {
  123.                                 key_value = 0xff;  //將按鍵值清除
  124.                                            for(i = 0;i < 4;i++)
  125.                                         inpPasswd[i] = ' '-0x30;  //清除剛剛輸入的密碼
  126.                                         count_num=0;
  127.                            }
  128.                            if(key_value == 16) //確認按鍵被按下
  129.                            {
  130.                                 key_value = 0xff;  //將按鍵值清除
  131.                                            for(i = 0;i < 4;i++)
  132.                                         {
  133.                                                 if(inpPasswd[i] != genPasswd[i])
  134.                                                 break;
  135.                                         }
  136.                                         if(i == 4)          //密碼輸入正確
  137.                                         {                                                
  138.                                         Lock = 0;    //開鎖
  139.                                         zm = 1;         //照明
  140.                                         zyx = 0;
  141.                                         clear();                 //清屏,準備下一屏的顯示
  142.                                         display3();    //顯示關門提示語        -- "close door!"
  143.                                     delay(1900);    //等待關門 大約3秒
  144.                                         clear();                 //清屏,準備下一屏的顯示
  145.                                         Lock = 1;   //關鎖
  146.                                         zyx = 1;         //紫外線
  147.                                         zm = 0;                                       
  148.                                         }
  149.                                         else   //密碼輸入錯誤  報警
  150.                                         {        
  151.                                                 clear();           //清屏,準備下一屏的顯示                                
  152.                                                 Lock = 1;  //關鎖
  153.                                                 BEEP=0;
  154.                                                 display9();        
  155.                                                 delay(1000);
  156.                                                 BEEP=1;
  157.                                                 display9();                                                                                                
  158.                                         }
  159.                                         clear();           //清屏,準備下一屏的顯示
  160.                                         global_state = 0;  //返回到初始界面
  161.                            }
  162.                            break;

  163.                            case 3:
  164.                                     display5();         //顯示Current T=
  165.                         display6();         //顯示上下限
  166.                         Read_Temperature(); //讀取溫度值
  167.                         display7();         //顯示溫度
  168.                         display8();         //顯示上下限溫度
  169.                                                 SetFun();           //指針>  
  170.                                             Alarm();
  171.                                                 wenk();
  172.                                                 if(key_value == 16) //確認按鍵被按下
  173.                                                 {
  174.                                                         key_value = 0xff;  //將按鍵值清除
  175.                                                         clear();           //清屏,準備下一屏的顯示
  176.                                                 global_state = 0;  //返回到初始界面
  177.                                                 }
  178.                                 break;

  179.                                 case 4:                           
  180.                                         Lock = 0;    //開鎖
  181.                                         zm = 1;         
  182.                                         zyx = 0;
  183.                                         clear();                 //清屏,準備下一屏的顯示
  184.                                         display3();    //顯示關門提示語        -- "close door!"
  185.                                        delay(1900);    //等待關門 大約3秒
  186.                                         clear();                 //清屏,準備下一屏的顯示
  187.                                         Lock = 1;    //關鎖
  188.                                         zyx = 1;         //紫外線
  189.                                         zm = 0;                                                                                                               
  190.                                         clear();                 //清屏,準備下一屏的顯示
  191.                                         global_state = 1;   //切換運行狀態
  192.                                         passwd = TL0;  //采用定時器寄存器的值作為密碼
  193.                                         genPasswd[0] = passwd/100;                  //存儲密碼
  194.                                         genPasswd[1] = passwd%100/10;
  195.                                         genPasswd[2] = passwd%10;
  196.                                         genPasswd[3] = (genPasswd[1]+genPasswd[2])%10;                                                                                                                                       
  197.                                         break;                                                                                                         
  198.                 }               
  199.         }
  200. }
復制代碼

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

使用道具 舉報

沙發
ID:624769 發表于 2022-5-3 22:04 | 只看該作者
方法1:

//外部中斷0
void initex()
{
   TMOD |=0x09;                    //定時器T0工作方式1  GATE0=1
   IT0=1;                        //設置為下降沿中斷方式
  EX0=1;                        //開外部中斷                    
}


方法2:

void Init_Timer()
{
     PCON=0x00;         
     SCON=0x50;         
     TMOD=0x29;         
     TL0 =0x00;
     TH0 =0x4C;
     TL1 =0xfd;   
     TH1 =0xfd;
     TR0 =1;
     TR1 =1;
     ET0 =1;
     ES  =1;
     EA  =1;
}
//外部中斷0
void initex()
{
//  TMOD=0x09;                    //定時器T0工作方式1  GATE0=1
   IT0=1;                        //設置為下降沿中斷方式
  EX0=1;                        //開外部中斷                    
}
回復

使用道具 舉報

板凳
ID:161164 發表于 2022-5-3 23:00 | 只看該作者
有啥沖突?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久网站 | 亚洲国产成人在线视频 | 91视频网址 | 婷婷在线视频 | 国产精品欧美一区二区三区不卡 | 中文字幕亚洲视频 | 不卡的av一区 | 国产午夜精品理论片a大结局 | www亚洲精品 | 亚洲精品视频一区二区三区 | 91视频在线看 | 国产一区二区三区在线 | 亚洲精品久久久久久首妖 | 涩涩视频网站在线观看 | 久久久久久久久久一区二区 | 在线观看中文字幕av | 欧美亚洲国产日韩 | 在线看无码的免费网站 | 精品一区二区三区免费视频 | 中文字幕在线观看成人 | 国产精品一区一区 | 亚洲精品国产成人 | 国产精品二区三区 | 欧美成人a | 在线国产一区二区 | 国产精品无码永久免费888 | 黄频视频 | 精品视频久久久久久 | 亚洲精品区 | 国产乱人伦精品一区二区 | 亚洲成人网在线 | 亚洲欧美日韩精品 | 欧美二区乱c黑人 | 看片国产 | 国产精品国产a | 日本天堂视频 | 鲁大师一区影视 | 免费观看国产视频在线 | 插插宗合网 | 91成人精品视频 | 精品国产乱码久久久久久蜜柚 |