基于51单片机的热水卡系统

说明

首先很感谢您对这篇文章的阅读,这是我第一次写博文,写得不好的地方请谅解。文章中如果有侵权的请联系我,我会及时删除,谢谢。

功能描述

本项目是基于STC12C5A60S2单片机的热水卡系统,主要实现刷卡出水。当一张符合类型的卡并且卡内有余额时,系统会检测到并打开开关放水,出水过程中,通过水流量传感器感应出水量并对水卡进行相应的扣款,当卡内余额为0时,出水开关关上,停止出水。同时LCD显示屏上会显示出卡号、卡余额、扣款和出水量。当刷完卡之后把卡片从刷卡器移开之后,系统会通过WiFi把本次操作的余额、扣款、出水等信息发送到手机APP端。

点击下载源码和原理图等资料

主要材料

一、硬件

  1. STC12C5A60S2单片机最小系统
  2. RC522刷卡模块
  3. ATK-WIFI模块(刷AT指令的固件,教程网上很多)
  4. LCD12864液晶显示屏
  5. YF-S201水流量传感器
  6. 12V的电磁阀
  7. 5V的光耦继电器模块
  8. 12V3A的电源适配器(输出的插头为DC005插头)
  9. 5V的有源蜂鸣器
  10. USB转DC5.5*2.1mm电源线
  11. USB转TTL单片机程序下载器

二、软件

  1. keil5
  2. 程序串口下载软件(如stc-isp)
  3. 网络调试助手手机APP

原理图和实物图

实物图
实物图
实物图
实物图
实物图
在这里插入图片描述

部分代码

main.c

#include "main.h"			 

typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;

sbit sw = P1^4;      //光耦继电器控制引脚
sbit alarm = P3^7;   //蜂鸣器控制引脚

/*unsigned char code data1[16] = {0x12,0x34,0x56,0x78,
																  0xED,0xCB,0xA9,0x87,
																	0x12,0x34,0x56,0x78,
																	0x01,0xFE,0x01,0xFE};
//M1卡的某一块写为如下格式,则该块为钱包,可接收扣款和充值命令
//4字节金额(低字节在前)+4字节金额取反+4字节金额+1字节块地址+1字节块地址取反+1字节块地址+1字节块地址取反 
*/
unsigned char code data2[4]  = {
   0x01,0,0,0};//每次扣款金额
unsigned char code DefaultKey[6] = {
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; //卡密码
//待显示的内容     
unsigned char xdata Tab2[]={
   "卡号:           "};
unsigned char xdata Tab3[]={
   "余额:     元    "};
unsigned char xdata Tab4[]={
   "水流量:     ml  "};
unsigned char xdata Tab5[]={
   "已扣款:     元  "};
unsigned char flags = 0;  //水流量标志位
unsigned char num = 0;    //余额
unsigned int water = 0;   //出水量
unsigned char cost = 0;   //已扣款
void InitializeSystem();

unsigned char g_ucTempbuf[20];                         

void Delay1ms(unsigned int y)   
{
   
        unsigned int x;
        for( ; y>0; y--)
        {
   
                for(x=110; x>0; x--);
        }
}

void Uart_send_byte(unsigned char tmp) //发送一个字节
{
   
	SBUF=tmp;
	while(!TI);
	TI=0;
}

void Uart_send_String(unsigned char *
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值