单片机啤酒生产线系统.docx

上传人:b****4 文档编号:11712713 上传时间:2023-03-31 格式:DOCX 页数:13 大小:70.91KB
下载 相关 举报
单片机啤酒生产线系统.docx_第1页
第1页 / 共13页
单片机啤酒生产线系统.docx_第2页
第2页 / 共13页
单片机啤酒生产线系统.docx_第3页
第3页 / 共13页
单片机啤酒生产线系统.docx_第4页
第4页 / 共13页
单片机啤酒生产线系统.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

单片机啤酒生产线系统.docx

《单片机啤酒生产线系统.docx》由会员分享,可在线阅读,更多相关《单片机啤酒生产线系统.docx(13页珍藏版)》请在冰豆网上搜索。

单片机啤酒生产线系统.docx

单片机啤酒生产线系统

 

数字化产品设计报告

 

专业:

嵌入式系统

 

哈尔滨工业大学华德应用技术学院

 

姓名:

班级:

学号:

课题编号:

C004

课题名称:

啤酒装箱生产线系统

基本功能:

由单脉冲代表生产线啤酒统计数,按一下单脉冲有一瓶酒过去,24瓶为一箱,显示在数码管上。

 

扩展功能:

能够实现清零重新计数和存储及显示存储数据

 

成绩:

评审老师:

一、需求分析:

应用:

工业生产线成品计数器是一种自动记录生产过程中随机产量,并通过计算机进行显示、累计、储存的装置。

广泛应用于啤酒.饮料.药品计数.汽车测速.电机测速.点钞机等等。

目的:

设计此程序主要是为了控制产品装箱生产线,实现自动化的产品装箱计数。

从而让生产者对产品生产情况有了具体的了解,与传统的生产计数方式相比,能够让生产者更合理的调度人力物力资源,节省劳动力,能够在最短的时间内而获得更多经济效益。

立题意义:

为了能让学生更深入了解MSC-51单片机各个芯片应用,在理论知识的基础上加强动手能力,创新思维,为将来走向社会岗位奠定扎实基础.

二、硬件设计方案

硬件所需器件:

51单片机、0832数模转换器、LED数码管、直流电动机键盘及8279键盘/显示接口芯片。

各芯片的简要介绍如下:

8XC51系列单片机是MCD-51中的一个子系列,是一组高性能兼容性单片机。

其中,x的规定为程序存储器的配置:

0表示无片内ROM,3表示片内为掩膜ROM,7表示片内为EPROM/OTPROM,9表示片内为FlashROM。

DAC0832芯片是美国Nationalsemiconductor公司生产的具有2个数据寄存器的8位分辨率的D/A转换芯片。

此芯片与处理器完全兼容,它由8位输入锁存器、8位DAC电路及转换控制电路构成,通过两个输入寄存器构成两级数据输入锁存。

Intel8279芯片是一种通用可编程键盘/显示接口芯片,它具有同时完成键盘输入和显示控制两种功能。

三、软件设计方案

算法分析:

1.初始化堆栈区域:

设置存储地址的首地址0D0.0F0、0B0。

后来的的数据进栈存储、数据出栈读取可通过R0寄存器间接寻址进行地址操作存储。

2.初始化8279:

送控制字00H(左边输入八位字符显示,外部译码键扫描方式,双键互锁)给8279的Z8279状态/命令口置控制方式。

再将清屏控制字0C1H送入Z8279让LED数码管清屏。

3.判断是否有键值输入:

把状态口地址送入特殊功能寄存器DPTR中让其与0F进行ANL运算屏蔽D4-D7个状态,JZ判断是否有键入如果没有继续判断,如果有把控制字40H送入状态命令口并把键值数据通过DPTR送入累加器A中后进行判断。

4.当判断键值是0键:

通过DAC0832的数据口8000H送入数据,通过数模转换控制电压启动电动机送出脉冲,用于存储数据瓶数、箱数、百箱数的R1、R2、R3清零,初始化计数器T1清零开始对脉冲计数。

计数值送R1当等于24是R2自增1,R1清零计数器清零重新计数,当R2自增到到99时R2清零R3自增1,计数值通过做除法设偏移量调用显示子程序,显示子程序是通过显示起始地址加偏移量设置显示位置的,数据显示通过查表的方法,表的起始地址加偏移量是要显示的数据。

5.当判断键值是1时:

把当前的人R1,R2,R3分别通过R0进行寄存器间接寻址存储在newp、newx、newb中,newp、newx、new内的地址自增1.进栈方式

