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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

自己diy的電動車電壓里程表(12864液晶顯示)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:51275 發(fā)表于 2013-6-26 16:16 | 只看該作者 |只看大圖 回帖獎勵 |倒序?yàn)g覽 |閱讀模式











編碼器做電動車脈沖實(shí)驗(yàn)



編碼器做電動車脈沖實(shí)驗(yàn)









接近開關(guān)安裝電動車前輪




電動車?yán)锍屉妷罕沓绦?rar (2.08 KB, 下載次數(shù): 204)
電動車?yán)锍瘫碓韴D.rar (4.76 KB, 下載次數(shù): 175)


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

使用道具 舉報(bào)

沙發(fā)
ID:51275 發(fā)表于 2013-6-26 16:16 | 只看該作者
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include <stdlib.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. #define ulong unsigned long
  7. #define AD_data P1
  8. #define LCD_data P0

  9. sbit intr=P3^0;         //AD0804
  10. sbit adwr=P3^2;        //AD0804寫信號
  11. sbit adrd=P3^1;        //AD0804讀信號
  12. sbit LCD_RS=P2^5;//lcd
  13. sbit LCD_RW=P2^6; //lcd
  14. sbit LCD_EN=P2^7; //lcd
  15. sbit s1=P3^3;        //按鍵,單程公里清零
  16. sbit scl=P3^6;        //24c02
  17. sbit sda=P3^7;        //24c02

  18. uchar code dis1[]={"筿潰"};
  19. uchar code dis2[]={"蟲祘"};
  20. uchar code dis3[]={"羆祘"};
  21. uchar code dis4[]={"承禤摟筿笆ó "};
  22. uchar code dis5[]={"."};
  23. uchar code dis6[]={"V"};
  24. uchar code dis7[]={"KM"};

  25. uchar a,b,c,d,e,f,g,y,z;
  26. ulong num,num1;                      
  27. uint zongcheng,dancheng,zongcheng1,dancheng1;

  28. void delay()
  29. {;;}
  30.        
  31. void delayms(uint xms) //延時
  32. {
  33.         uint i,j;
  34.         for(i=xms;i>0;i--)
  35.                 for(j=110;j>0;j--);
  36. }

  37. void AD_init()//ad0804初始化
  38. {
  39.         adwr=1;
  40.         adrd=1;
  41. }

  42. void start()//開始
  43. {
  44.         sda=1;
  45.         delay();
  46.         scl=1;
  47.         delay();
  48.         sda=0;
  49.         delay();

  50. }

  51. void stop()//停止
  52. {
  53.         sda=0;
  54.         delay();
  55.         scl=1;
  56.         delay();
  57.         sda=1;
  58.         delay();
  59. }

  60. void respons()//應(yīng)答
  61. {
  62.         uchar i;
  63.         scl=1;
  64.         delay();
  65.         while((sda==1)&&(i<250))i++;
  66.         scl=0;
  67.         delay();
  68. }

  69. void init()//初始化
  70. {
  71.         sda=1;
  72.         delay();
  73.         scl=1;
  74.         delay();
  75. }

  76. void write_byte(uchar date )//寫1字
  77. {
  78.         uchar i,temp;
  79.         temp=date;
  80.         for(i=0;i<8;i++)
  81.                 {
  82.                         temp=temp<<1;
  83.                         scl=0;
  84.                         delay();
  85.                         sda=CY;
  86.                    delay();
  87.                    scl=1;
  88.                   delay();
  89.                 }
  90.          scl=0;
  91.          delay();
  92.          sda=1;
  93.          delay();
  94. }

  95. uchar read_byte()//讀1字
  96. {
  97.         uchar i,k;
  98.         scl=0;
  99.         delay();
  100.         sda=1;
  101.         delay();
  102.         for(i=0;i<8;i++)
  103.         {
  104.                 scl=1;
  105.                 delay();
  106.                 k=(k<<1)|sda;
  107.                 scl=0;
  108.                 delay();
  109.         }
  110.         return k;
  111. }

  112. void write_add(uchar address,uchar date)//寫字節(jié)
  113. {
  114.         start();
  115.         write_byte(0xa0);
  116.         respons();
  117.         write_byte(address);
  118.         respons();
  119.         write_byte(date);
  120.     respons();
  121.         stop();
  122. }

  123. uchar reda_add(uchar address)//讀字節(jié)
  124. {
  125.         uchar date;
  126.         start();
  127.         write_byte(0xa0);
  128.         respons();
  129.         write_byte(address);
  130.         respons();
  131.         start();
  132.         write_byte(0xa1);
  133.         respons();
  134.         date=read_byte();
  135.         stop();
  136.         return date;

  137. }

  138. void write_cmd(uchar cmd)//寫指令到lcd
  139. {
  140.         LCD_RS=0;
  141.         LCD_RW=0;
  142.         LCD_EN=0;
  143.         P0=cmd;
  144.         delayms(5);
  145.         LCD_EN=1;
  146.         delayms(5);
  147.         LCD_EN=0;
  148. }  

  149. void write_dat(uchar dat)//寫顯示數(shù)據(jù)到lcd
  150. {
  151.         LCD_RS=1;
  152.         LCD_RW=0;
  153.         LCD_EN=0;
  154.         P0=dat;
  155.         delayms(5);
  156.         LCD_EN=1;
  157.         delayms(5);
  158.         LCD_EN=0;
  159. }

  160. void put_str(char i,char j,unsigned char date)        //指針定位;
  161. {
  162.         if(i==1)
  163.         write_cmd(0x83+j-1);
  164. //        else write_cmd(0xc0+j-1);
  165.         write_dat('0'+date)        ;
  166. }

  167. void ADqd()        //ad0808啟動
  168. {
  169.                 float  i=1;
  170.          uint j;
  171.          uchar ge,shi,bai;
  172.         int a[8];       
  173.         P1=0xff;
  174.         intr=1;
  175.         adwr=1;
  176.         _nop_();
  177.         adwr=0;
  178.         _nop_();
  179.         adwr=1;       
  180.    while(intr==1);       
  181.         adrd=1;
  182.         _nop_();
  183.         adrd=0;
  184.         _nop_();

  185.                 i=P1;
  186.                 a[0]=P1^0;
  187.                 a[1]=P1^1;
  188.                 a[2]=P1^2;
  189.                 a[3]=P1^3;
  190.                 a[4]=P1^4;
  191.                 a[5]=P1^5;
  192.                 a[6]=P1^6;
  193.                 a[7]=P1^7;
  194.                 i=i/255;
  195.                 i*=6;
  196.                 i*=100;
  197.                 j=(int)i;
  198.                 ge=j%10;
  199.                 put_str(1,4,ge);
  200.                 j-=ge;
  201.                 shi=j/10;
  202.                 shi=shi%10;
  203.                 put_str(1,2,shi);
  204.                 bai=j/100;
  205.                 put_str(1,1,bai);
  206.                 for(i=0;i<8;i++);
  207.                  delayms(10);
  208.                         adrd=1;
  209. }


  210. void lcd_init()//lcd初始化
  211. {
  212.         LCD_RW=0;
  213.         write_cmd(0x30);
  214.         delayms(5);
  215.         write_cmd(0x0c);
  216.         delayms(5);
  217.         write_cmd(0x06);
  218.         delayms(5);
  219.         write_cmd(0x01);
  220.         delayms(5);
  221. }

  222. void lcd_pos(uchar X,uchar Y)//設(shè)定漢字顯示位置
  223. {
  224.         uchar pos;
  225.          if(X==0)
  226.                 {X=0x80;}
  227.         else if(X==1)
  228.                 {X=0x90;}
  229.         else if(X==2)
  230.                 {X=0x88;}
  231.         else if(X==3)
  232.                 {X=0x98;}
  233.         else if(X==4)
  234.                 {X=0x85;}
  235.         else if(X==5)
  236.                 {X=0x87;}
  237.         else if(X==6)
  238.                 {X=0x97;}
  239.         else if(X==7)
  240.                 {X=0x8f;}

  241.         pos=X+Y;
  242.         write_cmd(pos);
  243. }




  244. void main()
  245. {                    
  246.         uchar i;
  247.         init();
  248.         a=reda_add(1);
  249.         delayms(5);
  250.         b=reda_add(2);
  251.         delayms(5);
  252.         c=reda_add(3);
  253.         delayms(5);
  254.     d=reda_add(4);
  255.         delayms(5);
  256.         e=reda_add(5);
  257.         delayms(5);
  258.         f=reda_add(11);
  259.         delayms(5);
  260.         g=reda_add(12);
  261.         delayms(5);
  262.         y=reda_add(13);
  263.         delayms(5);
  264.     z=reda_add(14);
  265.         delayms(5);
  266.         zongcheng1=(a*10000)+(b*1000)+(c*100)+(d*10)+e;
  267.         dancheng1=(f*1000)+(g*100)+(y*10)+z;
  268.        
  269.            TMOD=0X55;//設(shè)T0,T1為計(jì)數(shù)
  270.         TL0=0xff;
  271.         TH0=0xff;
  272.         TL1=0xff;
  273.         TH1=0xff;
  274.         TR0=1;
  275.         TR1=1;
  276.         EA=1;
  277.         ET0=1;
  278.         ET1=1;


  279.         lcd_init();
  280.         lcd_pos(0,0);
  281.         i=0;
  282.         while(dis1[i]!='\0')
  283.         {
  284.                 write_dat(dis1[i]);
  285.                 i++;

  286.         }
  287.        
  288.         lcd_pos(1,0);
  289.         i=0;
  290.         while(dis2[i]!='\0')
  291.         {
  292.                 write_dat(dis2[i]);
  293.                 i++;
  294.         }
  295.         lcd_pos(2,0);
  296.         i=0;
  297.         while(dis3[i]!='\0')
  298.         {
  299.                 write_dat(dis3[i]);
  300.                 i++;
  301.         }
  302.        
  303.        
  304.         lcd_pos(3,0);
  305.         i=0;
  306.         while(dis4[i]!='\0')
  307.         {
  308.                 write_dat(dis4[i]);
  309.                 i++;
  310.         }

  311.         lcd_pos(4,0);
  312.         i=0;
  313.         while(dis6[i]!='\0')
  314.         {
  315.                 write_dat(dis5[i]);
  316.                 i++;
  317.         }

  318.         lcd_pos(5,0);
  319.         i=0;
  320.         while(dis6[i]!='\0')
  321.         {
  322.                 write_dat(dis6[i]);
  323.                 i++;
  324.         }

  325.         lcd_pos(6,0);
  326.         i=0;
  327.         while(dis7[i]!='\0')
  328.         {
  329.                 write_dat(dis7[i]);
  330.                 i++;
  331.         }

  332.         lcd_pos(7,0);
  333.         i=0;
  334.         while(dis7[i]!='\0')
  335.         {
  336.                 write_dat(dis7[i]);
  337.                 i++;
  338.         }

  339.        
  340.         while(1)               
  341.         {
  342.                 AD_init();
  343.                         delayms(50);       
  344.                 ADqd();
  345.                         delayms(50);

  346.                 zongcheng=num*1.3/1000+zongcheng1;//16寸輪胎周長為130cm
  347.                 a=zongcheng/10000;
  348.                 b=zongcheng%10000/1000;
  349.                 c=zongcheng%1000/100;
  350.                 d=zongcheng%100/10;
  351.                 e=zongcheng%10;         
  352.                 put_str(1,8,a);
  353.                 put_str(1,9,b);
  354.                 put_str(1,10,c);
  355.                 put_str(1,11,d);
  356.                 put_str(1,12,e);
  357.                          
  358.        
  359.                 dancheng=num1*1.3/1000+dancheng1;
  360.                 f=dancheng%10000/1000;
  361.                 g=dancheng%1000/100;
  362.             y=dancheng%100/10;
  363.                 z=dancheng%10;
  364.        
  365.                 put_str(1,17,f);
  366.                 put_str(1,18,g);
  367.                 put_str(1,19,y);
  368.                 put_str(1,20,z);
  369.                 if(s1==0)
  370.                 {
  371.                
  372.                 dancheng=0;
  373.                 dancheng1=0;                             
  374.                 }
  375.         write_add(1,a);
  376.         delayms(5);
  377.         write_add(2,b);
  378.         delayms(5);
  379.                 write_add(3,c);
  380.         delayms(5);
  381.                 write_add(4,d);
  382.         delayms(5);
  383.                 write_add(5,e);
  384.         delayms(5);
  385.                 write_add(11,f);
  386.         delayms(5);
  387.                 write_add(12,g);
  388.         delayms(5);
  389.                 write_add(13,y);
  390.         delayms(5);
  391.                 write_add(14,z);
  392.         delayms(5);               
  393.         }   
  394. }

  395. void T0_time()interrupt 1//總程中斷計(jì)數(shù)
  396. {
  397.         TH0=0xff;
  398.         TL0=0xff;
  399.         num++;

  400. }

  401. void T1_time()interrupt 3//單程中斷計(jì)數(shù)
  402. {
  403.         TH1=0xff;
  404.         TL1=0xff;
  405.         num1++;
  406. }





