標(biāo)題: 自行車測速仿真 PROTEUS [打印本頁]

作者: daoyou    時間: 2013-8-7 02:44
標(biāo)題: 自行車測速仿真 PROTEUS
希望對大家有幫助!下記住要頂呀!

自行車測速仿真.rar (48.8 KB, 下載次數(shù): 512)

源碼:
  1. #include "d:\c51\reg51.h"
  2. #include "d:\c51\intrins.h"


  3. sbit LCM_RS=P3^0;
  4. sbit LCM_RW=P3^1;
  5. sbit LCM_EN=P3^7;

  6. #define BUSY                  0x80              //常量定義
  7. #define DATAPORT         P1
  8. #define uchar                 unsigned char
  9. #define uint                   unsigned int
  10. #define L                        50

  11. uchar str0[16],str1[16],count;
  12. uint speed;
  13. unsigned long time;

  14. void ddelay(uint);
  15. void lcd_wait(void);
  16. void display();
  17. void initLCM();
  18. void WriteCommandLCM(uchar WCLCM,uchar BusyC);
  19. void STR();
  20. void account();


  21. /*********延時K*1ms,12.000mhz**********/

  22. void int0_isr(void) interrupt 0         /*遙控使用外部中斷0,接P3.2口*/
  23. {
  24.     unsigned int temp;
  25.         time=count;
  26.     TR0=0;
  27.         temp=TH0;
  28.         temp=((temp << 8) | TL0);
  29.     TH0=0x3c;
  30.     TL0=0xaf;
  31.         count=0;
  32.     TR0=1;
  33.         time=time*50000+temp;
  34. }

  35. void time0_isr(void) interrupt 1        /*遙控使用定時計數(shù)器1 */
  36. {
  37.    TH0 =0x3c;
  38.    TL0 =0xaf;
  39.    count++;
  40. }

  41. void main(void)
  42. {
  43.            TMOD=0x01;                       /*TMOD T0選用方式1(16位定時) */
  44.     IP|=0x01;                           /*INT0 中斷優(yōu)先*/
  45.     TCON|=0x11;                         /*TCON  EX0下降沿觸發(fā),啟動T0*/
  46.     IE|=0x83;  
  47.     TH0=0x3c;
  48.     TL0=0xaf;
  49.   
  50.         initLCM();
  51.            WriteCommandLCM(0x01,1);                    //清顯示屏
  52.         for(;;)
  53.         {
  54.                 account();
  55.                 display();
  56.         }
  57. }

  58. void account()
  59. {
  60.         unsigned long a;
  61.         if (time!=0)
  62.         {
  63.                 a=L*360000000/time;
  64.         }
  65.         speed=a;
  66. }



  67. void STR()
  68. {
  69.         str0[0]='S';
  70.         str0[1]='p';
  71.         str0[2]='e';
  72.     str0[3]='e';
  73.         str0[4]='d';
  74.         str0[5]=' ';       
  75.         str0[6]=(speed%100000)/10000+0x30;
  76.         str0[7]=(speed%10000)/1000+0x30;
  77.         str0[8]=(speed%1000)/100+0x30;
  78.         str0[9]='.';
  79.         str0[10]=(speed%100)/10+0x30;
  80.         str0[11]=speed%10+0x30;
  81.         str0[12]='k';
  82.         str0[13]='m';
  83.         str0[14]='/';
  84.         str0[15]='h';
  85. }

  86. void ddelay(uint k)
  87. {
  88.     uint i,j;
  89.     for(i=0;i<k;i++)
  90.     {
  91.         for(j=0;j<60;j++)
  92.                 {;}
  93.     }
  94. }
  95. /**********寫指令到LCD子函數(shù)************/

  96. void WriteCommandLCM(uchar WCLCM,uchar BusyC)
  97. {
  98.     if(BusyC)lcd_wait();
  99.         DATAPORT=WCLCM;
  100.     LCM_RS=0;                   /* 選中指令寄存器*/
  101.     LCM_RW=0;                       // 寫模式
  102.     LCM_EN=1;
  103.         _nop_();
  104.         _nop_();
  105.         _nop_();
  106.     LCM_EN=0;

  107. }

  108. /**********寫數(shù)據(jù)到LCD子函數(shù)************/

  109. void WriteDataLCM(uchar WDLCM)
  110. {
  111.     lcd_wait( );            //檢測忙信號
  112.         DATAPORT=WDLCM;
  113.     LCM_RS=1;               /* 選中數(shù)據(jù)寄存器  */
  114.     LCM_RW=0;                   // 寫模式
  115.     LCM_EN=1;
  116.     _nop_();
  117.         _nop_();
  118.         _nop_();
  119.     LCM_EN=0;
  120. }

  121. /***********lcd內(nèi)部等待函數(shù)*************/

  122. void lcd_wait(void)
  123. {
  124.     DATAPORT=0xff;             //讀LCD前若單片機輸出低電平,而讀出LCD為高電平,則沖突,Proteus仿真會有顯示邏輯黃色
  125.         LCM_EN=1;
  126.     LCM_RS=0;
  127.     LCM_RW=1;
  128.     _nop_();
  129.     _nop_();
  130.         _nop_();
  131.     while(DATAPORT&BUSY)
  132.         {  LCM_EN=0;
  133.            _nop_();
  134.            _nop_();
  135.            LCM_EN=1;
  136.            _nop_();
  137.            _nop_();
  138.         }
  139.            LCM_EN=0;

  140. }

  141. /**********LCD初始化子函數(shù)***********/
  142. void initLCM( )
  143. {
  144.         DATAPORT=0;
  145.         ddelay(15);
  146.         WriteCommandLCM(0x38,0);    //三次顯示模式設(shè)置,不檢測忙信號
  147.     ddelay(5);
  148.     WriteCommandLCM(0x38,0);
  149.     ddelay(5);
  150.     WriteCommandLCM(0x38,0);
  151.     ddelay(5);

  152.     WriteCommandLCM(0x38,1);    //8bit數(shù)據(jù)傳送,2行顯示,5*7字型,檢測忙信號
  153.     WriteCommandLCM(0x08,1);    //關(guān)閉顯示,檢測忙信號
  154.     WriteCommandLCM(0x01,1);    //清屏,檢測忙信號
  155.     WriteCommandLCM(0x06,1);    //顯示光標(biāo)右移設(shè)置,檢測忙信號
  156.     WriteCommandLCM(0x0c,1);    //顯示屏打開,光標(biāo)不顯示,不閃爍,檢測忙信號
  157. }

  158. /****顯示指定坐標(biāo)的一個字符子函數(shù)****/

  159. void DisplayOneChar(uchar X,uchar Y,uchar DData)
  160. {
  161.     Y&=1;
  162.     X&=15;
  163.     if(Y)X|=0x40;               //若y為1(顯示第二行),地址碼+0X40
  164.     X|=0x80;                    //指令碼為地址碼+0X80
  165.     WriteCommandLCM(X,0);
  166.     WriteDataLCM(DData);
  167. }

  168. /*******顯示指定坐標(biāo)的一串字符子函數(shù)*****/

  169. void DisplayListChar(uchar X,uchar Y,uchar *DData)
  170. {
  171.     uchar ListLength=0;
  172.     Y&=0x01;
  173.     X&=0x0f;
  174.     while(X<16)
  175.     {
  176.         DisplayOneChar(X,Y,DData[ListLength]);
  177.         ListLength++;
  178.         X++;
  179.     }
  180. }


  181. void display()
  182. {

  183.         STR();
  184.         DisplayListChar(0,0,str0);
  185.            DisplayListChar(0,1,str1);
  186. }
