安全检测技术及应用课程设计
————单片机及其在安全检测中的应用
小组成员:
班级 学号 姓名
设计目的 ..................................................................................................... 3 题目一: 基于单片机的流水灯控制器 .................................................. 6 1. 流水灯控制器硬件电路 ................................................................. 6 2. 单片机的软件资源规划 ................................................................. 6 3.控制程序流程图 ............................................................................ 6 4.控制程序清单 ................................................................................ 7 5.结果 .................................................................................................... 8 6. ............................................................................................................ 8 题目二: 基于单片机的电子即计时器 .................................................. 9 电子计时器硬件电路及说明 ............................................................ 10 2. 单片机的软件资源规划 ............................................................... 11 3.控制程序流程图 .......................................................................... 11 4.控制程序清单 .............................................................................. 13 5.结果 ................................................................. 错误!未定义书签。 收获、体会 ............................................................................................... 15
设计目的:
1. 了解单片机
单片微型计算机简称单片机,是典型的嵌入式微控制器
(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。
早期的单片机都是8位或4位的。其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。此后在8031上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。
单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。
单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可......用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影!......它主要是作为控制部分的核心部件。
它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。
单片机芯片
单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!
由于单片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言,它是除了二进制机器码以上最低级的语言了,既然这么低级为什么还要用呢?很多高级的语言已经达到了可视化编程的水平为什么不用呢?原因很简单,就是单片机没有家用计算机那样的CPU,也没有像硬盘那样的海量存储设备。一个可视化高级语言编写的小程序里面即使只有一个按钮,也会达到几十K的尺寸!对于家用PC的硬盘来讲没什么,可是对于单片机来讲是不能接受的。 单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用。一样的道理,如果把巨型计算机上的操作系统和应用软件拿到家用PC上来运行,家用PC的也是承受不了的。
可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称PC
机。它由主机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。因为它体积小,通常都藏在被控机械的“肚子”里。它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。
单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程,所谓指令就是把要求单片机执行的各种操作用的命令的形式写下来,这是在设计人员赋予它的指令系统所决定的,一条指令对应着一种基本操作;单片机所能执行的全部指令,就是该单片机的指令系统,不同种类的单片机,其指令系统亦不同。为使单片机能自动完成某一特定任务,必须把要解决的问题编成一系列指令(这些指令必须是选定单片机能识别和执行的指令),这一系列指令的集合就成为程序,程序需要预先存放在具有存储功能的部件——存储器中。存储器由许多存储单元(最小的存储单位)组成,就像大楼房有许多房间组成一样,指令就存放在这些单元里,单元里的指令取出并执行就像大楼房的每个房间的被分配到了唯一一个房间号一样,每一个存储单元也必须被分配到唯一的地址号,该地址号称为存储单元的地址,这样只要知道了存储单元的地址,就可以找到这个存储单元,其中存储的指令就可以被取出,然后再被执行。 程序通常是顺序执行的,所以程序中的指令也是一条条顺序存放的,单片机在执行程序时要能把这些指令一条条取出并加以执行,必须有一个部件能追踪指令所在的地址,这一部件就是程序计数器PC(包含在CPU中),在开始执行程序时,给PC赋以程序中第一条指令所在的地址,然后取得每一条要执行的命令,PC在中的内容就会自动增加,增加量由本条指令长度决定,可能是1、2或3,以指向下一条指令的起始地址,保证指令顺序执行。
2. 了解单片机开发器及使用方法
应用PROG-100系列单片机开发器的功能板可以组合成多种单片机硬件系统,配合相应的用户程序,既可实现基于单片机的控制、计时和测量等应用产品的开发、制作。使用者只要认真的按说明书进行学习和实践,就可以快速掌握单片机的应用和开发技术
3. 通过设计单片机计时器,使我们了解智能仪器的人机交互界面
题目一: 基于单片机的流水灯控制器
用单片机制作32路流水灯控制器,依次点亮彩灯0.1秒钟。
1. 流水灯控制器硬件电路
单片机32路流水灯控制器电路原理图
单片机:采用89C51;12MHz的系统时钟;上电自动复位; P1,P2,P3,P4口32条I /O线用于控制流水灯; 开关晶体管T:采用8050;
流水灯L:采用低压(24V)彩色灯泡或高亮度LED;
2. 单片机的软件资源规划
R001为彩灯点亮定时器; R002为P2口输出储存器; R003为P1口输出储存器; R004为P0口输出储存器; R005为P3口输出储存器;
3.控制程序流程图
4.控制程序清单
根据流程图,采用C—BASIC语言编写的控制程序如下: 序号 标号 程 序 注 释 [0001] INT0=LJ, (无设定) [0002] INT1=LJ, (无设定) [0003] TINT1=LJ, (无设定) [0004] TINT2=LJ, (无设定) [0005] SINT=LJ, (无设定) [0006] TIME=0 (设定定时时钟为0.05秒) [0007] AR=000 (内存全部清0) [0008] C=1 (进位标志为1) [0009] P0=000 (P0口全部置0,使彩灯关闭) [0010] P1=000 (P1口全部置0,使彩灯关闭) [0011] P2=000 (P2口全部置0, 使彩灯关闭) [0012] P3=000 (P3口全部置0, 使彩灯关闭) [0013] R001=000 (R001清0) [0014] R001=ON (定时器R001被激活) [0015] R002=000 (R002全部置0)
[0016] R003=000 (R003全部置0) [0017] R004=000 (R004全部置0) [0018] R005=000 (R005全部置0) [0019] A0 R002 RRC (R002连进位标志右环移位) [0020] P0=R002 (R002内容给P0口输出) [0021] P2=R002 (R002内容给P2口输出) [0022] R003 RRC (R003连进位标志右环移位) [0023] P3=R003 (R003内容给P3口输出) [0024] R004 RLC (R004连进位标志左环移位) [0025] P1=R004 (R004内容给P1口输出) [0026] R0000=C (保存C值) [0027] LC,T1 (调用延时0.1秒子程序) [0028] C=R0000 (C值反还) [0029] LJ,A0 (跳回第19条) [0030] T1 R001=000 (R001清0) [0031] TT R001=002,B (如果延时到0.1秒就跳到第34条) [0032] LJ,TT (如果延时不到0.1秒就跳到第32条) [0033] B RET (调用返回) [0034] END (结束)
注释:红色部分为修改的部分
程序说明:
第 1 条 ~ 第18条: 初始化; 第19条 ~ 第30条: 主程序;
第31条 ~ 第34条: 延时0.1秒子程序; 第35条: 结束。
5.结果
将编译、调试好的程序传送到89C51单片机芯片,插到PROG—102 仿真板单片机插座中,通电运行。可进行32路流水灯控制仿真和模拟演示:与P1,P2,P3,P4口32条I / O线连接的LED发光二极管,同时由P0和P2口的07~00,而下面一排则是由单灯从P1口的00~07,再从P3口的07~00,使彩灯亮0.1秒钟。
6.学习实践中的问题
对于PROG—102的P口排列顺序很难做到同时控制,所以我们所做的设计
是在P0口和P2口的灯同时从中间向两侧分散开来,而下面一侧的灯则顺序和上面的顺序不一样,所以我们组只好用单灯来进行控制,由P1口的00~07,然后再由P3口的07~00这样的流水灯顺序。问题:无法做到P1和P3口的灯同时向中间流动。
题目二: 基于单片机的电子即计时器
用单片机制作电子计时器:可显示累计时间 时、分、秒,最长计时为100小时。
电子计时器硬件电路及说明
12MHz系统时钟;上电自动复位;
P10~P14输出BCD、Dp信号(连接五位LED板OUT1插座) 译码:采用74LS247
显示:采用七段LED数码管(共阳) 驱动:采用9013晶体管
2. 单片机的软件资源规划
R010、R011为秒计数器; R012、R013为分计数器; R014、R015为时计数器; R001为定时器; R002为1S定时器; P35 控制计时开始; P36 控制计时器停止;
3.控制程序流程图
4.控制程序清单
[0001] INT0=LJ, (无设定) [0002] INT1=LJ, (无设定) [0003] TINT1=LJ, (无设定) [0004] TINT2=LJ, (无设定) [0005] [0006] [0007] [0008] A [0009] [0010] [0011] [0012] S [0013] [0014] [0015] [0016] [0017] S1 [0018] [0019] [0020] [0021] [0022] [0023] M [0024] [0025] [0026] [0027] [0028] [0029] M1 [0030] [0031] [0032] [0033] [0034] [0035] H [0036] H1 [0037] [0038] [0039] SINT=LJ, R001=000 R001=ON AR=000 TIME=3 R002=000 LC,L R010+001 R002=000 LC,L R010=009,S1 LJ,S R011+001 R010=000 R011=006,M R002=000 LC,L LJ,S R012+001 R011=000 R012=010,M1 R002=000 LC,L LJ,S R013=001 R012=000 R002=000 LC,L LJ,S R015>001,H2 R014+001 R013=000 R014=010,HH R002=000
(调用显示程序L) (R010加上1) (R002清零) (调用L) (R010=009S时转至S1) (否则转至S) (R010加1) (R010清零) (R001=6时转至M) (转到S) (R012加上1,分个位) (R011清零) (R012=10时转至M1) (转至L) (R013加上1,分十位) (R012清0) (R013=6时转至H) (调用L) (转至S) (R015>1S时转至H2,时>10时转) (R014+1,时个位) (R013清零) (R014=10时转至HH) (无设定)(定时器清零)(激活定时器)(内存全部清零) R013=006,H [0040] LC,L [0041] LJ,S (转至S) [0042] HH R015+001 (R015加上1,时十位) [0043] R014=000 (R014清零) [0044] R002=000 [0045] [0046] [0047] H2 [0048] [0049] [0050] [0051] [0052] [0053] L [0054] [0055] [0056] [0057] [0058] [0059] [0060] [0061] [0062] [0063] [0064] [0065] [0066] [0067] [0068] [0069] [0070] [0071] [0072] [0073] [0074] [0075] [0076] [0077] [0078] [0079] [0080] [0081] [0082] L1 [0083] 1MS LC,L LJ,S R014+001 R013=000 R014=004,A R002=000 LC,L LJ,S P1=R010 P34=1 LC,1MS P34=0 P1=R011 P14=1 P33=1 LC,1MS P1=R012 P32=1 LC,1MS P32=0 P1=R013 P14=0 P31=1 LC,1MS P31=0 P30=1 LC,1MS P30=0 P1=R015 P35=1 LC,1MS P35=0 R002+001 R002=223,L1 RET R001=000 (R014加上1,时十位=2,时个位) (R013清零) (R014=4时转至A时=24转) (将R010内容给P1口输出) (P34显示秒个位) (调用一毫秒延时程序) (关闭P34) (将R011中的内容传给P1口) (点亮小数点) (P33显示,秒十位) (调用一毫秒延时程序) (关闭P33) (将R012中的内容传给P1口) (P32显示,分个位) (调用一毫秒延时程序) (关闭P32) (将R013中的内容传给P1口) (关闭小数点) (分十位) (时个位) (时个位) (R002加上1) (R002=223时转至L1清0) (转至L) (返回) (定时器清零)
P33=0 P1=R014 LJ,L [0084] TT R001=0001,B [0085] LJ,TT [0086] B RET [0087] END (定时一毫秒时转至B)
(不到一毫秒转至TT) (返回) ( 结束)
6.实践中的问题
我们的编程是基于计时器而生成的,计时器是:上电后,数码管会开始计时,
从毫秒,秒,分,到小时都会有显示。
我们想要达到的效果是:上电后,显示为00.00.00.00,按下某一按键后,开始计时,当达到一定时间后,再按下某一按键,计时停止,数字停留在停止的时间上。
但是有意思的是,我们在编程调试的过程中发现,再一次无意间的编程中,没有按键时,数码管全不亮,当按下按键时,按键相应的灯亮了,数码管也开始计时,按多久,计时多久。当放松按键后,数码管又全部都灭了,自然都停止计时。
在编程中,我们一直在寻找如何将按键加进编程中,学长也对此进行了帮助,但是我们对此都感到很困惑,也试了很多种方法,但是都很难奏效。没有学过计算机原理,对于这方面我们基础都很薄弱,所以在这方面我们还是很欠缺。但是我们还是一直在改进学习中„„
收获、体会
因篇幅问题不能全部显示,请点此查看更多更全内容