復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

板凳
ID:51321 發(fā)表于 2013-6-27 15:19 | 只看該作者
好厲害啊
回復(fù)

使用道具 舉報(bào)

地板
ID:51321 發(fā)表于 2013-6-27 15:21 | 只看該作者
好厲害啊
回復(fù)

使用道具 舉報(bào)

5#
ID:51343 發(fā)表于 2013-6-28 17:47 | 只看該作者
51hei論壇有你更精彩
回復(fù)

使用道具 舉報(bào)

6#
ID:51343 發(fā)表于 2013-6-28 17:48 | 只看該作者
我明天買材料做一個
回復(fù)

使用道具 舉報(bào)

7#
ID:55565 發(fā)表于 2013-10-2 19:40 | 只看該作者
很好,非常不錯的。
回復(fù)

使用道具 舉報(bào)

8#
ID:57910 發(fā)表于 2013-12-16 10:43 | 只看該作者
回復(fù)

使用道具 舉報(bào)

9#
ID:57910 發(fā)表于 2013-12-16 10:43 | 只看該作者
沒有師付。
回復(fù)

使用道具 舉報(bào)

10#
ID:58837 發(fā)表于 2014-1-17 10:38 | 只看該作者
很好,非常不錯的。
回復(fù)

使用道具 舉報(bào)

