电子发烧友网 > 控制/MCU > 正文

单片机C语言编制程序在自助式寄存柜中系统的应用

2019年06月25日 15:59 次阅读

1前言

在隧道窑温度控制系统、自助式寄存柜等多个实际应用中,我们利用单片机高级C语言编制应用程序,满足了用户对各项性能参数的不同要求。下面以一实例,介绍C语言在应用程序设计上的优点。

2系统结构

系统由电器和机械两部分组成。机械部分由寄存柜箱位、电控组成;电器部分由单片机、控制继电器、操作面板、工作状态指示组成。系统结构如图1所示。

单片机C语言编制程序在自助式寄存柜中系统的应用

3系统功能程序设计

系统程序有以下部分组成:主程序、存取程序、监控管理程序、控制输出程序、柜体箱位排序程序及键盘中断、时钟定时中断和报警程序。下面主要介绍箱位排序程序、存取程序和防止密码重复程序。软件设计采用了模块化结构设计方法,所有程序采用单片机高级C语言编写。

主程序完成各个外设接口初始化,然后,进入键盘采样处理显示程序,由时钟中断程序完成显示扫描更新及采样处理。下面是箱位号初始化子程序。

单片机C语言编制程序在自助式寄存柜中系统的应用

上述程序中的jICunnum[]变量用于保存箱位的箱位号,初始时的jicunnum[i]=i(i=1,2,…,32),即所有的32个箱位分别设置为1,2,…,32,以便于箱位状态指示和接受继电器的输出控制,完成柜体箱位的闭锁控制,因为箱位电控锁的开启是按照箱位对应的箱位号进行操作的。例如,对应5号箱位初始号码为jicunnum[5]=5,其他依此类推。

存放物品时,在有空箱位情况下,系统随机自动产生一个12位密码,并保存起来,同时将该密码打印出来由顾客自己随身携带。密码随机产生程序如下:

void Take(){

1.qq:Mimac=ReadKey();

2.if(Mimac!=0x11){

3.if(Mimacount

4.Mimac--;Mimac=c&0x00f;

5.display[Mimacount]=Mimac;

6.Mimatemp*=10;

7.Mimatemp+=Mimac;

8.Mimacount++;goto qq;}

9.goto endt;}

10.for(j=0;j

11.if(jicun[j]=Mimatemp){

12.orinum=j;}}

13.endt:return();}

上面程序中的第3行rand()是随机数发生子程序,程序中的2~4行随机自动产生一个12位密码,并以十进制的形式保存在变量Mimanew中。

为了防止本次产生的密码与当天已经产生的密码重复,程序中设置了判别程序。程序中的5~7行将随机产生的12位密码与原来已经产生的其他密码进行比较,其中jiold[]变量用于存放当天已经产生的密码,totalcount变量为已经产生密码的个数。

若比较的结果相同,说明新产生的密码重复,程序返回,再重新产生一个12位密码。若不同,说明密码没有重复,将新密码保存在密码变量jICun[]中,同时自动打开一个新箱位,对应箱位的占位指示灯亮。8~11行调整密码计数指针(count)和当天已经产生密码计数指针(totalcount)。

当柜体箱位己满,也就是count大于32时,工作状态指示箱位已满,提醒后来的顾客不要继续在该寄存柜操作。

取出物品时,通过操作面板输入12位数字密码,12位密码数据分别存放在变量display[i](i=1,2,…,12)单元,显示程序将display[]中的数值在数码管上显示出来。控制系统将这次输入的密码与原来保存在变量jicun[]中的12位数字密码进行比较,若相同,打开原来存放物品对应箱位门锁,并熄灭相应箱位的占位指示灯;否则,不执行任何操作。取出物品程序如下:

void Take(){

1.qq:Mimac=ReadKey();

2.if(Mimac!=0x11){

3.if(Mimacount

4.Mimac--;Mimac=c&0x00f;

5.display[Mimacount]=Mimac;

6.Mimatemp*=10;

7.Mimatemp+=Mimac;

8.Mimacount++;goto qq;}

9.goto endt;}

10.for(j=0;j

11.if(jicun[j]=Mimatemp){

12.orinum=j;}}

13.endt:return();}

