標(biāo)題: 速度加里程的表 單片機(jī)程序大至有形了,其中還有錯誤請幫忙 [打印本頁]

作者: 老來所學(xué)    時間: 2017-4-30 19:57
標(biāo)題: 速度加里程的表 單片機(jī)程序大至有形了,其中還有錯誤請幫忙
51單片機(jī)程序做一個速度加里程的表,里程用1602速度用7段數(shù)碼管顯示,程序大至有形了,其中還有錯誤請幫忙發(fā)上外部中斷和定時器部分程序,顯示部分就不發(fā)了.
void extern_int0() interrupt 0
{        
cnt1++; //外部0中斷接收脈沖數(shù)
}
void time0(void) interrupt 1
{
TH0=0xf2;        //8M晶振 5ms
TL0=0xfa;
cnt++;
if(cnt==20) //100毫秒中斷
{
cnt=0;
//        TR0=0;
//        EX1=0;        
zhs=cnt2*600/144;        //每分鐘轉(zhuǎn)速
ZHS2=zhs*60/1000;        //ZHS2顯示每小時公里數(shù)
//        EX1=1;
cnt2=0;        
//        TR0=1;        
}
void extern_int1() interrupt 2
{
cnt2++; //外部中斷1接收的脈沖數(shù)
}
void main()
{        
init();
while(1)
{
if(cnt1==50) //50個脈沖為1米
{
cnt1=0;
jishu2++; //這里液晶顯示的數(shù)據(jù),這里顯示的單位是米
write_sfm2(11,jishu2);        
}
display();        
}
}
用proteus仿真,外部中斷0和1同時輸入500HZ脈沖,程序顯示是對的.里程從0米開始加起
當(dāng)脈沖高于500以上,速度顯示也是對的,就是里程不對沒顯示了或顯示幾十就卡住了.
51C語言自學(xué)的,有什么寫的不對或邏輯上的錯誤請指正.
最好是用一個外部中斷累加計(jì)數(shù),并計(jì)算出速度和里程,里程是從0開始加起來
請朋友幫個忙這程序怎么改或者這樣的程序要怎么樣寫,最好幫我寫一段計(jì)算部分的.謝謝了


作者: dzbj    時間: 2017-4-30 20:29
一圈幾個采集點(diǎn) 就是多少次觸發(fā)是一圈 最大轉(zhuǎn)速是多少 現(xiàn)用晶振是多少的
作者: 老來所學(xué)    時間: 2017-4-30 23:32
現(xiàn)在晶振用8M的,采集點(diǎn)可以設(shè)置多少個都可以
根據(jù)采集點(diǎn)并計(jì)算出轉(zhuǎn)速和公里數(shù)都是正常的.
就是里程數(shù)出現(xiàn)問題,不會累加或累加幾十就卡住不動了.
作者: 老來所學(xué)    時間: 2017-5-1 16:16
都沒人來幫一下嗎?

作者: 老來所學(xué)    時間: 2017-5-1 20:40
求大神幫忙

作者: minikuba    時間: 2017-5-1 21:36
本帖最后由 minikuba 于 2017-5-1 21:58 編輯

整個程序都給出來唄。。。也學(xué)習(xí)一下。
作者: 老來所學(xué)    時間: 2017-5-2 20:08
其它程序都是次要的,1602和數(shù)碼管的程序就不用看了,都簡單的啊.
發(fā)出來的是主要計(jì)算部分
作者: 老來所學(xué)    時間: 2017-5-4 21:07
自己頂起來

作者: 老來所學(xué)    時間: 2017-5-5 21:49
自己頂起來
作者: 老來所學(xué)    時間: 2017-5-6 21:36
自己頂起來





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1