11#
ID:58900 發(fā)表于 2014-1-21 20:24 | 只看該作者
不錯 正想做
回復(fù)

使用道具 舉報(bào)

12#
ID:58900 發(fā)表于 2014-1-21 20:24 | 只看該作者
不錯 正想做
回復(fù)

使用道具 舉報(bào)

13#
ID:58461 發(fā)表于 2014-1-22 13:09 | 只看該作者
回復(fù)

使用道具 舉報(bào)

14#
ID:59133 發(fā)表于 2014-3-2 21:03 | 只看該作者
理論與實(shí)踐的高手,佩服!學(xué)習(xí)!
回復(fù)

使用道具 舉報(bào)

15#
ID:58796 發(fā)表于 2014-3-6 20:23 | 只看該作者
51hei論壇有你更精彩
回復(fù)

使用道具 舉報(bào)

16#
ID:59133 發(fā)表于 2014-3-10 22:13 | 只看該作者
謝謝樓主提供!學(xué)習(xí)學(xué)習(xí)!
回復(fù)

使用道具 舉報(bào)

17#
ID:59072 發(fā)表于 2014-3-11 09:19 來自手機(jī) | 只看該作者
不錯!很好的資料
回復(fù)

使用道具 舉報(bào)

18#
ID:55565 發(fā)表于 2014-3-11 20:26 | 只看該作者
好啊,不錯
回復(fù)

