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

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

QQ登錄

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

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

自己做的51單片機(jī)測(cè)長(zhǎng)度,oled顯示

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:291220 發(fā)表于 2018-8-16 10:03 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
制作出來(lái)實(shí)物圖如下:



單片機(jī)源程序如下:
  1. #include "REG51.h"
  2. #include "oled.h"
  3. #include "bmp.h"
  4. # define  uchar unsigned char
  5. # define uint unsigned int
  6. sbit D0=P3^2;


  7. int motor=0,t=0,S=0,juli=0;
  8. u8 shu,bai,shi,ge,distance;
  9. u8 code ASCII[15] = {'0','1','2','3','4','5','6','7','8','9','.','-','.','M'};
  10. u8 disbuff[5]           ={ 0,0,0,0,0};
  11. u8 buff[5] ={0,0,0,0,0}         ;
  12. u8 sbuff[5]                  ={0,0,0,0,0};
  13. void delay (uint z)
  14. { uint x,y;
  15.   for (x=600;x>0;x--)
  16.           for (y=z;y>0;y--);
  17. }

  18. void INT_init (void)
  19. {  EA=1;

  20.   EX0=1;
  21. IT0=1;      
  22. }
  23. void main(void )

  24. {        OLED_Init();                        //初始化OLED  
  25.         OLED_Clear();
  26.         INT_init();
  27.       
  28.         while (1)
  29.         {
  30.                            OLED_ShowCHinese(0,0,0);
  31.                                             OLED_ShowCHinese(18,0,1);
  32.                                             OLED_ShowCHinese(36,0,2);
  33.                                             OLED_ShowCHinese(54,0,3);
  34.                                                 distance=(motor/20)*22;
  35.                                                         if(motor==256)
  36.                                                           {        motor=0;
  37.                                                                   t++;
  38.                                                              }
  39.                                                 disbuff[0]=distance/1000;
  40.                                                 disbuff[1]=distance%1000/100;
  41.                                        disbuff[2]=distance%100/10;
  42.                                             disbuff[3]=distance%10;
  43.                                                 disbuff[4]=t;
  44.                                                   OLED_ShowChar(0, 3, ASCII[disbuff[0]]);
  45.                                                   OLED_ShowChar(15, 3, ASCII[disbuff[1]]);
  46.                                                 OLED_ShowChar(30, 3, ASCII[12]);      
  47.                                                    OLED_ShowChar(45, 3, ASCII[disbuff[2]]);
  48.                                                  OLED_ShowChar(60, 3, ASCII[disbuff[3]]);
  49.                                                  OLED_ShowChar(75, 3, ASCII[13]);
  50.                                                   OLED_ShowChar(120, 0, ASCII[disbuff[4]]);
  51.                                                   S=256*t;
  52.                                                 /*  buff[0]=S/1000;
  53.                                                 buff[1]=S/100;
  54.                                        buff[2]=S%100/10;
  55.                                             buff[3]=S%10;
  56.                                                
  57.                                                   OLED_ShowChar(0, 7, ASCII[buff[0]]);                 0
  58.                                                   OLED_ShowChar(15, 7, ASCII[buff[1]]);
  59.                                                 OLED_ShowChar(30, 7, ASCII[12]);      
  60.                                                    OLED_ShowChar(45, 7, ASCII[buff[2]]);
  61.                                                  OLED_ShowChar(60, 7, ASCII[buff[3]]);
  62.                                                  OLED_ShowChar(75, 7, ASCII[13]);*/
  63.                                        
  64.                                                 juli=S+distance;
  65.                                                           sbuff[0]=juli/1000;
  66.                                                 sbuff[1]=juli%1000/100;
  67.                                        sbuff[2]=juli%100/10;
  68.                                             sbuff[3]=juli%10;
  69.                                                
  70.                                                   OLED_ShowChar(0, 7, ASCII[sbuff[0]]);
  71.                                                   OLED_ShowChar(15, 7, ASCII[sbuff[1]]);
  72.                                                 OLED_ShowChar(30, 7, ASCII[12]);      
  73.                                                    OLED_ShowChar(45, 7, ASCII[sbuff[2]]);
  74.                                                  OLED_ShowChar(60, 7, ASCII[sbuff[3]]);
  75.                                                  OLED_ShowChar(75, 7, ASCII[13]);
  76.                 delay(50);               
  77.                
  78.                 OLED_Clear();
  79.                 }

  80. }
復(fù)制代碼

所有資料51hei提供下載:
中景園電子0.96OLED顯示屏_C51系列_IIC_例程推薦使用.zip (115.08 KB, 下載次數(shù): 81)


評(píng)分

參與人數(shù) 2黑幣 +55 收起 理由
青衿已去 + 5
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2018-8-16 17:58 | 只看該作者
好東東,樓主能簡(jiǎn)單的介紹一下嗎?
回復(fù)

使用道具 舉報(bào)

