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

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

QQ登錄

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

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

基于單片機(jī)的自行車?yán)锍瘫碓O(shè)計(jì)(有原理圖 仿真電路 源程序 pcb)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:138645 發(fā)表于 2016-9-7 13:54 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
有需要  畢業(yè) 或者 課程設(shè)計(jì)的自己下

51單片機(jī)自行車?yán)锍瘫碓韴D


自行車?yán)锍瘫矸抡?br />

自行車?yán)锍瘫淼膒cb圖

1-源程序.zip

71.7 KB, 下載次數(shù): 594, 下載積分: 黑幣 -5

2-原理圖.zip

457.17 KB, 下載次數(shù): 419, 下載積分: 黑幣 -5

5-protus仿真.zip

50.95 KB, 下載次數(shù): 478, 下載積分: 黑幣 -5

12-pcb圖.zip

141.87 KB, 下載次數(shù): 306, 下載積分: 黑幣 -5

評(píng)分

參與人數(shù) 4黑幣 +76 收起 理由
359901492 + 9 很給力!
tieq1952 + 12 很給力!
Lieternal + 5 很給力!
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

來(lái)自 2#
ID:190950 發(fā)表于 2017-4-18 19:31 | 只看該作者
大神好,我想問(wèn)問(wèn)這個(gè)速度和里程的代碼具體可以解釋一下嗎  沒(méi)看懂


if(m>=10)
        {
                m=0;
                Mileage=Mileage+10*(Velocity/3.6)/2;                 //里程m=里程+速度km/h/3.6/2
                Velocity=count *2*3.14*RADIUS /100000*2*3600  /40;//將500ms的距離經(jīng)過(guò)運(yùn)算得到km/h,將速度/100,方便顯示
                count=0;        
        }
}
回復(fù)

使用道具 舉報(bào)

來(lái)自 3#
ID:247623 發(fā)表于 2017-11-10 16:43 | 只看該作者
親測(cè)能用,仿真圖如下

搜狗截圖20171110163625.jpg (507.66 KB, 下載次數(shù): 177)

搜狗截圖20171110163625.jpg

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

來(lái)自 4#
ID:69408 發(fā)表于 2018-6-24 00:19 | 只看該作者
終于弄明白了,那個(gè)除以40是樓主隨便寫的樣,我沒(méi)有要,參考樓主朋友的程序,我打算用在電動(dòng)車?yán)锍瘫砩,所以將安全速度改成了加脈沖個(gè)數(shù)設(shè)置了,使每圈的磁極脈沖個(gè)數(shù)與輪半徑都參與里程與速度關(guān)連了,仿真沒(méi)有問(wèn)題了等有空做個(gè)實(shí)物出來(lái)試試看到底行不行了。
if(m>=10)
        {
                m=0;
               
                Mileage=Mileage+count*2*3.14*RADIUS/maicong/10;//里程數(shù)mileage=里程+記數(shù)值*輪周長(zhǎng)/每圈磁極對(duì)數(shù)/10
                Velocity=count *2*3.14*RADIUS/maicong/100000*2*3600 ;//velocity是速度,將500ms的距離經(jīng)過(guò)運(yùn)算得到km/h,方便顯示
                count=0;       
        }

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

來(lái)自 5#
ID:295874 發(fā)表于 2018-10-26 11:28 | 只看該作者
程序從頭到尾認(rèn)真研究與學(xué)習(xí)了一下,就程序整體邏輯而言,個(gè)人以為還是不錯(cuò)的,但是其中有一處個(gè)人以為還可以進(jìn)一步優(yōu)化,其中正常顯示的邏輯中,關(guān)于里程的存儲(chǔ)處理函數(shù)SETS();,放在if(Mode==0&&bike_set==0)中,具體見(jiàn)下屬函數(shù),會(huì)導(dǎo)致里程存儲(chǔ)過(guò)于頻繁,對(duì)于FLASH是一種考驗(yàn),又因?yàn)楸境绦虻倪壿嬛,測(cè)速計(jì)算處于定時(shí)器中斷中,每隔500ms才計(jì)算一次速度及里程數(shù)據(jù),所以更沒(méi)有必要那么頻繁的存儲(chǔ)里程數(shù)據(jù)。還有其中的/40注釋沒(méi)有說(shuō)明,其實(shí)我以為就是前面別人所說(shuō)的磁極脈沖數(shù)。個(gè)人見(jiàn)解歡迎批評(píng)指正,謝謝。
if(Mode==0&&bike_set==0)//正常顯示模式
        {
                //讀時(shí)間
                        Ds1302_Read_Time();
                        //顯示時(shí)間
                        write_1602com(0x80);
                        write_1602dat(0x30+time_buf1[1]/10);
                        write_1602dat(0x30+time_buf1[1]%10);
                        write_1602com(0x80+3);
                        write_1602dat(0x30+time_buf1[2]/10);
                        write_1602dat(0x30+time_buf1[2]%10);
                        write_1602com(0x80+6);
                        write_1602dat(0x30+time_buf1[3]/10);
                        write_1602dat(0x30+time_buf1[3]%10);
                        write_1602com(0x80+9);
                        write_1602dat(0x30+time_buf1[4]/10);
                        write_1602dat(0x30+time_buf1[4]%10);
                        write_1602com(0x80+12);
                        write_1602dat(0x30+time_buf1[5]/10);
                        write_1602dat(0x30+time_buf1[5]%10);
                        write_1602com(0x80+15);
                        write_1602dat(time_buf1[7]-1);               

                        if(before_sec!=time_buf1[6])//:顯示周期為1s,500ms顯示:500ms顯示空
                        {
                                before_sec=time_buf1[6];
                                write_1602com(0x80+11);
                                write_1602dat(':');
                                LED_SEC=1;
                        }
                        if(LED_SEC==0)
                        {
                                write_1602com(0x80+11);
                                write_1602dat(' ');       
                        }

                        write_1602com(0x80+0x40);//顯示固定符號(hào)寫入位置,從2行第2個(gè)位置后開(kāi)始顯示
                        if(Mileage/1000000==0)
                        write_1602dat(' ');
                        else
                        write_1602dat(0x30+Mileage/1000000);//數(shù)字+0x30得到該數(shù)字的LCD1602顯示碼
                        if(Mileage%1000000/100000==0)
                        write_1602dat(' ');
                        else       
                        write_1602dat(0x30+Mileage%1000000/100000);//數(shù)字+0x30得到該數(shù)字的LCD1602顯示碼
                        write_1602dat(0x30+Mileage%1000000%100000/10000);//數(shù)字+0x30得到該數(shù)字的LCD1602顯示碼
                        write_1602com(0x80+0x40+4);
                        write_1602dat(0x30+Mileage%1000000%100000%10000/1000);//數(shù)字+30得到該數(shù)字的LCD1602顯示碼
                        write_1602dat(0x30+Mileage%1000000%100000%10000%1000/100);//數(shù)字+30得到該數(shù)字的LCD1602顯示碼
                        write_1602dat(0x30+Mileage%1000000%100000%10000%1000%100/10);//數(shù)字+30得到該數(shù)字的LCD1602顯示碼
                        SETS();
       
                        write_1602com(0x80+0x40+10);
                        write_1602dat(0x30+Velocity/10);
                        write_1602dat(0x30+Velocity%10);//數(shù)字+30得到該數(shù)字的LCD1602顯示碼
        }
