一. 系统概述
系统采用 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