合肥工业大学 宣城校区
信息工程系 课程设计
课 程: 微机原理与接口技术设计
专业班级: 13级计算机02班
学 号: 2013217172
姓 名: 旷皓飞
一、设计题目及要求
【课题4 4 】 利用 8255A 和 8253 使发光二极管按一定规律轮流点亮 设计要求:
1. 发光二极管点亮方式:将发光二极管分为n 组,每组12/n 个灯管,从左到右依次点亮这
些灯管,每组灯管发光时间为t。设有8种发光组合: (1)n=12,t=1s:每个灯管单独一组,间隔1秒循环点亮。 (2)n=12,t=2s:每个灯管单独一组,间隔2秒循环点亮。 (3)n=6,t=1s:每两个灯管一组,间隔1秒循环点亮。 (4)n=6,t=2s:每两个灯管一组,间隔2秒循环点亮。 (5)n=4,t=1s:每三个灯管一组,间隔1秒循环点亮。 (6)n=4,t=2s:每三个灯管一组,间隔2秒循环点亮。 (7)n=3,t=1s:每四个灯管一组,间隔1秒循环点亮。 (8)n=3,t=2s:每四个灯管一组,间隔2秒循环点亮。 2. 要求按键盘的“A”、“B”、“C”、“D”分别表示选择灯管数目(一个一组,两个
一组,三个一组,四个一组),按键盘的“E”、“F”表示选择间隔时间(1秒和2秒)。程
序启动时默认按第一种方式进行循环,当按动“A-F”时,根据设定情况随时改变循环方式, 当按“G”键时退出程序,所有灯管灭。
【课题5 5 】 模拟计算 器运算(加,减,乘) 设计要求:
1.通过小键盘做加、减、乘、括号运算。七段数码管显示器作输入数据和结果数据的显示。
二、设计思想
该题的主程序是不断地检测小键盘是否有按键按下,若有按键(A、B、C、D、E、F)按下则按预先设定的功能改变中断服务程序中的时间间隔或LED灯的组数,否则,则继续检测按键。
按题目要求,时间间隔的控制利用8253芯片完成,隐含使用8259
中断控制器。利用8253芯片1s或2s产生的高电平信号,使8259触发硬件中断,中断服务程序中利用8255芯片完成LED灯的亮灭。 ? 8253:
时钟信号接试验箱上2MHZ的时钟,利用两个通道,一个工作在方式2,一个工作在方式3.利用BCD码,进行两级分频,产生时间间隔为1s和2s的信号。 ? 8255:
8255要完成两个功能: 1. 对小键盘的设置
实验所使用的小键盘为2*8的小键盘(2行8列),由8255的B口产生列线扫描信号,C口的低两位测试行线产生的信号,若测试到低电平,则说明有键按下。小键盘图如下:
图2 小键盘原理图
若按下小键盘的E或者F键,则对8253重新初始化,改变8253的输出频率:我们在程序中使用了两级计数器对原始输入频率进行放大,在8253初始化程序中,变量TI和ME分别是两个计数器初始化的值,因此,在接收到按键E或F的按键信息后,用地址表跳转到的程序段对变量TI和ME重新赋值,再调用8253初始化子程序,即可实现按键E、F改变LED灯移动频率。
2. 对LED灯的控制
若按下A,B,C,D则改变灯序列的初值,使一开始有相应个灯亮,在程序中定义了两个变量LEDLIST8和LEDLIST4,它们分别表示前8个灯和后4个灯,在接收到按键A、B、C、D的按键信息后,运用地址表跳转到的程序段对变量LEDLIST8和LEDLIST4重新赋值,即可实现A、B、C、D按键改变点亮的LED灯的分组情况;若按下1键,则灯处于全灭,此时再按下除1键的其他键,LED灯又会按之前的序列继续依次点亮,接收到按键1的按键信息后,运用地址表跳转到的程序段,向8255的A口和C口高四位输出全1的12位二进制序列,然后在进入
小键盘检测按键子程序,即可实现按键1停机,其它按键唤醒的功能。
LED灯序列移位的操作在中断服务程序中完成。中断服务程序中先将CF位置1,再将LEDLIST8用带进位循环移位一次,此时已将CF移至LEDLIST8的第1位,将第8位移至CF中;再将LEDLIST4用带进位循环移位一次,此时借助于CF标志位已将LEDLIST8的第8位移至LEDLIST4的第1位, 使用TEST指令,测试LEDLIST4的第五位,根据测试结果再对CF进行置位(STC)或复位(CLC)操作。