技术文档

单片机显示学号 花样彩灯控制器安装,调试与维修

小编 2025-08-06 技术文档 23 0

花样彩灯控制器安装、调试与维修

学习目标:

1、了解MCS——51系列单片机的性能。

2、知道MCS——51系列单片机内部结构及功能部件。

3、能看懂MCS——51系列单片机外部引脚的管脚图。

4、能看懂MCS——51系列单片机的复位电路及功能。

5、能看懂MCS——51系列单片机的时钟电路及功能。

6、知道单片机汇编语言的指令格式

7、会运用单片机的基础指令。

8、知道MCS——51系列单片机的中断系统。

9、知道MCS——51系列单片机的定时/计数器系统。

学习内容:

1、单片机的产生与发展以及应用领域。

2、MCS——51系列单片机的性能。。

3、MCS——51系列单片机内部结构及功能部件。

4、MCS——51系列单片机外部引脚的管脚图。

5、MCS——51系列单片机的复位电路及功能。

6、MCS——51系列单片机的时钟电路及功能。

7、CLR、ACALL 、SETB 、AJMP、MOV DJNZ RET END 等指令的运用

8、知道MCS——51系列单片机的有哪些中断源。

9、知道知道MCS——51系列单片机的中断优先级。

10、会对知道MCS——51系列单片机的中断系统进行初始化。

11、知道知道MCS——51系列单片机有几个特殊功能寄存器以及含义。

12、会就是MCS——51系列单片机的定时/计数器系统的计数初值。

13、会对MCS——51系列单片机的定时/计数器系统技校初始化。

14、安全培训

本课题建议学时:44 学时。

本课题的教学步骤可分为:

1、下发任务书

2、学习流程

3、引导问题

4、有关表格

5、自我测试题(评价标准、测试题)

任务书: (2个课时)

 随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯。LED彩灯由于其丰 富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,用 彩灯来装饰街道和城市建筑物已经成为一种时尚。但目前市场上各式样的LED彩灯控制器大多数用全硬件电路实现,电路结构复杂、功能单一,这样一旦制作成品只能按照固定的模式闪亮,不能根据不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态 参数。这种彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点。此外从功能效果上看,亮灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。因此有必要对现有的彩灯控制器进行改进。   本学习情境提出了一种基于AT89C51单片机的彩灯控制方案,实现对LED彩灯的控制。本方案以AT89C51单片机作为主控核心,与键盘、显示、驱动等模块组成核心主控制模块。在主控模块上设有8个按键和5位七段码LED显示器,根据用户需要可以编写若干种亮灯模式,利用其内部定时器T0实现一个基本单位时间为5 ms的定时中断,根据各种亮灯时间的不同需要,在不同时刻输出灯亮或灯灭的控制信号,然后驱动各种颜色的灯亮或灭。与普通LED彩灯相比,具有体积小、价格低、低能耗等优点。 硬件设计

  新型LED彩灯系统包括2大部分,即LED彩灯控制器(89C51主控模块)和LED彩灯管(管内LED板模块)。前者是主控模块,具有按键、显示等功能,并利用89C51的P口输出控制信号;后者是受控模块,上面焊有三色LED彩灯和信号驱动芯片,模块置于LED的透明灯管内。

主控模块电路设计   主控模块电路如图1所示。主控模块主要设计器件有89C51,5个七段码LED显示器,8个按键,2个稳压器(提供12 V,5 V电压),1个信号输出驱动模块芯片(MC4049)等。通过软件设计,使单片机P0口作为三色LED驱动信号输出口及移位时钟CLOCK信号,P3口为按键输入口,P2口、P1口与5位七段码LED相接作为显示器的输出口。 管内LED板模块设计   管内LED板模块电路见图2。管内LED板模块设计主要器件有LED彩灯(红、绿、蓝)、移位触发模块芯片CD4076等。根据实际应用彩灯长度需要,可将不同数量的该管内LED模块实现级连,组成一个完整的LED彩灯。考虑到功率损耗,LED板模块之间接口处用信号正向驱动模块芯片MC4049连接。每个LED板模块上均匀分布3种颜色 LED灯,在实际制作PCB时采用红、绿、蓝3色互隔焊接方式,在电路板上把LED发光管按顺序L1(红)、L2(绿)、L3(蓝)、L4(红)、L5(绿)、L6(蓝)……依次均匀焊在板上成一条直线。为了得到更多的花样模式效果,可以使红绿2种灯从前往后驱动点亮闪烁,蓝灯从后往前驱动点亮闪烁,这样具有很好的动感视觉效果。

