資料清單:C程序+仿真+設(shè)計(jì)報(bào)告+使用說(shuō)明+元件清單+操作視頻
仿真版本:Proteus8.6及以上版本
程序編譯:Keil5 C51
編程語(yǔ)言:C語(yǔ)言
設(shè)計(jì)編號(hào):【A01】
1.? 簡(jiǎn)介
本文提出了一種基于51單片機(jī)的出租車(chē)計(jì)價(jià)器設(shè)計(jì)。該設(shè)計(jì)以MCS51單片機(jī)為核心處理器,通過(guò)采集車(chē)速信號(hào)傳感器產(chǎn)生的脈沖信號(hào),進(jìn)行信號(hào)處理及變換,計(jì)算出出租車(chē)的行駛里程,根據(jù)計(jì)費(fèi)標(biāo)準(zhǔn)計(jì)算金額,并且通過(guò)LCD12864液晶顯示里程、單價(jià)、總價(jià)等相關(guān)信息。并且可以通過(guò)按鍵選擇白天和黑夜?fàn)顟B(tài),實(shí)現(xiàn)開(kāi)始、暫停、清零等操作。
2.? 主要功能
a.通過(guò)滑動(dòng)變阻器模擬采集車(chē)速信號(hào)的傳感器,并將數(shù)據(jù)傳輸到單片機(jī)處理。
b.通過(guò)電機(jī)模擬車(chē)輛運(yùn)行狀態(tài)。
c.通過(guò)LCD12864液晶顯示里程、單價(jià)、總價(jià)等相關(guān)信息。
d.通過(guò)按鍵選擇白天和黑夜?fàn)顟B(tài),以及實(shí)現(xiàn)開(kāi)始、暫停、清零等操作。
3.? 源程序(Keil5)
本設(shè)計(jì)采用keil5 C51軟件(內(nèi)附安裝包)實(shí)現(xiàn)程序設(shè)計(jì)。如需用keil4打開(kāi)程序,可自行通過(guò).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 定時(shí)功能
TH0=0x3c; //00111100
TL0=0xb0; //10101111 50ms計(jì)數(shù)一次
IE=0x87;
IT0=1;
IP=0x01;
distance_km=0; //路程=0
Init_DS1302(); //時(shí)鐘芯片
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); //顯示“價(jià)”
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 //定時(shí)器0中斷
{
TH0=0x3c; //00111100
TL0=0xb0; //10101111 50ms計(jì)數(shù)一次
b++;
if(b==10)
{
if(a==1)
{
p=1.5;
distance_km+=0.1; //路程+0.1
if(distance_km<=3)money=5; //小于3km,計(jì)價(jià)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,計(jì)價(jià)6元
else money=5.9+(distance_km-3)*p; //大于3km部分2元每km
b=0;
}
}
}
4.? 仿真proteus8.6
? ? 本設(shè)計(jì)采用proteus8.6軟件(內(nèi)附安裝包)實(shí)現(xiàn)仿真設(shè)計(jì),如下圖所示。proteus軟件一般存在高低版本兼容問(wèn)題,該仿真是通過(guò)proteus8.6導(dǎo)出的,所以請(qǐng)盡量使用proteus8.6打開(kāi)文件,低于proteus8.6的版本不能夠正常使用,高于proteus8.6的版本除了proteus8.8/8.9理論上可以正常使用。
黑夜:
5.? 設(shè)計(jì)報(bào)告
6.? 資料清單
? ? 設(shè)計(jì)資料主要包括C程序+仿真+設(shè)計(jì)報(bào)告+使用說(shuō)明+元件清單+操作視頻等。
7.? 資料獲取鏈接
百度網(wǎng)盤(pán)下載鏈接:【A01】百度網(wǎng)盤(pán)下載鏈接
更多單片機(jī)仿真設(shè)計(jì)合集:單片機(jī)仿真設(shè)計(jì)合集