#include <REGX52.H>
#include <stdio.h>
#include "LCD.H"
#include "delay.h"
unsigned char aa[16]={'Q','Q',':','1','2','1','1','7','1','6',' ',' ',' ',' ',' ',' ',}; //QQ:1211716 ,你自己可以改成你需要的,如你的學(xué)號(hào):No:xxxxxxxxxxx ,你的名字的漢語(yǔ)拼音等。
unsigned char cc[]={'S','p','e','e','d',':',' ',' ',' ',' ','r','/','m','i','n'}; //Speed: r/min
unsigned char z,n,cnt;
unsigned int r,m;
main()
{
IE=0X8A;
TMOD=0X51; //T0為定時(shí)器,T1為16位計(jì)數(shù)器
TH0=(65536-50000)/256; //定時(shí)50毫秒
TL0=(65536-50000)%256; //定時(shí)50毫秒
TH1=0; //脈沖計(jì)數(shù)器高位清零
TL1=0; //脈沖計(jì)數(shù)器低位清零
TR0=1; //啟動(dòng)內(nèi)部定時(shí)器
TR1=1; //啟動(dòng)外部脈沖計(jì)數(shù)器
init(); //初始化液晶顯示器
LCD_Write_String(0,0,aa); //顯示第一行內(nèi)容
z=1; //檢測(cè)結(jié)束標(biāo)志初始化
while(1)
{
n=P1; //讀取測(cè)速光柵個(gè)數(shù)。
if(z==1) //完成一次檢測(cè)時(shí)進(jìn)行顯示處理
{
if(r>9999) //測(cè)量值大于上限時(shí)顯示 C C C C
{
cc[6]='C';
cc[7]='C';
cc[8]='C';
cc[9]='C';
}
else
{
cc[6]=r/1000+'0';
cc[7]=r/100%10+'0';
cc[8]=r/10%10+'0';
cc[9]=r%10+'0';
}
LCD_Write_String(1,1,cc); //顯示測(cè)量得到的結(jié)果
z=0; //顯示結(jié)束時(shí)測(cè)量標(biāo)志清零,為下一次測(cè)量做準(zhǔn)備
TR0=1; //啟動(dòng)內(nèi)部定時(shí)器
TR1=1; //啟動(dòng)外部脈沖計(jì)數(shù)器
}
}
}
void int0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(++cnt==20) //1秒計(jì)時(shí)到
{
TR1=0; //停止定時(shí)器工作
TR0=0; //停止計(jì)數(shù)器工作
cnt=0; //1秒定時(shí)標(biāo)志位清零
m=(TH1*256+TL1); //1秒鐘測(cè)量得到的脈沖數(shù)。
r=m*60/n; //n為測(cè)速光柵個(gè)數(shù)。s為轉(zhuǎn)速:轉(zhuǎn)/min 60是換算成1分鐘的轉(zhuǎn)速。
TH1=0; //脈沖計(jì)數(shù)器高位清零
TL1=0; //脈沖計(jì)數(shù)器低位清零
z=1; //檢測(cè)結(jié)束時(shí)標(biāo)志置1
}
}
完整程序就自己下載附件。
基于51單片機(jī)轉(zhuǎn)速測(cè)量程序設(shè)計(jì)與仿真.rar
(86.18 KB, 下載次數(shù): 94)
2019-5-19 15:15 上傳
點(diǎn)擊文件名下載附件
基于51單片機(jī)轉(zhuǎn)速測(cè)量程序設(shè)計(jì)與仿真
下載積分: 黑幣 -5