找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求個測速lcd顯示的程序,給100黑幣

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:124943 發(fā)表于 2016-6-4 20:45 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
100黑幣
給位大大,我想要一個測速的程序,可以應(yīng)用到我的98c52,我有4個測速的模塊,還有一個1602的lcd,我想把四個所測得速顯示到lcd上,順便給個電路圖和原理圖,謝謝

6666.jpg (55.26 KB, 下載次數(shù): 88)

6666.jpg

777.jpg (33.9 KB, 下載次數(shù): 115)

777.jpg

888.jpg (206.88 KB, 下載次數(shù): 103)

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

使用道具 舉報

沙發(fā)
ID:124943 發(fā)表于 2016-6-5 17:16 | 只看該作者
不要沉
回復(fù)

使用道具 舉報

板凳
ID:79544 發(fā)表于 2016-6-5 20:04 | 只看該作者
給你個我用的程序
  1. #include<reg52.h>//51單片機頭文件

  2. #define uchar unsigned char//宏定義
  3. #define uint unsigned int
  4. uchar code digit[]={"0123456789"};//定義字符數(shù)組數(shù)字
  5. uchar code DispTab_2[]={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00};//溫度符號
  6. uchar disp[8];//存儲拆開的數(shù)
  7. uint cnt;//中斷次數(shù)
  8. uchar v;//電機0速度
  9. uchar s;//電機1速度
  10. uchar flag;        //計滿1秒鐘標(biāo)志位
  11. /////////
  12. sbit rs=P3^4;//數(shù)據(jù)命令選擇
  13. sbit rw=P2^6;//讀寫控制信號
  14. sbit e=P3^5;//使能信號
  15. ///////////////
  16. void delay_50us(uint t)//50us延時函數(shù)
  17. {
  18.         uchar j;
  19.         for(;t>0;t--)
  20.     for(j=190;j>0;j--);
  21. }
  22. /////////////
  23. /*
  24. void delay_50ms(uint t)//50ms延時函數(shù)
  25. {
  26. uint j;
  27.    for(;t>0;t--)
  28.    for(j=6245;j>0;j--);
  29. }
  30. /////////
  31. */
  32. void write_com(uchar com)//寫地址
  33. {
  34.         e=0;
  35.         rs=0;
  36.         rw=0;
  37.         P2=com;
  38.         delay_50us(10);
  39.         e=1;
  40.         delay_50us(10);
  41.         e=0;
  42. }
  43. ///////
  44. void write_data(uchar dat)// 寫數(shù)據(jù)
  45. {
  46.         e=0;
  47.         rs=1;
  48.         rw=0;
  49.         P2=dat;
  50.         delay_50us(10);
  51.         e=1;
  52.         delay_50us(10);
  53.         e=0;
  54. }
  55. //////
  56. void init(void)//液晶初始化
  57. {
  58.           delay_50us(300);
  59.           write_com(0x38);
  60.           delay_50us(100);
  61.           write_com(0x38);
  62.           delay_50us(100);
  63.           write_com(0x38);
  64.           write_com(0x38);
  65.           write_com(0x08);
  66.           write_com(0x01);
  67.           write_com(0x06);
  68.           write_com(0x0c);
  69. }
  70. /////////////
  71. void writeaddress(uchar x)//指定字符的實際地址
  72. {

  73.           write_com(x|0x80);//顯示位置的確定方法規(guī)定為“80h+地址碼x“
  74. }
  75. //////////
  76. void display_sym(void)//顯示速度提示符
  77. {
  78.         writeaddress(0x00);//寫顯示地址第一行第一列
  79.         write_data('v');//寫數(shù)據(jù)v
  80.         write_data('=');//寫數(shù)據(jù)=
  81.         writeaddress(0x00+0x40);//寫顯示地址第一行第一列
  82.         write_data('s');//寫數(shù)據(jù)v
  83.         write_data('=');//寫數(shù)據(jù)=
  84. }
  85. //////
  86. void dispose()//
  87. {
  88.         disp[0]=v/1000;
  89.         disp[1]=(v%1000)/100;
  90.         disp[2]=(v/100)/10;
  91.         disp[3]=v%10;
  92.         disp[4]=s/1000;
  93.         disp[5]=(s%1000)/100;
  94.         disp[6]=(s/100)/10;
  95.         disp[7]=s%10;
  96. }
  97. /////////////
  98. void display_val(void)
  99. {
  100.         writeaddress(0x02);//寫顯示地址,第一行第三列
  101.           write_data(digit[disp[0]]);//千
  102.           write_data(digit[disp[1]]);//百
  103.           write_data(digit[disp[2]]);//時
  104.           write_data(digit[disp[3]]);//個
  105.            writeaddress(0x02+0x40);//寫顯示地址,第2行第三列
  106.           write_data(digit[disp[4]]);//千
  107.           write_data(digit[disp[5]]);//百
  108.           write_data(digit[disp[6]]);//時
  109.           write_data(digit[disp[7]]);//個
  110. }   
  111. ////////
  112. void display_uint(void)//顯示速度單位
  113. {
  114.           writeaddress(0x06);//第1行第7列
  115.           write_data('r');//千
  116.           write_data('/');//百
  117.           write_data('m');//時
  118.           write_data('i');//個
  119.           write_data('n');//個
  120.         writeaddress(0x06+0x40);//第2行第7列
  121.           write_data('r');//千
  122.           write_data('/');//百
  123.           write_data('m');//時
  124.           write_data('i');//個
  125.           write_data('n');//個
  126. }
  127. void initial()//初始化
  128. {
  129.         TMOD=0x55; //定時器T1工作與計數(shù)器模式1,定時器T0工作于計數(shù)器模式1
  130.         RCAP2H=(65536-50000)/256;//89c52定時器2。T2裝初值
  131.         RCAP2L=(65536-50000)%256;
  132.         ET2=1;
  133.         TR2=1;


  134.         EA=1;
  135. }
  136. ///////
  137. void main()
  138. {
  139.         init();
  140.         v=0;
  141.         s=0;
  142.         initial();
  143.         cnt=0;
  144.         display_sym();
  145.         display_uint();
  146.         while(1)
  147.         {
  148.                 TR1=1;
  149.                 TR0=1;
  150.                 TH1=0;
  151.                 TL1=0;
  152.                 TH0=0;
  153.                 TL0=0;
  154.                 flag=0;        // 時間還未滿1分鐘
  155.                 while(flag==0);        // 時間未滿等待
  156.                 v=(TH1*256+TL1)*60/20;        // 計算速度,每周產(chǎn)生20個脈沖
  157.                 s=(TH0*256+TL0)*60/20;        // 計算速度,每周產(chǎn)生20個脈沖
  158.                 dispose();
  159.                 display_val();
  160.         }
  161. }
  162. //////
  163. void time2() interrupt 5//定時器T2中斷服務(wù)程序
  164. {
  165.         TF2=0;
  166.         cnt++;
  167.         if(cnt==20)
  168.         {
  169.                 flag=1;
  170.                 cnt=0;
  171.         }
  172. }
復(fù)制代碼
回復(fù)

使用道具 舉報

地板
ID:124943 發(fā)表于 2016-6-5 21:18 | 只看該作者

謝謝,有電路圖嗎,我是新手不太會
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表