《可编程作息时间控制器设计与制作共20页.doc》由会员分享,可在线阅读,更多相关《可编程作息时间控制器设计与制作共20页.doc(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流可编程作息时间控制器设计与制作【精品文档】第 20 页淮北师范大学 硬件课程设计 可编程作息时间系统目 录引言31、概述 3 1.1、概要设计报告3 1.2、时间运行系统功能实现3 1.3、报时时间设置及调时功能实现3 1.4、时分显示系统42、总体设计 4 2.1、业务流程图4 2.2、所需芯片介绍及芯片原理图及控制字5 2.2.1、8255A的结构和功能5 2.2.2、8255A的控制字7 2.2.3、8255A的工作方式8 2.3、可编程计数器/定时器8253介绍9 2.3.1、8253的内部结构和引脚信号 9 2.3.2、8253的初始化步骤和门
2、控信号的功能10 2.4、0832D/A转换器芯片介绍133、芯片详细设计 15 3.1、软件程序流程图及详解15 3.2、功能说明184、 分析与测试185、课程设计结论 18 5.1、本设计的可行性与优点分析18 5.2、设计中的不足分析与改进196、 课程设计体会19 参考文献19 致谢20引言 随着计算机技术的发展和 在控制系统中的广泛应用,以及设备向小型化,智能化发展,作为高新技术之一的单片机以其体积小,功能强,价格低廉,使用灵活等优势,显示出很强的生命力。其功耗低,超高型,成本低,功能完整,在国内越来越受到用户的重视和广泛使用1、概述 1.1、概要设计报告作息时间控制系统主要有四大
3、子系统功能实现:1.时间运行系统 2.报时时间值设置及调时系统 3.时分显示系统 4.报时响应系统。时间运行系统让时间一直运行着;报时时间值设置及调时系统使得用户可以随时设置时间;时分显示系统让用户可以清楚知晓当前系统时间,报时响应系统完成当当前时间与报时时间值一致时进行响应(如LED闪烁)。四大子系统的协调有序的运行,保证了作息时间控制系统具有报时,调时,显时功能,还达到了与用户可交互的目的.1.2、时间运行系统功能实现时间运行与调节利用可编程的计数器/定时器8255芯片的可编程使时钟频率经过在8253的处理而产生符合要求的脉冲送入8255,进而执行计时子程序使得改变时间参数而计时,进行时间
4、计算,并用实时检测程序将时间参数用数码管显示电路显示出小时与分钟以及秒钟数。与此同时也进行与报时时间段程序的不断调用,使得在规定时刻进行报时。可选择5253通道0与通道1实现60秒定时,通道1输出out1接8255的输出端口,完成上述连接后,编程实现小时,分钟的变化的子程序,以及对8253,8255进行初始化编程,计时程序实现时间运行(每次执行中断服务程序时,使得MINUTE参数+1,当到达59时,重新返回到零,并使得hour参数+1,)1.3报时时间设置及调时功能实现 1)每次程序运行前,彻底清除以前的报时时间设置值,恢复系统默认报时时间值。 2)程序运行后,用户可一次性设定报时时间值(一旦
5、有设定操作,则原有的默认报时时间值全部清零)。此为最新值,报时以新时间为准。报时时间设置结束以后要进行一次校时设置。 3) 设定完所有报时时间值后,可通过按“D”(display)显示已经设定好的完整的报时时间值,要求每间隔5秒钟依次显示报时时间值。用户可通过此键来查看所有的报时时间值,以避免有错误的报时时间值存在而产生错误的响应。1.4时分显示系统时分显示系统只显示小时和分钟,每当将内存中的时分参数通过I/O端口传送给LED显示电路,这样即可以实现(具体实现有待进一步完善)。数码管显示电路的显示具有存储功能,只要将其输入端口的数值改变就可以实现变化数字的显示了,这可以在计数器发出MINUTE
6、加1脉冲时在程序中实现。设定完所有报时时间值后,可通过按“D”(display)显示已经设定好的完整的报时时间值,要求每间隔5秒钟依次显示报时时间值。用户可通过此键来查看所有的报时时间值,以避免有错误的报时时间值存在而产生错误的响应。 多路转换LED显示器驱动电路及数码管显示电路所示本系统采用七段LED显示器显示时分参数。七段LED显示器由七个发光段构成,每段均是一个LED二极管,可显示16进制的09与ABCDE。此外数码管显示电路中还有一个小数点DP位段,用来分隔小时与分钟。8255的A口与C口都作为输出口,CPU输出的时间参数,经A口送到74LS240的8个输入端,且并行地接到4个LED显
7、示的各输入端(也称为段总线),同名端联在一起。每一位共阳极LED的阳极电路中都串接一个晶体管Q,晶体管起开关作用,并由8255A来控制其导通,是相应的LED显示器的阳极与+5V电压接通,LED显示器才有可能点亮;基极的高电平输入使晶体管截止,+5V断开,LED显示器不能点亮。通过编程,可以使各个晶体管轮流导通,让7个LED轮流点亮。但任何时候只让一个晶体管导通,即只有一个LED点亮,这样可使功耗显著降低。2、总体设计2.1、业务流程图以淮北师范大学夏季作息时间作为参考系统默认报时时间值。如下所示:上午: 08:00-08:50 第一节课 8:00上课报时 8:50 下课报时08:55-09:4
8、5 第二节课 8:55上课报时 9:45 下课报时 10:15-11:05 第三节课 10:15上课报时 11:05 下课报时11:10-12:00 第四节课 11:10上课报时 12:00下课报时下午:14:30-15:20 第五节课 14:30上课报时 15:20下课报时15:25-16:15 第六节课 15:25 上课报时 16:15下课报时16:45-18:35 第七节课 16:45上课报时 18:35下课报时18:40-18:30 第八节课 18:40上课报时 18:30下课报时晚上:19:30-20:20 第九节课 19:30上课报时 20:20下课报时20:25-21:15 第十
9、节课 20:25上课报时 21:15 下课报时 2. 2、所需芯片介绍及芯片原理图及控制字 2.2.1 8255A的结构和功能图2-1 8255A的结构(1)、 数据端口A、B、C8255有3个8位的I/O端口,设计人员可以用软件使它们分别作为输入端口或输出端口。端口A:对应了1个8位的数据输入锁存器和1个8位的数据输出锁存/缓冲器。所以口A作为输入或输出时,数据均受到锁存。(PA0PA7)端口B:对应了1个8位的数据输入缓冲器和1个8位的数据输出锁存器/缓冲器。所以口B作为输入端口时,不会对数据进行锁存,而作为输出端口时,数据会受到锁存。(PB0PB7)端口C:与口B基本一致,对应了一个8位
10、数据输入缓冲器和1个8位的数据输出锁存/缓冲器。所以口C作为输入端口时,对数据不作锁存,而作为输出端口时,对数据进行锁存(PC0PC7)(2)、A组和B组控制逻辑8255在使用时,常用端口A与端口C的高4位组成一个带控制信号的端口,称为A组。由A组控制逻辑管理;用端口B与端口C的低4位也可以组成一个带控制信号的端口,称为B组。由B组控制逻辑管理。其中,A组由端口A作为与外设交换数据的输入/输出接口,C口的高4位作为外设连接的控制信号线和状态信号线,以配合A口工作。同理,B组由端口B作为与外设交换数据的输入/输出接口,C口的低4位作为外设连接的控制信号线和状态信号线,以配合B口工作。(3)、数据
11、总线缓冲器8255的数据总线缓冲器是双向三态的8位数据缓冲器,通过它直接与系统的数据总线(D0D7)相连。输入/输出数据、CPU发给8255的控制字都是通过这个缓冲器传送的。(4)、读/写控制逻辑电路读/写控制逻辑电路负责管理8255的数据传输过程。它接收CS及来自系统地址总线A1,A0(8086系统中为A2,A1)和控制总线的输入信号RESET,WR,RD,将这些信号组合后,得到对A组控制部件和B组控制部件的控制命令,并将命令发送给这两个部件,以完成对数据、状态信息和控制信息的传输。8255A的结构和功能说明:(1)A1A0 端口口线 00 端口A PA7PA0 01 端口B PB7PB0
12、10 端口C PC7PC0 11 对控制端口写控制字(2)端口C又可以分成“上C口”和“下C口”2个部分,可以用作A口和B口的控制信号线,所以把A口+上C口称为A组,B口+下C口称为B组。(3)A口:输入有锁存器,输出有锁存器和缓冲器, B和C口:输入有缓冲器,输出有锁存器和缓冲器。RESETWRRDCSGNDA1A093231302928272625140239338437536635734833242322211718192013141516101112PB7PB3PB0PB2PC0PC3PC7PC4PA0PA3D0D7PA4PA78255AVCC图2-2 8255A芯片2.2.2、825
13、5A的控制字8255A可通过指令在控制端口中设置控制字来决定它的工作。其控制字可分为两类(个),都写入控制字寄存器(A1A0=11) 芯片各端口的工作方式控制字端口C按位置1/置0控制字(1)、方式选择控制字8255A具有3种基本的工作方式: 方式0:基本输入输出方式( A、B、C口) 方式1:选通输入输出方式( A、B口) 方式2:双向总线I/O方式(仅A口)D7=1图2-3 8255A选择方式(2)、 端口C按位置1/置0控制字它可使端口C中的任何一位进行置位(1)或复位(0)。D7=0图2-4 端口C的控制2.2.3 、8255A的工作方式(1)、 工作方式0:基本的输入/输出方式。A口
14、、B口、上C口、下C口都可以独立设置作为输入或输出使用。 适合用于无条件或查询式传送。方式0的输入不能锁存。(2)、 工作方式1:应答式输入或输出方式。A口、B口可以分别作为数据口工作在方式1。需要使用C口中特定的引脚作为选通和应答使用。 C口中其余的引脚仍可工作在方式0,定义为输入或输出。适合用于中断式传送和程序查询方式I/O传送。C口中特定的引脚作为选通和应答使用时,视A口(或B口)为输入还是输出的不同,有两个引脚的含义有所不同。A口选通输入方式过程 当外设数据准备好以后,发出一个负脉冲选通信号STBA ,使A口打开输入锁存器接收数据。 A口接收到数据以后,发出IBFA 数据写完后, ST
15、BA撤销即变为无效 STBA和IBFA都变为高电平以后,如果INTEA允许,则8255A发出中断请求信号,希望CPU接收数据。CPU读数据的RD信号的下降沿使INTRA 和IBFA恢复低电平。PS: 只可以通过对PC4的置位和复位来设置INTEA。同样B口作为选通输入接口时道理是一样的,只不过是这些信号使用的是C口的PC2,PC1和PC0。 2.3、可编程计数器/定时器8253介绍8253的工作原理计数器/定时器的功能: 对外部事件发生次数进行计数; 产生计算机系统需要的定时信号。计数和计时本质上是相同的,它们都是对一个输入脉冲进行计数。计数器的输入信号可以是随机信号,定时器的输入信号要求具有
16、固定周期。如果输入脉冲的频率一定,那么记录脉冲的个数与所需的时间是一一对应的关系。例如输入脉冲频率为2MHz,那么计数2106 计时1秒。因此,使用同一个芯片,既可以用来计数,又可以用来定时。计数器/定时器8253可以通过编程,从6种工作方式中选择一种工作方式。一个计数器/定时器的组成:控制字寄存器决定工作模式(8位)状态寄存器反映工作状态初值寄存器计数的初值(16位)计数输出寄存器 CPU从中读当前计数值(16位)。计数器执行计数操作,CPU不能访问。(16位)8253的内部结构图图2-5 8255A的工作原理2.3.1、8253A的内部结构和引脚信号12345678910111224232
17、2212019181716151413D7D6D5D4D3D2D1D0CLK0OUT0GATE0GNDCLK1OUT1GATE1CLK2OUT2GATE2A1A0VCCWRRDCS82538253管脚图 图2-6 8253A的内部结构和引脚信号8253的三个计数通道在结构上和功能上完全一样,每个通道均有两个输入引脚CLK和GATE,一个输出信号 引脚OUT。2.3.2 、8253的初始化步骤和门控信号的功能(1)、 初始化步骤: a、 写入控制字; b、 按控制字要求写入计数初值。 计数初值N=fCLK/fOUT =TOUT/TCLK(2)、门控信号控制功能:门控信号GATE的控制功能如教材P
18、310表8-2所示,由表可知:方式0,4时:门控信号为电平触发 方式1,5时:门控信号为上升沿触发 方式2,3时:门控信号为电平或上升沿触发(3)、8253的工作方式 工作方式决定以下内容:1)门控信号的影响 高电平允许:当GATE=0,即使出现CLK,也不计数 方式0,2,3,4 上升沿允许(上升沿触发)方式1,5,2,32) OUT信号的状态写入控制字后, OUT的状态计数过程中, OUT的状态计数终了, OUT的状态3)计数操作可否重复 不可重复模式0,4自动重复模式2,3条件重复模式1,5a、方式0:计数结束中断方式特点:计数器只计数一遍,不循环 计数过程中,可由门控信号控制暂停计数在
19、计数过程中可改变计数值。写入新值后,计数器按新值重新开始计数b、方式1:可编程单稳态输出方式特点:若计数值为N,则输出脉冲宽度为N*CLK 计数到0,可由GATE上升沿再次触发,输出一个脉冲,不需重新赋值若计数过程中,门控信号再次触发,计数器在触发信号的下一个CLK重新开始计数若计数过程中,CPU改变计数值,但计数过程不受影响,再次触发后,按新值重新计数c、方式2:比率发生器(分频器)特点:不需重新赋值,计数器能连续工作计数过程中,若GATE变低,计数器暂停工作,GATE变高后,计数器重新取出初值,开始计数d、方式3:方波发生器特点:同方式2的三个特点,不同的是:初值为偶数时,每来一个脉冲,计
20、数值减2初值为奇数时,第一个CLK使计数器减“1”,其后每一个CLK使计数器减“2”,到“0”后,改变输出状态,同时重新装入计数值。接着第一个CLK使计数值减“3”,以后每个CLK使计数值减“2”,直到计数值为“0”,重复上述过程e、方式4:软件触发选通特点:N值写入后,如Gate为高,则下一个CLK开始计数,相当于软件启动写一次初值,只计一次;计到0时,产生低电平维持一个周期GATE=“1”,允许计数,GATE=“0”,禁止计数,因此,要做到软件启动,必须使GATE=“1”计数过程中改变计数值,按新值重新计数到0f、方式5:硬件触发选通 特点:N值写入后,计数器并不计数,当GATE的上升沿出
21、现时,取出初值开始计数计数过程中改变计数值,若没有GATE的触发,不影响计数过程,当计数到“0”后,若有GATE触发,则按新的计数值计数2.4、0832D/A转换器芯片介绍0832 D/A转换器内部结构8位输入寄存器D7D0&LE1LE2ILECSWR1XFERWR2VREFIOUT2IOUT1RFBAGNDDGNDVCCoooooo8位DAC寄存器8位D/A转换器&4713161718211981211932010转换时间1s, 双缓冲输入数据启动转换图2-7 0832D/A转换器工作方式:直通式、单缓冲式、双缓冲式(1) 直通式: ILE接高电平,CS、WR1、WR2、XFER接低电平即:
22、使两个内部寄存器都处于直通状态。模拟输出始终跟随输入变化。不能直接与数据总线连接,需外加并行接口(如74LS373、8255等)。因此,很少用。(2) 单缓冲式: 将两个寄存器中的一个接成直通方式。CPU只需一次写入即开始转换,控制比较简单。(3) 双缓冲式: 转换要有两个步骤:将数据写入输入寄存器, CS=0、WR1 =0、ILE=1将输入寄存器的内容写入DAC寄存器, WR2 =0、 XFER =0优点:a) 数据接收与D/A转换可异步进行;b) 可实现多个DAC同步转换输出 分时写入、同步转换。(3) 双缓冲式:XFERWR2WR1CSDAC 0832ILEVREF+IOWD7D0320
23、H321H地址总线地址译码器图2-8 DAC 0832MOV DX, 320H ;指向输入寄存器MOV AL, DATA ;输入被转换的数据OUT DX, AL ;数据打入输入寄存器INC DX ;指向DAC寄存器OUT DX, AL ;选通DAC寄存器,相当于启动D/A转换器 XFERWR2WR1CSILE+D7D0ILE+D7D0XFERWR2WR1CSILE+D7D0地址译码80H81H82H83HWRXFERWR2WR1CS3路DAC系统图:图2-9 3路DAC系统图3、芯片详细设计 3.1、软件程序流程图及详解;可编程作息时间控制器,只要实现器件8255,8253STACK SEGM
24、ENT STACKDW 64 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODESTART:MOV AL,89H ;8255初始化,控制字即二进制10001001MOV DX,203HOUT DX,AL L0: MOV CX,1 ;上课铃声第一次打响,黄灯亮 MOV AL,40H MOV DX,200H NOT AL OUT DX,AL;0832电机数模转换 MOV DX,210H MOV AL,0FH OUT DX,AL CALL Y DEC CX JZ L1L1:MOV CX,5 ;定时5秒后实现下课铃声,即绿灯亮S0:MOV AL,00HMOV DX,2
25、00HNOT ALOUT DX,AL;0832电机数模转换 MOV DX,210H MOV AL,2FH OUT DX,ALCALL YDEC CX JNZ S0 ;当CX不为0是跳转 L2: MOV CX,2 ;定时2秒后实现上课铃声,即黄灯亮S1: MOV AL,20H MOV DX,200H NOT AL OUT DX,AL;0832电机数模转换 MOV DX,210H MOV AL,1FH OUT DX,AL CALL Y DEC CX JNZ S1 JZ L0 ;当CX为0是跳转到L0,及循环执行Y PROC ;延时子程序,延时1秒,8253实现 PUSH AX MOV DX,20B
26、H MOV AL,35H ;方式2 OUT DX,AL MOV AL,00H ;计数初值 MOV DX,208H OUT DX,AL MOV AL,50H OUT DX,AL MOV DX,20BH MOV AL,71H ;方式0 OUT DX,AL MOV DX,209H MOV AL,00H OUT DX,AL MOV AL,04H OUT DX,ALKK: ;不是高电平就继续检测 MOV DX,202H IN AL,DX AND AL,02H JZ KK POP AX RETY ENDPCODE ENDSEND START 3.2、功能说明作息时间控制系统主要有四大子系统功能实现:1.时
27、间运行系统 2.报时时间值设置及调时系统 3.时分显示系统 4.报时响应系统。时间运行系统让时间一直运行着;报时时间值设置及调时系统使得用户可以随时设置时间;时分显示系统让用户可以清楚知晓当前系统时间,报时响应系统完成当当前时间与报时时间值一致时进行响应(如LED闪烁)。四大子系统的协调有序的运行,保证了作息时间控制系统具有报时,调时,显时功能,还达到了与用户可交互的目的.4、分析与测试 4.1、键盘程序测试 按图4连接好电路,调试此程序(JIANPAN.ASM),从小键盘输入一个数字,DOS界面输出显示该数字。 4.2、数码管显示程序测试 按图3相应部分连接本部分的电路图,调试程序(XIAN
28、SHI,ASM),4位七段数码管,分别显示1、2、3、4四个数字。 4.3、计时程序测试 按图6连接电路,调试程序(JISHI.ASM),DOS界面输出显示的数字以1递增。 4.4、到时程序测试 连接相应的电路,调试程序(DAOSHI.ASM),指示红灯亮。5、课程设计结论 5.1、本设计的可行性与优点分析在本设计的过程中,我们遇到了一些困难但通过努力终于比较完整的完成了此次设计的任务:在键盘扫描程序中,其中最为重要的是当有键按下,如何确定是哪一个键被按下,采用逐行扫描法能够比较容易实现而且比较容易被人所理解;在按键显示程序中,其中最重要的是要4位七段数码管轮流显示不同的按键值,利用人的眼睛就
29、因视觉惰性而无法察觉显示的变化,当轮循显示周期的数目大于每秒50次时,从而感觉到现实的事多位静止的7段数。在计时程序设计中,最重要的是如何判断定时时间到,用设定时间与系统时间比对,直到相同为止即定时时间到。 5.2、设计中的不足分析与改进本设计也存在缺陷:首先,这个设计不够精确,定时只到分,而忽略了秒。因此可改进为时分秒定时的更精确的设计:改用六位七段数码管,用8255A的PC口连接键盘的行列,PB口输出到七段数码管上,PA口实现六位七段数码管的位选。键盘的部分查找按键号及其相应LED显示码的程序改为如下所示:通过逐行逐列扫描,键号存入BL中,行号加1,BL加4,列号加1,BL加1,最终确定按
30、下键的号,再在LED显示码表中找到相应的显示码,输出显示。6、课程设计体会 6.1键盘程序测试 按图4连接好电路,调试此程序(JIANPAN.ASM),从小键盘输入一个数字,DOS界面输出显示该数字。 6.2、数码管显示程序测试 按图3相应部分连接本部分的电路图,调试程序(XIANSHI,ASM),4位七段数码管,分别显示1、2、3、4四个数字。 6.3、计时程序测试 按图6连接电路,调试程序(JISHI.ASM),DOS界面输出显示的数字以1递增。 6.4、到时程序测试 连接相应的电路,调试程序(DAOSHI.ASM),指示红灯亮。参考文献:1公茂法等单片机人机接口实例集北京:北京航空航天大
31、学出版社 1998.2.2胡伟单片机C程序设计及应用实例北京:人民邮电出版社 2003.7.3徐爱卿编.单片微型计算机应用和开发系统M.北京:北京航空航天大学出版社,1998.4戴梅芳编.微型计算机技术及应用M.北京:清华大学出版社,1996.5潘新民编.单片微型计算机实用系统设计M.北京:人民邮电出版社,2000.6何立民编. MCS51系列单片机应用系统设计系统配置与接口技术.M北京:北京航空航天大学出版社, 1996.致谢:在这次课程设计的撰写过程中,我得到了许多人的帮助。首先我要感谢我的老师郭桂芳老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多设计上的难题,让我能把系统做得更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计上的难题。同时也感谢学院为我提供良好的做硬件设计的环境。最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学。