回復(fù)

使用道具 舉報(bào)

來(lái)自 6#
ID:419294 發(fā)表于 2018-11-1 20:45 | 只看該作者
版主能否解釋一下里面的參數(shù)

Mileage=Mileage+10*(Velocity/3.6)/2;                 //里程m=里程+速度km/h/3.6/2
Velocity=count *2*3.14*RADIUS /100000*2*3600  /40;//將500ms的距離經(jīng)過(guò)運(yùn)算得到km/h,將速度/100,方便顯示
回復(fù)

使用道具 舉報(bào)

7#
ID:1 發(fā)表于 2016-9-7 23:43 | 只看該作者
下面是主程序:
  1. #include<reg52.h>

  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. #include "Data.h"
  5. #include "DS1302.h"
  6. #include "AT24C02.h"

  7. sbit COUNT_IN=P3^2;

  8. //定義1602相關(guān)管腳
  9. sbit rs=P1^4;
  10. sbit en=P1^0;

  11. //鍵盤定義
  12. sbit K1=P3^4;        //設(shè)置時(shí)間
  13. sbit K3=P3^6;        //減按鍵
  14. sbit K2=P3^5;        //加按鍵
  15. sbit K4=P3^7;        //設(shè)置半徑安全距離
  16. sbit BEEP=P3^0;

  17. uint count;
  18. unsigned long Velocity,Mileage;

  19. uchar code tab1[]={"  /  /     :    "}; //14/09/10 16:34 3          
  20. uchar code tab2[]={"  0.000km 00km/h"};        //000.000km 00km/h
  21. uchar code tab3[]={"Wheel Radius  cm"};
  22. uchar code tab4[]={"Safe Speed  km/h"};
  23. uchar code tab5[]={"Sec :           "};
  24.                                                   
  25. uchar Mode=0;
  26. uchar bike_set=0;
  27. uchar a;
  28. char RADIUS,SAFE_SPEED;
  29. bit LED_SEC;
  30. uchar before_sec;       

  31. //自定義字符
  32. uchar code num[]={
  33.                                                 0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//1         
  34.                                                 0x1f,0x01,0x01,0x1f,0x10,0x10,0x1f,0x00,//2
  35.                                                 0x1f,0x01,0x01,0x1f,0x01,0x01,0x1f,0x00,//3         
  36.                                                 0x11,0x11,0x11,0x1f,0x01,0x01,0x01,0x00,//4
  37.                                                 0x1f,0x10,0x10,0x1f,0x01,0x01,0x1f,0x00,//5         
  38.                                                 0x1f,0x10,0x10,0x1f,0x11,0x11,0x1f,0x00,//6
  39.                                                 0x1f,0x01,0x01,0x01,0x01,0x01,0x01,0x00,//7        
  40. };
  41. void READS();
  42. void SETS();
  43. void delay(uint x)
  44. {
  45.         uint i,j;
  46.         for(i=0;i<x;i++)
  47.         for(j=0;j<110;j++);
  48. }
  49. void init()
  50. {
  51.         IT0=1;        //INT0負(fù)跳變觸發(fā)       
  52.     TMOD=0x01;//定時(shí)器工作于方式1
  53.         TH0=0x3c;          //50ms
  54.         TL0=0xb0;
  55.         EA=1; //CPU開(kāi)中斷總允許
  56.         ET0=1;//開(kāi)定時(shí)中斷
  57.         EX0=1;//開(kāi)外部INTO中斷
  58.     TR0=1;//啟動(dòng)定時(shí)
  59. }
  60. /********液晶寫入指令函數(shù)與寫入數(shù)據(jù)函數(shù),以后可調(diào)用**************/

  61. void write_1602com(uchar com)//****液晶寫入指令函數(shù)****
  62. {
  63.         rs=0;//數(shù)據(jù)/指令選擇置為指令
  64.         P0=com;//送入數(shù)據(jù)
  65.         delay(1);
  66.         en=1;//拉高使能端,為制造有效的下降沿做準(zhǔn)備
  67.         delay(1);
  68.         en=0;//en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令

  69. }


  70. void write_1602dat(uchar dat)//***液晶寫入數(shù)據(jù)函數(shù)****
  71. {
  72.         rs=1;//數(shù)據(jù)/指令選擇置為數(shù)據(jù)
  73.         P0=dat;//送入數(shù)據(jù)
  74.         delay(1);
  75.         en=1; //en置高電平,為制造下降沿做準(zhǔn)備
  76.         delay(1);
  77.         en=0; //en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令
  78. }
  79. //自定義字符集
  80. void Lcd_ram()      
  81. {
  82.         uint i,j,k=0,temp=0x40;
  83.         for(i=0;i<7;i++)
  84.         {
  85.            for(j=0;j<8;j++)
  86.            {
  87.             write_1602com(temp+j);
  88.             write_1602dat(num[k]);
  89.             k++;
  90.            }
  91.            temp=temp+8;
  92.         }
  93. }

  94. void lcd_init()//***液晶初始化函數(shù)****
  95. {
  96.         Lcd_ram();
  97.         write_1602com(0x38);//設(shè)置液晶工作模式,意思:16*2行顯示,5*7點(diǎn)陣,8位數(shù)據(jù)
  98.         write_1602com(0x0c);//開(kāi)顯示不顯示光標(biāo)
  99.         write_1602com(0x06);//整屏不移動(dòng),光標(biāo)自動(dòng)右移
  100.         write_1602com(0x01);//清顯示

  101.         write_1602com(0x80);//顯示固定符號(hào)從第一行第1個(gè)位置之后開(kāi)始顯示
  102.         for(a=0;a<16;a++)
  103.         {
  104.                 write_1602dat(tab1[a]);//向液晶屏寫固定符號(hào)部分
  105.         }
  106.         write_1602com(0x80+0x40);//顯示固定符號(hào)寫入位置,從第2個(gè)位置后開(kāi)始顯示
  107.         for(a=0;a<16;a++)
  108.         {
  109.                 write_1602dat(tab2[a]);//寫顯示固定符號(hào)
  110.         }
  111. }

  112. void display()
  113. {
  114.         //                        1km/h=100m/0.1h                   360s
  115.         //                        10km/h=100m/0.01h          36s
  116.         //                        100km/h=100m/0.001h  3.6s
  117.         if(Mode==0&&bike_set==0)
  118.         {
  119.                 //讀時(shí)間
  120.                         Ds1302_Read_Time();
  121.                         //顯示時(shí)間
  122.                         write_1602com(0x80);
  123.                         write_1602dat(0x30+time_buf1[1]/10);
  124.                         write_1602dat(0x30+time_buf1[1]%10);
  125.                         write_1602com(0x80+3);
  126.                         write_1602dat(0x30+time_buf1[2]/10);
  127.                         write_1602dat(0x30+time_buf1[2]%10);
  128.                         write_1602com(0x80+6);
  129.                         write_1602dat(0x30+time_buf1[3]/10);
  130.                         write_1602dat(0x30+time_buf1[3]%10);
  131.                         write_1602com(0x80+9);
  132.                         write_1602dat(0x30+time_buf1[4]/10);
  133.                         write_1602dat(0x30+time_buf1[4]%10);
  134.                         write_1602com(0x80+12);
  135.                         write_1602dat(0x30+time_buf1[5]/10);
  136.                         write_1602dat(0x30+time_buf1[5]%10);
  137.                         write_1602com(0x80+15);
  138.                         write_1602dat(time_buf1[7]-1);               

  139.                         if(before_sec!=time_buf1[6])
  140.                         {
  141.                                 before_sec=time_buf1[6];
  142.                                 write_1602com(0x80+11);
  143.                                 write_1602dat(':');
  144.                                 LED_SEC=1;
  145.                         }
  146.                         if(LED_SEC==0)
  147.                         {
  148.                                 write_1602com(0x80+11);
  149.                                 write_1602dat(' ');       
  150.                         }

  151.                         write_1602com(0x80+0x40);
  152.                         if(Mileage/1000000==0)
  153.                         write_1602dat(' ');
  154.                         else
  155.                         write_1602dat(0x30+Mileage/1000000);//數(shù)字+0x30得到該數(shù)字的LCD1602顯示碼
  156.                         if(Mileage%1000000/100000==0)
  157.                         write_1602dat(' ');
  158.                         else       
  159.                         write_1602dat(0x30+Mileage%1000000/100000);//數(shù)字+0x30得到該數(shù)字的LCD1602顯示碼
  160.                         write_1602dat(0x30+Mileage%1000000%100000/10000);//數(shù)字+0x30得到該數(shù)字的LCD1602顯示碼
  161.                         write_1602com(0x80+0x40+4);
  162.                         write_1602dat(0x30+Mileage%1000000%100000%10000/1000);//數(shù)字+30得到該數(shù)字的LCD1602顯示碼
  163.                         write_1602dat(0x30+Mileage%1000000%100000%10000%1000/100);//數(shù)字+30得到該數(shù)字的LCD1602顯示碼
  164.                         write_1602dat(0x30+Mileage%1000000%100000%10000%1000%100/10);//數(shù)字+30得到該數(shù)字的LCD1602顯示碼
  165.                         SETS();
  166.        
  167.                         write_1602com(0x80+0x40+10);
  168.                         write_1602dat(0x30+Velocity/10);
  169.                         write_1602dat(0x30+Velocity%10);//數(shù)字+30得到該數(shù)字的LCD1602顯示碼
  170.         }
  171.         else if(Mode!=0)
  172.         {
  173.                 switch(Mode)
  174.                 {
  175.                         case 1:       
  176.                                 write_1602com(0x80+0x40);//顯示固定符號(hào)寫入位置
  177.                                 for(a=0;a<16;a++)
  178.                                 {
  179.                                         write_1602dat(tab5[a]);//寫顯示固定符號(hào)
  180.                                 }
  181.                                 write_1602com(0x80+0x40+14);
  182.                                 write_1602dat(0x30+time_buf1[6]/10);
  183.                                 write_1602dat(0x30+time_buf1[6]%10);       
  184.                                 write_1602com(0x0F);         //打開(kāi)閃爍
  185.                                 write_1602com(0x80+1);
  186.                                 break;                                                  
  187.                         case 2:
  188.                                 write_1602com(0x80+4);
  189.                                 break;
  190.                         case 3:
  191.                                 write_1602com(0x80+7);
  192.                                 break;
  193.                         case 4:
  194.                                 write_1602com(0x80+10);
  195.                                 break;
  196.                         case 5:
  197.                                 write_1602com(0x80+13);
  198.                                 break;
  199.                         case 6:
  200.                                 write_1602com(0x80+0x40+15);
  201.                                 break;
  202.                         case 7:
  203.                                 write_1602com(0x80+15);
  204.                                 break;
  205.                         case 8:
  206.                                 write_1602com(0x0c);
  207.                                 write_1602com(0x80);//顯示固定符號(hào)從第一行第1個(gè)位置之后開(kāi)始顯示
  208.                                 for(a=0;a<16;a++)
  209.                                 {
  210.                                         write_1602dat(tab1[a]);//向液晶屏寫固定符號(hào)部分
  211.                                 }
  212.                                 write_1602com(0x80+0x40);//顯示固定符號(hào)寫入位置,從第2個(gè)位置后開(kāi)始顯示
  213.                                 for(a=0;a<16;a++)
  214.                                 {
  215.                                         write_1602dat(tab2[a]);//寫顯示固定符號(hào)
  216.                                 }
  217.                                 break;
  218.                 }
  219.         }
  220.         else if(bike_set!=0)
  221.         {
  222.                 switch(bike_set)
  223.                 {
  224.                         case 1:       
  225.                                 write_1602com(0x80);//顯示固定符號(hào)寫入位置
  226.                                 for(a=0;a<16;a++)
  227.                                 {
  228.                                         write_1602dat(tab3[a]);//寫顯示固定符號(hào)
  229.                                 }
  230.                                 write_1602com(0x80+0x40);//顯示固定符號(hào)寫入位置
  231.                                 for(a=0;a<16;a++)
  232.                                 {
  233.                                         write_1602dat(tab4[a]);//寫顯示固定符號(hào)
  234.                                 }
  235.                                 write_1602com(0x80+12);
  236.                                 write_1602dat(0x30+RADIUS/10);                   //車輪半徑
  237.                                 write_1602dat(0x30+RADIUS%10);
  238.                                 write_1602com(0x80+0x40+10);
  239.                                 write_1602dat(0x30+SAFE_SPEED/10);                   //安全速度
  240.                                 write_1602dat(0x30+SAFE_SPEED%10);       
  241.                                 write_1602com(0x0F);         //打開(kāi)閃爍
  242.                                 write_1602com(0x80+13);
  243.                                 break;                                                  
  244.                         case 2:
  245.                                 write_1602com(0x80+0x40+11);
  246.                                 break;
  247.                         case 3:
  248.                                 write_1602com(0x0c);
  249.                                 write_1602com(0x80);//顯示固定符號(hào)從第一行第1個(gè)位置之后開(kāi)始顯示
  250.                                 for(a=0;a<16;a++)
  251.                                 {
  252.                                         write_1602dat(tab1[a]);//向液晶屏寫固定符號(hào)部分
  253.                                 }
  254.                                 write_1602com(0x80+0x40);//顯示固定符號(hào)寫入位置,從第2個(gè)位置后開(kāi)始顯示
  255.                                 for(a=0;a<16;a++)
  256.                                 {
  257.                                         write_1602dat(tab2[a]);//寫顯示固定符號(hào)
  258.                                 }
  259.                                 break;
  260.                 }
  261.         }       
  262. }

  263. void KEY()
  264. {       
  265.         if(bike_set==0&&K1==0)
  266.         {
  267.                 delay(20);
  268.                 if(bike_set==0&&K1==0)
  269.                 {
  270.                         BEEP=0;
  271.                         delay(50);
  272.                         BEEP=1;
  273.                         Mode++;
  274.                         display();
  275.                         if(Mode>=8)
  276.                         {
  277.                                 Mode=0;
  278.                                 Ds1302_Write_Time();
  279.                         }
  280.                 }
  281.                 while(bike_set==0&&K1==0);
  282.         }
  283.         if(K4==0&&Mode==0)
  284.         {
  285.                 delay(20);
  286.                 if(K4==0&&Mode==0)
  287.                 {
  288.                         BEEP=0;
  289.                         delay(50);
  290.                         BEEP=1;
  291.                         bike_set++;
  292.                         display();
  293.                         if(bike_set>=3)
  294.                         {
  295.                                 bike_set=0;
  296.                                 SETS();
  297.                         }
  298.                 }
  299.                 while(Mode==0&&K4==0);
  300.         }

  301.         //+
  302.         if(K2==0&&(Mode!=0||bike_set!=0))
  303.         {
  304.                 delay(20);
  305.                 //調(diào)時(shí)
  306.                 if(K2==0&&(Mode!=0||bike_set!=0))
  307.                 {
  308.                         BEEP=0;
  309.                         delay(50);
  310.                         BEEP=1;       
  311.                         switch(Mode)
  312.                         {
  313.                                 case 1:
  314.                                         time_buf1[1]++;
  315.                                         if(time_buf1[1]>=100)
  316.                                                 time_buf1[1]=0;
  317.                                         write_1602com(0x80);
  318.                                         write_1602dat(0x30+time_buf1[1]/10);
  319.                                         write_1602dat(0x30+time_buf1[1]%10);
  320.                                         write_1602com(0x80+1);
  321.                                         break;
  322.                                 case 2:
  323.                                         time_buf1[2]++;
  324.                                         if(time_buf1[2]>=13)
  325.                                                 time_buf1[2]=1;
  326.                                         write_1602com(0x80+3);
  327.                                         write_1602dat(0x30+time_buf1[2]/10);
  328.                                         write_1602dat(0x30+time_buf1[2]%10);
  329.                                         write_1602com(0x80+4);
  330.                                         break;
  331.                                 case 3:
  332.                                         time_buf1[3]++;
  333.                                         if(time_buf1[3]>=YDay(time_buf1[1],time_buf1[2])+1)
  334.                                                 time_buf1[3]=1;
  335.                                         write_1602com(0x80+6);
  336.                                         write_1602dat(0x30+time_buf1[3]/10);
  337.                                         write_1602dat(0x30+time_buf1[3]%10);
  338.                                         write_1602com(0x80+7);
  339.                                         break;
  340.                                 case 4:
  341.                                         time_buf1[4]++;
  342.                                         if(time_buf1[4]>=24)
  343.                                                 time_buf1[4]=0;
  344.                                         write_1602com(0x80+9);
  345.                                         write_1602dat(0x30+time_buf1[4]/10);
  346.                                         write_1602dat(0x30+time_buf1[4]%10);
  347.                                         write_1602com(0x80+10);
  348.                                         break;
  349.                                 case 5:
  350.                                         time_buf1[5]++;
  351.                                         if(time_buf1[5]>=60)
  352.                                                 time_buf1[5]=0;
  353.                                         write_1602com(0x80+12);
  354.                                         write_1602dat(0x30+time_buf1[5]/10);
  355.                                         write_1602dat(0x30+time_buf1[5]%10);
  356.                                         write_1602com(0x80+13);
  357.                                         break;
  358.                                 case 6:
  359.                                         time_buf1[6]++;
  360.                                         if(time_buf1[6]>=60)
  361.                                                 time_buf1[6]=0;
  362.                                         write_1602com(0x80+0x40+14);
  363.                                         write_1602dat(0x30+time_buf1[6]/10);
  364.                                         write_1602dat(0x30+time_buf1[6]%10);
  365.                                         write_1602com(0x80+0x40+15);
  366.                                         break;
  367.                                 case 7:
  368.                                         time_buf1[7]++;
  369.                                         if(time_buf1[7]>=8)
  370.                                                 time_buf1[7]=1;
  371.                                         write_1602com(0x80+15);
  372.                                         write_1602dat(time_buf1[7]-1);
  373.                                         write_1602com(0x80+15);
  374.                                         break;
  375.                         }
  376.                         switch(bike_set)
  377.                         {
  378.                                 case 1:
  379.                                         RADIUS++;
  380.                                         if(RADIUS>=71)
  381.                                         RADIUS=0;
  382.                                         write_1602com(0x80+12);
  383.                                         write_1602dat(0x30+RADIUS/10);
  384.                                         write_1602dat(0x30+RADIUS%10);
  385.                                         write_1602com(0x80+13);
  386.                                         break;
  387.                                 case 2:
  388.                                         SAFE_SPEED++;
  389.                                         if(SAFE_SPEED>=100)
  390.                                         SAFE_SPEED=0;
  391.                                         write_1602com(0x80+0x40+10);
  392.                                         write_1602dat(0x30+SAFE_SPEED/10);
  393.                                         write_1602dat(0x30+SAFE_SPEED%10);
  394.                                         write_1602com(0x80+0x40+11);
  395.                                         break;
  396.                         }
  397.                 }
  398.                 while(K2==0);
  399.         }

  400.         //-
  401.         if(K3==0&&(Mode!=0||bike_set!=0))
  402.         {
  403.                 delay(20);
  404.                 //調(diào)時(shí)
  405.                 if(K3==0&&(Mode!=0||bike_set!=0))
  406.                 {
  407.                         BEEP=0;
  408.                         delay(50);
  409.                         BEEP=1;
  410.                         switch(Mode)
  411.                         {
  412.                                 case 1:
  413.                                         time_buf1[1]--;
  414.                                         if(time_buf1[1]<0)
  415.                                                 time_buf1[1]=99;
  416.                                         write_1602com(0x80);
  417.                                         write_1602dat(0x30+time_buf1[1]/10);
  418.                                         write_1602dat(0x30+time_buf1[1]%10);
  419.                                         write_1602com(0x80+1);
  420.                                         break;
  421.                                 case 2:
  422.                                         time_buf1[2]--;
  423.                                         if(time_buf1[2]<=0)
  424.                                                 time_buf1[2]=12;
  425.                                         write_1602com(0x80+3);
  426.                                         write_1602dat(0x30+time_buf1[2]/10);
  427.                                         write_1602dat(0x30+time_buf1[2]%10);
  428.                                         write_1602com(0x80+4);
  429.                                         break;
  430.                                 case 3:
  431.                                         time_buf1[3]--;
  432.                                         if(time_buf1[3]<=0)
  433.                                                 time_buf1[3]=YDay(time_buf1[1],time_buf1[2]);
  434.                                         write_1602com(0x80+6);
  435.                                         write_1602dat(0x30+time_buf1[3]/10);
  436.                                         write_1602dat(0x30+time_buf1[3]%10);
  437.                                         write_1602com(0x80+7);
  438.                                         break;
  439.                                 case 4:
  440.                                         time_buf1[4]--;
  441.                                         if(time_buf1[4]<0)
  442.                                                 time_buf1[4]=23;
  443.                                         write_1602com(0x80+9);
  444.                                         write_1602dat(0x30+time_buf1[4]/10);
  445.                                         write_1602dat(0x30+time_buf1[4]%10);
  446.                                         write_1602com(0x80+10);
  447.                                         break;
  448.                                 case 5:
  449.                                         time_buf1[5]--;
  450.                                         if(time_buf1[5]<0)
  451.                                                 time_buf1[5]=59;
  452.                                         write_1602com(0x80+12);
  453.                                         write_1602dat(0x30+time_buf1[5]/10);
  454.                                         write_1602dat(0x30+time_buf1[5]%10);
  455.                                         write_1602com(0x80+13);
  456.                                         break;
  457.                                 case 6:
  458.                                         time_buf1[6]--;
  459.                                         if(time_buf1[6]<0)
  460.                                                 time_buf1[6]=59;
  461.                                         write_1602com(0x80+0x40+14);
  462.                                         write_1602dat(0x30+time_buf1[6]/10);
  463.                                         write_1602dat(0x30+time_buf1[6]%10);
  464.                                         write_1602com(0x80+0x40+15);
  465.                                         break;
  466.                                 case 7:
  467.                                         time_buf1[7]--;
  468.                                         if(time_buf1[7]<1)
  469.                                                 time_buf1[7]=7;
  470.                                         write_1602com(0x80+15);
  471.                                         write_1602dat(time_buf1[7]-1);
  472.                                         write_1602com(0x80+15);
  473.                                         break;
  474.                         }
  475.                         switch(bike_set)
  476.                         {
  477.                                 case 1:
  478.                                         RADIUS--;
  479.                                         if(RADIUS<0)
  480.                                         RADIUS=70;
  481.                                         write_1602com(0x80+12);
  482.                                         write_1602dat(0x30+RADIUS/10);
  483.                                         write_1602dat(0x30+RADIUS%10);
  484.                                         write_1602com(0x80+13);
  485.                                         break;
  486.                                 case 2:
  487.                                         SAFE_SPEED--;
  488.                                         if(SAFE_SPEED<0)
  489.                                         SAFE_SPEED=99;
  490.                                         write_1602com(0x80+0x40+10);
  491.                                         write_1602dat(0x30+SAFE_SPEED/10);
  492.                                         write_1602dat(0x30+SAFE_SPEED%10);
  493.                                         write_1602com(0x80+0x40+11);
  494.                                         break;
  495.                         }
  496.                 }
  497.                 while(K3==0);
  498.         }       
  499.         if(K2==0&&K3==0&&Mode==0&bike_set==0)
  500.         {
  501.                 BEEP=0;
  502.                 delay(100);
  503.                 BEEP=1;
  504.                 delay(100);
  505.                 BEEP=0;
  506.                 delay(100);
  507.                 BEEP=1;
  508.                 delay(100);
  509.                 Mileage=0;
  510.                 SETS();
  511.                 while(K2==0&&K3==0);
  512.         }
  513. }
  514. void BJ_SAFE()
  515. {
  516.         if(Velocity>SAFE_SPEED)
  517.         {
  518.                 BEEP=0;
  519.         }
  520.         else
  521.         {
  522.                 BEEP=1;
  523.         }
  524. }

  525. void main()
  526. {
  527.         //初始化
  528.         Ds1302_Init();
  529.         lcd_init();
  530.         initeeprom();
  531.         //讀取初始參數(shù)
  532.         READS();
  533.         //定時(shí)器初始化
  534. //        InitTimer0();
  535.         init();
  536.         lcd_init();
  537.         before_sec=time_buf1[6];
  538.         while(1)
  539.         {
  540.                 if(Mode==0&&bike_set==0)
  541.                 {
  542.                         display();
  543.                         BJ_SAFE();
  544.                 }
  545.                 KEY();
  546.         }
  547. }

  548. void EXINT0() interrupt 0
  549. {
  550.         count++;
  551. }

  552. void time0() interrupt 1
  553. {
  554.         uchar m,n;
  555.         TH0=0x3c;
  556.         TL0=0xb0;         //50ms
  557.         m++;
  558.         if(LED_SEC==1)
  559.         {
  560.                 n++;
  561.                 if(n>=10)
  562.                 {
  563.                         n=0;
  564.                         LED_SEC=0;
  565.                 }
  566.         }
  567.        
  568.         if(m>=10)
  569.         {
  570.                 m=0;
  571.                 Mileage=Mileage+10*(Velocity/3.6)/2;                 //里程m=里程+速度km/h/3.6/2
  572.                 Velocity=count *2*3.14*RADIUS /100000*2*3600  /40;//將500ms的距離經(jīng)過(guò)運(yùn)算得到km/h,將速度/100,方便顯示
  573.                 count=0;       
  574.         }
  575. }

  576. //讀初值
  577. void READS()
  578. {
  579.         uchar Mileage_H,Mileage_M,Mileage_L;
  580.         delay(10);
  581.         RADIUS=read_add(0x01);
  582.         delay(10);
  583.         SAFE_SPEED=read_add(0x02);

  584.         delay(10);
  585.         Mileage_H=read_add(0x03);
  586.         delay(10);
  587.         Mileage_M=read_add(0x04);
  588.         delay(10);
  589.         Mileage_L=read_add(0x05);

  590.         Mileage=Mileage_H*100000+Mileage_M*1000+Mileage_L*10;
  591. }


  592. //寫初值
  593. void SETS()
  594. {
  595.         delay(10);
  596.         write_add(0x01,RADIUS);
  597.         delay(10);
  598.         write_add(0x02,SAFE_SPEED);

  599. /*        Mileage_H=Mileage/10000;                         //123.4560
  600.         Mileage_M=Mileage%10000/100;
  601.         Mileage_L=Mileage%10000%100; */
  602.         delay(10);
  603.         write_add(0x03,Mileage/100000);
  604.         delay(10);
  605.         write_add(0x04,Mileage%100000/1000);
  606.         delay(10);
  607.         write_add(0x05,Mileage%100000%1000/10);
  608. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

8#
ID:103574 發(fā)表于 2016-9-8 16:12 | 只看該作者
謝謝,我要做個(gè)實(shí)物出來(lái)
回復(fù)

使用道具 舉報(bào)

9#
ID:139002 發(fā)表于 2016-9-10 10:15 | 只看該作者
好厲害
回復(fù)

使用道具 舉報(bào)

10#
ID:139200 發(fā)表于 2016-9-12 16:07 | 只看該作者
十分感謝,拿來(lái)用了
回復(fù)

使用道具 舉報(bào)

11#
ID:103574 發(fā)表于 2016-10-3 09:04 | 只看該作者
正在做實(shí)物,不知能不能用
回復(fù)

使用道具 舉報(bào)

12#
ID:165545 發(fā)表于 2017-3-2 00:15 | 只看該作者
lemonack 發(fā)表于 2016-10-3 09:04
正在做實(shí)物,不知能不能用

朋友,這個(gè)你做出實(shí)物來(lái)了么?
回復(fù)

使用道具 舉報(bào)

13#
ID:110866 發(fā)表于 2017-3-14 15:34 | 只看該作者
非常不錯(cuò)的設(shè)計(jì)
回復(fù)

使用道具 舉報(bào)

14#
ID:190950 發(fā)表于 2017-4-18 19:57 | 只看該作者
CYQ-1011 發(fā)表于 2017-4-18 19:31
大神好,我想問(wèn)問(wèn)這個(gè)速度和里程的代碼具體可以解釋一下嗎  沒(méi)看懂

主要是后面的  40   怎么來(lái)的
回復(fù)

使用道具 舉報(bào)

15#
ID:202023 發(fā)表于 2017-5-18 00:13 | 只看該作者
先看看,謝謝樓主分享
回復(fù)

使用道具 舉報(bào)

16#
ID:202023 發(fā)表于 2017-5-18 00:18 | 只看該作者
先看看,謝謝樓主分享
回復(fù)

使用道具 舉報(bào)

17#
ID:203328 發(fā)表于 2017-5-22 14:23 | 只看該作者
想對(duì)里程數(shù)清零怎么辦呢
回復(fù)

使用道具 舉報(bào)

18#
ID:183382 發(fā)表于 2017-5-23 15:38 | 只看該作者
CYQ-1011 發(fā)表于 2017-4-18 19:57
主要是后面的  40   怎么來(lái)的

同求 大神可以解釋一下嗎
回復(fù)

使用道具 舉報(bào)

19#
ID:206157 發(fā)表于 2017-5-31 17:12 | 只看該作者
哪位大神有這個(gè)運(yùn)行狀態(tài)下的仿真圖,求幫助,要圖片,截圖就好,(那個(gè)液晶顯示器至少要有顯示數(shù)字,證明可行性。)
回復(fù)

使用道具 舉報(bào)

20#
ID:247127 發(fā)表于 2017-11-9 18:38 | 只看該作者
真好感覺(jué)還不錯(cuò)
回復(fù)

使用道具 舉報(bào)

21#
ID:247127 發(fā)表于 2017-11-9 18:43 | 只看該作者
lemonack 發(fā)表于 2016-9-8 16:12
謝謝,我要做個(gè)實(shí)物出來(lái)

你好,可以請(qǐng)你幫忙把這個(gè)自行車?yán)锍唐鞯姆抡孳浖l(fā)一下么?1165939860QQ.COM
回復(fù)

