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

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

QQ登錄

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

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

我的單片機(jī)設(shè)計(jì) 紅外汽車(固定距離)測(cè)速仿真,求助解決問(wèn)題!

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
剛剛做的程序,感覺(jué)沒(méi)用好定時(shí)器測(cè)速,有protues仿真.含51單片機(jī)C源碼。
求助大神,該如何解決引腳高電平啟停定時(shí)器,在5m范圍內(nèi)測(cè)速并顯示在1602上呢!!!main函數(shù)如下:
  1. #include"reg52.h"
  2. #include"stdio.h"
  3. #include"lcd.h"

  4. sbit yd0=P2^0;
  5. sbit yd1=P2^1;
  6. sbit yd2=P2^2;
  7. sbit yd3=P2^3;

  8. typedef unsigned char u8;
  9. u8 dis0[10];
  10. u8 dis1[]="sd:Unknow";               
  11. u8 dis2[]="Track is free";
  12. u8 dis3[]="Approach";
  13. u8 dis4[]="Arrived";

  14. unsigned long suCount=0;//計(jì)數(shù)
  15. float sudu;//速度

  16. //unsigned long time_50ms=0;                   //定時(shí)器計(jì)數(shù)
  17. //bit disFlag=0;//定時(shí)更新顯示

  18. void Init_Timer0(void);        //函數(shù)聲明
  19. void Init_Timer1(void);//
  20. //定時(shí)器0與定時(shí)器1的中斷方式//

  21. void LCD_Write_String0()        // LCD區(qū)段空閑顯示子程序
  22. {
  23.         u8 u;
  24.         u8 v;
  25.                 LcdInit();
  26.         for(u=0;u<13;u++)
  27.         {
  28.         LcdWriteData(dis2[u]);
  29.         }
  30.         LcdInit2();
  31.         for(v=0;v<10;v++)
  32.         {
  33.         LcdWriteData(dis1[v]);
  34.         }
  35.         Delay1ms(3000);
  36. }

  37. void LCD_Write_String1()        // LCD列車檢測(cè)顯示子程序
  38. {
  39.         u8 m;
  40.         u8 n;
  41.         LcdInit();
  42.         for(m=0;m<9;m++)
  43.         {
  44.                 LcdWriteData(dis3[m]);
  45.         }
  46.         LcdInit2();
  47.         for(n=0;n<10;n++)
  48.         {
  49.         LcdWriteData(dis0[n]);
  50.         }
  51.    Delay1ms(3000);
  52. }

  53. void LCD_Write_String2()
  54. {
  55.         u8 x;
  56.         u8 z;
  57.         LcdInit();
  58.         for(x=0;x<8;x++)
  59.         {
  60.                 LcdWriteData(dis4[x]);
  61.         }
  62.         LcdInit2();
  63.         for(z=0;z<10;z++)
  64.         {
  65.         LcdWriteData(dis0[z]);
  66.         }
  67.         Delay1ms(3000);
  68. }


  69. void Init_Timer0(void)
  70. {
  71.         TMOD=0x01;          //使用模式1,16位定時(shí)器                     
  72.         TH0=(65536-45872)/256;                  //重新賦值 50ms
  73.         TL0=(65536-45872)%256;
  74.         EA=1;            //總中斷打開(kāi)
  75.         ET0=1;           //開(kāi)定時(shí)器0中斷
  76.         TR0=1;           //啟動(dòng)定時(shí)器0
  77. }

  78. void Timer0_isr(void) interrupt 0
  79. {
  80.         TH0=(65536-45872)/256;                  //重新賦值 50ms
  81.         TL0=(65536-45872)%256;
  82.         suCount++;                //定時(shí)計(jì)數(shù)
  83. }

  84. void Init_Timer1(void)
  85. {
  86.         TMOD=0x01;          //使用模式1,16位定時(shí)器,                     
  87.         TH1=(65536-45872)/256;                  //重新賦值 50ms
  88.         TL1=(65536-45872)%256;
  89.         EA=1;            //總中斷打開(kāi)
  90.         ET1=1;           //開(kāi)定時(shí)器1中斷
  91.         TR1=1;           //啟動(dòng)定時(shí)器1
  92. }

  93. void Timer1_isr(void) interrupt 1
  94. {
  95.         TH1=(65536-45872)/256;                  //重新賦值 50ms
  96.         TL1=(65536-45872)%256;
  97.         suCount++;                //定時(shí)計(jì)數(shù)
  98. }


  99. void main()        //主程序(列車接近檢測(cè)與列車到達(dá)檢測(cè))
  100. {                        
  101.      P2=0x00;         //傳感器高電平輸出,先置低電平
  102.          suCount=0;         //計(jì)數(shù)開(kāi)始
  103.         Init_Timer0();        //定時(shí)器0初始化
  104.         TR0=0;
  105.         while(1)
  106. {
  107.          if(yd0==1) //列車接近區(qū)段首部壓電傳感器電平觸發(fā)  高電平觸發(fā)
  108.             {
  109.          //    suCount=0;         //計(jì)數(shù)開(kāi)始
  110.               TR0=1;  //開(kāi)啟定時(shí)器0
  111.            if(yd1==1)//列車接近區(qū)段尾部壓電傳感器電平觸發(fā)  高電平觸發(fā)
  112.             {
  113.               TR0=0;  //停止定時(shí)器0
  114.              sudu=(5*3.6)/((float)(suCount*2)/(1000)); //設(shè)置距離為 5m
  115.                   sprintf(dis0,"sd:%fkm/h",sudu);//打印
  116.                 LCD_Write_String1();  //顯示      
  117.             }
  118.         }
  119.         else if(yd2==1)                //列車到達(dá)區(qū)段檢測(cè)
  120.         {
  121.         TR1=1;
  122.         if(yd3==1)
  123.         {
  124.         TR1=0;
  125.         sudu=(5*3.6)/((float)(suCount*2)/(1000)); //設(shè)置距離為 5m
  126.         sprintf(dis0,"sd:%fkm/h",sudu);//打印
  127.    LCD_Write_String2();  //顯示  
  128.    }
  129.         }
  130. //區(qū)段空閑檢測(cè)//
  131.         else         
  132.         {
  133.         LCD_Write_String0();
  134.         }
  135.         }
  136. }
