一.系统概述
系统内使用STM32单片机进行主控,系统内使用按键可以修改商品的单价和数量,在确认价格和数量后还能通过按键模拟付钱,付款成功后还会推出商品。
二.仿真概述
1. 启动仿真进入界面
2. 通过价格加按键和价格减按键设置单价,还可以通过数量加和数量减按键设置数量
3. 按下确认按键后进入付款界面,通过按键输入合适的金额
4. 当输入的金额小于总价按下确认也不会推出商品
5. 当输入金额大于或等于总价并按下确认按键后就能购买成功,并且还有显示找钱金额
三.程序设计
#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:
}
//
}