使用道具 舉報(bào)

22#
ID:89286 發(fā)表于 2017-11-14 19:07 | 只看該作者
thanks for sharing
回復(fù)

使用道具 舉報(bào)

23#
ID:247968 發(fā)表于 2017-11-27 16:31 | 只看該作者
如果做成實(shí)物的話,怎么添加信號(hào)源呢
回復(fù)

使用道具 舉報(bào)

24#
ID:261593 發(fā)表于 2017-12-18 16:38 | 只看該作者
剛好需要啊!
回復(fù)

使用道具 舉報(bào)

25#
ID:86793 發(fā)表于 2018-3-5 17:29 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報(bào)

26#
ID:288910 發(fā)表于 2018-3-7 23:08 | 只看該作者

大神,請(qǐng)問(wèn)子程序在哪里啊
回復(fù)

使用道具 舉報(bào)

27#
ID:288910 發(fā)表于 2018-3-8 08:50 | 只看該作者
YJ199585 發(fā)表于 2017-5-22 14:23
**** 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽 ****

請(qǐng)問(wèn)你找到清零的方法了么?
回復(fù)

使用道具 舉報(bào)

28#
ID:288910 發(fā)表于 2018-3-8 08:50 | 只看該作者
請(qǐng)問(wèn)如何里程如何清零
回復(fù)

