资源描述
计算机科学与技术学院硬件课程设计硬件课程设计报告-可编程节日彩灯系统学院:计算机科学与技术学院 专业:信息安全 班级: 设计题目:可编程节日彩灯系统 指导教师: 成员姓名: 成员姓名: 成员姓名: 实验日期:2008年7月4日 课程设计指导教师评阅书指导教师评语:成 绩: 指导教师签字: 年 月 日目 录1设计任务 41.1.问题的提出与分析41.2.小组分工52需求分析52.1. 8253A结构及其功能说明52.2. 8253A各端脚作用及连接方式72.3. 8255A结构及其功能说明82.4. 8255A各端脚作用及连接方式93概要设计93.1. 设计思想93.2. 设计原理124详细设计134.1. 硬件电路连接图144.2. 程序流程图154.3. 程序175实验体会206参考文献20可编程节日彩灯系统1.设计任务1.1.问题的提出与分析彩灯是人们日常生活中的一种装饰用品,它美观大方,尤其在节日期间,倍增节日气氛。它蕴涵着丰富的文化底蕴,被广泛地应用于各种店面的装饰。变换无穷的彩灯样式,给城市增添活力,吸引着人们的注意力,深受人民的喜爱。在日常生活中,人们还将彩灯摆放成各种图案,增添美感。随着电子技术的发展,应用系统向着小型化、快速化、大容量、重量轻的方向发展。科学技术更加贴近人们的生活,向着满足人们需求的方向发展。节日彩灯的设计与制作工艺也一步一步的走向成熟。通过前一段时间对微型计算机原理与接口技术的学习,我们熟悉了几种常用芯片的使用方法。鉴于彩灯的用途如此之广,也为了更好的将所学的理论联系到实际中我们小组在此通过编程控制来实现它的各种方式闪烁,体现它的风采。 彩灯的闪烁有各种方式,如全亮全灭,交替闪烁,循环闪烁等,最常见的还是交替闪烁。下面我们就通过软件编程的方式,用两种最基本的芯片:可编程接口芯片8255A与可编程定时器8253A,实现彩灯的循环闪烁。在此过程中,我们设计了彩灯的多种循环方式,在每种方式中,用户可以控制彩灯闪烁的时间,并且用户还可以任意选择,使彩灯以我们所设计的哪一种循环方式进行闪烁。1.2.小组分工该组成员为XXX/X/X/X/。XXX负责的范围为“问题的提出”、“需求分析”、“电路组成及其各自的主要功能”。XXX负责的范围“硬件电路连接”,“电路图”。XXX负责的范围为“流程图”及“软件编程”。必要时三人进行商讨来确定最佳方案。2需求分析2.1. 8253A结构及其功能说明8253A:采集脉冲,实现记数、定时功能。此外, 8253A还能适用于许多其它的场合,如用作可编程方波频率产生器、分频器、程控单脉冲发生器等。 下面我们先来了解一下8253A的内部结构,以便更好的利用它。8253A内部包含数据总线缓冲器、读/写控制逻辑、控制字寄存器和3个结构完全相同的计数器,这3个计数器分别为计数器0,计数器1和计数器2。 数据总线缓冲器是8253A与系统总线相连接时用的接口电路,它由8位双向三态缓冲器构成,CPU用输入、输出指令对8253A进行读/写操作的信息,都经过8位数据总线D7D0传送,这些信息包括:进行初始化编程时,向它写入的控制字,CPU向某一计数器写入计数初值,从计数器读出计数初值。读/写控制逻辑接收系统控制总线送来的输入信号,经组合后形成控制信号,对个部分进行控制。可接收的信号有片选信号、读信号、写信号、端口选择信号。只有当片选信号为低电平时,CPU才能对8253A进行读/写操作。当读信号为低电平时,表示CPU正在读取所选计数器通道的内容。当写信号为低电平时,表示CPU正在将计数初值写入所选的计数通道中或者将控制字写入控制字寄存器中。在8253A内部有3个计数器通道02和一个控制字寄存器端口。当A1A0=00时,选中通道0;当A1A0=01时选中通道1;当A1A0=10时选中通道1;当A1A0=11时选中通道2;当A1A0=11时选中控制字寄存器端口。8253A内部的3个通道的操作是完全独立的。每个通道都包含一个8位的控制字寄存器 、一个16位的计数初值寄存器、一个计数器执行部件和一个输出琐存器。输出锁存器用来锁存计数器执行部件的值,必要时CPU可对它执行读/写操作,以了解某个时刻计数器的瞬时值。每个通道工作时,都是对输入到CLK引脚上的脉冲按2进制或10进制格式进行计数。计数采用倒计数法,先对计数器预置一个初值,再把初值装入实际的计数器。然后,开始递减计数。当计数器的值 减为0时,便从OUT引脚输出一个脉冲信号,输出的波形主要由工作方式决定。控制字寄存器是一种只写寄存器,在对8253A进行编程时,由CPU用输出指令向它写入控制字,来选定计数器通道,规定各计数器通道的工作方式,读写格式和数制。8253A的初始化编程步骤如下:写入控制字;写入计数初值。在计数初值写入8253A后,还要经过一个时钟脉冲的上升沿和下降沿,才能将计数初值装入实际的计数器,然后在门控信号的控制下,对从CLK引脚输入的脉冲进行递减计数。2.2. 8253A各端脚作用及连接方式CLK0脉冲频率为1MHZ,用8MHZ脉冲经8分频的方式得到。片选信号CS引脚的地址为30830FH,低电平有效,由地址总线经I/O端口译码电路产生。只有当片选信号为低电平时,CPU才能对8253进行读写操作。门控信号GATE0和GATE1相连,接+5V的电源电压,作为输入端。OUT1作为计数器的输出端,接8255A的PA0端。让其工作在方式0计数结束中断方式,以确保采集到脉冲信号。当向8253A的通道写入控制字时,该通道的OUT立即变为低电平。要使8253A能够进行计数,门控信号GATE必须为高电平。每从CLK0引脚输入一个脉冲,计数器就减1,总共经过n+1个脉冲后,计数器减为0,表示计数计到终点,计数过程结束,这时OUT1引脚由低电平变为高电平。按方式0进行计数时,计数器只计一遍。当计数器计到0时,不会再装入初值重新开始计数。计数过程中,可由门控信号GATE控制暂停计数。计数过程中,也可以改变计数值。用方式1可编程单稳态输出方式和方式2比率发生器以及方式3方波发生器也可以产生方波,但是不一定能在该时刻采集到脉冲信号,所以我们采用方式0以确保一定能采集到脉冲信号。2.3. 8255A结构及其功能说明8255A:输出显示结果。8255A是一种可编程并行I/O接口芯片,它可以用于多种电路,如软盘接口电路、控制接口电路以及A/D和D/A接口电路等。下面我们来了解一下8255A的内部结构,以便更好的利用它。8255A由数据端口A、B、C,A组和B组控制逻辑,数据总线缓冲器和读/写控制逻辑组成。A口包含一个8位的数据锁存器/缓冲器,一个8位的数据输入锁存器,因此它作输入输出时数据均能锁存。B口包含一个8位的数据输出锁存器/缓冲器,一个 8位的数据输入缓冲器。C口包含一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器,无输入锁存功能。A组和B组控制逻辑用来接收送来的命令字,然后分别决定A组和B组的工作方式,或对C口的每一位执行置位/复位操作。数据总线缓冲器是一个双向的8位缓冲器,用作8255A和系统总线之间的接口。通过这个缓冲器与之相连的8位数据总线D7D0,接收CPU送来的数据或命令字。读/写控制逻辑电路用来管理所有的内部或外部数据信息、控制字或状态字的传送过程,它接收从CPU的地址总线和控制总线来的信号,并产生对A组和B组控制逻辑进行操作的控制信号。8255A有两类控制字。一类是方式选择控制字,另一类是置位复位控制字。方式选择控制字的D7位总是1,而置位复位控制字的D7位总是0。方式选择控制字有3种基本的工作方式,即方式0基本输入输出方式,方式1选通输入输出方式,方式2双向总线I/O方式。通过向8255A的控制字寄存器写入方式选择字,就可以规定各端口的工作方式。2.4. 8255A各端脚作用及连接方式8255A口主要用来输入,即工作在方式1。B口主要用来输出,工作在方式0。让PA0接8253A的OUT1端,让8 个彩灯分别接PB0PB7,以显示结果。选信号引脚的地址为300307H,低电平有效,由地址总线经I/O端口译码电路产生。只有当该信号有效时,CPU与8255A之间才能进行通信,也就是CPU可对8255A进行读/写操作。3概要设计3.1. 设计思想方案一:用8255A和8253A共同实现可编程节日彩灯方案二:在程序中添加键盘扫描程序,用8255A实现可编程节日彩灯方案三:进行系统模块的划分,规定每一模块的功能以及各个模块之间的接口。3.2. 设计原理方案一、利用8255A和8253A共同实现可编程节日彩灯。8253A提供频率,通过频率变化改变彩灯的闪亮速度,8255A的A口做输入,B口作输出。彩灯的循环闪烁方式由程序控制。在本次设计中只设计了四种花样,要求这四种花样以不同的频率显示,用8253A对所输入的时钟信号进行2分频、4分频、8分频、16分频,得到四种频率信号。方案二、在程序中添加键盘扫描程序,用8255A实现可编程节日彩灯。8255A的A口和B口做输入,C口作输出。通过键盘的按钮来调节彩灯的闪烁方式。方案三、进行系统模块的划分,规定每一模块的功能以及各个模块之间的接口。设计方案为:一个彩灯花样控制器、一个四频率输出分频器、一个四选一控制器和一个时间选择器总共四部分来完成设计。子模块及其功能:(1)、四频率输出分频器在本次设计中只设计了四种花样,要求这四种花样以不同的频率显示,而只有一个输入的时钟信号,所以对所输入的时钟信号进行2分频、4分频、8分频、16分频,得到四种频率信号,CLKDIV模块用来完成此功能。(2)、时间选择器时间选择器实际上是两个分频器,其中一个频率是另一个频率的两倍。本来这两个分频器是可以在上述的四频率输出器中实现的,但为了方便地为四选一控制器提供不同的时间选择条件,就将这两个分频器独立开来。这两个输出的时钟信号组合起来就可以为四选一控制器提供00,01,10,11四个时间选择条件,如下图示 时间选择器输出波形图(3)、四选一控制器四选一控制器功能是从分频器中选择不同频率的时钟信号送给彩灯控制器,实现彩灯闪烁的频率变化。(4)、彩灯控制器彩灯控制电路是整个设计的核心,它负责整个设计的输出效果即各种彩灯图案的样式变化。通过改变程序中输出变量的位数来改变彩灯的数目。改变循环的位数即可改变要控制图案的数目,改变输出变量的组合即可变幻彩灯图案,改变8255的三个接口A、B、C的设定值, 就可以达到改变彩灯显示顺序的目的。4详细设计4.1. 硬件电路连接图此彩灯控制系统设定有四种花样变化,这四种花样可以进行切换,并且每种花样可选择不同的频率,四种花样分别为:(1) 彩灯从右到左,然后从左到右逐次闪烁,即单向单灯循环。(2) 彩灯左边两灯先亮,然后向右循环闪亮。(3) 彩灯两边同时亮2个逐次向中间移动再散开。(4) 彩灯两边同时亮4个,4亮4灭。4.2. 程序流程图开始程序初始化显示提示信息写控制字,在A端口为输入,工作在方式0读取B口,数据保存在B单元中写控制字,三个端口均在方式0工作,均为输出1从右到左,然后从左到右逐次闪烁调用延时子程序 1键按下? Y N2键按下? Y N2左边两灯先亮,然后向右循环闪亮 调用延时子程序 3两边同时亮2个逐次向中间移动再散开 调用延时子程序 彩灯两边同时亮4个,4亮4灭3键按下?调用延时子程序结束YNA、主程序开始保存原CX的内容循环计数初值8000 CXCX - 1 CXCX = 0 ? N Y恢复原CX的内容返回 B、延时子程序 4.4. 程序DATA SEGMENT AS DW AS0,AS1,AS2,AS3,AS4,AS5,AS6 ;定义数据段DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX ;建立数据栈 MOV DX,303H ;初始化8255A MOV AL,10011000B ;A口输入,B口输出,方式0 OUT DX,AL MAIN: MOV DX,300H IN AL,DX ;读入口状态 AND AL,0FH CALL PLAY JMP MAIN PLAY PROC NEAR TEST AL,08H JZ NEXT1 MOV DX,300H MOV AL,0FFH OUT DX,AL JMP EXIT NEXT1: MOV BX,2 MUL BX MOV BX,AX CALL ASBXEXIT: RETPLAY ENDP AS0 PROC NEAR MOV DX,300H ;A口状态 MOV AL,11101110B ;控制字 MOV CX,8L0: OUT DX,AL CALL DELAY ROR AL,1 ;右循环 LOOP L0 MOV CX,8 MOV AL,11101110B MOV DX,300HR0: OUT DX,AL CALL DELAY ROL AL,1 ;左循环 LOOP R0 RETAS0 ENDPAS1 PROC NEAR MOV DX,300H ;A口状态 MOV AL,00111111B ;控制字 MOV CX,4R1: OUT DX,AL CALL DELAY PUSH CX MOV CL,3 ROR AL,CL POP CX LOOP R1 RETAS1 ENDPAS2 PROC NEAR MOV DX,300H ;A口状态 MOV AL,11111100B ;控制字 MOV CX,8R2: OUT DX,AL CALL DELAY ROR AL,1 LOOP R2 RETAS2 ENDPAS3 PROC NEAR MOV DX,300H ;A口状态 MOV AX,00FFH MOV CX,8R3: OUT DX,AL CALL DELAY ROR AX,1 LOOP R3 MOV CX,8L3: OUT DX,AL CALL DELAY ROL AX,1 LOOP L3 RETAS3 ENDPAS4 PROC NEAR MOV DX,300H MOV AL,11001100B MOV CX,4R4: OUT DX,AL CALL DELAY PUSH CX MOV CL,2 ROR AL,CL POP CX LOOP R4 RETAS4 ENDPAS5 PROC NEAR MOV DX,300H MOV AL,00001111B MOV CX,8R5: OUT DX,AL CALL DELAY ROR AL,1 LOOP R5 RETAS5 ENDPAS6 PROC NEAR CALL AS0 CALL AS1 CALL AS2 CALL AS3 CALL AS4 CALL AS5 RETAS6 ENDPDELAY PROC NEAR PUSH CX MOV CX,8000HNEXTO : NOP NOP LOOP NEXTO POP CX RETDELAY ENDP CODE ENDS END START5实验体会 通过这次课程设计,我们对整个设计的原理都有了比较深刻的理解。在这个设计的部分内容中,我们对8255的工作原理有了比以前更深刻的认识,通过利用各方面的资源,也学到了很多书本之外的知识。 这是我们大学生涯的第一次课程设计,总共花了一个多月的时间。我们三人一组,编程对我们来说本是个难点,总是出错,但最终在同组同学的帮助下,程序总算没有错误。现在设计总算基本上成功了,这是我们第一次做设计,所以还是有点高兴。在这一个多月里,虽然碰到了种种困难,但最终还是克服了,而且收获也很大。不仅巩固了课堂上掌握不太牢的知识,而且培养了我们团队合作的精神,锻炼了独立思考的能力,以及面对困难永不放弃的勇气,为我们以后的学习和生活打下良好的基础。然而以后还会有很多的课程设计,以及相类似的学习,这次的实践是一个很好的开始,我们相信下一次一定会做的更好。6参考文献1微型计算机原理与接口技术 中国科学技术大学出版社 吴秀清 编著2可编程逻辑器件的原理与应用 复旦大学出版社 陈光梦 编著 380X86汇编语言程序设计教程 清华大学出版社 杨季文 编著4微机原理与接口技术综合实验教程 大连理工大学出版社 秦晓梅 编著5单片微型机原理、应用与实验 复旦大学出版社 张友德 编著6微型计算机技术及应用 清华大学出版社 戴梅萼 编著 7微机原理与接口技术实验指导与习题集 人民邮电出版社 周明德 编著8汇编语言程序设计案例精编 中国水利水电出版社 李珍香 编著 - 20 -
展开阅读全文