软件设计   新型LED彩灯控制器最大特点在于所有亮灯模式均由软件控制完成。系统中软件可以分为主程序和中断服务子程序。上电后在缺省状态以顺序调用Model_i花样亮灯模式流程为主程序,以一个单位时间5 ms的T0定时为中断服务子程序。在这个5 ms的T0定时基础上,可以根据需要来确定各种模式工作时间Ti,以及确定在各种亮灯模式Mode l_i内点亮和熄灭各种颜色LED灯的时刻:Red_on,Red_off,Green_on,Green_off,Blue_on,blue_off以及Clock(移位翻转脉冲)等。整个系统软件由主程序( Main)、各个模式子程序(Model_i)、5 ms中断服务子程序(T0 Interrupt)、键盘扫描处理子程序(Key Board)、显示子程序(Display)等程序组成。利用T0定时器作为定时基本单位,根据模式需要计算好各控制信号的发生时刻,根据不同的模式Mo del_i可以设定不同的工作时间Ti和脉冲翻转频率Fi通过P0口输出,使各色L ED灯的驱动时刻与移位触发的翻转时刻步调一致,使LED彩灯按照设计的模式工作。   除了T0定时中断之外,程序的大部份时间是在处理按键的查询和LED显示的延时。8个按键分别为:4个参数按键(Fi增、减按键,Ti增、减按键),3个模式改变按键(模式上翻UP、模式下翻DOWN、模式保持KEEP),1个功能切换按键。在每次的T0定时中断服务子程序里,需要对各个时间寄存器和模式寄存器进行加1或者清,为主程序查询作准备,同时查询是否已中断6次(30 ms),若30 ms到了,则对参数按键查询一次,是否有时间Ti频率Fi增减键按下并进行相应子程序处理。   主程序除了调用各种子模式子程序(Model_i),调用LED显示子程序(Display)和延时子程序(Delay)之外,还一直保持查询是否有功能切键按下以及是否有模式改变按键按下,一旦有功能切换键和模式改变键按下,就会进入相应的按键处理。 主程序流程如图3所示。亮灯模式子程序Model_i可以编写若干(n种),只要控制好各色灯触发和熄灭时刻就可以组合成各种亮灯效果。Model_i程序流程如图4所示。

下面以第一种模式工作为例

预备知识一:

程序结构的设计方法

1. 流程图就是用________、_______、框内必要的_______所组成的图用来描述算法,最后根据流程图用程序语言来编制程序。

2. 程序的基本算法结构有三种:_______、_______、_______。

3. 循环结构有分为_______和_______两种方式。

4. 当型循环结构是先_______,条件成则_______循环体。

5. 直到型循环结构是先_______一次,再_______,条件不成立再_______。

6. 分别画出顺序结构、分支结构、当型循环结构、直到型循环结构。

7. 简述当型循环结构和直到型循环结构的区别。

预备知识二:

MCS---51单片机的中断系统

1. 什么是中断源?

2. MCS——51单片机有几个中断源,几个外部中断,几个内部中断分别是哪些?

3. MCS——51单片机有几个标志位,分别是什么,含义是什么?

4. 5个中断源的优先级怎样排列?

5. 中断响应的条件是什么?

6. 简述中断的过程?

7. 写出每个中断源的入口地址?

8. 中断响应最短需要几个周期?

9. 对中断系统进行初始化要完成哪些工作?

预备知识三:

定时/计数器

1. MCS—51单片机有几个特殊功能的寄存器,分别是什么,含义是什么?

2. 画出定时器工作方式寄存器TMOD中各位的定义并说明代表的含义?

3. 画出定时器控制寄存器TCON中各位的定义并说明代表的含义?

4. 定时/计数器有几种工作方式,分别有什么寄存器中的那两位的二进制编码所决定?

5. MCS—51单片机的定时/计数器进行初始化要注意那两点,步骤有哪些?

6. 怎么计算计数初值?

7. 若晶振频率为6MHZ,试计算MCS—51单片机的定时/计数器的最小定时时间和最大定时时间?

