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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4000|回復: 1
打印 上一主題 下一主題
收起左側

基于51單片機自行車碼表設計(源程序+Proteus仿真)

[復制鏈接]
跳轉到指定樓層
樓主
上傳一個基于單片機的自行車碼表的設計,里面包含仿真圖,源程序,電路圖和操作視頻,很詳細的,貼出部分程序,其余的在附件里面

由于仿真中沒有霍爾傳感器,實際呢霍爾就是感應磁信號,輸出高低電平的脈沖信號,這樣用脈沖就可以了,不同的頻率代表電機轉速的快慢


制作出來的實物圖如下:


自行車碼表元件清單
1)    9*15萬用板
2)    AT89C51單片機
3)    40腳IC座
4)    1602液晶
5)    16p母座
6)    16p排針
7)    10k電阻
8)    1K電阻
9)    輕觸按鍵
10)    5MM LED燈(紅色)
11)    103電位器
12)    3v直流電機
13)    直流電機底座
14)    磁鐵*2
15)    501電位器
16)    3144霍爾傳感器
17)    10uf電解電容
18)    30pf瓷片電容*2
19)    12M晶振
20)    自鎖開關*2
21)    DC電源插口
22)    導線若干
23)    USB電源線或電池盒

單片機源程序如下:
  1. #include<reg52.h>

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

  4. sbit COUNT_IN=P3^2;

  5. //定義1602相關管腳
  6. sbit rs=P2^7;
  7. sbit en=P2^6;

  8. uint count;
  9. unsigned long Velocity,Mileage;
  10. bit flag;
  11. uchar code tab1[]={"  Speed:      km/h"};        
  12. uchar code tab2[]={"Mileage:  .   km"};       

  13. void delay(uint x)
  14. {
  15.         uint i,j;
  16.         for(i=0;i<x;i++)
  17.         for(j=0;j<110;j++);
  18. }
  19. void init()
  20. {
  21.         IT0=1;        //INT0負跳變觸發       
  22.     TMOD=0x01;//定時器工作于方式1
  23.         TH0=0x3c;          //50ms
  24.         TL0=0xb0;
  25.         EA=1; //CPU開中斷總允許
  26.         ET0=1;//開定時中斷
  27.         EX0=1;//開外部INTO中斷
  28.     TR0=1;//啟動定時
  29. }
  30. /********液晶寫入指令函數與寫入數據函數,以后可調用**************/

  31. void write_1602com(uchar com)//****液晶寫入指令函數****
  32. {
  33.         rs=0;//數據/指令選擇置為指令
  34.         P0=com;//送入數據
  35.         delay(1);
  36.         en=1;//拉高使能端,為制造有效的下降沿做準備
  37.         delay(1);
  38.         en=0;//en由高變低,產生下降沿,液晶執行命令

  39. }


  40. void write_1602dat(uchar dat)//***液晶寫入數據函數****
  41. {
  42.         rs=1;//數據/指令選擇置為數據
  43.         P0=dat;//送入數據
  44.         delay(1);
  45.         en=1; //en置高電平,為制造下降沿做準備
  46.         delay(1);
  47.         en=0; //en由高變低,產生下降沿,液晶執行命令
  48. }


  49. void lcd_init()//***液晶初始化函數****
  50. {
  51.         uchar a;
  52.         write_1602com(0x38);//設置液晶工作模式,意思:16*2行顯示,5*7點陣,8位數據
  53.         write_1602com(0x0c);//開顯示不顯示光標
  54.         write_1602com(0x06);//整屏不移動,光標自動右移
  55.         write_1602com(0x01);//清顯示

  56.         write_1602com(0x80);//顯示固定符號從第一行第1個位置之后開始顯示
  57.         for(a=0;a<16;a++)
  58.         {
  59.                 write_1602dat(tab1[a]);//向液晶屏寫固定符號部分
  60.         }
  61.         write_1602com(0x80+0x40);//顯示固定符號寫入位置,從第2個位置后開始顯示
  62.         for(a=0;a<16;a++)
  63.         {
  64.                 write_1602dat(tab2[a]);//寫顯示固定符號
  65.         }
  66. }

  67. void display()
  68. {
  69.                 //                        1km/h=100m/0.1h                   360s
  70.                 //                        10km/h=100m/0.01h          36s
  71.                 //                        100km/h=100m/0.001h  3.6s

  72.                 write_1602com(0x80+9);
  73.                 if(Velocity/100==0)
  74.                 write_1602dat(' ');
  75.                 else
  76.                 write_1602dat(0x30+Velocity/100);
  77.                 if((Velocity/100+Velocity%100/10)==0)
  78.                 write_1602dat(' ');
  79.                 else
  80.                 write_1602dat(0x30+Velocity%100/10);
  81.                 write_1602dat(0x30+Velocity%10);//數字+30得到該數字的LCD1602顯示碼

  82.                 write_1602com(0x80+0x40+8);
  83.                 write_1602dat(0x30+Mileage/1000000);//數字+30得到該數字的LCD1602顯示碼
  84.                 write_1602dat(0x30+Mileage%1000000/100000);//數字+30得到該數字的LCD1602顯示碼
  85.                 write_1602com(0x80+0x40+11);
  86.                 write_1602dat(0x30+Mileage%100000/10000);//數字+30得到該數字的LCD1602顯示碼
  87.                 write_1602dat(0x30+Mileage%10000/1000);//數字+30得到該數字的LCD1602顯示碼
  88.                
  89.                 write_1602dat(0x30+Mileage%1000/100);//數字+30得到該數字的LCD1602顯示碼
  90. }

  91. void main()
  92. {
  93.         init();
  94.         lcd_init();
  95.         while(1)
  96.         {
  97.                 display();
  98.         }
  99. }

  100. void EXINT0() interrupt 0
  101. {
  102.         count++;
  103. }

  104. void time0() interrupt 1
  105. {
  106.         uchar m;
  107.         TH0=0x3c;
  108.         TL0=0xb0;         //50ms
  109.         m++;
  110.         if(m>=10)
  111.         {
  112.                 m=0;
  113.                 Mileage=Mileage+Velocity*500/36;                 //里程m=速度km/h*1000*5/3.6
  114.                 Velocity=count/5;//將100ms內的脈沖數
  115.                 count=0;               
  116.         }
  117. }