復(fù)制代碼


圖片仿真11.png (68.99 KB, 下載次數(shù): 48)

圖片仿真11.png

rjcs.zip

44.11 KB, 下載次數(shù): 3

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

使用道具 舉報(bào)

沙發(fā)
ID:679068 發(fā)表于 2021-6-2 21:00 | 只看該作者
可以yc解決。歡迎大神來(lái)幫助小弟一把吧拜托啦!!!!
回復(fù)

使用道具 舉報(bào)

板凳
ID:679068 發(fā)表于 2021-6-2 21:19 | 只看該作者
我再具體描述一下吧!(求助丫~)
在兩個(gè)固定距離(5米)的區(qū)域設(shè)置了4個(gè)傳感器(傳感器輸出的是高電平有效),利用首尾傳感器啟停定時(shí)器。
然而,似乎速度無(wú)法測(cè)出來(lái),放不進(jìn)lcd1602顯示屏。
顯示部分是可以顯示的,速度測(cè)不出來(lái)。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久久久免费看 | 色综合视频 | 97人人澡人人爽91综合色 | 日韩在线免费视频 | 偷拍自拍网站 | 久久夜夜| 亚洲一区二区三 | www.婷婷 | 欧美日韩国产高清 | 亚洲乱码一区二区 | 天堂久久网 | 波多野吉衣久久 | 中文字幕成人av | 黄免费观看视频 | 97av视频| 成年免费大片黄在线观看岛国 | 婷婷一级片 | 国产精品视频免费播放 | 国产日韩欧美一区二区 | jizz亚洲人 | 成人性视频在线播放 | 日本精品网站 | 日日av| 免费久 | 国产九九精品视频 | 91久久精 | 精品日韩 | 一区二区三区四区免费视频 | 国产美女黄色 | 欧美精品一区二区三区在线播放 | 蜜臀网站 | 蜜桃视频在线观看免费视频网站www | 国产精品久久久久久久久久 | 久久精品国产久精国产 | 人人九九 | 黄色一级大片在线观看 | 国产精品久久久久久久久久久久午夜片 | 国产成人精品一区二三区在线观看 | 精品1区 | 久久99久久 | 欧美日韩精品久久久免费观看 |