6.当判断键值是2时:

数据显示出栈后进先出方式把地址减一通过R0寄存器间接寻址把数据送入累加器A,是通过做除法设显示偏移量调用显示子程序,显示子程序是通过显示起始地址加偏移量设置显示位置的,数据显示通过查表的方法,表的起始地址加偏移量是要显示的数据。

当当前地址减至等于首地址时R7重新赋值1.

四、系统调试

硬件调试:

1.使用试验箱时试验箱的USB口无法使用,后改用串口线试验箱能够正常使用。

2.起初使用单脉冲进行控制脉冲信号输入,后改用送数据给0832数模转换器控制电动机电压从而电动机产生的电动机脉冲信号。

3.脉冲信号是通过多功能P3口中的P3.5定时/计数器T1的外输入引脚送入的。

软件测试:

1.最开始实现的功能只有简单的脉冲计数显示,在程序设计的过程中,在显示的过程中起初只能显示一位计数非常不理想,后来通过研究电子钟的程序理解了设置偏移量设定显示位置显示数据是通过查表地方法实现的。

计数值做除法商和余数分别是两个位置,通过设置偏移量分别设置显示位置,调用子程序。

2.后来又加入了键盘控制,清零计数,清屏,是通过查询按键及键值的方法解决的。

3.课设要求中是单脉冲输入信号,自己改了一通过0832控制电压控制直流电动机输出脉冲信号。

4.加入拓展功能存储并显示是遇到了很大的困难,起初是想用Flash闪存,老师讲解后,自己是试着编写了一下,结果未成功,由于时间比较紧,借鉴了老师的设立堆栈存储的方法,在便携存储与显示程序后,无法实现,添加存储地址的观察项,单步执行查看存储情况,发现首地址初始化出了问题经改正实现了存储及显示。

 

总结:

时光如逝,为期两周的数字化产品设计以接近尾声,在这段时间里,学习了很多,也成长了很多这次单片机课程设计我们历时两个星期,不仅仅让我们综合那些理论知识来运用到设计和创新,还让我们知道了一个团队凝聚在一起时所能发挥出的巨大潜能!

尽力在两个星期后的今天我已明白课程设计对我来说的意义,它不仅仅是让我们把所学的理论知识与实践相结合起来,提高自己的实际动手能力和独立思考的能力,更重要的是同学间的团结,虽然我们这次花去的时间比别人多,但我相信我们得到的也会更多!

作为一名嵌入式专业的大二学生,我觉得做单片机课程设计是十分有意义的,而且是十分必要的。

我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?

如何把我们所学的专业基础课理论知识运用到实践中去呢?

我想做类似的课程设计就为我们提供了良好的实践平台。

为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。

我们是在做单片机课程设计,但我们不是艺术家,他们可以抛开实际尽情在幻想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,

因此我想把课设做的更加贴切现实生活当中的应用,因此我想把数码管显示改为液晶显示,我想这样就更加贴切实际当中的生产线了。

附录1:

(程序代码)

Z8279EQU8701H;8279状态/命令口地址

D8279EQU8700H;8279数据口地址

LEDMODEQU00H;左边输入八位字符显示

;外部译码键扫描方式,双键互锁

D0832EQU8000H

LEDCLSEQU0C1H;清除显示RAM

LEDWR0EQU80H;设定的将要写入的显示RAM地址

NEWPEQU30H;定义存储地址指针

NEWXEQU31H

NEWBEQU32H

OLDPEQU33H

OLDXEQU34H

OLDBEQU35H

ORG0000H

AJMPSTART

ORG0040H

START:

MOVSP,#60H;初始化堆栈段

MOVR7,#1

MOVNEWP,#0D0H;送首地址

MOVNEWX,#0F0H

MOVNEWB,#0B0H

MOVOLDP,#0D0H

MOVOLDX,#0F0H

MOVOLDB,#0B0H

MOVR1,#0;瓶数

MOVR2,#0;箱数

MOVR3,#0;百箱数

MAIN:

MOVA,#00H;送0832初状态

MOVDPTR,#D0832

MOVX@DPTR,A

LCALLINIT8279;初始化8279

GETKEY:

MOVDPTR,#Z8279

MOVXA,@DPTR

ANLA,#0FH

JZGETKEY;判断是否有键值输入

MOVA,#40H

MOVX@DPTR,A;送控制字

MOVDPTR,#D8279

MOVXA,@DPTR;开始判断键值

CJNEA,#00H,KEY1;判断0键

