資料清單:C程序+仿真+設(shè)計報告+使用說明+元件清單+操作視頻
仿真版本:Proteus8.6及以上版本
程序編譯:Keil5 C51
編程語言:C語言
設(shè)計編號:【A01】
1.? 簡介
本文提出了一種基于51單片機(jī)的出租車計價器設(shè)計。該設(shè)計以MCS51單片機(jī)為核心處理器,通過采集車速信號傳感器產(chǎn)生的脈沖信號,進(jìn)行信號處理及變換,計算出出租車的行駛里程,根據(jù)計費(fèi)標(biāo)準(zhǔn)計算金額,并且通過LCD12864液晶顯示里程、單價、總價等相關(guān)信息。并且可以通過按鍵選擇白天和黑夜?fàn)顟B(tài),實現(xiàn)開始、暫停、清零等操作。
2.? 主要功能
a.通過滑動變阻器模擬采集車速信號的傳感器,并將數(shù)據(jù)傳輸到單片機(jī)處理。
b.通過電機(jī)模擬車輛運(yùn)行狀態(tài)。
c.通過LCD12864液晶顯示里程、單價、總價等相關(guān)信息。
d.通過按鍵選擇白天和黑夜?fàn)顟B(tài),以及實現(xiàn)開始、暫停、清零等操作。
3.? 源程序(Keil5)
本設(shè)計采用keil5 C51軟件(內(nèi)附安裝包)實現(xiàn)程序設(shè)計。如需用keil4打開程序,可自行通過.c和.h文件新建工程即可。
#include<reg52.h>
#include<intrins.h>
#include"lcd12864.c"
#include"code.h"
#include"ds1302.c"
#include"display.c"
sbit P34=P3^4; //白天
sbit P33=P3^3; //清零
sbit P31=P3^1; //黑夜
sbit P12=P1^2; //電機(jī)
float p,price,distance_km,money; //路程,金額
unsigned int b,n;
bit flag=1;
bit a=1;
void main(void) //主函數(shù)
{
init_lcd(); //液晶顯示屏
clearscreen(0); //清屏
setline(0); //起始行
TMOD=0x01; //方式1 定時功能
TH0=0x3c; //00111100
TL0=0xb0; //10101111 50ms計數(shù)一次
IE=0x87;
IT0=1;
IP=0x01;
distance_km=0; //路程=0
Init_DS1302(); //時鐘芯片
while(1)
{
if(flag)
{
TR0=0;
P12=1;
price=p;
display(price);
display1(distance_km); //顯示路程
display2(money); //顯示金額
}
else
{
TR0=1; //T0中斷
P12=0; //燈亮
price=p;
display(price);
display1(distance_km); //顯示路程
display2(money); //顯示金額
}
displayc(1,0,0*16,dan); //顯示“單”
displayc(1,0,1*16,jia); //顯示“價”
displaye(1,0,4*8,num,15); //顯示“:”
displayc(1,3,0*16,li); //顯示“里”
displayc(1,3,1*16,chen); //顯示“程”
displayc(1,3,2*16,shu); //顯示“數(shù)”
displaye(1,3,6*8,num,15); //顯示“:”
displayc(1,6,0*16,jin); //顯示“金”
displayc(1,6,1*16,e); //顯示“額”
displaye(1,6,4*8,num,15); //顯示“:”
if(P34==0)
{
a=1;
}
if(P31==0)
{
a=0;
}
}
}
void timer1(void)interrupt 1 //定時器0中斷
{
TH0=0x3c; //00111100
TL0=0xb0; //10101111 50ms計數(shù)一次
b++;
if(b==10)
{
if(a==1)
{
p=1.5;
distance_km+=0.1; //路程+0.1
if(distance_km<=3)money=5; //小于3km,計價5元
else money=4.9+(distance_km-3)*p; //大于3km部分1.5元每km
b=0;
}
if(a==0)
{
p=2;
distance_km+=0.1; //路程+0.1
if(distance_km<=3)money=6; //小于3km,計價6元
else money=5.9+(distance_km-3)*p; //大于3km部分2元每km
b=0;
}
}
}
4.? 仿真proteus8.6
? ? 本設(shè)計采用proteus8.6軟件(內(nèi)附安裝包)實現(xiàn)仿真設(shè)計,如下圖所示。proteus軟件一般存在高低版本兼容問題,該仿真是通過proteus8.6導(dǎo)出的,所以請盡量使用proteus8.6打開文件,低于proteus8.6的版本不能夠正常使用,高于proteus8.6的版本除了proteus8.8/8.9理論上可以正常使用。
黑夜:
5.? 設(shè)計報告
6.? 資料清單
? ? 設(shè)計資料主要包括C程序+仿真+設(shè)計報告+使用說明+元件清單+操作視頻等。