C语言自动售货机代码解析:选择饮料、数量、支付流程
oid main() {
unsigned char ok = 0, watertype = -1, waterischoose = 0, watersit = -1;
unsigned char add = 0, minus = 0;
char watercount = 0;
unsigned int flag = 0, money = 0, needmoney, starttime = 0; //添加 starttime 变量
lcd1602init(); // LCD初始化
again: ok = 0; watertype = -1; watercount = 0; waterischoose = -1; watersit = -1; add = 0; minus = 0; flag = 0; money = 0; needmoney = 0; starttime = 0; //初始化 starttime
lcd1602_info_display(WAIT_SALE, 0, 0); // LCD显示
while(!ok) //choose the water and count
{
flag = key();
if(flag)
{
switch(e) //不同的按键进行不同的操作
{
case(0x00):
water_type++; // 类型变量+1
water_is_choose = 1;
if(water_type == 8) // 如果类型变量等于8
{
water_type = 0; // 类型变量变为0
}
P3 = water_change(0xff, water_type); // 显示价格指示
break;
case(0x04):
water_type--;
water_is_choose = 1;
if(water_type == -1 || water_type == -2)
{
water_type = 7;
}
P3 = water_change(0xff, water_type);// 显示价格指示
break;
case(0x01):
if (!ok)
{
type1++; // 类型变量+1
if(type1 == 4) // 如果类型变量等于4 继续下面的内容内容://省略部分代码
case(0x02):
if (!ok)
{
type1--;
if(type1 == -1)
{
type1 = 3;
}
lcd1602_info_display(WAIT_SALE, type1, watercount);
}
break;
//省略部分代码
}
break;
case(0x03):
if (!ok)
{
watercount++; // 数量+1
if(watercount == 10) // 如果数量等于10
{
watercount = 0; // 数量变为0
}
lcd1602_info_display(WAIT_SALE, type1, watercount);
}
break;
case(0x05):
if (!ok)
{
watercount--; // 数量-1
if(watercount == -1) // 如果数量小于0
{
watercount = 9; // 数量变为9
}
lcd1602_info_display(WAIT_SALE, type1, watercount);
}
break;
case(0x06):
if(water_is_choose && watersit != -1)
{
ok = 1; // 开始售卖
needmoney = water_price[water_type] * watercount; // 计算需支付金额
lcd1602_info_display(NEED_MONEY, 0, needmoney); // LCD显示需支付金额
starttime = get_time(); // 获取开始时间
}
else
{
lcd1602_info_display(CHOOSE_WATER, 0, 0); // LCD显示请选择饮料
}
break;
case(0x07):
if(water_is_choose && watersit != -1)
{
ok = 1; // 开始售卖
needmoney = water_price[water_type] * watercount; // 计算需支付金额
lcd1602_info_display(NEED_MONEY, 0, needmoney); // LCD显示需支付金额
starttime = get_time(); // 获取开始时间
}
else
{
lcd1602_info_display(CHOOSE_WATER, 0, 0); // LCD显示请选择饮料
}
break;
}
flag = 0;
}
}
//省略部分代码
代码功能解析
该代码实现了一个自动售货机的基本功能,包含以下步骤:
- 初始化:
- 初始化LCD显示屏
- 初始化变量,例如饮料类型、数量、支付金额等
- 选择饮料和数量:
- 使用按键输入选择饮料类型
- 使用按键输入选择饮料数量
- LCD显示当前选择的饮料类型和数量
- 计算支付金额:
- 根据饮料类型和数量计算总支付金额
- LCD显示需要支付的金额
- 开始售卖:
- 当用户支付了足够的金额后,自动售货机开始售卖饮料
- 记录售卖时间
代码特点
- 使用了C语言编写
- 结合了LCD显示和按键输入功能
- 实现了简单的自动售货机售卖流程
代码优化
- 可以添加错误处理机制,例如当用户输入无效数据时
- 可以添加更多功能,例如支付方式、售卖记录等
- 可以优化代码结构,使其更加清晰易读
代码应用
- 可以应用于小型自动售货机
- 可以作为学习嵌入式编程的示例代码
总结
本代码是一个简单的自动售货机功能实现,可以作为学习嵌入式编程的入门示例。通过对该代码的学习,可以掌握C语言的基本语法、LCD显示、按键输入等知识。同时,也可以了解简单的自动售货机工作原理,为后续开发更复杂的自动售货机系统打下基础。
原文地址: https://www.cveoy.top/t/topic/n61k 著作权归作者所有。请勿转载和采集!