📄 main二.c
字号:
DelayM(20);
if(tpKEY==1)
{
if(setPriceMod==0)
{
LCD12864_string(1,1,"1.晚上");
LCD12864_string(6,1,arr_nightPrice);
setPriceMod=1;
}
else if(setPriceMod==1)
{
LCD12864_string(1,1,"1.白天");
LCD12864_string(6,1,arr_dayPrice);
setPriceMod=0;
}
tpKEY=0;
}
}
if(KEY_2==0)
{
DelayM(20);
tpKEY=1;
while(KEY_2==0);
DelayM(20);
if(tpKEY==1)
{
if(setPriceMod==0)
{
dayPrice+=0.1;
x24c02_write(2,dayPrice*10);
ChangeDayPrice();
LCD12864_string(6,1,arr_dayPrice);
}
else if(setPriceMod==1)
{
nightPrice+=0.1;
x24c02_write(3,nightPrice*10);
ChangeNightPrice();
LCD12864_string(6,1,arr_nightPrice);
}
}
tpKEY=0;
}
if(KEY_3==0)
{
DelayM(20);
tpKEY=1;
while(KEY_3==0);
DelayM(20);
if(tpKEY==1)
{
if(setPriceMod==0)
{
dayPrice-=0.1;
if(dayPrice<0)
dayPrice=0;
x24c02_write(2,dayPrice*10);
ChangeDayPrice();
LCD12864_string(6,1,arr_dayPrice);
}
else if(setPriceMod==1)
{
nightPrice-=0.1;
if(nightPrice<0)
nightPrice=0;
x24c02_write(3,nightPrice*10);
ChangeNightPrice();
LCD12864_string(6,1,arr_nightPrice);
}
}
tpKEY=0;
}
if(KEY_4==0)
{
DelayM(20);
tpKEY=1;
while(KEY_4==0);
DelayM(20);
if(tpKEY==1)
{
tpKEY=0;
ListMenu();
return;
}
}
}
}
void ShowSetWheel()
{
uchar tpKEY=0;
SetWheelMenu();
ChangeWheelPerimeter();
LCD12864_string(5,1,arr_wheelPerimeter);
while(1)
{
if(KEY_1==0)
{
DelayM(20);
tpKEY=1;
while(KEY_1==0);
DelayM(20);
if(tpKEY==1)
tpKEY=0;
}
if(KEY_2==0)
{
DelayM(20);
tpKEY=1;
while(KEY_2==0);
DelayM(20);
if(tpKEY==1)
{
wheelPerimeter++;
ChangeWheelPerimeter();
LCD12864_string(5,1,arr_wheelPerimeter);
}
tpKEY=0;
}
if(KEY_3==0)
{
DelayM(20);
tpKEY=1;
while(KEY_3==0);
DelayM(20);
if(tpKEY==1)
{
if(wheelPerimeter>0)
wheelPerimeter--;
ChangeWheelPerimeter();
LCD12864_string(5,1,arr_wheelPerimeter);
}
tpKEY=0;
}
if(KEY_4==0)
{
DelayM(20);
tpKEY=1;
while(KEY_4==0);
DelayM(20);
if(tpKEY==1)
{
tpKEY=0;
x24c02_write(5,wheelPerimeter);
ListMenu();
return;
}
}
}
}
void ReSet()
{
setPriceMod=0;//0设置白天,1设置晚上
priceMod=0;//0按白天计价,1按晚上计价
isBilling=0;
dayPrice=5.5, nightPrice=6.5; //价格
distance=0;//里程
waitDistance=0;
wheelPerimeter=100;//车轮周长cm
circle=0; //圈数
//kCircle=0;//千圈数
hCircle=0;//百圈数
totalCost=0;//总价格
//waitPrice=0;//
waitTime=0;//等待时间
tpCircle=0;
_testWait=0;
timeMs=0;
x24c02_write(1,0);
x24c02_write(2,55);
x24c02_write(3,65);
x24c02_write(4,0);
x24c02_write(5,100);
x24c02_write(6,0);
x24c02_write(7,0);
CLERADISPLAY
LCD12864_string(3,2,"重置完成");
DelayM(500);
MainMenu();
}
void ShowList()
{
uchar tpKEY;
ListMenu();
while(1)
{
if(KEY_1==0)
{
DelayM(20);
tpKEY=1;
while(KEY_1==0);
DelayM(20);
if(tpKEY==1)
ShowSetPrice(); //设置价格
}
if(KEY_2==0)
{
DelayM(20);
tpKEY=1;
while(KEY_2==0);
DelayM(20);
if(tpKEY==1)
ShowSetWheel(); //设置轮胎周长
tpKEY=0;
}
if(KEY_3==0)
{
DelayM(20);
tpKEY=1;
while(KEY_2==0);
DelayM(20);
if(tpKEY==1)
ReSet(); //设置轮胎周长
tpKEY=0;
}
if(KEY_4==0)
{
DelayM(20);
tpKEY=1;
while(KEY_4==0);
DelayM(20);
if(tpKEY==1)
{
CLERADISPLAY
MainMenu();
tpKEY=0;
return;
}
}
}
}
void Billing()
{
isBilling=1; //开始计价
x24c02_write(1,isBilling);
// uchar tpKEY=0;
BillingMenu();
LCD12864_string(4,4,"计 价");
while(1)
{
distance=(float)wheelPerimeter*hCircle/1000+waitDistance;
x24c02_write(5,wheelPerimeter);
x24c02_write(6,hCircle);
x24c02_write(7,waitDistance);
if(priceMod==0)
{
totalCost=distance*dayPrice;
}
else if(priceMod==1)
{
totalCost=distance*nightPrice;
}
if(totalCost<5)
totalCost=5;
ChangeTotalCost();
ChangeDistance();
BillingData();
if(KEY_2==0)
{
DelayM(20);
tpKEY=1;
while(KEY_2==0);
DelayM(20);
if(tpKEY==1)
{
tpKEY=0;
if(isBilling==1)
{ isBilling=0;LCD12864_string(4,4,"已停止");}
else if(isBilling==0)
{ isBilling=1;LCD12864_string(4,4,"计 价");}
x24c02_write(1,isBilling);
//MainMenu();
}
}
if(KEY_4==0)
{
DelayM(20);
tpKEY=1;
while(KEY_4==0);
DelayM(20);
if(tpKEY==1)
{
tpKEY=0;
if(isBilling==0)
{
circle=0;
hCircle=0;
waitDistance=0;
MainMenu();
return;
//MainMenu();
}
}
}
}
}
void SetMod()
{
if(priceMod==0)
{
LCD12864_string(7,4,"夜晚");
priceMod=1;
}
else if(priceMod==1)
{
LCD12864_string(7,4,"白天");
priceMod=0;
}
x24c02_write(4,priceMod);
}
void Inital()
{
TMOD=0x20; //定时器器1 方式2
TH1=TIME1H;
TR1=1; //启动定时器1
ET1=1; //允许定时器1中断
EX1=1; //外部中断允许
IT1=1; //外部中断 0下降沿触发。
//外部中断 1下降沿触发。
EA=1; //CPU开中断
Mcu_init();
lastAddr=x24c02_read(0);
isBilling=x24c02_read(1);
dayPrice=x24c02_read(2)*1.0/10;
nightPrice=x24c02_read(3)*1.0/10;
priceMod=x24c02_read(4);
if(priceMod!=0&&priceMod!=1)
priceMod=0;
hCircle=x24c02_read(6);
wheelPerimeter=x24c02_read(5);
waitDistance=x24c02_read(7);
distance=wheelPerimeter*hCircle*1.0/1000+waitDistance;
ChangeWheelPerimeter();
ChangeDayPrice();
ChangeNightPrice();
isInital=1;
}
void IncHCircle() interrupt 2
{
if(isBilling==1&&isInital==1)
{
if(circle==200)
//if(circle==5)
{
// ChangeHCircle();
// LCD12864_string(1,1,arr_hCircle);
hCircle++;
circle=0;
}
circle++;
}
}
void TestWait() interrupt 3 //定时器1中断
{
if(isBilling==1&&isInital==1)
{
if(timeMs==0)
{
tpCircle=circle;
}
if(timeMs==10000)
{
if(tpCircle==circle)
{
_testWait++;
}
if(tpCircle!=circle)
{
_testWait=0;
}
if(_testWait>5)
{
waitTime++;
if(waitTime%300==0) //300 5分钟
waitDistance++;
}
timeMs=0;
}
timeMs++;
}
}
void main()
{
Inital();
if(isBilling==0)
{
hCircle=0;
waitDistance=0;
}
else if(isBilling==1)
{
wheelPerimeter=x24c02_read(5);
hCircle=x24c02_read(6);
waitDistance=x24c02_read(7);
Billing();
}
CLERADISPLAY
MainMenu();
while(1)
{
if(KEY_1==0)
{
DelayM(20);
tpKEY=1;
while(KEY_1==0);
DelayM(20);
if(tpKEY==1)
{
ShowList();
tpKEY=0;
}
}
if(KEY_2==0)
{
DelayM(20);
tpKEY=1;
while(KEY_2==0);
DelayM(20);
if(tpKEY==1)
{
Billing();
tpKEY=0;
}
}
if(KEY_3==0)
{
DelayM(20);
// ReSet();
while(KEY_3==0);
DelayM(20);
}
if(KEY_4==0)
{
DelayM(20);
tpKEY=1;
while(KEY_4==0);
DelayM(20);
if(tpKEY==1)
{
SetMod();
tpKEY=0;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -