亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標(biāo)題:
單片機(jī)+開關(guān)霍爾元件測不出速度,數(shù)碼管不顯示,能幫我看看,交流一下嘛
[打印本頁]
作者:
JPSAKE
時(shí)間:
2019-12-28 13:18
標(biāo)題:
單片機(jī)+開關(guān)霍爾元件測不出速度,數(shù)碼管不顯示,能幫我看看,交流一下嘛
#include <reg52.h>
#define DataPort P0 //定義數(shù)據(jù)端口 程序中遇到DataPort 則用P0 替換
typedef unsigned int u16; //對(duì)數(shù)據(jù)類型進(jìn)行聲明定義
typedef unsigned char u8;
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值
u8 DisplayData[8];
unsigned char Speed=2;
int temp=0; //定義變量
int buf_min=1;
int Speed1;
sbit P1_0=P1^0; //霍爾傳感器接口
sbit P1_7=P1^1;
sbit LSA=P2^2; //位聲明數(shù)碼管
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit D1=P1^2; //直流電機(jī)接口
sbit K1 = P3^1;
sbit K2 = P3^0;
sbit led0=P2^0;//led燈
void Init_Timer0(void);
unsigned char KeyScan(void);
/*------------------------------------------------
uS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值
unsigned char 是定義無符號(hào)字符變量,其值的范圍是
0~255 這里使用晶振12M,精確延時(shí)請(qǐng)使用匯編,大致延時(shí)
長度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值
unsigned char 是定義無符號(hào)字符變量,其值的范圍是
0~255 這里使用晶振12M,精確延時(shí)請(qǐng)使用匯編
------------------------------------------------*/
void DelayMs(unsigned char t)
{
while(t--)
{
//大致延時(shí)1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
void WaitKeyFree(void){
while(1){
while(K1==0);
while(K2==0);
DelayMs(10);
while(K1==0);
while(K2==0);
break;
}
}
void DigDisplay()
{
u8 i;
for(i=0;i<8;i++)
{
switch(i) //位選,選擇點(diǎn)亮的數(shù)碼管,
{
case(0):
LSA=1;LSB=1;LSC=1; break;//顯示第7位
case(1):
LSA=0;LSB=1;LSC=1; break;//顯示第6位
case(2):
LSA=1;LSB=0;LSC=1; break;//顯示第5位
case(3):
LSA=0;LSB=0;LSC=1; break;//顯示第4位
case(4):
LSA=1;LSB=1;LSC=0; break;//顯示第3位
case(5):
LSA=0;LSB=1;LSC=0; break;//顯示第2位
case(6):
LSA=1;LSB=0;LSC=0; break;//顯示第1位
case(7):
LSA=0;LSB=0;LSC=0; break;//顯示第0位
}
P0=DisplayData[ i];//發(fā)送段碼
DelayMs(1); //間隔一段時(shí)間掃描
P0=0x00;//消隱
}
}
void datapros()
{
DisplayData[0]=smgduan[Speed/10]; //人為設(shè)定,第一個(gè)數(shù)碼管 百位
DisplayData[1]=smgduan[Speed%10]; //十位
DisplayData[2]=smgduan[0]; //個(gè)位
DisplayData[4]=smgduan[temp/100]; //霍爾測速,第5個(gè)數(shù)碼管開始顯示,百位
DisplayData[5]=smgduan[temp%100/10]; //十位
DisplayData[6]=smgduan[temp/100%10]; //個(gè)位
}
/*------------------------------------------------
定時(shí)器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{
// TMOD |= 0x01; //使用模式1,16位定時(shí)器,使用"|"符號(hào)可以在使用多個(gè)定時(shí)器時(shí)不受影響
TH0=(65536-1000)/256; //重新賦值 1ms
TL0=(65536-1000)%256;
// EA=1; //總中斷打開
// ET0=1; //定時(shí)器中斷打開
// TR0=1; //定時(shí)器開關(guān)打開
// PT0=1; //優(yōu)先級(jí)打開
}
/*------------------------------------------------
定時(shí)器中斷子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1
{
static unsigned char times;
TH0=(65536-1000)/256; //重新賦值 1ms
TL0=(65536-1000)%256;
if(times>(Speed-1))//最大值12
D1=0;
else
D1=1;
times++;
if(times==13)
times=0;
}
/*------------------------------------------------
主函數(shù)
------------------------------------------------*/
main()
{
Init_Timer0();
P1_0=0;
P1_7=0;
TMOD=0x11;
TH1=0;
TL1=0; //T1初始化
EA=1;
ET0=1;
TR0=1;//開T0定時(shí)中斷
TR1=1;//T1開始計(jì)數(shù)
Speed1=Speed*10;
while(1)
{
if(buf_min==1000) //定時(shí)達(dá)到1s后,開始處理數(shù)據(jù)
{
if(P1_7==1)
P1_7=0;
else P1_7=1;
TR1=0; //計(jì)數(shù)器1停止計(jì)數(shù)
temp=(TH1*256+TL1);//單位為r/s
TH1=0;
TL1=0; //T1初始化
TR1=1;//計(jì)數(shù)器1開始計(jì)數(shù)
buf_min=0;
}
if(K1==0)//第一個(gè)按鍵,速度等級(jí)增加
{
if(Speed<13)
Speed++;
WaitKeyFree();
}
else if(K2==0)//第二個(gè)按鍵,速度等級(jí)減小
{
if(Speed>2)
Speed--;
WaitKeyFree();
}
if(temp>Speed1) //實(shí)際測速小于認(rèn)為規(guī)定,則閃爍
{
led0=~led0;
DelayMs(100);
led0=~led0;
}
else led0=0;//否則常亮
DigDisplay();
datapros();
}
}
復(fù)制代碼
作者:
xianfajushi
時(shí)間:
2019-12-29 11:24
先送固定數(shù)值到數(shù)碼管去顯示,正常后再檢查其他代碼。
作者:
JPSAKE
時(shí)間:
2019-12-29 17:14
xianfajushi 發(fā)表于 2019-12-29 11:24
先送固定數(shù)值到數(shù)碼管去顯示,正常后再檢查其他代碼。
試過了數(shù)碼管沒問題,問題應(yīng)該出在霍爾元件的輸入輸出上,但我看了一下代碼好像沒什么問題,你能幫我看看嗎,謝謝
作者:
JPSAKE
時(shí)間:
2019-12-29 17:16
xianfajushi 發(fā)表于 2019-12-29 11:24
先送固定數(shù)值到數(shù)碼管去顯示,正常后再檢查其他代碼。
你能幫我看看霍爾部分的代碼嗎
作者:
51hei**1140
時(shí)間:
2020-1-1 21:22
你好!
測速的一般步驟是
1、確定傳感器引入腳,等待計(jì)數(shù)
2、開啟定時(shí)器,計(jì)時(shí)開始
3、計(jì)時(shí)周期結(jié)束,統(tǒng)計(jì)計(jì)數(shù)
4、根據(jù)計(jì)數(shù)算出速度(結(jié)合輪子周長)
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1