使用道具 舉報(bào)

19#
ID:61200 發(fā)表于 2014-4-28 22:41 | 只看該作者
這個做的很好,很實(shí)用,很好的資料
回復(fù)

使用道具 舉報(bào)

20#
ID:61140 發(fā)表于 2014-6-9 20:01 | 只看該作者
牛B
好牛X哦,這東東確實(shí)不錯
回復(fù)

使用道具 舉報(bào)

21#
ID:63333 發(fā)表于 2014-6-26 18:21 | 只看該作者
好東西  謝謝  
回復(fù)

使用道具 舉報(bào)

22#
ID:66729 發(fā)表于 2014-9-27 21:59 | 只看該作者
很好,非常不錯的。
回復(fù)

使用道具 舉報(bào)

23#
ID:60706 發(fā)表于 2015-1-28 13:12 | 只看該作者

很好,非常不錯的。
回復(fù)

使用道具 舉報(bào)

24#
ID:79137 發(fā)表于 2015-5-6 23:19 | 只看該作者
可以給我發(fā)一份編碼器的資料么  673389308@qq.com
回復(fù)

使用道具 舉報(bào)

25#
ID:114726 發(fā)表于 2016-4-17 13:49 | 只看該作者
趕快看看。。。。。。。。。。。。。。
回復(fù)