復(fù)制代碼




作者: rsbook    時間: 2014-4-3 17:09
頂一下
作者: yixiaow810c    時間: 2014-4-4 14:11
贊一下!
作者: walt740    時間: 2014-4-7 16:22
不錯不錯
作者: 牧涼    時間: 2014-4-23 01:33
不錯,學(xué)習(xí)學(xué)習(xí)
作者: 墨竹雅客    時間: 2014-5-21 14:26
看看有木有用
作者: LDLLYFX    時間: 2014-5-21 19:07
沒有M幣啦   想下載啊
作者: junqianggo    時間: 2014-5-21 21:51
支持····
作者: cjhk    時間: 2014-6-3 13:33
很給李   謝謝樓主
作者: woahaookc    時間: 2014-6-6 23:28
哈哈哈嘎哈
作者: 154860956    時間: 2014-8-6 02:41

作者: 周安松    時間: 2014-9-13 08:02
謝謝樓主分享
作者: T29    時間: 2014-9-14 02:10
很好  學(xué)習(xí)  謝謝
作者: 許你晴天柱    時間: 2014-9-14 18:00
贊一個
作者: 郭良    時間: 2014-10-23 19:45
不錯不錯
作者: hjlost    時間: 2014-10-24 13:59
掘墓高手,專挖古墓,一挖一個坑,坑坑見墓。。

