可编程作息时间控制器设计与制作汇编Word文档下载推荐.docx
- 文档编号:22863170
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:23
- 大小:254.32KB
可编程作息时间控制器设计与制作汇编Word文档下载推荐.docx
《可编程作息时间控制器设计与制作汇编Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《可编程作息时间控制器设计与制作汇编Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。
1.2、时间运行系统功能实现
时间运行与调节利用可编程的计数器/定时器8255芯片的可编程使时钟频率经过在8253的处理而产生符合要求的脉冲送入8255,进而执行计时子程序使得改变时间参数而计时,进行时间计算,并用实时检测程序将时间参数用数码管显示电路显示出小时与分钟以及秒钟数。
与此同时也进行与报时时间段程序的不断调用,使得在规定时刻进行报时。
可选择5253通道0与通道1实现60秒定时,通道1输出out1接8255的输出端口,完成上述连接后,编程实现小时,分钟的变化的子程序,以及对8253,8255进行初始化编程,计时程序实现时间运行(每次执行中断服务程序时,使得MINUTE参数+1,当到达59时,重新返回到零,并使得hour参数+1,)
1.3报时时间设置及调时功能实现
1)每次程序运行前,彻底清除以前的报时时间设置值,恢复系统默认报时时间值。
2)程序运行后,用户可一次性设定报时时间值(一旦有设定操作,则原有的默认报时时间值全部清零)。
此为最新值,报时以新时间为准。
报时时间设置结束以后要进行一次校时设置。
3)设定完所有报时时间值后,可通过按“D”(display)显示已经设定好的完整的报时时间值,要求每间隔5秒钟依次显示报时时间值。
用户可通过此键来查看所有的报时时间值,以避免有错误的报时时间值存在而产生错误的响应。
1.4时分显示系统
时分显示系统只显示小时和分钟,每当将内存中的时分参数通过I/O端口传送给LED显示电路,这样即可以实现(具体实现有待进一步完善)。
数码管显示电路的显示具有存储功能,只要将其输入端口的数值改变就可以实现变化数字的显示了,这可以在计数器发出MINUTE加1脉冲时在程序中实现。
设定完所有报时时间值后,可通过按“D”(display)显示已经设定好的完整的报时时间值,要求每间隔5秒钟依次显示报时时间值。
多路转换LED显示器驱动电路及数码管显示电路所示本系统采用七段LED显示器显示时分参数。
七段LED显示器由七个发光段构成,每段均是一个LED二极管,可显示16进制的0~9与ABCDE。
此外数码管显示电路中还有一个小数点DP位段,用来分隔小时与分钟。
8255的A口与C口都作为输出口,CPU输出的时间参数,经A口送到74LS240的8个输入端,且并行地接到4个LED显示的各输入端(也称为段总线),同名端联在一起。
每一位共阳极LED的阳极电路中都串接一个晶体管Q,晶体管起开关作用,并由8255A来控制其导通,是相应的LED显示器的阳极与+5V电压接通,LED显示器才有可能点亮;
基极的高电平输入使晶体管截止,+5V断开,LED显示器不能点亮。
通过编程,可以使各个晶体管轮流导通,让7个LED轮流点亮。
但任何时候只让一个晶体管导通,即只有一个LED点亮,这样可使功耗显著降低。
2、总体设计
2.1、业务流程图
以淮北师范大学夏季作息时间作为参考系统默认报时时间值。
如下所示:
上午:
08:
00-------08:
50第一节课8:
00上课报时8:
50下课报时
55-------09:
45第二节课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:
25-------21:
15第十节课20:
25上课报时21:
15下课报时
2.2、所需芯片介绍及芯片原理图及控制字
2.2.18255A的结构和功能
图2-18255A的结构
(1)、数据端口A、B、C
8255有3个8位的I/O端口,设计人员可以用软件使它们分别作为输入端口或输出端口。
端口A:
对应了1个8位的数据输入锁存器和1个8位的数据输出锁存/缓冲器。
所以口A作为输入或输出时,数据均受到锁存。
(PA0~PA7)
端口B:
对应了1个8位的数据输入缓冲器和1个8位的数据输出锁存器/缓冲器。
所以口B作为输入端口时,不会对数据进行锁存,而作为输出端口时,数据会受到锁存。
(PB0~PB7)
端口C:
与口B基本一致,对应了一个8位数据输入缓冲器和1个8位的数据输出锁存/缓冲器。
所以口C作为输入端口时,对数据不作锁存,而作为输出端口时,对数据进行锁存(PC0~PC7)
(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)、数据总线缓冲器
8255的数据总线缓冲器是双向三态的8位数据缓冲器,通过它直接与系统的数据总线(D0~D7)相连。
输入/输出数据、CPU发给8255的控制字都是通过这个缓冲器传送的。
(4)、读/写控制逻辑电路
读/写控制逻辑电路负责管理8255的数据传输过程。
它接收CS及来自系统地址总线A1,A0(8086系统中为A2,A1)和控制总线的输入信号RESET,WR,RD,将这些信号组合后,得到对A组控制部件和B组控制部件的控制命令,并将命令发送给这两个部件,以完成对数据、状态信息和控制信息的传输。
8255A的结构和功能
说明:
(1)A1A0端口口线
00端口APA7~PA0
01端口BPB7~PB0
10端口CPC7~PC0
11对控制端口写控制字
(2)端口C又可以分成“上C口”和“下C口”2个部分,可以用作A口和B口的控制信号线,所以把A口+上C口称为A组,B口+下C口称为B组。
(3)A口:
输入有锁存器,输出有锁存器和缓冲器,B和C口:
输入有缓冲器,输出有锁存器和缓冲器。
图2-28255A芯片
2.2.2、8255A的控制字
8255A可通过指令在控制端口中设置控制字来决定它的工作。
其控制字可分为两类(个),都写入控制字寄存器(A1A0=11)芯片各端口的工作方式控制字
端口C按位置1/置0控制字
(1)、方式选择控制字
8255A具有3种基本的工作方式:
Ø
方式0:
基本输入输出方式(A、B、C口)
方式1:
选通输入输出方式(A、B口)
方式2:
双向总线I/O方式(仅A口)
图2-38255A选择方式
(2)、端口C按位置1/置0控制字
它可使端口C中的任何一位进行置位
(1)或复位(0)。
图2-4端口C的控制
2.2.3、8255A的工作方式
(1)、工作方式0:
基本的输入/输出方式。
A口、B口、上C口、下C口都可以独立设置作为输入或输出使用。
适合用于无条件或查询式传送。
方式0的输入不能锁存。
(2)、工作方式1:
应答式输入或输出方式。
A口、B口可以分别作为数据口工作在方式1。
需要使用C口中特定的引脚作为选通和应答使用。
C口中其余的引脚仍可工作在方式0,定义为输入或输出。
适合用于中断式传送和程序查询方式I/O传送。
C口中特定的引脚作为选通和应答使用时,视A口(或B口)为输入还是输出的不同,有两个引脚的含义有所不同。
A口选通输入方式过程
当外设数据准备好以后,发出一个负脉冲选通信号STBA,使A口打开输入锁存器接收数据。
A口接收到数据以后,发出IBFA
数据写完后,STBA撤销即变为无效
STBA和IBFA都变为高电平以后,如果INTEA允许,则8255A发出中断请求信号,希望CPU接收数据。
CPU读数据的RD信号的下降沿使INTRA和IBFA恢复低电平。
PS:
只可以通过对PC4的置位和复位来设置INTEA。
同样B口作为选通输入接口时道理是一样的,只不过是这些信号使用的是C口的PC2,PC1和PC0。
2.3、可编程计数器/定时器8253介绍
8253的工作原理
计数器/定时器的功能:
对外部事件发生次数进行计数;
产生计算机系统需要的定时信号。
计数和计时本质上是相同的,它们都是对一个输入脉冲进行计数。
计数器的输入信号可以是随机信号,定时器的输入信号要求具有固定周期。
如果输入脉冲的频率一定,那么记录脉冲的个数与所需的时间是一一对应的关系。
例如输入脉冲频率为2MHz,那么计数2106计时1秒。
因此,使用同一个芯片,既可以用来计数,又可以用来定时。
计数器/定时器8253可以通过编程,从6种工作方式中选择一种工作方式。
一个计数器/定时器的组成:
控制字寄存器——决定工作模式(8位)
状态寄存器——反映工作状态
初值寄存器——计数的初值(16位)
计数输出寄存器——CPU从中读当前计数值(16位)。
计数器——执行计数操作,CPU不能访问。
(16位)
图2-58255A的工作原理
2.3.1、8253A的内部结构和引脚信号
图2-68253A的内部结构和引脚信号
8253的三个计数通道在结构上和功能上完全一样,每个通道均有两个输入引脚CLK和GATE,一个输出信号引脚OUT。
2.3.2、8253的初始化步骤和门控信号的功能
(1)、初始化步骤:
a、写入控制字;
b、按控制字要求写入计数初值。
计数初值N=fCLK/fOUT=TOUT/TCLK
(2)、门控信号控制功能:
门控信号GATE的控制功能如教材P310表8-2所示,由表可知:
方式0,4时:
门控信号为电平触发
方式1,5时:
门控信号为上升沿触发
方式2,3时:
门控信号为电平或上升沿触发
(3)、8253的工作方式
工作方式决定以下内容:
1)门控信号的影响
高电平允许:
当GATE=0,即使出现CLK,也不计数——方式0,2,3,4
上升沿允许(上升沿触发)——方式1,5,2,3
2)OUT信号的状态
写入控制字后,OUT的状态
计数过程中,OUT的状态
计数终了,OUT的状态
3)计数操作可否重复
不可重复——模式0,4
自动重复——模式2,3
条件重复——模式1,5
a、方式0:
计数结束中断方式
特点:
计数器只计数一遍,不循环
计数过程中,可由门控信号控制暂停计数
在计数过程中可改变计数值。
写入新值后,计数器按新值重新开始计数
b、方式1:
可编程单稳态输出方式
若计数值为N,则输出脉冲宽度为N*CLK
计数到0,可由GATE上升沿再次触发,输出一个脉冲,不需重新赋值
若计数过程中,门控信号再次触发,计数器在触发信号的下一个CLK重新开始计数
若计数过程中,CPU改变计数值,但计数过程不受影响,再次触发后,按新值重新计数
c、方式2:
比率发生器(分频器)
不需重新赋值,计数器能连续工作
计数过程中,若GATE变低,计数器暂停工作,GATE变高后,计数器重新取出初值,开始计数
d、方式3:
方波发生器
同方式2的三个特点,不同的是:
初值为偶数时,每来一个脉冲,计数值减2
初值为奇数时,第一个CLK使计数器减“1”,其后每一个CLK使计数器减“2”,到“0”后,改变输出状态,同时重新装入计数值。
接着第一个CLK使计数值减“3”,以后每个CLK使计数值减“2”,直到计数值为“0”,重复上述过程
e、方式4:
软件触发选通
N值写入后,如Gate为高,则下一个CLK开始计数,相当于软件启动
写一次初值,只计一次;
计到0时,产生低电平维持一个周期
GATE=“1”,允许计数,GATE=“0”,禁止计数,因此,要做到软件启动,必须使GATE=“1”
计数过程中改变计数值,按新值重新计数到0
f、方式5:
硬件触发选通
特点:
N值写入后,计数器并不计数,当GATE的上升沿出现时,取出初值开始计数
计数过程中改变计数值,若没有GATE的触发,不影响计数过程,当计数到“0”后,若有GATE触发,则按新的计数值计数
2.4、0832D/A转换器芯片介绍
图2-70832D/A转换器
工作方式:
直通式、单缓冲式、双缓冲式
(1)直通式:
ILE接高电平,
CS、WR1、WR2、XFER接低电平
即:
使两个内部寄存器都处于直通状态。
模拟输出始终跟随输入变化。
不能直接与数据总线连接,需外加并行接口(如74LS373、8255等)。
因此,很少用。
(2)单缓冲式:
将两个寄存器中的一个接成直通方式。
CPU只需一次写入即开始转换,控制比较简单。
(3)双缓冲式:
转换要有两个步骤:
将数据写入输入寄存器,CS=0、WR1=0、ILE=1
将输入寄存器的内容写入DAC寄存器,WR2=0、XFER=0
优点:
a)数据接收与D/A转换可异步进行;
b)可实现多个DAC同步转换输出
——分时写入、同步转换。
图2-8DAC0832
MOVDX,320H;
指向输入寄存器
MOVAL,DATA;
输入被转换的数据
OUTDX,AL;
数据打入输入寄存器
INCDX;
指向DAC寄存器
选通DAC寄存器,相当于启动D/A转换器
图2-93路DAC系统图
3、芯片详细设计
3.1、软件程序流程图及详解
;
可编程作息时间控制器,只要实现器件8255,8253
STACKSEGMENTSTACK
DW64DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAL,89H;
8255初始化,控制字即二进制10001001
MOVDX,203H
OUTDX,AL
L0:
MOVCX,1;
上课铃声第一次打响,黄灯亮
MOVAL,40H
MOVDX,200H
NOTAL
OUTDX,AL
0832电机数模转换
MOVDX,210H
MOVAL,0FH
CALLY
DECCX
JZL1
L1:
MOVCX,5;
定时5秒后实现下课铃声,即绿灯亮
S0:
MOVAL,00H
0832电机数模转换
MOVAL,2FH
JNZS0;
当CX不为0是跳转
L2:
MOVCX,2;
定时2秒后实现上课铃声,即黄灯亮
S1:
MOVAL,20H
MOVAL,1FH
JNZS1
JZL0;
当CX为0是跳转到L0,及循环执行
YPROC;
延时子程序,延时1秒,8253实现
PUSHAX
MOVDX,20BH
MOVAL,35H;
方式2
MOVAL,00H;
计数初值
MOVDX,208H
MOVAL,50H
MOVAL,71H;
方式0
MOVDX,209H
MOVAL,04H
KK:
;
不是高电平就继续检测
MOVDX,202H
INAL,DX
ANDAL,02H
JZKK
POPAX
RET
YENDP
CODEENDS
ENDSTART
3.2、功能说明
4、分析与测试
4.1、键盘程序测试
按图4连接好电路,调试此程序(JIANPAN.ASM),从小键盘输入一个数字,DOS界面输出显示该数字。
4.2、数码管显示程序测试
按图3相应部分连接本部分的电路图,调试程序(XIANSHI,ASM),4位七段数码管,分别显示1、2、3、4四个数字。
4.3、计时程序测试
按图6连接电路,调试程序(JISHI.ASM),DOS界面输出显示的数字以1递增。
4.4、到时程序测试
连接相应的电路,调试程序(DAOSHI.ASM),指示红灯亮。
5、课程设计结论
5.1、本设计的可行性与优点分析
在本设计的过程中,我们遇到了一些困难但通过努力终于比较完整的完成了此次设计的任务:
在键盘扫描程序中,其中最为重要的是当有键按下,如何确定是哪一个键被按下,采用逐行扫描法能够比较容易实现而且比较容易被人所理解;
在按键显示程序中,其中最重要的是要4位七段数码管轮流显示不同的按键值,利用人的眼睛就因视觉惰性而无法察觉显示的变化,当轮循显示周期的数目大于每秒50次时,从而感觉到现实的事多位静止的7段数。
在计时程序设计中,最重要的是如何判断定时时间到,用设定时间与系统时间比对,直到相同为止即定时时间到。
5.2、设计中的不足分析与改进
本设计也存在缺陷:
首先,这个设计不够精确,定时只到分,而忽略了秒。
因此可改进为时分秒定时的更精确的设计:
改用六位七段数码管,用8255A的PC口连接键盘的行列,PB口输出到七段数码管上,PA口实现六位七段数码管的位选。
键盘的部分查找按键号及其相应LED显示码的程序改为如下所示:
通过逐行逐列扫描,键号存入BL中,行号加1,BL加4,列号加1,BL加1,最终确定按下键的号,再在LED显示码表中找到相应的显示码,输出显示。
6、课程设计体会
6.1.键盘程序测试
6.2、数码管显示程序测试
6.3、计时程序测试
6.4、到时程序测试
参考文献:
[1]公茂法等.单片机人机接口实例集.北京:
北京航空航天大学出版社1998.2.
[2]胡伟.单片机C程序设计及应用实例.北京:
人民邮电出版社2003.7.
[3]徐爱卿编.单片微型计算机应用和开发系统[M].北京:
北京航空航天大学出版社,1998.
[4]戴梅芳编.微型计算机技术及应用[M].北京:
清华大学出版社,1996.
[5]潘新民编.单片微型计算机实用系统设计[M].北京:
人民邮电出版社,2000.
[6]何立民编.MCS-51系列单片机应用系统设计系统配置与接口技术.[M]北京:
北京航空航天大学出版社,1996.
致谢:
在这次课程设计的撰写过程中,我得到了许多人的帮助。
首先我要感谢我的老师郭桂芳老师在课程设
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 可编程 作息 时间 控制器 设计 制作 汇编