使用道具 舉報(bào)

29#
ID:288910 發(fā)表于 2018-3-8 12:46 | 只看該作者
lemonack 發(fā)表于 2016-10-3 09:04
正在做實(shí)物,不知能不能用

請(qǐng)問(wèn)你實(shí)物做出來(lái)了么,可以交流一下嗎
回復(fù)

使用道具 舉報(bào)

30#
ID:288910 發(fā)表于 2018-3-8 12:48 | 只看該作者
yilinghai 發(fā)表于 2017-11-10 16:43
親測(cè)能用,仿真圖如下

請(qǐng)問(wèn)一下這個(gè)里程表如何清零啊,然后能做實(shí)物出來(lái)嗎
回復(fù)

使用道具 舉報(bào)

31#
ID:288910 發(fā)表于 2018-3-8 12:48 | 只看該作者


請(qǐng)問(wèn)如何里程表如何清零,然后怎么做實(shí)物啊
回復(fù)

使用道具 舉報(bào)

32#
ID:287665 發(fā)表于 2018-3-8 14:58 | 只看該作者
太棒啦。學(xué)到很多,加油。
回復(fù)

使用道具 舉報(bào)

33#
ID:186926 發(fā)表于 2018-3-13 17:44 | 只看該作者

如果做成實(shí)物的話,怎么添加信號(hào)源呢  就是把這塊板子放去哪里才可以測(cè)速呢。。。
回復(fù)

