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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

52單片機的光電編碼計數問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:278851 發表于 2018-5-11 15:54 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
10黑幣
在做光電編碼器的項目,通過D觸發器識別正轉和反轉,分別觸發外部中斷0和1,此步是實現了的,但是,加入計數器來計數輸入脈沖時LCD一直顯示為0,請大神們幫忙看看我哪兒寫錯了哦
  1. #include <reg51.h>
  2. #include<intrins.h>
  3. #include<LCD1602.h>
  4. #include "stdio.h"                                 //定義浮點運算模塊
  5. #define uint unsigned int
  6. #define uchar unsigned char  
  7. int data k=1;  //標志位
  8. unsigned char TempBuffer[16];        //定義一個10位數組用于存放液晶顯示的數字
  9. uint count,counter=0;
  10. //中斷初始化函數
  11. void INT_Init(){
  12.     IT0=1; //設置下降沿中斷         外部中斷0和1
  13.         IT1=1;
  14.         TMOD=0X05; //T0為16位計數方式
  15.         IE=0X87;   //開中斷
  16.         TH0=0;
  17.         TL0=0;           //預置初值
  18. }
  19. //延時函數
  20. void DelayMs(uint z)
  21. {
  22.         uint x,y;
  23.         for(x=z;x>0;x--)
  24.                 for(y=110;y>0;y--);               
  25. }
  26. //中斷處理函數(3.2)  //反計數
  27. void service_int0()interrupt 0 using 0
  28. {
  29.         k--;//標志位減l
  30.         TR0=0;//停止計數
  31.         TH0=-TH0;
  32.         TL0=-TL0;//把計數器重新復值,此時相當于減
  33.         TR0=1;//開始計數               
  34. }
  35. //中斷處理函數(3.3)          //加計數
  36. void service_intl()interrupt 2 using 1
  37. {
  38.         k++;//標志位加l
  39.         TR0=0;//停止計數
  40.         TH0=-TH0;
  41.         TL0=-TL0;//把計數器重新復值,此時相當于加
  42.     TR0=1;//開始計數               
  43. }
  44. void timer0(void) interrupt 1 using 2        //計數器
  45. {
  46.         uchar a,b,m,n;                        
  47.         uint c;
  48.         if(k==0)          //反向計數滿                   在這里我假設旋轉一圈的脈沖數為600,只要超過600就重新計數
  49.         {                        
  50.                 a=TH0;
  51.                 b=TL0;
  52.                 a=TH0<<8;
  53.                 c=a|b;
  54.                 counter=1001011000-c;  //600-當前值,即減法
  55.                 if(counter<0)
  56.                 {        
  57.                         TH0=0;
  58.                         TL0=0;
  59.                 }        
  60.         }
  61.         if(k==1)                 //正向計數滿
  62.         {                        
  63.                 m=TH0;
  64.                 n=TL0;
  65.                 m=m<<8;
  66.                 counter=m|n;
  67.                 if(counter>600)
  68.                 {
  69.                         TH0=0;
  70.                         TL0=0;
  71.                 }
  72.         }
  73. }

  74. void main(){

  75.         DelayMs(255);//等待電源穩定,液晶復位完成
  76.         LCD_Initial();        //初始化液晶
  77.         INT_Init();        
  78.         GotoXY(0,0);        //定義顯示行(第一行)
  79.         Print(" BIAN MA QI");         //顯示的內容
  80.         GotoXY(0,1);                                 //定義顯示行(第二行)
  81.         Print("              Q");         //顯示的內容        
  82.            while(1)
  83.         {
  84.                 EA=0;                        
  85.                 count=counter;
  86.                    sprintf(TempBuffer,"%d",count); //數據轉換為數組TempBuffer,"%10表示數組長度為10位
  87.                 GotoXY(0,1);                          //定義顯示行(第二行)
  88.                 Print(&TempBuffer[0]);           //從第一個數值開始顯示
  89.                 EA=1;
  90.         }
  91. }
復制代碼


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

使用道具 舉報

沙發
ID:278851 發表于 2018-5-11 16:01 | 只看該作者
我的矩形脈沖接到T0口來觸發計數的
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 无码一区二区三区视频 | 欧美精品成人 | 亚洲国产精品人人爽夜夜爽 | www.日韩系列 | 国产午夜精品视频 | 99视频在线看 | 91porn成人精品 | 日韩午夜网站 | 涩涩视频网站在线观看 | 日韩福利在线观看 | 亚洲欧美在线观看 | 亚洲精品一区在线观看 | 噜噜噜噜狠狠狠7777视频 | 欧美久久久久久 | 国产精品毛片在线 | 深夜福利影院 | 久久69精品久久久久久久电影好 | 天天干天天玩天天操 | 亚洲欧美久久 | 中文字幕av免费 | 久久久久久久久久久蜜桃 | 网站黄色在线 | 欧美日韩在线观看视频网站 | 色男人天堂av | 一区二区高清不卡 | 欧洲高清转码区一二区 | 日韩精品a在线观看图片 | 久久精品黄色 | 欧美男人天堂 | 免费激情网站 | 久热爱 | 久久久久一区 | 亚洲精视频 | 国产精品一区在线 | 激情国产视频 | 亚洲欧美日韩电影 | 久久蜜桃av一区二区天堂 | 精品在线一区 | 成人精品一区二区三区 | 99re在线| 国产精品久久久久久久免费观看 |