8. 若单片机晶振频率为6MHZ,要求定时/计数器T0产生100ms的定时,试确定技术初值以及TMOD寄存器的内容。

流程卡: (2个课时)

操 作 流 程 卡

课题2 花样彩灯控制器

序号

操作内容

工作时间

学生: 日期: 教师:

电路板制作: (15个课时)

1.准备本项任务所需的材料、工具。

2.如果材料不全,缺哪些?

材料明细卡

序号

名称

型号

数量

单价(元)

R

碳膜电阻

560

8个

LED1

彩灯

1个

LED2

彩灯

绿

1个

LED3

彩灯

1个

LED4

彩灯

1个

LED5

彩灯

绿

1个

LED6

彩灯

1个

H0

晶振

592MHZ

1个

C1

电容

30P

C2

C2

电容

30P

C3

IC1

集成片

AT89S51

1个

IC2

集成片

CD4076

4个

IC3

集成片

MC4049

1个

S1-S9

开关

8个

.

松香、焊锡丝、绝缘胶布、万能电路板、镀银铜丝、电源线及插头、

多股软导线(400毫米)

课题2 花样彩灯控制器

参考资料提示

序号

书名

出版社

1

电工基础

中国劳动社会保障出版社

2

电子电路基础

中国劳动社会保障出版社

3

电子技术工艺基础

电子工业出版社

4

单片机原理

清华大学出版社

5

评分卡:(2个课时)

花样彩灯控制器制作(满分100分)

评 分 页

姓名

学号

序号

项目及配分

工艺标准

扣分标准

学生自评分

教师评分

1

作图

30分

1. 布局合理、紧凑。

2. 导线横平、竖直、转角成直角,无交叉。

3. 元件间连接关系和电原理图一致。

1. 布局不合理,每处扣5分。

2. 导线不平直、转角不成直角, 每处扣2分。出现交叉, 每处扣5分。

3. 连接关系错误, 每处扣10分。

2

花样彩灯控制器安装45分

1. 电阻器、二极管水平安装,离万能电路板间距5mm;色标电阻的色环标志方向一致。

2. 电容器、三极管垂直安装,元件底部离万能电路板间距8mm。

3. 按图装配,元件的位置、极性正确。

4. 焊点光亮、清洁、焊料适量。

5. 布线平直。

6. 无漏焊、虚焊、假焊、搭焊、溅锡等现象。

7. 焊接后元件引脚剪脚留头长度小于1 mm。

1. 元件安装歪斜、不对称、高度超差、色环电阻标志不一致, 每处扣1分。

2. 错装、漏装, 每处扣5分。

3. 焊点不亮、焊料过多、过少、布线不平直, 每处扣0.5分。

4. 漏焊、虚焊、假焊、搭焊、溅锡, 每处扣3分。

5. 剪脚留头长度大于1 mm, 每处扣0.5分。

3

51最小系统调试25分

1. 按调试要求和步骤正确测量。

2. 正确使用万用表。

3. 正确使用示波器观察波形。

1. 调试步骤错误,每次扣3分。

2. 测量结果错误, 每次扣5分误差大, 每次扣2分。

3. 万用表、示波器使用错误, 每次扣3分。

4

安全文明操作

1. 安全用电。不人为损坏元器件、加工件和设备等。

2. 保持操作环境整洁,秩序井然,操作习惯良好。

1. 发生安全事故,扣总分20分。

2. 违反文明操作规程,视情况扣总分5---20分。

5

工时: min

超5min扣10分。

6

合计

51花样彩灯控制器的维修(满分100分)

评 分 页

姓名

学号

序号

项目及配分

工艺标准

扣分标准

学生自评分

教师评分

1.

查找故障

正确使用电烙铁、万用表、示波器等。

电烙铁、万用表、示波器使用错误, 每次扣3分。

2.

排除故障

1. 元件的位置、极性正确。

2. 焊点光亮、清洁、焊料适量。

3. 布线平直。

4. 无漏焊、虚焊、假焊、搭焊、溅锡等现象。

5. 焊接后元件引脚剪脚留头长度小于1 mm。

6. 正确使用电烙铁、万用表、示波器等。

1. 元件安装歪斜、不对称、高度超差、色环电阻标志不一致, 每处扣1分。