使用道具 舉報(bào)

34#
ID:316866 發(fā)表于 2018-5-7 11:00 | 只看該作者
yilinghai 發(fā)表于 2017-11-10 16:43
親測(cè)能用,仿真圖如下

兄弟,把仿真圖發(fā)我下吧
回復(fù)

使用道具 舉報(bào)

35#
ID:316866 發(fā)表于 2018-5-7 11:01 | 只看該作者
yilinghai 發(fā)表于 2017-11-10 16:43
親測(cè)能用,仿真圖如下

仿真軟件發(fā)我下吧
回復(fù)

使用道具 舉報(bào)

36#
ID:316866 發(fā)表于 2018-5-7 16:00 | 只看該作者
百風(fēng)丶 發(fā)表于 2017-3-2 00:15
**** 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽 ****

朋友,實(shí)物做出來(lái)沒(méi),能用不
回復(fù)

使用道具 舉報(bào)

37#
ID:316866 發(fā)表于 2018-5-7 16:01 | 只看該作者
lemonack 發(fā)表于 2016-9-8 16:12
謝謝,我要做個(gè)實(shí)物出來(lái)

朋友,實(shí)物做出來(lái)了嗎
回復(fù)

使用道具 舉報(bào)

38#
ID:314461 發(fā)表于 2018-5-14 12:11 | 只看該作者
樓主棒棒噠,
回復(fù)