使用道具 舉報(bào)

26#
ID:129558 發(fā)表于 2016-10-8 13:19 | 只看該作者
謝謝樓主
回復(fù)

使用道具 舉報(bào)

27#
ID:153652 發(fā)表于 2016-12-11 21:28 來自手機(jī) | 只看該作者
曾經(jīng)在電子工程周報(bào)上看到過基于單片機(jī)的里程表,但沒有源程序,今天終于看到了先下載下來,很想學(xué)著自己做一個,謝謝樓主提供
回復(fù)

使用道具 舉報(bào)

28#
ID:66429 發(fā)表于 2016-12-12 19:11 | 只看該作者
資源很好

回復(fù)

使用道具 舉報(bào)

29#
ID:40779 發(fā)表于 2016-12-15 09:29 | 只看該作者
這個不錯,下來學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

30#
ID:130231 發(fā)表于 2017-3-20 16:21 | 只看該作者
實(shí)在是高手!學(xué)了就能用上。感謝你的分享
回復(fù)

使用道具 舉報(bào)

31#
ID:180744 發(fā)表于 2017-3-22 20:02 | 只看該作者
動手達(dá)人,頂
回復(fù)

使用道具 舉報(bào)

32#
ID:201864 發(fā)表于 2017-5-17 18:16 | 只看該作者
下載的原理圖怎么打不開啊?請問用哪個軟件打開啊?
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区在线看 | 日韩精品网站 | 午夜精品一区 | 男女爱爱福利视频 | 中文字幕在线免费观看 | 精品国产乱码久久久久久蜜柚 | 精品在线看| 日本一区二区三区在线观看 | av网站免费 | 成人高清视频在线观看 | 国产成人短视频在线观看 | 五月天婷婷丁香 | 久久中文字幕一区 | 欧美日韩一区二区在线观看 | 精品国产伦一区二区三区观看方式 | 国产精品免费大片 | 久久三级av | 天天射美女 | 九色av| 亚洲天堂成人在线视频 | 国产乱码精品一区二区三区忘忧草 | 一级毛片视频 | 波多野结衣一二三区 | 久久免费视频1 | 盗摄精品av一区二区三区 | 国产精品久久久久一区二区三区 | 欧美久久久 | 一区二区手机在线 | 亚洲欧美视频一区 | 欧美在线一级 | 欧美日韩一区在线观看 | 欧美精品在线播放 | 91精品国产综合久久久动漫日韩 | 亚洲九色 | 国产日韩欧美中文 | 夜夜精品浪潮av一区二区三区 | 日韩精品在线观看一区二区三区 | 日韩久久中文字幕 | 色屁屁在线观看 | 欧美午夜剧场 | 亚洲一二三区精品 |