2. 焊点不亮、焊料过多、过少,布线不平直, 每处扣0.5分。

3. 漏焊、虚焊、假焊、搭焊、溅锡,每处扣3分。

4. 剪脚留头长度大1 mm, 每处扣0.5分。

5. 电烙铁、万用表、示波器、直流稳压电源、毫伏表、信号发生器使用错误, 每次扣3分。

3.

安全文明操作

1. 安全用电。不人为损坏元器件、加工件和设备等。

2. 保持操作环境整洁,秩序井然,操作习惯良好。

1. 发生安全事故,扣总分20分。

2. 违反文明操作规程,视情况扣总分5---20分。

4.

工时: min

超5min扣10分。

5.

合计

工作小结: ( 个课时)

工作任务小结表

日期:

1:你所在的小组从接受任务到完成共用了多少时间?

2:你认为此花样彩灯控制器的制作可以在哪些方面进行改进?

3:对你造成最大困难的是哪些工作?

4:你通过此花样彩灯控制器的制作在哪些方面得到了提高?

5:你认为在今后的教学中是否还应按照这种教学方法来安排?

单片机实例分享,射频卡流量监控系统

回想以前,学校浴室的收费标准是1.5元/次,每次可以持续洗一个小时,但是很多人洗澡的时间并不是很长,根本用不了一个小时,于是浪费水的情况便时有出现。我经常看到有些同学在浴室里洗衣服,所以这样的收费方式有滋生学生浪费习惯的弊端。为此我想到了通过改进浴室管理方案,修改计费方式,从而遏制大学生的浪费行为,这个系统可先在饮水机上进行测试。

我所在学校使用的“一卡通”是一张 IC 卡,用它可以到图书馆借书、到食堂就餐,学校还能通过IC卡获得使用者的详细信息等。我设想也可以利用IC卡对淋浴流量管理,每秒或者每几秒读取一次流量器的数据,再经过计算然后扣费,如果某个同学一直开启喷头,那么他一卡通内的钱也会随着流量的增加被更多地扣除。

我们设计的射频卡进行流量计费管理的系统具有以下优点。

(1)存储容量大。磁卡的存储容量大约在200个字符;IC卡的存储容量根据型号不同,小的有几百个字符,大的有上百万个字符。

(2)安全保密性好,不容易被复制,IC卡上的信息能够随意读取、修改、擦除,但都需要密码。

(3)IC卡具有数据处理能力。在与读卡器进行数据交换时,可对数据进行加密、解密,以确保交换数据的准确可靠;而磁卡则无此功能。

(4)使用寿命长,可以重复充值。

(5)IC卡具有防磁、防静电、防机械损坏和防化学破坏等能力,信息保存年限长,读写次数在数万次以上。

(6)IC卡能广泛应用于金融、电信、交通、商贸、社保、税收、医疗、保险等方面,几乎涵盖所有的公共事业领域。

设计思路

通过单片机对流量计、射频卡、电磁阀等实施控制。单片机会按照流量,对射频卡内的信息进行修改(修改余额信息,对其他信息无影响),单片机访问流量计的频率大约为3s访问一次,也就是,单片机每3s扫描一次流量计的数据,同时进行运算费用,然后修改射频卡内的信息(修改余额)。余额不足会通过12864液晶显示器显示。整个系统的设计框图如图19.1所示。

图19.1 整个系统同的设计框图

本系统的主控采用STC12C5A60S2单片机,该单片机是增强型51单片机,ROM高达61KB,运算速度是普通51单片机的8倍。STC12C5A60S2兼容51单片机的指令、引脚,而且该单片机具有A/D转换功能、高速低功耗、抗干扰等特点。电磁阀采用12V六分管通水电磁阀,直流持续式工作模式,工作压力在0.02~0.8MPa,介质温度在1~85℃。并且导体与非导体之间应能承受AC2500V电压,1min不击穿以及产生飞弧等现象。流量计采用六分管高精度水流量传感器,频率F=26×Q(Q表示流量,单位为L/min),内径3.0mm,流量范围0.5~5L/min。射频卡采用RFID读卡模块和EHUOYAN IC卡。

本系统的设计分为3个具体实施阶段。

第一个阶段,如图19.2所示,识别IC卡,读取IC卡信息,检查余额,满足条件后打开电磁阀,准备读取流量计数据。如果余额不足,则产生提示。

