您的位置 首页 系统

单片机C言语编制程序在自助式存放柜中体系的使用

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

1前语

在隧道窑温度操控体系、自助式寄存柜等多个实践使用中,咱们使用单片机高档C言语编制使用程序,满意了用户对各项性能参数的不同要求。下面以一实例,介绍C言语在使用程序设计上的长处。

2体系结构

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

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

3体系功用程序设计

体系程序有以下部分组成:主程序、存取程序、监控办理程序、操控输出程序、柜体箱位排序程序及键盘中止、时钟守时中止和报警程序。下面首要介绍箱位排序程序、存取程序和避免暗码重复程序。软件设计选用了模块化结构设计办法,一切程序选用单片机高档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[]界说与前面相同。

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

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

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/xitong/344921.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部