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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

我封裝的超聲波傳感器HS-SR04的模塊,但是想用數碼管檢驗的時候一直用不了

[復制鏈接]
回帖獎勵 15 黑幣 回復本帖可獲得 5 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
ID:602220 發表于 2020-2-25 22:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 940675854 于 2020-2-25 22:44 編輯

各位大神幫我看看,代碼作用是封裝后放在一個定時器,跟一些傳感器一起,作狀態掃描。
檢驗的時候放在主程序延時800ms不斷循環,用一個定時器刷新數碼管狀態,傳感器輸出數據放在數組里。但是數碼管一直不顯示輸出.


/************************封裝的ultrasonic.c************************/
#include<reg52.h>
#include <intrins.h>
#include"ultrasonic.h"

unsigned int t=0;
unsigned char k=0;
unsigned int sum=0;
unsigned int s=0;


void nops(unsigned int nop)
{
while(nop--)
{
  _nop_();
}
}
unsigned  int getDistance()
{
TH1=TL1=0;//清除計時器,為下一次測距做準備
EX1=1;//打開外部中斷INT0
Trig=1;
nops(10);//觸發信號延時
Trig=0;
TR1=1;//打開定時器開始計時
return t;//340/2*(t/1000/10)cm
}
unsigned int  getdis()
{
unsigned char N=5;//樣本數量
unsigned char k=N;
unsigned int sum=0;
while(k--)
{
  sum+=getDistance();
}
return sum/N;
}
/*************************************************/
void Timer1Init()
{
TMOD &= 0x0F;  //設置定時器模式
TMOD |= 0x10;  //設置定時器模式
TL1 = 0x00;   //設置定時初值
TH1 = 0x00;   //設置定時初值
TF1 = 0;    //清除TF1標志
ET1 = 1;   
TR1 = 0;    //定時器1開始計時
  EA = 1;                     
}
char over=0;
void Interrupt_time1() interrupt 3     //T0中斷用來計數器溢出,超過測距范圍
{
    over=1;        //中斷溢出標志
}
/*******************************************************/
void extern1Init(void)
{
IE1  = 0;             //將INT1中斷請求標志位清"0"
EX1 = 1;             //使能INT1中斷允許位
IT1 = 1;                   //選擇INT1為下降沿觸發方式
EA = 1;                     //允許總中斷
}


void Interrupt_exter1() interrupt 2
{
TR0=0;//進入外部中斷INT0后停止計時
t=(TH1*256+TL1);//計算定時器時間
t=(t*1.87)/100;
if(t>420||over==1)
{
  t=420;
  over=0;
}
TH1=TL1=0;//清除計時器,為下一次測距做準備
}
/*************************************************/

/***************************************主程序*******************/
#include<reg52.h>
#include"main.h"
#include"ultrasonic.h"
#include"smg.h"
void main(void)
{
unsigned char S;
Timer2Init();
Timer1Init();
extern1Init();
while(1)
{
  S = getdis();
  if(S>=4000) //超出測量范圍顯示“ERR0”
  {  
   disbuff[0]=0x3f;    //“-”
   disbuff[1]=0x50;    //“-”
   disbuff[2]=0x50;    //“-”
   disbuff[3]=0x79;    //“-”
  }
  else
  {
   disbuff[3]=DIG_CODE[S%10000/1000];
   disbuff[2]=DIG_CODE[S%1000/100];
   disbuff[1]=DIG_CODE[S%100/10];
   disbuff[0]=DIG_CODE[S%10/1];
  }
}
}

/*****************************************************/
void Timer2Init(void)
{
T2CON = 0X00;//實現16位自動重裝載定時、
RCAP2H = 0XF8;
RCAP2L = 0X30;
//PT2 = 1; //設置中斷優先級為高
TH2=0xF8;//定時50ms
TL2=0X30; //定時器2的,寫入數值寄存器的低8位
ET2 = 1;//開定時器2中斷
EA=1; //總中斷打開
TR2 = 1;
}  
void Interrupt_time2() interrupt 5     //T0中斷用來計數器溢出,超過測距范圍
{
   DigDisplay();
}
/*******************************************************/


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

使用道具 舉報

沙發
ID:584814 發表于 2020-2-28 07:35 | 只看該作者
先調整數碼管可正常顯示,然后再調超聲波的程序。
回復

使用道具 舉報

板凳
ID:372579 發表于 2020-2-29 15:59 | 只看該作者
是不是數碼管沒弄好
回復

使用道具 舉報

地板
ID:93224 發表于 2020-2-29 17:13 | 只看該作者
你封裝的電路圖展示出來啊 一起分析
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚州春色| 97超碰免费 | 亚洲天堂中文字幕 | 亚洲综合婷婷 | 日韩欧美黄色 | 男人天堂999 | 精品日韩电影 | 91视频一区二区三区 | 精品一区二区三区91 | 成人精品一区二区三区中文字幕 | 国产人成精品一区二区三 | 伊人伊成久久人综合网站 | 国产精品久久国产愉拍 | 国产成人精品久久二区二区91 | 午夜精品久久久久久 | 毛片链接| 99日韩| 欧美精品一区二区三区在线播放 | www.日韩 | 日本免费一区二区三区四区 | 91精品国产综合久久国产大片 | 日韩在线三级 | 黄色永久免费 | 国产激情视频网站 | 国产成人免费视频网站高清观看视频 | 亚洲最大的成人网 | 国产高清视频在线观看 | 一级毛片成人免费看a | 国产亚洲精品精品国产亚洲综合 | 视频三区| 亚洲国产精品久久 | 成人高清视频在线观看 | 玖玖色在线视频 | 成人亚洲精品久久久久软件 | 国产在线播放一区二区三区 | 91视频进入 | 久久久国产视频 | 欧美一区二区视频 | 欧美激情精品久久久久久 | 黄色一级电影免费观看 | 日韩精品一区二区三区中文字幕 |