图19.2 第一阶段

射频卡相关知识

IC卡工作的基本原理是:射频读写器向IC卡发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与读写器发射的频率相同,这样在电磁波激励下,LC谐振电路产生共振,从而使电容内有了电荷;在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内存储,当所积累的电荷达到2V时,此电容可作为电源为其他电路提供工作电压,将卡内数据发射出去或接受读写器的数据。

IC卡的外形与磁卡相似,它与磁卡的区别在于数据存储的媒体不同。磁卡是通过卡上条的磁场变化来存储信息的,而IC卡是通过嵌入卡中的电擦式可编程只读存储器集成电路芯(EEPROM)来存储数据信息的。

作为电子货币的IC卡,其上记录有大量重要信息,安全性是很重要的,作为IC卡应用系统开发者必须为IC卡系统提供合理有效的安全措施,以保证IC卡及其应用系统的数据安全。影响IC卡及应用系统安全的主要方式有:使用用户丢失或被窃的IC卡,冒充合法用户进入应用系统,获得非法利益;用伪造的或空白卡非法复制数据,进入应用系统;使用系统外的IC卡读写设备,对合法卡上的数据进行修改,改变操作级别等;在IC卡交易过程中,用正常卡完成身份认证后,中途变换IC卡,从而使卡上存储的数据与系统中不一致;在IC卡读写操作中,对接口设备与IC卡通信时所作交换的信息流进行截听、修改,甚至插入非法信息,以获取非法利益,或破坏系统。常用的安全技术有:身份鉴别和IC卡合法性确认、指纹鉴别技术、数据加密通信技术等。这些技术采用可以保证IC卡的数据在存储和交易过程中的完整性、有效性和真实性,从而有效地防止对IC卡进行非法读写和修改。总体上,IC卡的安全包括物理安全和逻辑安全两方面。

物理安全包括:IC卡本身的物理特性上的安全性,通常指对一定程度的应力、化学、电气、静电作用的防范能力;对外来的物理攻击的抵抗能力,要求IC卡应能防止复制、窜改、伪造或截听等。常采用的措施有:采用高技术和昂贵的制造工艺,使之无法被伪造;在制造和发行过程中,一切参数严格保密;制作时在存储器外面加若干保护层,防止分析其中内容,即很难破译;在卡内安装监控程序,以防止处理器或存储器数据总线和地址总线的截听。

常用的逻辑安全措施有:存储器分区保护,一般将IC卡中存储器的数据分成3个基本区:公开区、工作区和保密区;用户鉴别,用户鉴别又叫个人身份鉴别,一般有验证用户个人识别PIN、生物鉴别。

卡片有着16个扇区,每个扇区包含4个数据块,每个数据块具有16byte的存储容量。扇区被定义为扇区0~扇区15,数据块被分为数据块0~数据块3,整个卡共有64个数据块。

每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。存取控制为4个字节,共32位,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的。

第二个阶段,如图19.3所示,首先采集流量计数据,然后流量计产生的脉冲通过单片机计数。目前市场上常见的流量计是1L水共输出450个脉冲。1L水的质量是1kg,一个脉冲大概是2.2g水,利用单片机对脉冲数进行计数,每过一个脉冲扣除一定费用(单价×2.2即可)。实时监测IC卡内余额,如果余额不足,则触发单片机中断,等待关闭电磁阀,延迟1min后关闭电磁阀。

图19.3 第二阶段

第三阶段,如图19.4所示,监测IC卡状态,如果未识别到IC卡,则关闭电磁阀(防止使用者不关喷头直接拔卡)。

图19.4 第三阶段

制作过程

表19.1 制作所需材料

制作所需材料见表19.1,整个系统的电路图和PCB如图19.5所示。

图19.5 电路图和PCB图

PCB图是外加工的,需要注意的是,图中长方形白色框体是射频卡模块,尺寸可根据购买的射频卡模块尺寸进行修改。焊接电路板时,遵循“先贴片后插件,先低后高,先小后大”的原则,这样做会让你事半功倍,按照电路图焊接完成并通电之后的的系统可以进行简要的操作(见图19.6~图19.9)。

图19.6 驱动12864,没有用户,等待模式

图19.7 读到卡了,显示姓名、学号、钱包

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

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

