1、沈阳航空航天大学课 程 设 计 报 告课程设计名称:单片机系统综合课程设计课程设计题目:模拟饮料装配线 院(系):计算机学院专 业:计算机科学与技术班 级: 24010101学 号: 2012040101022姓 名: 指导教师: 、沈阳航空航天大学课程设计报告 学术诚信声明 本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。报告资料
2、及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。 本人签名: 日期: 2015 年 07 月 10 日沈阳航空航天大学课程设计报告 I 沈阳航空航天大学课 程 设 计 任 务 书课程名称 单 片 机 系 统 综 合 课 程 设 计 专 业 计算机科学与技术学生姓名 班级 24010101 学号 2012040101022题目名称 模拟饮料装配线起止日期 2015 年 6 月 29 日起至 2015 年 7 月 10 日止课设内容和要求:根据流水线作业的原理,模拟饮料装配过程。具体内容如下:1设计饮料容积的显示方式,有 500ml、1 升,用
3、键盘设置装配的容量和数量,并设计如何用数码管表示空状态和满状态;2在数码管上用循环(从左到右或相反方向均可)表示流水作业,每装满一个,使其右侧的圆点变亮来标示,同时累计装配数加 1;3用十进制数显示装配总数,要完整演示整个过程。二、课程设计要求1独立完成课程设计任务;2通过老师当场验收;3交出完整的课程设计报告。参考资料:1 张毅刚,刘杰. MCS-51 单片机原理及应用M. 哈尔滨:哈尔滨工业大学出版社,20082 高 锋. 单片微型计算机原理与接口技术M. 北京:科学出版社, 20073 胡汉才. 单片机原理及其接口技术M. 北京:清华大学出版社, 2004教 研 室 审 核 意 见 :
4、同意立题( )不同意立题( ) 教 研 室 主 任 签 字 :指导教师(签名)年 月 日沈阳航空航天大学课程设计报告 II 学生签名 2015 年 6 月 29 日沈阳航空航天大学课程设计报告 III 课程设计总结:在自己的不懈努力和老师的细心帮助下,本人终于成功的完成了这次课设,谢谢老师的指导。我在开始拿到本次课题时,一时不知从哪里下手。自己虽然学了一个学期的单片机,但是多是一些基础简单的课题,所以面对这次课设,开始的确是有一些迷茫的。由于本人对汇编语言还算了解,初步决定利用汇编语言进行本次课设的编辑,但是对于自己的能力和是否能成功完成都有很大的疑问。经过查阅资料,初步建立的设计计划,并从多
5、方面去思考问题,把难题分块,一步一步向目标努力,终于成功完成任务。本次课设又是对自己的一次考验,从最初的迷茫到最后的成功完成,我体会到努力的重要,也提高了自己的动手能力,学会学以致用。感觉这次课设对自己的帮助很大,自己深刻感觉到只要在实践中才能真正的锻炼自己的能力。沈阳航空航天大学课程设计报告 IV 目 录第 1 章 总体设计方案 .11.1 设计需求 11.1.1 初步问题描述 11.1.2 具体需求描述 11.2 设计原理 11.2.1 键盘扫描模块 11.2.2 数据显示模块 21.2.3 主函数处理模块 31.3 设计环境 .3第 2 章 详细设计方案 .42.1 硬件设计 42.2
6、软件设计 62.2.1 键盘扫描输入程序 .62.2.2 数码管显示程序 .72.2.3 数据装配处理程序 .8第 3 章 结果测试及分析 .103.1 结果测试 .103.2 结果分析 .11参考文献 .12附 录(程序清单) .13沈阳航空航天大学课程设计报告 0 第 1 章 总体设计方案1.1 设计需求1.1.1 初步问题描述根据流水线作业原理,模拟饮料装配过程。具体内容如下:(1) 涉及饮料容积的显示方式,有 500ml,1L,用键盘设置装配的容量和数 量,告 并设计如何用数码管表示空状态和满状态;(2) 在数码管上用循环(从左到右或相反方向均可)表示流水作业,每次装满诉 一个,使其右
7、侧的圆点变量来标示,同时累计装配数量加 1;你 (3) 用十进制显示装配总数,要完整演示整个过程。1.1.2 具体需求描述(1) 需要使用键盘输入进行装配的数量和模式的选择,在键盘上设置输入的 0 别 到 9 的数据量和其他功能按键;(2) 通过数码管显示当前的装配数量,输入总数后开始工作,进行定时计数,抄 在数码管上显示剩余数量和当前完成数量,还有当前的饮料瓶的状态;(3) 当装配饮料满时,数码管显示改变,右侧原点变量,并且装配数加 1;(4) 数码显示用十进制,可以在输入装配量和模式后,按开始键进行饮料的装袭 配过程。1.2 设计原理通过伟福 lab8000 集成的键盘和数码管进行数据的输
8、入和显示,通过键盘输入当前设置的装配数量和其他功能按键如开始等,并通过数码管进行数据的显示,并通过设计的主函数进行数据的处理,完成数据输入和模式选择以及模拟装配和实时显示的功能,具体模块如下:1.2.1 键盘扫描模块通过 lab8000 的键盘进行数据的输入,首先判别键盘有无按键闭合,可通过读相应的端口状态进行判断。如果有按键闭合,先进行去除键盘的机械抖动,再沈阳航空航天大学课程设计报告 1 进行闭合键号的判定,本次课设由于数码管位数有限,可输入数的范围为:00-99,可一次输入两位数,分别代表十位和个位,再利用键盘扫描算法查找被按下的键盘号,再通过查表查到相应的码值,其中为了防止一次操作被多
9、次执行,加入对键的一次闭合仅做一次处理,采用等待闭合键释放后在操作的处理。1.键盘扫描法(1)判断键盘中有无键按下 将全部行线 Y0-Y3 置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与 4 根行线相交叉的 4 个按键之中。若所有列线均为高电平,则键盘中无键按下。(2)判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将列线置为低电平,其它线为高电平。在确定某根列线位置为低电平后,再逐行检测各行线的电平状态。若某行为低,则该行线与置为低电平的列线交叉处的按键就是闭合的按键。1.2.2 数据显示模块利用 l
10、ab8000 上的 6 个数码管进行要求的数据输出,数据显示模块是显示先前放入到单片机固定存储单元的数据,本次课设将相应的数据放入到了 30H 到32H 的内存单元中。数据显示模块利用的是 LED 动态显示方式,分别对码选地址8002H 和数据输入端 8004H 进行数据输入,选择相应的数码管和输入数据,数码管分别显示当前未完成数、当前已完成数、饮料瓶的空满状态以及表示装满的右侧圆点。1.LED 动态显示方式动态显示是指每隔一段时间循环点亮每个 LED 数码管,每次只有一个 LED 被点亮。根据人眼的视觉暂留效应,当循环点亮的速度很快的时候,可以认为各个LED 是稳定显示的。程序中采用扫描显示
11、的方式,即在同一时刻,只使用一个LED 显示数据。通过为共阴极 LED(或共阳极 LED)的公共引脚赋低电平(或高电平),从而选择 某个 LED 显示。如此循环,使每个 LED 显示该 LED 应显示的数据,并进行适当的延时,形成视觉暂留效果。这样便可以达到动态显示的目的。沈阳航空航天大学课程设计报告 2 1.2.3 主函数处理模块主函数中是在键盘输入数据并且按开始键后的相应操作,包括要求中的模拟流水线设置,本课设利用 8 个 led 灯来模拟流水线。首先初始化为灭,小灯从左向右亮起,每亮一个代表当前完成一个饮料瓶的装配,同时数码管的右侧圆点亮 计数加 1。主函数利用中断方式 1 进行中断计数
12、,在主函数中为了表示能延长显示装满的标志,要多加两个周期的时间显示。在中断等待时,循环调用显示函数,以达到时刻显示的目的。同时加入了蜂鸣器,当装配完成时蜂鸣器响起。1.3 设计环境硬件环境:伟福 lab8000、PC 机软件环境:keil uvision3 应用软件、WinXP沈阳航空航天大学课程设计报告 3 第 2 章 详细设计方案2.1 硬件设计本设计中用到的硬件有 lab8000 实验箱包括小键盘、6 个八段数码管和 8 个发光二极管等硬件。图 2.1 实验箱线连接图沈阳航空航天大学课程设计报告 4 图 2.2 键盘和显示原理电路如图 2.1 所示将 P1 口接在 8 个发光二极管,用来
13、模拟流水线,当完成一次装配右侧 led 灯亮起。以 CS0 为地址线连接在 KEY/LCD-CS 上,作为端口的地址沈阳航空航天大学课程设计报告 5 线。将 P3.0 连接到蜂鸣器驱动端,当完成所有装配时,蜂鸣器响起。图 2.2 是实验键盘和显示的原理电路图,地址以 CS0 为地址端,通过此电路可以输入变量和输出显示码值。2.2 软件设计软件设计主要是软件编辑和软件功能实现。软件主要分为三个模块,键盘扫描输入程序、数码管显示程序、数据装配处理程序,完成数据输入和模式选择,数据的实时显示和模拟装配的功能。2.2.1 键盘扫描输入程序如图 2.3 所示,首先程序判断是否按键被按下,此过程通过键盘判
14、断模块程序进行判断。程序将行码置零,当有按键被按下,列码中将由 0 变成 1 并跳入确认键值程序中,当无按键被按下程序将处于等待状态。如图 2.4 所示,如果按键被按下则进入确定键值程序,此程序通过键盘扫描算法和查表确定相应的码值,并将相应的值存储于固定内存空间中,为后续的显示程序做准备。图 2.3 判断是否有按键的判断模块开始行线码置零获取列线码列码是否为 0等待下一次是否进行键值确定结束沈阳航空航天大学课程设计报告 6 图 2.4 确定键值的模块实验中可设置的输入量为一个范围为 0-99 的十进制数,将其作为装配的初始量,程序中预设了按键 A 和按键 B 分别代表装配 1L 和 500ml
15、 的选择模式,在输入完相应的量后,按 F 键后,程序开始模拟装配。2.2.2 数码管显示程序实验要求输出为十进制的数,所以先将数据进行码值的进制转换,再通过查表找到显示数码管的对应七段显示码。通过 LED 的动态显示法,首先选择最左侧开始输入列线码输出行线码判断行码中是否有为 0列码左移N=行首键号 +列号查表确定相应的值是否是否查询所有行列结束是否沈阳航空航天大学课程设计报告 7 数码管并输入相应的数值,并调用延时程序,延时程序是作用为了显示我们所要显示的码值。然后右移选管码值,显示其右侧数码管。如此显示,直到每个数码管都输出完成,再进行下一次输出显示,具体操作如图 2.5 所示。图 2.5
16、 数码管显示模块2.2.3 数据装配处理程序装配处理程序主要模拟饮料装配的过程。首先获取先前键盘输入的装配数量和装配模式,然后进入计数程序中,而计数的过程是通过中断设置的。每当完成一次计数装配,装配总数加一,并且 led 灯亮起,在装配过程中代表未满的标志开始从内存中取出数据进行进制转换对所查码值对应相应的七段显示码输入选管码和输入值码管是否显示完成右移选码值结束是否数码管显示沈阳航空航天大学课程设计报告 8 位为 0,当装配满时则置 1,并且数码管的右侧圆点变亮。Led 灯是由左向右逐步亮起,来模拟装配的过程 。具体操作如图 2.6 所示。 图 2.6 函数装配模块开始输入的数据和类型开中断
17、计时是否完成中断计时标记空满标志位置 0否点亮左侧 led 等,当计数满重新计数是是否完成总数否标记空满位置 1是结束沈阳航空航天大学课程设计报告 9 第 3 章 结果测试及分析3.1 结果测试测试过程如下表 3.1 所示。 3.1 测试表操作 显示过程及反应 备注数码管初始化 数码管显示为 00 00 00按键输入十位 数码管显示输出的值为十位按键输入个位 数码管显示输出的值为个位 十位与个位组成一位十进制数按键输入模式 可输入 A 和 B 两种模式按键 F 输入数码管显示位装配数、已装配数和当前装配状态当前装配状态数码显示为 0 代表正在装配,未满当前装配状态数码显示为 1装配数减一,已装
18、配数加一右侧圆点点亮,led 点亮代表本次装配完成,已满装配状态数码显示恢复为 0右侧圆点熄灭完成一次后继续装配,未满led 继续向左侧变亮,直到led 全亮连续重复前两次变化,直到led 全亮led 全亮点亮第一个 led 灯 循环模拟流水线循环演示 循环前几次的过程蜂鸣器响起 表示当前装配完成按照图 2.1 所示连接图进行连接。在程序编译连接完成之后,启动程序。输入装配的数量,由于数码管有限,所以输入的数值范围为十进制 0-99,随后在输沈阳航空航天大学课程设计报告 10 入想要输入的装配模式,本课设预设了两个模式键 A 和 B,分别代表 1L 和500ml。一切输入量都完成后,按功能键
19、F 表示开始,进行模拟装配。装配状态分为 1 和0,分别代表满和未满,当装配完成一次后小灯左移一位,同时数码管右侧小圆点变亮。 3.2 结果分析根据以上结果分析等到以下分析:(1)在输入两位十进制数和选择模式键后,程序可以输入数据到单片机内存地11 址 中,证明键盘设计成功,可以作为数据输入的输入器使用,初步完成了11 键盘输入的目的,并且定义了需要的功能按键,并且加入了去抖动和和键11 的一次闭合一次处理,使键盘功能更加完善。(2)显示模块能清晰的显示输出数据,六个数码管感觉不到光的闪动。通过动11 态显示方法显示数据,表明数码显示完成了初步的显示功能。(3)主函数的功能是模拟装配过程,函数
20、利用中断进行计数,每当完成模拟的11 一次装配,剩余装配数减一,当前完成数加一,并且 led 灯向左点亮一个。11 如果在装配过程中显示管显示值为 0,表示当前状态未满,当装满时右侧圆11 点变亮,标志显示数码管变为 1,实现了空和满的显示。(4)综上所述,程序基本完成了数据的输入、数据显示和模拟装配的过程。沈阳航空航天大学课程设计报告 11 参考文献1 张毅刚,刘杰. MSC-51 单片机原理与应用M. 哈尔滨:哈尔滨工业大学出版社,20082 高峰. 单片微型计算机原理与接口技术M. 北京:科学出版社,20073 胡汉才.单片机原理及其接口技术M. 北京:清华大学出版社,20044 郭天祥
21、.新概念 51 单片机 C 语言教程M.北京:电子工业出版社,2009.5 张迎新单片机初级教程单片机基础M北京航空航天出版社,20066 江世明,黄同成单片机原理及应用M中国铁道出版社,2010沈阳航空航天大学课程设计报告 12 附 录(关键部分程序清单)MX EQU 30H ;放入装配总数FI EQU 31H ;当前已完成总数XS EQU 32H ;代表满和空DZ EQU 33HZQ1 EQU 40H ZQ2 EQU 41H ;设置中断时间XZ EQU 42H ;中断次数YC EQU 43HORG 0000H ;程序开始AJMP STARTORG 001BH ;定时器 1 中断入口AJMP
22、 LOOPORG 0400HAJMP MAINORG 0500START:MOV XS,#00HMOV FI,#00HMOV R6,#02HKEYI:ACALL KS1 ;判断是否有按键被按下NZ LK1NI: ACALL LOOP2 ;调用显示沈阳航空航天大学课程设计报告 13 NOPNOPNOPNOPAJMP KEYINOPNOPLK1: ACALL LOOP2 ; 调用显示NOP ; 去抖动NOP NOPACALL LOOP2ACALL KS1JNZ LK2ACALL LOOP0AJMP KEYILK2:MOV R2,#0FBH ;列选码MOV R4,#00H ;初始化列值LK4:MOV
23、 34H,R2MOV DPTR ,#8002H ;列选线地址MOV A, R2MOVX DPTR,AMOV DPTR,#8001H ;行选线地址MOVX A,DPTR沈阳航空航天大学课程设计报告 14 JB Acc.0,LONE ;判断第一行是否为零MOV A,#00HLJMP LKPLONE:JB Acc.1,LTWO ;判断第二行是否为零 MOV A,#04HLJMP LKPLTWO:JB ACC.2,LTHR ;判断第三行是否为零MOV A,#08HLJMP LKPLTHR:JB Acc.3,NEXT ;判断第四行是否为零MOV A,#0CHLKP:ADD A,R4 ;计算闭合键号的数值
24、MOV DZ,ALK3: ;判断是否有按键被按下ACALL LOOP2ACALL KS1JNZ LK3NEXT: ;当扫描到的列没有闭合键则向下查询INC R4MOV R2,34H沈阳航空航天大学课程设计报告 15 MOV A,R2JNB Acc.5,LK6 ;判断是否到最大扫描位NOPNOPNOPRL A ;进行右移MOV R2,AMOV A,34HLJMP LK4LK6:MOV A,DZMOV DPTR ,#TAB0MOVC A,A+DPTRLK7: ;通过计算的结果查询CJNE A,#0BH,LK5 ;当前输入值为 B,设定为 1LMOV XZ,#40HLJMP KEYILK5:CJNE
25、 A,#0AH,LK8 ;当前输入值为 A,设定为 500mlMOV XZ,#20HLJMP KEYILK8:CJNE A,#0FH,LK9 ;当前输入值为 F,开始装配AJMP MAINLK9:DJNZ R6,KK沈阳航空航天大学课程设计报告 16 NOPNOPNOPMOV R7,MXADD A, R7MOV MX,ALJMP STARTKK: ; 输入当前的十位和个位MOV B,#10MUL ABMOV MX,ALJMP KEYIKS1:MOV DPTR ,#8001H ;判断是否有按键被按下MOV A,#00HMOVX DPTR ,AINC DPTRINC DPTRMOVX A,DPTR
26、CPL AANL A,#0FHRETLOOP2: ;显示MOV DPTR,#TAB ;赋值查表地址MOV R0,#50HMOV R1,#30HMOV R3,#03H沈阳航空航天大学课程设计报告 17 LOOP11: ;进制转换,并查取相应的七段显示码MOV A,R1MOV B,#0AH;DIV ABMOVC A,A+DPTRMOV R0,A ;将相应的值放入内存空间INC R0MOV A,BMOVC A,A+DPTRMOV R0,AINC R0INC R1DJNZ R3,LOOP11SET11: MOV R3,#06HMOV R0,#50HMOV R2,#20HMOV DPTR,#8002HM
27、OV A,R2MOVX DPTR,ARR AMOV R2,ADISPLAY1: ;取出数据并输入到数码管中MOV DPTR,#8004HMOV A,R0MOV R1,#32HCJNE R1,#01H,LL1沈阳航空航天大学课程设计报告 18 ORL A,#80HLL1: ; 数码显示MOVX DPTR,AINC R0ACALL YS0MOV DPTR,#8002HMOV A,R2MOVX DPTR,ARR AMOV R2,ADJNZ R3,DISPLAY1RETYS01: ; 延迟程序MOV R1,#64HYS11:NOPNOPNOPDJNZ R1,YS11RETTAB:DB 3FH,06H,
28、5BH,4FH,66H,6DH,7DH,07H,7FH,6FHTAB0:DB 0DH,0EH,0FH,00H,0CH,3,2,1,0BH,6,5,4,0AH,9,8,7 MAIN:沈阳航空航天大学课程设计报告 19 MOV ZQ1,#00HMOV ZQ2,#00H MOV P1, #00HMOV FI, #00HMOV XS ,#00HMOV YC ,#00HMOV TH1,ZQ1MOV TL1,ZQ2MOV R7,XZMOV TMOD ,#10H ;设置中断SETB ET1SETB TR1SETB EASETB PT1SJMP LOOP0 ;中断等待LOOP:DJNZ R7,EXIT ;中断
29、重设值MOV YC, #00HMOV TH1,ZQ1MOV TL1,ZQ2MOV R7, XZINC FI ; 每完成一次,完成数加一MOV A,P1 ; 对 led 灯赋初值CJNE A,#00H,OL0 MOV P1, #01HLJMP TPOL0: ; 对 led 灯显示进行操作CJNE A,#0FFH,OL1沈阳航空航天大学课程设计报告 20 MOV P1,#01HLJMP TPOL1: ;右移小灯并加 1 实现模拟RL AINC AMOV P1,ALJMP TPTP: DJNZ MX,LPLJMP SD LP: ;延长 1 的显示时间MOV XS,#01HRETIEXIT :INC
30、YCMOV A,YCCJNE A,#01H, M1RETIM1:CJNE A,#02H,M2RETI M2: ;当完成装配置 1MOV XS,#00HRETI SD:SJMP LOOP0 ;调用显示程序LOOP0: ;显示模块 2MOV DPTR,#TAB ;赋值表头沈阳航空航天大学课程设计报告 21 MOV R0,#50HMOV R1,#30HMOV R3,#03HCJNE R1,#00H,LOOP1 ;当装配全部完成蜂鸣器响起CPL P3.0ACALL YS0CPL P3.0 LOOP1: ;进行进制转换MOV A,R1MOV B,#0AH;DIV ABMOVC A,A+DPTRMOV R
31、0,AINC R0MOV A,BMOVC A,A+DPTRMOV R0,AINC R0INC R1DJNZ R3,LOOP1SET1:MOV R3,#06HMOV R0,#50HMOV R2,#20HMOV DPTR,#8002HMOV A,R2MOVX DPTR,ARR A沈阳航空航天大学课程设计报告 22 MOV R2,ADISPLAY: ;数据在数码管上的显示MOV DPTR,#8004HMOV A,R0MOV R1,#32HCJNE R1,#01H,LLORL A,#80HLL:MOVX DPTR,AINC R0ACALL YS0MOV DPTR,#8002HMOV A,R2MOVX DPTR,ARR AMOV R2,ADJNZ R3,DISPLAYSJMP LOOP0YS0: ;调用延时程序MOV R1,#64HYS1:NOPNOPNOPDJNZ R1,YS1RETEND 沈阳航空航天大学课程设计报告 23