上述程序中的第1行ReadKey()是键盘按键读取子程序,2~9行等待读取操作面板输入12位数字密码,并将输入的密码以十进制的形式暂时保存在变量Mimatemp中,程序中的第2行用于判断是否退出键。10~12行判别输入的12位密码是否与原来某一内存变量jicun[]的密码相同,若相同,打开原来存放物品的箱位门锁;否则,不执行任何操作。第3行Mimacount用于计算密码输入个数的位置,第4行Mimac用于保存密码的一位数字,第12行orinum用于保存对应密码的箱位号。numset是初始设定的密码位数,这里,numset=12。

为防止恶意操作,密码不相符时,可重复输入三次,然后设置禁止操作标志位,自动闭锁延时一段时间(例如3分钟),再允许操作;在时钟定时中断程序中对设置的禁止操作标志复位,恢复正常操作。

前面已经介绍,jicunnum[]变量用于保存箱位的箱位号,初始状态为jicunnum[i]=i(i=1,2,…,32)。但是,经过一段时间操作运行以后,jicunnum[]的原始状态已经发生了变化。假如,现在第7位顾客取走了物品,jicunnum[7]的内存已经不是7,为实现箱位状态指示和接受继电器控制输出,必须保证操作的密码和其箱位号一致,每次取出物品后,要对箱位号变量进行重新排序。下面是箱位的排序程序。

