2016-11-27 19:47 上傳
點擊文件名下載附件
仿真圖及源程序
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit duan=P2^6; //定義段選
sbit wei=P2^7; //定義位選
sbit dain=P0^7; //定義小數點開啟位
uchar code table[]={
0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
uint S,H,jin_e; //定義里程數和金額
uchar x,y;
void delay(uint z);
void init();
void xianshi();
void main()
{
init();//初始化
while(1)
{
xianshi();
}
}
void delay(uint z)//延時函數
{
for(x=z;x>0;x--)
{
for(y=110;y>0;y--)
{
}
}
}
void init() //初始化函數
{
S=0;
H=0;
jin_e=50;
duan=0;
wei=0;
TMOD=0x50; //設T1工作方式1計數;
TH1=(65536-56)/256;
TL1=(65536-56)%256;
ET1=1; //開啟T1中斷
EA=1; //開啟總中斷
TR1=1; //開啟定時
}
void zhongduan() interrupt 3 //中斷服務子程序
{
S++;
TH1=(65536-56)/256;
TL1=(65536-56)%256;
if(S<=20)//判斷是否超過兩公里
jin_e=50;
else
if(S%5==0)//判斷是否行使了500m
{
H=(S-20)/5;
jin_e=50+(8*H);
}