作者: MOKER    時間: 2014-11-12 21:41
希望有一天我也可以這樣幫到大家,謝謝啦
作者: zgs660429    時間: 2014-11-18 20:35
看看好用不
作者: 花晨少    時間: 2014-11-20 15:29
看看是不是有用
作者: zqs42160142    時間: 2014-11-22 16:08
啥玩樣
作者: lijinglei234420    時間: 2014-11-23 21:09
給力啊樓主樓主加油
作者: 雪中梅花    時間: 2014-11-24 16:00
謝謝樓主奉獻。
作者: blacklcj    時間: 2014-12-23 14:38
下載來看看
作者: blacklcj    時間: 2014-12-23 14:38
沒有幣了。。

作者: 中奧ol    時間: 2015-1-4 18:59
看一下羅
作者: hthometown    時間: 2015-1-19 16:21
不錯不錯
作者: hthometown    時間: 2015-1-19 16:21
頂一下
作者: 釣魚臺    時間: 2015-3-15 22:21
支持一下再看
作者: hlywhp    時間: 2015-4-28 16:57
頂一下
作者: 榆林上校    時間: 2015-5-4 16:26
頂一下!
作者: 小小孩子    時間: 2015-5-5 11:23
感謝樓主分享。!
作者: fsnhjjj    時間: 2015-5-17 22:08
謝謝樓主分享  先碼了

作者: GG-路人乙    時間: 2015-5-17 23:10
新手多多指教
作者: txyueyu    時間: 2015-5-30 20:33
需要啊
作者: cuiyulan    時間: 2015-6-8 13:26
非常感謝,
作者: i6na    時間: 2015-6-10 00:32
謝謝了,正好學(xué)習(xí)下
作者: liang11    時間: 2015-6-11 21:08
不錯哦、,,,,
作者: cccao    時間: 2015-6-16 21:36
頂一下
作者: 小馬哥00    時間: 2015-6-17 22:02
我是新手,想看看,先謝過。
作者: 小馬哥00    時間: 2015-6-19 12:44
看看,先謝過了。
作者: hahaha123    時間: 2015-6-27 19:19
蠻有用的
作者: 湯博    時間: 2015-10-13 12:49
先謝謝了,下載望望
作者: c51流浪者    時間: 2015-10-16 13:43
感謝朋友分享
作者: ludaijin    時間: 2015-10-20 11:21
下了,感覺不是想要的
作者: Jerry619    時間: 2016-1-7 21:06
賺分路過
作者: 夏目什么賬    時間: 2016-3-5 16:20
多謝樓主,先碼了再看看!
作者: purple唯愛紫    時間: 2016-3-18 17:22
運行了,怎么測的?

作者: 愛打打分    時間: 2016-3-22 14:38
很好,樓主棒棒的
作者: 愛打打分    時間: 2016-3-22 14:38
感謝樓主分享哈哈哈
作者: 電子技術(shù)1    時間: 2016-3-30 13:13

多謝樓主奉獻。
作者: lp51hei    時間: 2016-4-3 15:10
贊。。。。。。。!
作者: tracy121    時間: 2016-4-4 22:18
請問這是用什么軟件仿真的?
作者: Melody756    時間: 2016-4-19 10:57
值得擁有,感謝樓主
作者: 新手是我    時間: 2016-4-24 20:30
頂咯 再加贊
作者: zhaorong    時間: 2016-7-4 23:26
頂一個
作者: CAODEYUN    時間: 2016-9-20 21:57
找了好久了
作者: yjs    時間: 2016-9-27 08:15
發(fā)現(xiàn)好多東西都有用
作者: mllwj    時間: 2017-3-6 14:04
學(xué)習(xí)了!感謝樓主!!
作者: tangree    時間: 2017-6-8 21:06
謝謝分享
作者: 黑電子121    時間: 2017-6-15 16:11
樓主下面那個藍色的是啥呀
作者: tieq1952    時間: 2017-12-2 18:58
贊一下!下載了。謝謝!
作者: yudubu    時間: 2017-12-23 14:42
謝謝樓主分享
作者: tieq1952    時間: 2018-1-3 15:24
新買一輛電動車,只能顯示電量,沒有速度、里程等顯示,準(zhǔn)備自己DIY一個。這個可以作個參考。
作者: 宮商角徵羽smile    時間: 2018-5-3 09:51
樓主,你能說明一下 下方藍色的是怎么出來的嗎?我是新手,有點不懂
作者: jjjjouy    時間: 2018-7-20 12:24
贊贊贊
作者: 1979759100Ls    時間: 2019-4-17 20:54
下載以后液晶沒變化則呢么辦




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1