我的账户
中国电子DIY

科技成就未来

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

北京赛车数据统计: 射频卡流量管理系统(禁止转载)

  [复制链接]
36857 333
虫子先生 发表于 2013-12-12 21:34:11 | 只看该作者 |只看大图 |阅读模式 打印 上一主题 下一主题
本帖最后由 gazelle 于 2014-8-29 14:20 编辑

发现有人在转载我的帖子,所以下载源文件的权限已经更改,以防那些恶心的人轻松拿到。
只想说一句,你转载应该经过我的同意!感谢wannabaw2009会员及时反馈信息。

不是怕转载,有些朋友转载了,随意涂改图片,甚至删减文字

让大家久等了,电子制作射频卡流量管理系统在立马分享给大家!
希望不管您觉得我做得好还是不好,都回复一下,渴求您宝贵的意见,也期待您的鼓励!
-------------------------------------------------------------------------------------------------

         先来个全家福?。?!
*****************************************************
         
******************************************************
        首先介绍下制作的理由,想对淋浴,饮水等进行流量控制,目前我校是按时间消费的,这个不科学,饮水机一般是平摊费用,有了流量收费,我们可以根据自己的流量付费,基本是公平的。并且现在很多大学都用的是IC卡,IC卡有很多优点:
       a、存储容量大。磁卡的存储容量大约在200个字符;IC卡的存储容量根据型号不同,小的几百个字符,大的上百万个字符。
       b、安全保密性好,不容易被复制,IC卡上的信息能够随意读取、修改、擦除,但都需要密码。
       c、CPU卡具有数据处理能力。在与读卡器进行数据交换时,可对数据进行加密、解密,以确保交换数据的准确可靠;而磁卡则无此功能。
      d、使用寿命长,可以重复充值。
      e、IC卡具有防磁、防静电、防机械损坏和防化学破坏等能力,信息保存年限长,读写次数在数万次以上。

-------------------------------------------------------------------------------------------------
       思路:
             首先读取IC卡,将IC卡存储的信息显示出来,如果显示成功,则打开电磁阀,开启外部中断计数脉冲,根据脉冲个数进行相应的扣款操作。比如每10个脉冲扣相应的金额,完成扣款后同时返回余额,并显示出来。写一个上位机对姓名,钱包,学号等进行更改。
   
-------------------------------------------------------------------------------------------------
     材料:
        EHY射频卡读写???nbsp;                  2                串口协议    用于读写射频卡
        STC12C5A60S2单片机               2                选他是因为是双串口,并且速度还不错
        继电器                                       2                 控制电磁阀
        三极管   8050   8550                若干,          驱动蜂鸣器,继电器
        LED                                          若干
        7805稳压                                 2
        12864液晶                               2
        流量计                                      2                   一热一冷(热的是铜材质的)
        电磁阀                                      2                   一热一冷(热的是铜材质的)

        
-------------------------------------------------------------------------------------------------
  好了,咱们开始吧
  加上上课的时间,研究了射频卡,基础知识必须要,不然不知道怎么用他的,我选用了X宝的EHY射频卡读写???,他是使用串口协议做的一个???,由于我自己高频布线没经验,如果自己做要很久的时间估计,还是自己本身的欠缺。先说下这个串口协议的缺点,我也是用了才知道的,他的所有命令都是以AA BB开头,最后一位数据是前面出开头以外的异或结果,
串口收数据的时候本来就不知道收多长,他这个版本的??槊挥薪饩稣飧鑫侍?, 举个例子 : 寻卡的命令是AA BB 02  20  22   ,AA  BB开头,22是前面02和20的异或结果。推荐大家使用其他协议的。

-------------------------------------------------------------------------------------------------  
原理图以及PCB图
-------------------------------------------------------------------------------------------------   
首先设计电路图,IO口没几个的其实

*****************************************

****************************************

说下图里面的错误,驱动继电器的三极管大家用8050,然后是PCB上,液晶倒数第二脚没接VCC,出现的问题就是液晶有数据不显示,后来发现,原理图里面没有接,郁闷了,大家可以重新画

