1、2.1 硬件电路设计32.2 主程序设计42.3 功能选择模块的设计与实现5第3章 结果测试及分析63.1 结果测试63.2结果分析6参考文献7附 录8-16-课程设计报告 第1章 总体设计方案第1章 总体设计方案1.1 设计原理利用芯片8259,8255,8253,8279,分别控制中断,彩色发光二极管,时钟,和LED显示。用受8253控制的8259给8255和8279产生每秒钟一次的中断,控制彩色发光二极管和LED的显示1.2 设计思路首先需要一个总开关,用来控制电风扇的开关,可以用8255的输入端接收这一信号,信号为时进入循环,此时彩色发光二极管通过红绿色灯显示风扇的转动效果,不为时执行
2、下一步。其次需要实现的功能是三级风速的变换,可以设计三个变换延时的子程序,并根据键盘输入的不同来分别调用这三个步骤。再次是要实现定时功能,用8253和8259实现这一功能并不困难,当时间减为零时,向8255的AL中输入O6AH,使彩色发光二极管显示初始化。还有就是彩色发光二极管的显示问题,只需将8255中控制彩灯显示的数据起始值设为01101010,然后循环左移两位即可。(1) 提出方案总开关是用来控制风扇的启动停止的,所以只需有两种状态,即开和关,所以,我选择用实验箱右下角的开关来实现这以功能。为了能显示风扇的转动,我选用8255和实验箱右上角的彩灯来显示风扇的转动。为了实现定时功能,我选用
3、8253定时,8259产生中断,用中断程序来控制定时。由于定时时要能显示时间及风扇转动时要有风速等一些功能的选择,所以还需要8279键盘显示接口芯片。(2) 方案论证1) 用8255和彩灯模拟风扇的转动,所以,可以将8255的B口设为工作在方式0,输出状态,然后通过输出不同二进制数来控制彩灯的红绿显示,通过循环移位使彩灯循环显示来实现风扇转动的模拟。2) 用右下角的开关控制风扇的转动与停止,所以,可将8255A口设为方式0,输入状态,来读取开关的状态,然后在程序中判断输入的是1还是0,进而控制风扇的转动与停止。3) 为了实现定时的功能,可以用8253的分频功能,将输入的脉冲信号分频,以输出1H
4、Z的脉冲信号,然后输入到8259的INT0以产生周期为1s的终端,即每秒钟进一次中断,在中断服务程序中来实现时间的递减,当减到0时就将风扇停止,这样就实现了定时功能了。4) 为了实现三级风速的选择和定时功能、定时时间的变化显示等功能,需要8279的键盘显示功能,在键盘上设置三个键分别控制三级风速,在设置一个按键来控制定时功能的选择,当按下定时功能键后,还需要键盘的数字键来实现定时时间的设定。最后就是用数码管显示时间的变化了。1.3 实验环境硬件环境:AEDK实验箱,PC机。软件环境:LCA88ET应用软件。课程设计报告 第2章 详细设计方案第2章 详细设计方案2.1 硬件电路设计硬件电路由键盘
5、显示接口芯片8279构成,如图2.1所示。K1 Pa0 Pb0 Pb7 cs8279Clk1 out1Gate1 8253 clk0Out0 cs gate0 Int08259 cs20020721021722022722822fDL8 DL1csPc0Pc3脉冲源图2.1 硬件电路连线图8279是可编程设置型键盘/显示芯片,其特点是:(1)可同时进行键盘扫描及文字显示;(2)键盘扫描模式;(3)传感器扫描模式;(4)激发输入模式;(5)8乘8键盘FIFO;(6)具有接点消除抖动,2键锁定及N键依次读出模式;(7)双排8位数或双排16位数显示器;(8)右边进入或左边进入,16字符或8字符显示。
6、8255的A口工作在方式0,输入;B口工作在方式0,输出;C口工作在方式0,输出;8253将脉冲源分频,产生周期为1s的脉冲信号,驱动8259产生周期为1s的中断。8255、8259、8253、8279的端口地址分别接210H-217H、220H-227H、200H-207H、228H-22FH。2.2 主程序设计图2.2 主程序流程图2.3 功能选择模块的设计与实现图2.3.1 功能选择模块流程图课程设计报告 第3章 结果测试及分析第3章 结果测试及分析3.1 结果测试 编译并连接程序,然后全速运行,在数码管上就显示计时器的时间,开始时是全0。此时双色彩灯是初始状态,即只有一个灯是红的,其余
7、三个灯都是绿色。然后,将开关K1向上扳去,时8255的PA0口输入高电平,此时发现双色彩灯还是循环亮红灯,并且只有一个灯是红色的,其余都是绿色,这样,当以一定的速度循环点亮四个灯,就会模拟出风扇的转动了。在风扇转动时,按下键盘上的A、B、C键,则彩灯会分别以不同的速度循环点亮红色,这样就实现了通过键盘实现三级风速的选择功能了。当风扇在某一风速下转动时,按下D键,则进入定时状态,接着只需按下键盘上的数字键,设定好定时的时间,然后再按下D键,风扇就将在设定的时间内转动,并且在数码管上显示时间的变化,逐渐减少,当减到0时,风扇就将停止转动。这就是定时功能的实现。3.2 结果分析开始运行时,发现双色彩
8、灯并不是按理想顺序逐渐点亮红色,后来,检查程序发现并没有错,最后,检查硬件连线时发现,8255B口得导线与双色灯的借口连接顺序错了,调整了连接顺序后彩灯理想的顺序循环点亮了。风扇正常运行了,但是在定时时发现数码管上的时间没有变化,过了定时的时间后,风扇也没有停止,开始以为程序问题,单步运行后发现一切正常,然后检查数码管显示也没发现问题,这时将接在INT0上的导线拔下,接在发光二极管上发现没有电流,最后,断定是8253并没有产生脉冲信号给8259,导致中断服务程序无法进入,使得计时功能失效,所以才会出现刚才的问题,于是,我测试了几根好用的导线从新将8253的连线连一遍,再运行时定时功能就好用了。
9、实验结果基本实现了课设的要求,虽然有些问题和程序还会有些不稳定,但是所要求的功能都实现了,那些问题我会在以后进行完善 。课程设计报告 参考文献参考文献1王爱英.计算机组成与设计 M 北京:教育出版社, 20032杨素行.微型计算机系统原理及应用 M 北京: 清华大学出版社, 19963张雪兰.汇编语言程序设计 M 北京: 清华大学出版社, 20064龚尚福.微机原理与接口技术 M 西安: 西安电子科技大学出版社, 20035王中民.微型计算机原理 M 西安:6沈美明,温冬婵.IBM-PC汇编语言程序设计M 北京: 清华大学出版社, 2001课程设计报告 附 录附 录data segment i
10、send db 0 n0 db 0 n1 db 0 n2 db 0 keykind db 0 oldkey db 0 kind db 0 isstop db 0 numbers db 3fh,6,5bh,0,0,0,0,0,0,0data endscode segment assume cs:code,ds:datamain: cli mov ax,cs mov ds,ax mov kind,0 mov keykind,0ah mov oldkey,0ah mov kind,06 mov isstop,0 mov isend,0 mov n0,0 mov n1,0 mov n2,0 call
11、initnumbers call init8255 call init8259 call init8253 call modifyint mov dx,212h mov al,0 out dx,al call cleardevice call display mov dx,22ah mov al,30h mov al,6ah stidowhat: push axdowait: mov dx,210h in al,dx test al,1 jz dowait pop ax call readakey cmp keykind,0ah jnz a1 mov kind,2 call gotonext jmp aaa1: cmp keykind,0bh jnz a2 mov kind,1a2: cmp keykind,0ch jnz a3 mov kind,0a3: cmp keykind,0dh jnz a4 mov dx,212h ;c口给0 mov al,0 out dx,al mov isstop,0 mov al,oldkey mov keykind,al call reading mov dx,212h mov al,0ffh sti ;开中断,进入中断程序计时a4: cmp keykind,0eh jnz aa push
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1