復制代碼

所有資料51hei提供下載:
單片機自行車碼表設計(簡易版).7z (4.35 MB, 下載次數: 96)


IMG_1599.JPG (377.41 KB, 下載次數: 56)

IMG_1599.JPG

IMG_1601.JPG (396.56 KB, 下載次數: 56)

IMG_1601.JPG
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂2 踩
回復

使用道具 舉報

沙發
ID:612392 發表于 2020-8-6 19:40 | 只看該作者
這焊功,niubility,看著就很清爽
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线免费观看a级片 | 国产一区二区三区色淫影院 | 不卡一区二区三区四区 | av高清毛片 | 日韩免费一区 | 欧美日本韩国一区二区 | 日韩精品一区在线观看 | 亚洲成人三级 | 精品中文字幕在线 | 国产精品成人一区二区三区夜夜夜 | 毛片免费观看 | 国产激情偷乱视频一区二区三区 | 欧美一区二区三区精品 | 国产成人免费视频网站高清观看视频 | 韩国主播午夜大尺度福利 | 欧美一区二区在线观看 | 夜夜夜久久久 | 久久久成人一区二区免费影院 | 成人高潮片免费视频欧美 | 国产成人精品一区二 | 九九热在线视频免费观看 | 在线亚洲欧美 | 亚洲欧美综合精品久久成人 | 羞羞视频在线网站观看 | 久久新 | 成人一级黄色毛片 | 福利视频日韩 | 在线观看免费观看在线91 | 精品久久久久久久久久久久久久 | 精品在线观看入口 | 国产这里只有精品 | 成人午夜影院 | 亚州中文字幕 | 福利色导航 | 国产福利在线 | 操一草 | 国产精品1区 | 国产 91 视频 | 久久人人网 | 久久蜜桃av一区二区天堂 | 欧美性网 |