-------------------------------------------------------------------------------------------------  
驱动12864
-------------------------------------------------------------------------------------------------   

*************************************
没有用户,等待模式
**************************************

*************************************
读到卡了,显示姓名,学号,钱包
*************************************

**************************************
随着流量计脉冲个数增长,单片机进行计费,同时进行扣款操作,操作完毕显示当前余额
**********************************************************************

*************************************
用户移走卡,蜂鸣器长鸣一声,提示卡已移走
*********************************************************************

-------------------------------------------------------------------------------------------------  
上位机(改变姓名,充值,初始化等操作,依赖于??椋?/strong> 用C#写的哈!
-------------------------------------------------------------------------------------------------  


**************************************
没选择串口前所有的都是灰色,表示不可操作
**************************************

***************************************
选择串口后,按钮可操作,更改框可以进行改写
****************************************

**************************************
单击读卡按钮后的显示
*************************************
注:下面操作几个就点开始执行即可,这里不赘述,上位机源代码在文章最后
-------------------------------------------------------------------------------------------------  
射频卡通讯设备   (和上位机搭配使用)
-------------------------------------------------------------------------------------------------   

*****************************************************************************
上面黄色的纸是打印的,双面胶贴上去,内部是一个USB转TTL,还有个射频卡读写卡???。
******************************************************************************
-------------------------------------------------------------------------------------------------  
程序部分
-------------------------------------------------------------------------------------------------  
++++++++++++++++++++++++++++++++++++++++++++++++++
注:个人觉得本次程序写得很垃圾,忘各位看官大神海涵,正在提升自我中,不过还是实现了功能吧,初学单片机的坛友请不要模仿。害怕影响你们,真心的。
+++++++++++++++++++++++++++++++++++++++++++
//        search card and get card serial number
uchar xdata ComSearchCard[5]  = {0xAA,0xBB,0x02,0x20};//寻卡,返回AA BB 06 20 92 BF 72 59 20
//        read block No.x
uchar xdata ComReadBlock[13]  = {0xAA, 0xBB, 0x0a, 0x21, 0x00, 0x08, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};//读哪一块第六位就是0x0几。
//        read block No.8
//uchar ComReadBlock6[13]  = {0xAA, 0xBB, 0x0a, 0x21, 0x00, 0x06, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
//        write block No.8 with 0x01 to 0x0f
uchar xdata ComWriteBlock[29] = {0xAA, 0xBB, 0x1a, 0x22, 0x00, 0x08, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,//0xff是密码
                                                   0x02, 0x00, 0x01, 0x01, 0x00, 0x07, 0x00, 0x01,//
                                                   0x04, 0x02, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00};//要写的数据
//         initialize block No.8 as a purse with value: 0x12345678
uchar xdata ComIntiPurse[17]  = {0xAA, 0xBB, 0x0e, 0x23, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,//初始化钱包。分区5为钱包                             
                                                   0xff, 0xff, 0x00, 0x00};
//        read purse value of block No.5
uchar xdata ComReadPurse[13]  = {0xAA,0xBB,0x0a, 0x24, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};//读取分区5的钱包  返回四字节的数据
//        purse in block No.5 increase with value "2"
uchar xdata ComIncrPurse[17]  = {0xAA,0xBB,0x0e, 0x25, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //增加钱包的余额
                                                   0x01, 0x00, 0x00, 0x00};//要增加的值
//        purse in block No.5 decrease with value "1"
uchar xdata ComDecrPurse[17]  = {0xAA,0xBB,0x0e, 0x26, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,//扣费
                                                   0x01, 0x00, 0x00, 0x00};//要减少的值
//  halt the card selected
uchar xdata ComHaltCard[5]    = {0xAA,0xBB,0x02,0x28};//
//  the purse final value after INC & DEC
/********************************************************************
*
*             接收从IC卡返回的数据 。用数组存储
*  
***********************************************************************/
uchar xdata ICSearchCard[9]={0};//5-7位是卡的序列号
uchar xdata ICReadBlock[21]={0};
uchar xdata ICWriteBlock[5]={0};
uchar xdata ICIntiPurse[5]={0};
uchar xdata ICReadPurse[9]={0};
uchar xdata ICIncrPurse[5]={0};
uchar xdata ICDecrPurse[5]={0};
uchar xdata ICHaltCard[5]={0};
/*****************************提取数据的数组*********************/
uchar xdata user_block8[12]={0}; //学号
uchar xdata user_card[4]={0};  //卡号
uchar xdata user_cash[4]={0}; //现金
uchar xdata user_name[6]={0}; //姓名

/////////////////////////////////////////////
以上是要用到命令数组,处理数组,显示数组等等
////////////////////////////////////////////

这个是命令选择入口函数,注释写得很详细,大家自己去看哈,又不懂的可以跟帖。然后就是12864显示的函数,还有串口什么的初始化。
扣费的时候需要注意下
***************************************************
EX0 = 0;
countflag = 0;//脉冲标志清零
feetemp = 0x01;//这里是扣的金额
feecount = feecount + feetemp;//计算使用总额,需要显示也可以显示的
ComDecrPurse[12] = feetemp;//写入扣钱金额
j = Command_choic(7);//100个脉冲减少一分钱
*******************************************************************************
然后个数的问题,在外部中断里面去修改下就好了,建议大家使用宏定义直接可以在顶部修改即可
**************************************************************************
   count++;
   if (count == 1) //这里更改脉冲个数
   {                                         
      countflag = 1;
          count = 0;
   }
********************************************************************************
注:本次为什么使用双串口单片机是有原因的,因为一边要和??橥ㄐ?,一边要打印数据出来观察是否正确,所以要使用两个串口,当然我用的串口2和??槿ネㄐ?,这也是为什么用12C5A60S2的原因哈

上位机的程序也是烂得很有品味各位看官见谅了,实在忍不住,你们就批斗吧!
上位机代码就不拿上来献丑了,在附件里,大家有兴趣的可以看看,有BUG的,我自己发现了一个。不好意思说啦

-------------------------------------------------------------------------------------------------------------------
搭建管道系统,对饮水机进行改装模拟,(实际上淋浴系统应该比饮水机好改)
-------------------------------------------------------------------------------------------------------------------

*********************************************************************************
热水管道系统,前面是流量计,后面是电磁阀
*******************************************************************************


*************************************
热水冷水搭建即将结束
************************************

*******************************************
差不多了,冷水管道也好了,拐了几道弯啊
**********************************************

****************************************
接上控制系统,那个小的是射频卡读写???br /> ****************************************


***************************************
最后就是这个屌丝样子,
****************************************
------------------------------------------------------------------------------------
系统目前存在的不足与缺陷
------------------------------------------------------------------------------------

1.流量计我选用的四分,结果其实饮水机的流量没那么大,四分流量计采用如图所示很久才有一个反应,感觉还是意外法神的,
没办法,估计要改成2分的,但是大家记得电磁阀一定要用四分的,因为2分电磁阀过不鸟水,就是感觉堵着,我直接用嘴吹都吹不动,很费力,然后就是后期我要么自己改成2分,要么整个增压的,不然不能正常工作
2.如您所见,丑陋之极,表示找不到地方安装。
3.程序写得有些乱
4.建议:           a,建议大家写程序注意部分
                         b,写程序多用枚举和结构体,方便,高效
                         c,做这个东西之前,我以为自己想得很周到,没想到一路出问题,特别是饮水机压强和电磁阀里面的软垫子需要一定的压力才可以开启,表示无尽的蛋疼

好吧,就到这里了,马上周末了,祝大家周末愉快,下面是分享给大家的东西,如果您对这个管理系统有什么意见或是批评,望帅哥美女们不吝赐教!小生在此谢过!
------------------------------------------------------------------------------------
附件在此!看官们,回复下给点儿意见呗!谢谢
------------------------------------------------------------------------------------

************************************************
都在里面了,原理图,上位机,源代码,射频卡资料什么的
************************************************
射频卡流量管理系统发布.zip (10.18 MB, 下载次数: 743)
参与人数 19下载币 +1 贡献 +73 刀币 +290 收起 理由
茅草屋 + 8 + 10 很给力!
黄世仁 + 130 最佳原创帖
ynqjzzh + 10 + 10 精品文章
727462808 + 4 这是练过的吗?这么强大
ozhaojie + 10
数电menmenchaig + 10 + 10 高科技,支持一下
兄弟当头GX + 10 + 10
LC丶 + 5 + 10
农夫三拳 + 2 + 5
流星也会永恒 + 10 精品文章

查看全部评分总评分 : 下载币 +1 贡献 +73 刀币 +290

收藏
收藏43
分享
分享
支持
支持0
反对
反对0

精彩评论333

跳转到指定楼层
2#
叶嘉飞 发表于 2013-12-12 21:34:52 | 只看该作者
抢沙发   嘻嘻  看看
3#
西瓜 发表于 2013-12-12 21:46:45 | 只看该作者
32个赞······强哥好棒·····
4#
大闽江电子 发表于 2013-12-12 21:47:23 | 只看该作者
不错啊   楼主很强啊
5#
 楼主| 虫子先生 发表于 2013-12-12 21:50:52 | 只看该作者
大闽江电子 发表于 2013-12-12 21:47
不错啊   楼主很强啊

过奖了,有很多问题觉得,希望你们觉得那里有问题就批评指正
6#
木头风火轮 发表于 2013-12-12 21:57:06 | 只看该作者
刷饭卡打水???这个以前在成都有所专科学校里面见识过, 他们是刷卡用热水洗澡
7#
 楼主| 虫子先生 发表于 2013-12-12 21:58:32 | 只看该作者
木头风火轮 发表于 2013-12-12 21:57
刷饭卡打水???这个以前在成都有所专科学校里面见识过, 他们是刷卡用热水洗澡

可以滴,但是他们是算时间滴
8#
夜曲cjx 发表于 2013-12-12 22:01:08 | 只看该作者
话说这个做的的确很实用,不过我们学校的沐浴是流量计费的
9#
 楼主| 虫子先生 发表于 2013-12-12 22:02:46 | 只看该作者
夜曲cjx 发表于 2013-12-12 22:01
话说这个做的的确很实用,不过我们学校的沐浴是流量计费的

嗯嗯,我们学校是挤时间啊,觉得很不合适啊
10#
无悔 发表于 2013-12-12 22:19:14 | 只看该作者
不错,记下了,以后研究?。。。。。。。。?!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关注我们
中国电子DIY官方微信

客服电话:000-000-0000

客服邮箱:[email protected]

周一至周五 9:00-18:00

公司地址:深圳市南山区美丽湾大厦B座

Powered by Discuz! X3.4@ 2001-2013 Comsenz Inc.

  • 状态差被郎平退货?丁霞归队仍是国内最好二传 2018-12-15
  • 全面理解中国共产党领导是中国特色社会主义最本质的特征 2018-12-14
  • 您访问的页面找不回来了 2018-12-14
  • 2017年度新闻记者证核验人员名单公示 2018-12-13
  • 习近平总书记主持召开文艺工作座谈会两周年 2018-12-11
  • 你问对了,但没有说到点子上。我告诉你吧,最根本的问题是私有制。私有制不除,腐败问题就不会消灭。懂了吧,哈哈。 2018-12-10
  • 过一个端端正正的端午节 2018-12-09
  • 奇闻怪事:瑶族怪异风俗习惯之烟袋定情 2018-12-09
  • 劫匪持枪抢劫金店 川渝警方联动20小时破案 2018-12-08
  • 尧都区车站街建设社区老党员高德宏同志手抄“党章”庆党生 2018-12-08
  • 中央环保督察组:石家庄市无极县“敷衍整改” 2018-12-07
  • 内乱困扰西班牙 C罗亟须正名 2018-12-06
  • 平昌冬奥会“北京八分钟”研发团队:让中国机器人登上世界之巅 2018-12-05
  • 我国社会主义社会是无阶级的阶层社会,不存在剥削阶级和被剥削阶级,但存在富裕阶层和贫困阶层。 2018-12-04
  • 南方都市报:数看世界杯你家爱豆粉了谁? 2018-12-04
  • 326| 369| 867| 73| 683| 733| 427| 892| 671| 382|