功能描述
1、采用51/52單片機(jī)作為主控芯片;
2、采用1602液晶顯示:里程、計(jì)價(jià)、實(shí)時(shí)時(shí)間、實(shí)時(shí)單價(jià)、本次行程計(jì)時(shí);
3、采用DS1302作為時(shí)鐘芯片;
4、支持切換顯示界面、設(shè)置日期時(shí)間、設(shè)置白天單價(jià)、設(shè)置夜晚單價(jià);
5、支持分別設(shè)置3千米內(nèi)的單價(jià)、3千米外的單價(jià)、等待時(shí)的單價(jià);
6、支持等待時(shí)間統(tǒng)計(jì)、暫停;
仿真設(shè)計(jì)
采用Proteus作為仿真設(shè)計(jì)工具。Proteus是一款著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。
單片機(jī)管腳說(shuō)明:
P0端口(P0.0-P0.7):P0口為一個(gè)8位漏極開(kāi)路雙向I/O口,每個(gè)引腳可吸收8TTL門(mén)電流。當(dāng)P1口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。
P1端口(P1.0-P1.7):P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門(mén)電流。P1口管腳寫(xiě)入1后,被內(nèi)部上拉為高電平,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。
P2端口(P2.0-P2.7):P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門(mén)電流,當(dāng)P2口被寫(xiě)“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口,用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。
P3端口(P3.0-P3.7):P3口管腳是一個(gè)帶有內(nèi)部上拉電阻的8位的雙向I/O端口,可接收輸出4個(gè)TTL門(mén)電流。當(dāng)P3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入端時(shí),由于外部下拉為低電平,P3口將輸出電流(ILL)。P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。
VCC(40):供電電壓,其工作電壓為5V。
GND(20):接地。
RST(9):復(fù)位輸入。在振蕩器運(yùn)行時(shí),有兩個(gè)機(jī)器周期(24個(gè)振蕩周期)以上的高電平出現(xiàn)在此引腳時(shí),將使單片機(jī)復(fù)位,只要這個(gè)引腳保持高電平,51芯片便循環(huán)復(fù)位。復(fù)位后P3.0-P3.7口均置1,引腳表現(xiàn)為高電平,程序計(jì)數(shù)器和特殊功能寄存器SFR全部清零。當(dāng)復(fù)位腳由高電平變?yōu)榈碗娖綍r(shí),芯片為ROM的00H處開(kāi)始運(yùn)行程序。復(fù)位操作不會(huì)對(duì)內(nèi)部RAM有所影響。
ALE/PROG (30):當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地低位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如果想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,則置位無(wú)效。
PSEN(29):外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指令期間,每個(gè)機(jī)器周期兩次PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的PSEN信號(hào)將不出現(xiàn)。
XTAL1(19):來(lái)自反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。
XTAL2(18):來(lái)自反向振蕩器的輸出。
EA/VPP(31):當(dāng)EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),EA將內(nèi)部鎖定為RESET;當(dāng)EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V的編程電源(VPP)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-831135.html
主程序設(shè)計(jì)
void main()
{
P0 = P1 = P2 = P3 = 0XFF; //讓IO口全部輸出高電平
init_1602(); //初始化1602液晶
init_1602_dis_csf(); //初始化1602液晶顯示
zidong_chud_shifa_iic();
read_iic_data(); //把保存的數(shù)據(jù)讀出來(lái)
time_init(); //定時(shí)器初始化
init_menu(); //菜單程序
init_ds1302_io();
init_ds1302(); //ds1302初始化
while(1)
{
key_can=Key_Scan(); //按鍵程序
menu_dis();
if(key_can < 20)
key_with();
jishu_chashu(); //停車(chē)計(jì)時(shí)函數(shù)
if(flag_200ms == 1)
{
flag_200ms = 0;
if(menu_1 == 0)
read_time(); //讀時(shí)間
if((shi >= 0x22) || (shi <= 8))
flag_bai_hei = 1; //晚上模式
else
flag_bai_hei = 0; //白天模式
}
}
}
源文件獲取
關(guān)注公眾號(hào)-電子開(kāi)發(fā)圈,首頁(yè)發(fā)送?“出租車(chē)” 獲?。?span toymoban-style="hidden">文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-831135.html
到了這里,關(guān)于0097-基于單片機(jī)的出租車(chē)計(jì)價(jià)器仿真設(shè)計(jì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!