一. 系统概述
系统以 STM32 单片机作为主控制单元,通过按键操作,可以修改商品的单价和数量。用户在确认价格和数量后,还能通过按键模拟付款。付款成功后,系统会自动推出商品。
二. 仿真概述
- 启动仿真:进入系统的主界面后即可开始操作。
- 设置商品单价和数量:通过“价格加”及“价格减”按键调整商品单价,利用“数量加”及“数量减”按键设置购买数量。
- 确认价格并进行付款:点击“确认”按钮进入付款界面,使用按键输入相应金额。
- 金额不足时:若输入金额低于总价,即便按下确认键,系统也不会推出商品。
- 付款成功:当输入的金额大于或等于总价,并按下确认键后,系统会完成购买并显示找零金额。
三.程序设计
#include <main.h>
//
u8 Key;//按键检测
u8 dis=1;//显示页面
u8 yuan;
u8 num=1;
u8 sum;
u8 coin=0;
u8 in=2;//投币确认标志
//
//
void Init(void);
void Test(void);
void Display(void);
//
int main(void)
{
Init();
Test();
while(1)
{
KeyXY_Scan(&Key);
Display();
}
}
void Init(void)
{
//HardWare Init
Lcd1602_Init();
Key_Init();
Beep_Init();
LedC_Init();
}
void Test(void)
{
LedC1_1;LedC2_1;LedC3_1;LedC4_1;LedC5_1;LedC6_1;LedC7_1;LedC8_1;
void Display(void)
{
//
if(Key==1|Key==5)
{
Lcd1602_Write_CD(CMD,0X01);
dis=2;
if(Key==1)
{
yuan++;Key=0;
if(yuan>8) yuan=1;
}
if(Key==5)
{
yuan--;Key=0;
if(yuan==0) yuan=1;
}
}
if( (Key==9|Key==13)&&dis==2)
{
if(Key==9)
{
num++;Key=0;
}
if(Key==13)
{
num--;Key=0;
if(yuan==0) yuan=1;
}
}
if(Key==15&&dis==2)
{
Lcd1602_Write_CD(CMD,0X01);
dis=3;Key=0;coin=0;
}
if(Key==16&&dis==2)
{
Lcd1602_Write_CD(CMD,0X01);
dis=1;Key=0;coin=0;
}
//
switch (dis)
{
case 1:
Lcd1602_Write_String(0x80,13,(u8*)"-->welcome Use");
Lcd1602_Write_String(0xC0,16,(u8*)"-->Please select");
LedC1_1;LedC2_1;LedC3_1;LedC4_1;LedC5_1;LedC6_1;LedC7_1;LedC8_1;
break;
case 2:
sum=yuan*num;
Lcd1602_Write_String(0x80,5,(u8*)"Price");
Lcd1602_Write_Num8(0xc0,yuan);
Lcd1602_Write_String(0x86,3,(u8*)"Num");
Lcd1602_Write_Num8(0xc6,num);
Lcd1602_Write_String(0x8a,5,(u8*)"Sum");
Lcd1602_Write_Num8(0xca,sum);
Lcd1602_Write_String(0x8e,2,(u8*)"Ok");
Lcd1602_Write_String(0xCe,2,(u8*)"No");
break;
case 3:
}
//
}
24-32f-38