简单的测试之后,下位机就制作完成了,接下来就是进行上位机的编写,上位机(改变姓名、充值、初始化等操作依赖于模块)是用于改变射频卡信息的PC软件,我使用C#语言编写,第一次编写上位机软件,虽然界面很普通,但是功能还是比较完备的(见图19.10~图19.12)。

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

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

此制作需要用到的射频卡通信设备(此设备需要和上位机搭配使用)如图19.13所示,设备上面黄色的纸是打印的,然后用双面胶贴上去,内部使用一个USB转TTL模块以及一个射频卡读写卡模块。

图19.12 单击读卡按钮后的显示

图19.13 此制作需要用到的的射频卡通信设备

程序部分

按照设计的流程图编写程序,由于程序过多,我不一一附上,只截取部分进行说明。下列程序是本制作要用到的命令数组、处理数组、显示数组等程序,也是上位机和下位机都需要的部分,需要注意的地方是,数组的个数和串口发送与接收命令的长度一定要搭配,否则会出错。比如某个命令的返回值的数组大小为10,如果我们在写串口中断处理函数的时候,没注意接收的个数,写成了9,那么处理函数会一直等待最后一个数,才满足跳出函数的条件,当然,你可以写个报错的函数,调试完成后关闭它。

//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};// 读哪一块,第6位就是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

uchar xdata ComIntiPurse[17] = {0xAA, 0xBB, 0x0e, 0x23, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff, 0x00, 0x00};//初始化钱包。分区5为钱包

//read purse value of block No.5

uchar xdata ComReadPurse[13] = {0xAA,0xBB,0x0a, 0x24, 0x00, 0x05,0xff, 0xff, 0xff, 0xff, 0xff, 0xff};// 读取分区5的钱包 返回4字节的数据

// 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};//要减少的值

提取数据的数组:

uchar xdata user_block8[12]={0}; //学号(8位)

uchar xdata user_card[4]={0}; //卡号

uchar xdata user_cash[4]={0}; //现金

uchar xdata user_name[6]={0}; //姓名

程序中有一个举足轻重的“指令选择”函数,由于程序太长,就不附上,有兴趣的朋友可以到我的QQ群下载。这个函数是一个带返回值的函数,整个系统的命令都由这个函数发出。下面的解释一目了然,以后如果需要升级本系统,在这个函数内部添加命令即可。

指令选择入口函数:

输入:j 1~8

输出:1或0

功能概述:

a. 确认返回数组的正确性(数组最后一个数据的异或校验以及数组的长度)。

b. 序号说明:

(1)寻卡,返回射频卡序列号;

(2)读取某个模块的值,返回16位数值;

(3)写某个模块,返回成功命令;

(4)初始化钱包,即定义制定射频卡分区为钱包返回成功命令;

(5)读取钱包的值;

(6)增加钱包的值;

(7)减少钱包的值;

(8)返回增加、减少后钱包的值。

由于这个制作的初步设想是在学校里使用的,因此价格基本稳定,就没有给管理员权限使用输入设备更改资费。更改资费需要改动源代码,当然,做成产品肯定需要设计输入设备,由于本次制作的用户就是我,所以就简化了。

更改资费的程序段如下:

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的原因。

流量管理系统制作好了,现在就试着将它搭建到饮水机上进行测试。总的来说,就是先断开饮水机的水管,把电磁阀和流量计串连进去,再连接上即可。但连接的时候需要用一些胶布,以防止漏水,并避免饮水机发生漏电危险。

总结

此制作的射频卡读取模块,使用的是串口协议,它的所有命令都是以“AA BB”开头,最后一位数据是前面除开头以外的异或结果,串口收数据的时候本来就不知道收多长,这个版本的模块没有解决这个问题。例如,寻卡的命令是“AA BB 02 20 22”,“AA BB”为开头,22是前面02和20的异或结果。因此推荐大家使用其他协议,其他协议可以自己规定头和尾,检测的时候非常方便,当然也纯属个人意见。

相关问答

8951 单片机 数码管如何 显示 自己的 学号 ?

要使用8951单片机控制数码管显示学号,可以按照以下步骤进行操作:1.首先,将数码管的七个数码管f即a~g对应到8951单片机的P口,设置为输出模式;2.然后,将学号...

猜你喜欢