void sort(){

1.count--;

2.tempnum=jicunnum[orinum];

3.for(i=orinum;i

4.jicun[i]=jicun[i+1];

5.jicunnum[i]=jicunnum[i+1}

6.jicunnum[count]=tempnum;

7.return();}

程序中的第1行为计数器减1操作,说明物品已经被取走,空出一个箱位,第2行保存密码所对应的箱位号,3~5行将当时空的那个箱位后面的箱位号(jicunnum[])及对应密码(jicun[]),挨个往前依次移动,直到已经存放的箱位i=count逐个移动完毕。

程序中的第6行把已经取出物品的箱位号排到最后内存变量jicunnum[count]。

经过箱位排序程序重新排序后,此时第7位顾客的箱位号jicunnum[7]保存的是当时空的那个箱位后面的箱位号。程序中的变量count、orinum、jicun[]定义与前面相同。

存、取物品过程中,为了让使用者了解系统的工作状态,例如:存放或取出物品,柜体箱位已满或已空,哪些箱位已空等状态,通过工作状态指示灯提醒顾客。

为了便于操作管理,程序中设置了监控管理程序,遇有特殊情况,需要随时打开任一箱位时,系统操作人员有权完成该操作。设置不同的管理权限密码,只有系统管理人员,才能进入该操作;其操作过程与取出物品时相同。

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播

电子发烧友观察

一线报道 · 深度观察 · 最新资讯
收藏 人收藏
分享:

评论

相关推荐

玩单片机到千万身家,“技术型老总”需要哪些神技能?

中国硬件创新大赛网络培训会—技术培训篇如果你就干这行,毫无疑问你不能错过这次直播;如果不是,可能你不一定喜欢单片机,也不

发烧友学院 发表于 2017-05-16 00:00 585次阅读
玩单片机到千万身家,“技术型老总”需要哪些神技能?

12v直流电机驱动电路图

电流小于3A可以使用l298N(l298N的原理图我这没有,你自己百度搜把),电流小于43A可以使用...

发表于 2019-06-25 15:17 24次阅读
12v直流电机驱动电路图

基于TDA5255和XC866单片机的射频收发器设计

发表于 2019-06-25 07:59 70次阅读
基于TDA5255和XC866单片机的射频收发器设计

嵌入式Internet的接入方式比较

发表于 2019-06-25 06:10 3次阅读
嵌入式Internet的接入方式比较

请问做一个开关电源给单片机供电,开关电源的变压器如何设计?

发表于 2019-06-25 04:36 2次阅读
请问做一个开关电源给单片机供电,开关电源的变压器如何设计?

Proteus仿真rs232-rs485-rs485-51单片机通讯故障

发表于 2019-06-25 04:35 17次阅读
Proteus仿真rs232-rs485-rs485-51单片机通讯故障

单片机中断系统

单片机中断系统的概念 什么是中断,我们从一个生活中的例程引入。 你正在家中看书,突然电话铃响了,你放...

发表于 2019-06-24 21:57 9次阅读
单片机中断系统

基于STM32的半导体制冷片(TEC)温度控制系统设计

发表于 2019-06-24 10:31 241次阅读
基于STM32的半导体制冷片(TEC)温度控制系统设计

基于STC单片机的21C02模拟

发表于 2019-06-24 06:18 143次阅读
基于STC单片机的21C02模拟

单片机容量不足

发表于 2019-06-24 04:36 260次阅读
单片机容量不足

请问单片机串口发数的时候能同时接收到数据吗?

发表于 2019-06-24 03:44 86次阅读
请问单片机串口发数的时候能同时接收到数据吗?

【uFun试用体验】迟来的第二帖——简单的LIS3DH陀螺仪上位机

发表于 2019-06-23 16:38 415次阅读
【uFun试用体验】迟来的第二帖——简单的LIS3DH陀螺仪上位机

单片机C语言编程实例

发表于 2019-06-22 10:29 132次阅读
单片机C语言编程实例

如何优化单片机系统使其运行拥有更好的可靠性

看门狗电路的定时时间长短可由具体应用程序的循环周期决定,通常比系统正常工作时最大循环周期的时间略长即...

发表于 2019-06-21 15:34 104次阅读
如何优化单片机系统使其运行拥有更好的可靠性

单片机串行通信的结构组成及工作原理解析

目前多数单片机都配有串行接口,如51单片机和MCS - 96等系列单片机都配有一个全双工的串行接口,...

发表于 2019-06-21 15:22 197次阅读
单片机串行通信的结构组成及工作原理解析

干货 | 基于单片机的16×64 LED 点阵显...

本文详细介绍了一种低廉的16x64点阵LED显示屏的设计过程。

发表于 2019-06-20 17:08 328次阅读
干货 | 基于单片机的16×64 LED 点阵显...

干货 | 单片机、ARM、FPGA、嵌入式的区别...

学习嵌入式需要了解硬件知识,其中包括单片机、ARM、FPGA等,不同的硬件有不同的特点,需要了解他们...

发表于 2019-06-20 10:50 602次阅读
干货 | 单片机、ARM、FPGA、嵌入式的区别...

干货 | 关于单片机上for循环中运用ACC的隐...

想到了这个方法后,觉得自己好白痴,以后都不用ACC了。

发表于 2019-06-20 10:47 242次阅读
干货 | 关于单片机上for循环中运用ACC的隐...

粤芯半导体本月将试产

近日,智光电气在投资者互动平台上透露,其参与投资的广州粤芯半导体技术有限公司在生产线在做试产前的测试...

发表于 2019-06-19 17:56 1022次阅读
粤芯半导体本月将试产

C语言是嵌入式开发学习的基础

想要学习嵌入式开发需要知道什么是嵌入式,依照定义:嵌入式系统是一种专用的计算机系统,作为装置或设备的...

发表于 2019-06-19 17:16 175次阅读
C语言是嵌入式开发学习的基础

如何采用单片机实现VD5026编码器的工作过程

由专用编/解码器组成的报警系统,通常需要用单片机的10~14位输入/输出口,对编码器进行编码和控制,...

发表于 2019-06-19 15:23 60次阅读
如何采用单片机实现VD5026编码器的工作过程

单片机定时器中断原理及s3c2440的定时器使用...

使CPU中断的事件称中断源。中断源向CPU发出中断请求,CPU暂时中断原来执行的事件A转去做事件B。...

发表于 2019-06-17 16:06 97次阅读
单片机定时器中断原理及s3c2440的定时器使用...

51单片机的定时器

从上面定时器/计数器的结构图中我们可以看出,16位的定时/计数器分别由两个8位专用寄存器组成,即:T...

发表于 2019-06-17 15:02 141次阅读
51单片机的定时器

单片机定时器/计数器的结构

 每来一个脉冲计数器加1,当加到计数器为全1(即FFFFH)时,再输入一个脉冲就使计数器回零,且计数...

发表于 2019-06-17 09:57 111次阅读
单片机定时器/计数器的结构

单片机定时器/计数器基本原理

AT89S52单片机内部的定时/计数器的结构如图2所示。定时器T0由特殊功能寄存器TL0(低8位)和...

发表于 2019-06-17 09:19 60次阅读
单片机定时器/计数器基本原理

你有这些嵌入式硬件电路设计的基本功吗?

我走的电子开发道路其实和大多数人说的一样,基本的路线为模拟电子(熟练)→数字电路设计(掌握)→单片机...

发表于 2019-06-16 11:52 609次阅读
你有这些嵌入式硬件电路设计的基本功吗?

基于GPRS技术的单片机开发特点及过程介绍

针对这一问题,提出一种基于GPRS的单片机上网的解决方案,即在单片机中实现PPP协议,并通过驱动GP...

发表于 2019-06-13 15:20 157次阅读
基于GPRS技术的单片机开发特点及过程介绍

单片机精确延时的方法解析

1、使用循环函数延时: void delay1ms(void) //误差 0us,延时1ms ...

发表于 2019-06-12 15:32 113次阅读
单片机精确延时的方法解析

太阳能电池板自动对光控制集成电路的关键技术研究

针对太阳能电池板自动对光控制集成电路的关键技术展开研究,设计一种可以通过太阳光电池板自动对光的集成电...

发表于 2019-06-10 17:25 379次阅读
太阳能电池板自动对光控制集成电路的关键技术研究

单片机晶振电路中22pf或30pf电容的作用

刚学单片机的学长告诉我单片机的晶振电路中就是用22pf或30pf的电容就行,听人劝吃饱饭吧,照着焊电...

发表于 2019-06-10 16:44 423次阅读
单片机晶振电路中22pf或30pf电容的作用

单片机 | 基础汇编语言编程实例

单片机汇编语言编程

发表于 2019-06-05 18:04 601次阅读
单片机 | 基础汇编语言编程实例

单片机 | 音乐程序设计原理解析

利用程序来控制单处机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能...

发表于 2019-06-05 17:18 427次阅读
单片机 | 音乐程序设计原理解析

单片机 | P0口什么时候使用上拉电阻?

P0口作为I/O口输出的时候时,输出低电平为0 输出高电平为高组态(并非5V,相当于悬空状态,也就是...

发表于 2019-06-05 17:17 651次阅读
单片机 | P0口什么时候使用上拉电阻?

单片机 | STM32定时器比较输出切换模式之应...

定时器比较输出切换实现任意波形之实例。

发表于 2019-06-04 14:08 312次阅读
单片机 | STM32定时器比较输出切换模式之应...

嵌入式通用系统之间错综复杂的关系!

首先,“嵌入式”这是个概念,准确的定义没有,各个书上都有各自的定义。但是主要思想是一样的,就是相比较...

发表于 2019-06-03 09:18 633次阅读
嵌入式通用系统之间错综复杂的关系!

单片机常用的14个C语言算法盘点

是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么...

发表于 2019-06-02 10:22 479次阅读
单片机常用的14个C语言算法盘点

如何使用51单片机进行带wifi APP查看功能...

功能简要说明 1、发射板组成:DHT11 温湿度采集+51 单片机+cc2530 zigbee 无...

发表于 2019-06-01 10:17 634次阅读
如何使用51单片机进行带wifi APP查看功能...

基于单片机的汽车制冷系统维护自动化设备

制冷系统已成为的现代汽车重要配置,制冷系统内的冷媒量和冷媒纯度都是影响制冷效果的关键因素,需要按期进...

发表于 2019-06-01 09:58 140次阅读
基于单片机的汽车制冷系统维护自动化设备

详解STM32的位带操作

51单片机相信各位都用过,假设P1.1的IO口上挂了一个LED,那么你单独对LED的操作就是P1.1...

发表于 2019-06-01 09:54 77次阅读
详解STM32的位带操作

单片机对直流电机的调速测试程序设计

DCBITP1.0 speedequ20h org000h jmpdc_MOTOR...

发表于 2019-05-31 16:00 162次阅读
单片机对直流电机的调速测试程序设计

单片机之间的串口通讯程序设计

#defineucharunsignedchar #defineSLAVE0x00 #d...

发表于 2019-05-30 15:05 120次阅读
单片机之间的串口通讯程序设计

单片机双机点对点通信设计

#define__MAX_LEN_64//数据最大长度 #define_MHz_11//设置单...

发表于 2019-05-29 14:40 149次阅读
单片机双机点对点通信设计

单片机与传感器之间的单总线数据传输设计

首先是由总线控制器拉低总线,维持480us。在480us后释放总线,由上拉电阻讲总线拉高。等待5-6...

发表于 2019-05-29 14:34 196次阅读
单片机与传感器之间的单总线数据传输设计

单片机C语言编程中没有到的中断而中断全部开启的错...

我们知道,51单片机有几个不同的中断源。对于一个系统的设计,通常在初始化程序里面需要定义各个中断等

发表于 2019-05-26 11:57 660次阅读
单片机C语言编程中没有到的中断而中断全部开启的错...

通过单片机来控制蜂鸣器

有图可知BZ1蜂鸣器的BZ引脚和ULN2003引脚的12引脚相连的,这是一个输出引脚,对应的输入引脚...

发表于 2019-05-26 10:22 289次阅读
通过单片机来控制蜂鸣器

单片机种类及选型

单片机作为计算机发展的一个重要分支领域,根据目前发展情况,从不同角度单片机大致可以分为通用型/专用型...

发表于 2019-05-24 16:51 811次阅读
单片机种类及选型

arm和单片机的区别

单片机的字面意义就是单芯片微型计算机,是把处理器,存储器和必要的外部设备集成在一块半导体芯片上构成的...

发表于 2019-05-24 16:26 984次阅读
arm和单片机的区别

如何采用MCU实现M1052跨界核心板的音视频应...

i.MX RT1052的内核运行速度高达600MHz,内置高密度的512KB TCM SRAM,并能...

发表于 2019-05-24 15:33 101次阅读
如何采用MCU实现M1052跨界核心板的音视频应...

单片机通讯程序设计

TMOD=0x20;//定时器T1为模式2 TL1=0xfd;//定时器初值 TH1=0...

发表于 2019-05-23 15:32 141次阅读
单片机通讯程序设计

单片机原理及应用

单片机现已渗透到我们日常生活中的各个领域,小到家用电器、仪器仪表,大到医疗器械、航空航天,无不存在着...

发表于 2019-05-23 13:58 490次阅读
单片机原理及应用

单片机与plc优缺点

PLC是一套比较成熟的控制系统,有相当的通用性,在它内部已经包含了几套单片机。单独的一个单片机就是一...

发表于 2019-05-23 13:54 1149次阅读
单片机与plc优缺点

单片机编程步骤

单片机编程该如何进行?有哪些步骤?刚上手的新手大多数都会手忙脚乱,不知该从何入手。这是很正常的,大家...

发表于 2019-05-23 13:48 607次阅读
单片机编程步骤

单片机常用的14个C语言算法,看过的都成了大神!

算法(Algorithm): 计算机解题的基本思想方法和步骤。 算法的描述: 是对要解决一个问题或要...

发表于 2019-05-23 09:53 2900次阅读
单片机常用的14个C语言算法,看过的都成了大神!

常见硬件原理图中的“英文缩写”大全

常用控制接口EN:Enable,使能。使芯片能够工作。要用的时候,就打开EN脚,不用的时候就关闭。

发表于 2019-05-22 17:38 1119次阅读
常见硬件原理图中的“英文缩写”大全

17种常见的单片机电路设计模块

本电路与SD卡的封装有关,注意与封装对应。此电路可以通过端口控制SD卡的电源,比较完善,可以用于5V...

发表于 2019-05-22 17:34 672次阅读
17种常见的单片机电路设计模块

单片机音乐程序的设计原理解析

我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某个口线的“高”电平或低电平,则...

发表于 2019-05-20 16:08 207次阅读
单片机音乐程序的设计原理解析

单片机系统的EMC测试设计

EMC是电磁兼容(Electro- Magnetic Compatibility)的缩写,它包括电磁...

发表于 2019-05-20 15:39 155次阅读
单片机系统的EMC测试设计

集成电路 | 基于深度学习和低频通信阵列的无线面...

近年来,我国建筑在规模和层次上都发展到了一个新的高度,同时建筑施工安全管理也越发受到人们重视。

发表于 2019-05-20 14:18 483次阅读
集成电路 | 基于深度学习和低频通信阵列的无线面...

基于単片机室内照明智能控制系統

很多元件之间可能会互相影响,比如蜂鸣器会影响声控开关、热释电模块会影响红外通信(遥控,不过概率比较低...

发表于 2019-05-20 11:16 398次阅读
基于単片机室内照明智能控制系統

单片机5V转3.3V电平的19种方法你知道吗?

标准三端线性稳压器的压差通常是 2.0-3.0V。要把 5V 可靠地转换为 3.3V,就不能使用它们...

发表于 2019-05-18 11:44 1000次阅读
单片机5V转3.3V电平的19种方法你知道吗?

初入电子类的学生到底应该怎么发展

这是本文的作者向苏老师自荐的一篇文章,想必是基于其亲身体会写得比较真切,故转发在此,分享给标题中的朋...

发表于 2019-05-18 11:16 674次阅读
初入电子类的学生到底应该怎么发展

使用STM32单片机进行线性稳压电源的设计方案详...

随着计算机技术与电子信息技术的快速发展,在实际应用中根据调整管不同的工作状态把电源区分为开关电源、线...

发表于 2019-05-18 10:03 638次阅读
使用STM32单片机进行线性稳压电源的设计方案详...

基于单片机控制的自主寻迹电动小车的设计

在小车的中部平行装有两个色标传感器,采用查询检测的方法对黑线进行检测。89C51在检测到黑线信号后,...

发表于 2019-05-17 15:49 366次阅读
基于单片机控制的自主寻迹电动小车的设计

如何制作单片机简单电路

把七或八只发光二极管组合在一个模件上组成了个8字和小数点,用以显示数字。为了减少管脚,把各个发光管的...

发表于 2019-05-16 18:03 708次阅读
如何制作单片机简单电路

基于EFM8 8位MCU的智能家居系统开关设计

Silicon Labs EFM8SB1系列单片机控制芯片是一款基于最节能的8位MCU,非常适用于对...

发表于 2019-05-16 17:06 701次阅读
基于EFM8 8位MCU的智能家居系统开关设计

STM32F030C8T6微控制器的主要特性介绍

STM32F030C8T6微控制器是一款32位M0系列LQFP-48 单片机,性价比很高的ARM单片...

发表于 2019-05-15 15:49 913次阅读
STM32F030C8T6微控制器的主要特性介绍

STC90C52RC系列单片机的特点及引脚功能分...

STC90C52RC系列单片机是宏晶科技推出的一款高速、低功耗、超强抗干扰的单片机,指令代码完全兼容...

发表于 2019-05-13 14:36 1327次阅读
STC90C52RC系列单片机的特点及引脚功能分...

如何使用单片机进行可语音播报的脉搏检测仪的设计资...

设计功能:ST188光电传感器检测脉搏信号,并有脉搏信号指示灯; 具有温度检测功能,可检测人体温度...

发表于 2019-05-12 09:35 641次阅读
如何使用单片机进行可语音播报的脉搏检测仪的设计资...

如何利用单片机向电脑发送一串汉字

操作条件: 1.XP操作系统。 2.XP的超级终端显示。 3.WJ-V4.0开发板...

发表于 2019-05-11 10:40 201次阅读
如何利用单片机向电脑发送一串汉字

基于51单片机NRF905无线病房呼叫语音播报系...

一款医疗呼叫系统,主要功能是实现医院医务人员与病人之间信息沟通,可在不改变病房现有布局的情况下实现医...

发表于 2019-05-11 10:01 825次阅读
基于51单片机NRF905无线病房呼叫语音播报系...

STC15F104W单片机的特点及管脚图

STC15F104W单片机是STC生产的单时钟/机器周期(1T)的单片机,是高速/高可靠/低功耗/超...

发表于 2019-05-10 15:30 1439次阅读
STC15F104W单片机的特点及管脚图