標(biāo)題:
單片機(jī)出租車計價器設(shè)計
[打印本頁]
作者:
decade-1
時間:
2019-6-13 12:41
標(biāo)題:
單片機(jī)出租車計價器設(shè)計
#include<reg52.h> //庫文件
#define uchar unsigned char//宏定義無符號字符型
#define uint unsigned int //宏定義無符號整型
/********************************************************************
初始定義
*********************************************************************/
code uchar seg7code[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //顯示段碼 數(shù)碼管字跟
uchar wei[4]={0XFB,0XF7,0XEF,0XdF};
sbit zjwd=P3^6; //增加溫度
sbit jswd=P3^7; //減少溫度
uchar a=0;
uchar b=0;
uchar f=2;
uchar g=1;
uchar a1=0;
uchar a2=0; //位的控制端
uchar c=0;
uint CLK;
uint d=0;
uint e=0;
/********************************************************************
延時函數(shù)
*********************************************************************/
void delay()//延時3ms
{
uchar i,j;
for(i=0;i<80;i++)
{
for(j=13;j>0;j--);
{ ;
}
}
}
void timer0( ) interrupt 1 //定時器0工作方式1
{
TH0=(65536-50000)/256; //重裝計數(shù)初值
TL0=(65536-50000)%256; //重裝計數(shù)初值
if(CLK==15)
{
CLK=0;
d=d+1;
}
else
{
CLK=CLK+1; //取反
}
}
void tingzhi() //降溫按健是否按下
{
if(jswd)
{
a2=1;
}
if(a2)
{
if(!jswd)
{
a2=0;
}
}
}
void kaishi()
{
if(zjwd)
{
a1=1;
}
if(a1)
{
if(!zjwd)
{
a1=0;//標(biāo)志位
d=0; //公里數(shù)設(shè)為0
f=1; //將開始標(biāo)志位設(shè)1
EA=1;
ET0=1;
while(f==1)
{
P3=0XFF;//全部不顯示
b=d/1000;
P0=seg7code[b];
P3=wei[0];//第一個數(shù)碼管陽極高電平點(diǎn)亮
delay();//延時3ms
P3=0XFF; //全部不顯示
b=d%1000/100;
P0=seg7code[b];
P3=wei[1];//第二個數(shù)碼管陽極高電平點(diǎn)亮
delay();//延時3ms
P3=0XFF; //全部不顯示
b=d%100/10;
P0=seg7code[b];
P3=wei[2];//第三個數(shù)碼管陽極高電平點(diǎn)亮
delay();//延時3ms
P3=0XFF; //全部不顯示
b=d%10;
P0=seg7code[b];
P3=wei[3];//第四個數(shù)碼管陽極高電平點(diǎn)亮
delay(); //延時3ms
tingzhi();
if(a2==0)//如果停止鍵按下。退出顯示循環(huán)
{f=0;}
}
}
}
}
void xianshichushi()
{
while(1)
{
P3=0XFF;//全部不顯示
P0=seg7code[0];
P3=wei[0];//第一個數(shù)碼管陽極高電平點(diǎn)亮
delay();//延時3ms
P3=0XFF; //全部不顯示
P0=seg7code[0];
P3=wei[1];//第二個數(shù)碼管陽極高電平點(diǎn)亮
delay();//延時3ms
P3=0XFF; //全部不顯示
P0=seg7code[0];
P3=wei[2];//第三個數(shù)碼管陽極高電平點(diǎn)亮
delay();//延時3ms
P3=0XFF; //全部不顯示
P0=seg7code[0];
P3=wei[3];//第四個數(shù)碼管陽極高電平點(diǎn)亮
delay(); //延時3ms
kaishi() ;
if(!a1)
break;
}
}
/********************************************************************
主函數(shù)
*********************************************************************/
void main()
{
TMOD=0X01; //定時器中斷0
CLK=0; //脈沖信號初始值為0
TH0=(65536-50000)/256; //定時時間高八位初值
TL0=(65536-50000)%256; //定時時間低八位初值
EA=1; //開CPU中斷
ET0=1; //開T/C0中斷
TR0=1;
xianshichushi(); //數(shù)碼管顯示初始化
while(1)
{
kaishi();//開始計費(fèi)鍵是否按下
if(f==0)//是否按下停止按鍵
{
CLK=0; //脈沖信號初始值為0
TH0=(65536-50000)/256; //定時時間高八位初值
TL0=(65536-50000)%256; //定時時間低八位初值
EA=0; //關(guān)CPU中斷
ET0=0; //關(guān)T/C0中斷
if(d==1||d==0)//是否為一公里以內(nèi)
{
e=3;//收費(fèi)7元
}
else
{
e=(d-1)*5+3;
}
while(f==0)
{
P3=0XFF;//全部不顯示
b=e/1000;
P0=seg7code[b];
P3=wei[0];//第一個數(shù)碼管陽極高電平點(diǎn)亮
delay();//延時3ms
P3=0XFF; //全部不顯示
b=e%1000/100;
P0=seg7code[b];
P3=wei[1];//第二個數(shù)碼管陽極高電平點(diǎn)亮
delay();//延時3ms
P3=0XFF; //全部不顯示
b=e%100/10;
P0=seg7code[b];
P3=wei[2];//第三個數(shù)碼管陽極高電平點(diǎn)亮
delay();//延時3ms
P3=0XFF; //全部不顯示
b=e%10;
P0=seg7code[b];
P3=wei[3];//第四個數(shù)碼管陽極高電平點(diǎn)亮
delay(); //延時3ms
if(zjwd)
{
a1=1;
}
if(a1)
{
if(!zjwd)
{
a1=0;//標(biāo)志位
f=1; //將開始標(biāo)志位設(shè)1
P0=seg7code[0]; //數(shù)碼管清零
}
}
}
}
}
}
復(fù)制代碼
QQ圖片20190613123942.png
(241 KB, 下載次數(shù): 48)
下載附件
2019-6-13 12:40 上傳
isis圖片
作者:
ztlmzt
時間:
2019-12-20 08:34
可以發(fā)一下文件嗎
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1