板凳
ID:291220 發(fā)表于 2018-8-17 16:00 | 只看該作者
admin 發(fā)表于 2018-8-16 17:58
好東東,樓主能簡(jiǎn)單的介紹一下嗎?

測(cè)速模塊的 OUT 口鏈接 MCU 的外部中斷口,每當(dāng)有紅外射線導(dǎo)通就是一個(gè)外部緩沖。
測(cè)距離:
測(cè)速傳感器輸出為脈沖信號(hào),一個(gè)脈沖中斷一次;紅外射線導(dǎo)通的時(shí)候是低電平,所以我們?cè)O(shè)置中斷為低
電平觸法模式。一般碼盤(pán)上有整數(shù)格子,無(wú)論是多少格其實(shí)原理一樣,例如 20 格碼盤(pán),也就是有 20 個(gè)空
格子,電機(jī)轉(zhuǎn)一圈后便是射線導(dǎo)通 20 次,外部低電平觸法 20 次;
安裝上面的思路,我們的測(cè)速傳感器就可以發(fā)揮出效果了,我們知道一圈就有 20個(gè)中斷,于是我們計(jì)算中
斷次數(shù),得到的總次數(shù)除于 20 也就是電機(jī)轉(zhuǎn)動(dòng)次數(shù)了,然后按照輪子的周長(zhǎng),計(jì)算輪子一圈是多長(zhǎng),就可
以推算出小車已經(jīng)跑多遠(yuǎn)了。

當(dāng)然也可以測(cè)速度:
按照測(cè)距離的思路,我們用一個(gè) MCU 定時(shí)器計(jì)算,1 秒內(nèi)接收多少個(gè)外部中斷,例如一秒內(nèi)接收了 20 個(gè)
外部中斷,我們就可以判斷小車速度為 1 秒小車輪子轉(zhuǎn)兩圈,然后再計(jì)算出小車輪子的周長(zhǎng),就可得知小
車 1 秒行駛的速度
大家不妨可以試試

評(píng)分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:291220 發(fā)表于 2018-8-18 15:46 | 只看該作者
最終實(shí)物圖

psb.jpg (73.24 KB, 下載次數(shù): 64)

最終實(shí)物圖

最終實(shí)物圖

psb.jpg (72.12 KB, 下載次數(shù): 62)

psb.jpg

psb.jpg (173.78 KB, 下載次數(shù): 74)

psb.jpg

評(píng)分

參與人數(shù) 1黑幣 +60 收起 理由
admin + 60 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

5#
ID:387638 發(fā)表于 2018-8-18 17:40 | 只看該作者

這個(gè)很好耶
回復(fù)

使用道具 舉報(bào)

6#
ID:332956 發(fā)表于 2018-8-20 15:30 | 只看該作者
這個(gè)好玩。是不是推著走一圈,就跟畫(huà)白線似的?
回復(fù)

使用道具 舉報(bào)

7#
ID:46999 發(fā)表于 2018-8-20 19:31 | 只看該作者
編譯報(bào)錯(cuò).C(53): warning C209: '_OLED_ShowChar': too few actual parameters
回復(fù)

使用道具 舉報(bào)

8#
ID:369368 發(fā)表于 2019-2-23 22:54 | 只看該作者
刷新的可快,用51單片機(jī)控制OLED顯示字它總是一閃一閃的
回復(fù)

使用道具 舉報(bào)

9#
ID:648535 發(fā)表于 2019-11-28 10:40 | 只看該作者
顯示的數(shù)據(jù)很準(zhǔn)確嗎?
回復(fù)

使用道具 舉報(bào)

10#
ID:445025 發(fā)表于 2019-12-24 20:09 | 只看該作者
請(qǐng)問(wèn)一下有proteus的仿真嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线观看网站 | 日韩国产中文字幕 | 日本中文字幕在线视频 | 91看国产 | 午夜小视频在线播放 | 欧美性大战xxxxx久久久 | 一级毛片在线看 | 亚洲第一区国产精品 | 国产精品一二三区 | 久久精品一区 | 国产又爽又黄的视频 | 成人免费一区二区三区视频网站 | 日日夜夜天天干 | 欧美激情精品久久久久久 | 成人av在线播放 | 欧美电影一区 | 国产福利资源 | 亚洲综合在线播放 | 日韩在线一区二区 | 久久久99国产精品免费 | 国产一二三区精品视频 | 99成人免费视频 | a视频在线观看 | 日韩欧美一区二区三区免费观看 | 久久久久国产一区二区三区四区 | 日韩在线视频精品 | 欧洲尺码日本国产精品 | 久久久久久国产精品 | h小视频| 成人精品在线观看 | 夜夜精品浪潮av一区二区三区 | 成人精品一区二区 | 国产91丝袜在线播放 | 欧美淫 | 久久成人精品 | 美国av毛片| 日韩中文字幕久久 | 亚洲人在线 | 久草电影网 | 999久久久久久久久 国产欧美在线观看 | 国产精品永久免费 |