使用道具 舉報(bào)

39#
ID:69408 發(fā)表于 2018-6-19 23:38 | 只看該作者
樓主朋友你好,請(qǐng)問(wèn)這句;Velocity=count *2*3.14*RADIUS /100000*2*3600  /40;后面的  40   是怎么來(lái)的???
回復(fù)

使用道具 舉報(bào)

40#
ID:253767 發(fā)表于 2018-6-23 07:42 | 只看該作者
謝謝,學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

41#
ID:266164 發(fā)表于 2018-6-23 17:57 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

42#
ID:104477 發(fā)表于 2018-6-28 05:03 來(lái)自手機(jī) | 只看該作者
騙幣的,1062三個(gè)使能引腳都沒(méi)定義,它知道干嘛呢
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩有码一区 | 91精品国产91 | 亚洲成人精品 | 国产精品不卡一区 | 亚洲一区久久 | 日韩欧美精品 | 日韩久草 | 久www | 色网在线播放 | 操操日| 欧美在线不卡 | 日韩免费在线 | 午夜影院在线视频 | 国产99久久精品一区二区永久免费 | 国产精品国产亚洲精品看不卡15 | 超碰97免费在线 | 亚洲在线| 国产色网 | 天天久久 | 日日操操 | 中文字幕综合 | 久久精品日产第一区二区三区 | 亚洲一区在线日韩在线深爱 | 午夜精品一区 | 小草久久久久久久久爱六 | 成人九色| 国产精品99久久久久久动医院 | 亚洲乱码一区二区三区在线观看 | 4h影视 | www.精品一区 | 国产三区在线观看视频 | 精品真实国产乱文在线 | 欧美日韩在线观看一区 | 亚洲一区二区三区四区五区午夜 | 久久亚洲一区二区 | 亚洲高清免费视频 | 久久高潮 | 超碰精品在线 | 成人免费视频网站在线看 | 中文字幕一区二区三区精彩视频 | 久久伊人影院 |