;0键保存,清零重新进行计数

MOVR1,#0;瓶数

MOVR2,#0;箱数

MOVR3,#0;百箱数

MOVA,#15H;通过0832控制电动机送入脉冲

MOVDPTR,#D0832

MOVX@DPTR,A

LJMPCOUNT_INT

PUSHACC

MOVA,#00H

MOVDPTR,#D0832

MOVX@DPTR,A

POPACC

KEY1:

CJNEA,#01H,KEY2

;1键清屏

PUSH0

MOVR0,NEWP;数据指针

MOVA,R1

MOV@R0,A

POP0

PUSH0

MOVR0,NEWX

MOVA,R2

MOV@R0,A

POP0

PUSH0

MOVR0,NEWB

MOVA,R3

MOV@R0,A

POP0

INCNEWP;存储后地址自增

INCNEWX

INCNEWB

JMPMAIN

KEY2:

CJNEA,#02H,GETKEY

;2键显示储存数据

MOVA,NEWP;地址自减一显示

CLRC

SUBBA,R7

MOVOLDP,A

CLRC

MOVA,NEWX

SUBBA,R7

MOVOLDX,A

MOVA,NEWB

CLRC

SUBBA,R7

MOVOLDB,A

INCR7

MOVA,OLDP

CJNEA,#0D0H,N1;判断下次从开始显示

MOVR7,#1

N1:

PUSH0

MOVR0,OLDP

MOVA,@R0

POP0

MOVB,#10

DIVAB

MOVR5,A

MOVR4,#1

LCALLDISLED

MOVR5,B

MOVR4,#0

LCALLDISLED

PUSH0

MOVR0,OLDX

MOVA,@R0

POP0

MOVB,#10

DIVAB

MOVR5,A

MOVR4,#5

LCALLDISLED

MOVR5,B

MOVR4,#4

LCALLDISLED

PUSH0

MOVR0,OLDB

MOVA,@R0

POP0

MOVB,#10

DIVAB

MOVR5,A

MOVR4,#7

LCALLDISLED

MOVR5,B

MOVR4,#6

LCALLDISLED

LJMPGETKEY

COUNT_INT:

MOVTMOD,#40H;送计数器控制字

MOVTL1,#00H

MOVTH1,#00H;计时器的初始化

SETBTR1;定时/计数器运行标志

WAIT:

MOVA,TL1

MOVR1,A

CJNER1,#24,DIS;

INCR2

MOVR1,#0

MOVTL1,#0

WAIT1:

CJNER2,#99,DIS1

INCR3

MOVR2,#0

DIS:

MOVA,R1

MOVB,#10

DIVAB

MOVR5,A

MOVR4,#1;数码管显示位置

LCALLDISLED

MOVR5,B

MOVR4,#0

LCALLDISLED

MOVA,R2

MOVB,#10

DIVAB;

MOVR5,A

MOVR4,#5

LCALLDISLED

MOVR5,B

MOVR4,#4

LCALLDISLED

AJMPWAIT1

DIS1:

MOVA,R3

MOVB,#10

DIVAB;

MOVR5,A

MOVR4,#7

LCALLDISLED

MOVR5,B

MOVR4,#6

LCALLDISLED

MOVDPTR,#Z8279

MOVXA,@DPTR

ANLA,#0FH

JZWAIT

MOVA,#40H

MOVX@DPTR,A

MOVDPTR,#D8279

MOVXA,@DPTR

LJMPKEY1

DISLED:

PUSHDPH;保存现场

PUSHDPL

PUSHACC

MOVA,#LEDWR0;置显示起始地址

ADDA,R4;加位置偏移量

MOVDPTR,#Z8279

MOVX@DPTR,A;设定显示位置

MOVDPTR,#LEDSEG;置显示常数表起始位置

MOVA,R5

MOVCA,@A+DPTR;查表

MOVDPTR,#D8279

MOVX@DPTR,A;显示数据

POPACC;恢复现场

POPDPL

POPDPH

RET

INIT8279:

;8279初始化子程序

PUSHDPH;保存现场

PUSHDPL

PUSHACC

MOVDPTR,#Z8279

MOVA,#LEDMOD;置8279工作方式

MOVX@DPTR,A

MOVA,#LEDCLS;清除LED显示

MOVX@DPTR,A

POPACC;恢复现场

POPDPL

POPDPH

RET

LEDSEG:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

;'0,1,2,3,4,5,6,7,8,9'

END

附录2:

(电路原理图)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1