|
需要用到測(cè)速模塊(槽型光耦和霍爾傳感器模塊都可以)
用到了外部中斷0和定時(shí)器1,用兩個(gè)定時(shí)器,一個(gè)定時(shí),一個(gè)計(jì)數(shù),應(yīng)該也可以,沒試過
部分代碼如下:
/*測(cè)速部分變量定義*/
uchar a,b,val,zhuan,cishu,num,r=5/*cm*/,c;//r為碼盤半徑(cm)
uint lucheng,endprice;// 元/米
uchar tablev[]="V: m/s";
uchar tablejuli[]="juli:";
uchar circle,juli;
void Dist_INT (void) // 外部中斷0初始化
{
EX0 = 1; //允許外部中斷0中斷
IT0 = 1; //1:下降沿觸發(fā) 0低電平觸發(fā)
EA = 1; //中斷總開關(guān)
}
void Dist() interrupt 0//中斷函數(shù)
{
cishu++; //被遮擋次數(shù)
if(cishu>=4) //碼盤4格
{
cishu=0;
circle++; //圈數(shù)+1
}
}
void T0_time() interrupt 1
{
TH0=0x3c; //50ms定時(shí)
TL0=0xb0;
num++;
if(num==20) //如果到了20次,說明1秒時(shí)間
{
num=0;
zhuan=circle;
circle=0;
// lcd_wcom(0x92+0x40);
// lcd_wdat(zhuan/100+0x30);
// lcd_wdat(zhuan%100/10+0x30);
// lcd_wdat(zhuan%100%10+0x30);
lucheng=(uint)(2*3.14*r*zhuan/100+lucheng);//lucheng 單位為米
}
}
最重要的部分已經(jīng)給出,剩下的顯示和定時(shí)器1的配置自己寫吧,這部分程序是從我的一個(gè)大程序中摘出來的,所以代碼沒有寫全
|
評(píng)分
-
查看全部評(píng)分
|