【毕业设计】_基于STM32单片机的自动售货机(原理图+源码)

一. 系统概述

系统以 STM32 单片机作为主控制单元,通过按键操作,可以修改商品的单价和数量。用户在确认价格和数量后,还能通过按键模拟付款。付款成功后,系统会自动推出商品。

在这里插入图片描述

二. 仿真概述

  1. 启动仿真:进入系统的主界面后即可开始操作。

在这里插入图片描述

  1. 设置商品单价和数量:通过“价格加”及“价格减”按键调整商品单价,利用“数量加”及“数量减”按键设置购买数量。

在这里插入图片描述

  1. 确认价格并进行付款:点击“确认”按钮进入付款界面,使用按键输入相应金额。

在这里插入图片描述

  1. 金额不足时:若输入金额低于总价,即便按下确认键,系统也不会推出商品。

在这里插入图片描述

  1. 付款成功:当输入的金额大于或等于总价,并按下确认键后,系统会完成购买并显示找零金额。

在这里插入图片描述

在这里插入图片描述

三.程序设计

#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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值