马跑灯-微机课设报告--大学毕设论文.doc

上传人:知**** 文档编号:89790245 上传时间:2023-05-13 格式:DOC 页数:15 大小:131.50KB
返回 下载 相关 举报
马跑灯-微机课设报告--大学毕设论文.doc_第1页
第1页 / 共15页
马跑灯-微机课设报告--大学毕设论文.doc_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《马跑灯-微机课设报告--大学毕设论文.doc》由会员分享,可在线阅读,更多相关《马跑灯-微机课设报告--大学毕设论文.doc(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、微机原理课程设计 跑马灯专 业 计算机科学与技术 班 级 学 生 同 组 指导教师 目 录跑马灯实验2一、实验目的2二、实验要求21、基本要求22、提高要求2三、设计思路2四、实验原理31、8254定时器3(1)计数通道3(3)工作方式(6种)3(4)内部结构4(5)引脚4(6)方式控制字42、并行接口电路82555(1)3个数据端口5(2)工作方式5(3)方式控制字5(4)内部结构6五、实验原理图6六、实验流程图.7七、实验代码9八、 实验结果141、开关都未闭合142、开关K0闭合143、开关K1闭合144、开关K2闭合14九、 实验总结14跑马灯实验一、实验目的(1)通过本次实验更加清楚

2、的掌握芯片8255和8254的使用方法和工作原理;(2)编写一个简单的程序来实现最简单的跑马灯;(3)在此基础上来实现本次实验的要求和任务。二、实验要求1、基本要求 采用8254精确定时,LED的点亮规律为LED7LED0,每个LED的点亮时间间隔由逻辑电平开关K0、K1和K2选择。K0的时间间隔为0.5s,K1的时间间隔为1.0s,K2的时间间隔为1.5s,当主机键盘按下任意键时停止演示。2、提高要求LED灯的点亮规律变成LED7 LED0 LED7。三、设计思路使用8255的A端口连接开关,以此判断选择哪个定时。用B口和LED灯连接,来实现跑马灯开始亮。使用C口来判断此时CLK是否为下降沿

3、,以此判断此时是不是达到一个周期。四、实验原理1、8254定时器8254有3个相互独立的计数器通道,计数器0、计数器1和计数器2.(1)计数通道 8254每个计数器通道都有3个信号与外界接口:CLK时钟输入信号、GATE门控输入信号和OUT计数器输出信号;(2)内部数据总线 8254内部通过数据总线缓冲期引出8位数据引脚D7D0,地址引脚A0和A1,控制引脚 RD、WR、CS;(3)工作方式(6种)l 方式0:计数结束中断l 方式1:可变成单稳脉冲l 方式2:频率发生器l 方式3:发波发生器l 方式4:软件触发选通信号l 方式5:硬件触发选通信号(4)内部结构数据总线缓冲器 读写控制逻辑控制字

4、寄存器计数器0 计数器1 计数器2D0D7 RD WR A0 A1 CSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2(5)引脚1 242 233 224 215 206 197 188 179 1610 1511 1412 13D7D6D5D4D3D2D1D0CLK0OUT0GATE0 GNDVccWRRDCSA1A0CLK2OUT2GATE2CLK1GATE1OUT1(6)方式控制字D7 D6 D5 D4 D3 D2 D1 D0计数器 读写格式 工作方式 数制2、并行接口电路8255(1)3个数据端口 8255的3个数据端口分成两组进行控制:A组控制端口A和

5、端口C的上半部;B组控制端口B和端口C的下半部。(2)工作方式l 方式0:基本输入输出方式l 方式1:选通输入输出方式l 方式2:双向选通传送方式(3)方式控制字 1 D6 D5 D4 D3 D2 D1 D0A组方式选择端口A输入输出端口C上部输入输出端口B输入输出B组方式端口C下部输入输出A组端口APA0PA7PC4PC7PB0PB7PC0PC3(4)内部结构B组端口C下部B组端口BA组端口C上部B组控制数据总线缓冲器A组控制读写控制逻辑内部数据线内部控制线 D0D7 RD WR A0 A1 CSRESET五、实验原理图280控制口D0D7GATE0GATE1CLK0OUT0CLK1OUT1

6、CS8254PC78255A0A1A2B0B1B2B3B4B5B6B71M5V288控制口K0K1K2L0L1L2L3L4L5L6L7六、实验流程图开始初始化8255芯片调用App8255结束返回DOSYN是否保持K0(K1、K2)状态初始化计数器0,1,调用init_0,实现定时0.5s初始化计数器0,1,调用init_1,实现定时1.0sNNYY8254初始化,点亮L7,LED依次以0.5s(或1.0s或1.5s)间隔循环跳转是否按下K1调用init_2子程序获取A端口的输入状态是否按下K0开始开始点亮L0C口是下降沿?设置C口为下降沿NY键盘有无按键?向左移位L7点亮?向右移位L0点亮?

7、结束NNNYYY七、实验代码.model small.586.stack .data msgdb Press anykey to Exit,0dh,0ah,$ p8255a=288h ;A口地址 p8255b=p8255a+1 ;B口地址 p8255c=p8255a+2 ;C口地址 p8255Ctrl=p8255a+3 ;控制口地址 p8254a=280h ;通道0地址 p8254b=p8254a+1 ;通道1地址 p8254c=p8254a+2 ;通道2地址 p8254Ctrl=p8254a+3 ;控制口地址.code mainproc movax,data movds,ax ;建立数据段

8、mov dx,offset msg mov ah,09h ;显示字符串 int 21h callinit8255 callApp8255 mov ah,4ch ;返回DOS int 21h retmain endpinit8255 proc mov dx,p8255Ctrl ;控制口地址 mov al,98h ;设置8255为A,C口输入,B为输出 out dx,al ;控制字:10011000B retinit8255 endpApp8255 proc mov dx,p8255a ;检测A口状态 in al,dxk0: mov cl,al cmp al,01h ;判断是否按下K0 jnz k

9、1init_0:mov dx,p8254Ctrl ;初始化计数器0,1,实现定时0.5s mov al,36h ;通道0的控制字 00110110 out dx,al mov dx,p8254a mov ax,500 ;A口初始值 out dx,al mov al,ah out dx,al mov dx,p8254Ctrl mov al,76h ;通道1的控制字 01110110 out dx,al mov dx,p8254b mov ax,1000 ;B口初始值 out dx,al mov al,ah out dx,al mov bl,80h ;点亮L7 light:mov dx,p8255

10、b mov al,bl out dx,al ;输出,使L7点亮clk: mov dx,p8255c in al,dx and al,80h jnz hight ;判断是否c口为下降沿 cmp ah,1 jnz clk mov ah,0 jmp conhight:mov ah,1 jmp clkcon: mov dl,0ffh ;直接控制台IO,相当于C中while(!kbhit() mov ah,06h ;等待按键 int 21h ;al=输入字符 jnz done ;若无按键,则继续 mov al,bl cmp al,01h ;判断是否到达L0 jz light_1 mov dx,p8255

11、b out dx,al ;输出 ror bl,1 mov dx,p8255a ;检测A口状态 in al,dx cmp al,cl jnz k0 jmp clklight_1:mov dx,p8255b mov al,bl out dx,al ;输出clk1:mov dx,p8255c in al,dx and al,80h jnz hight1 ;判断是否c口为下降沿 cmp ah,1 jnz clk1 mov ah,0 jmp con1hight1: mov ah,1 jmp clk1con1: mov dl,0ffh ;直接控制台IO,相当于C中while(!kbhit() mov ah

12、,06h ;等待按键 int 21h ;al=输入字符 jnz done ;若无按键,则继续 mov al,bl cmp al,80h jz light mov dx,p8255b out dx,al ;输出 rol bl,1 ;循环左移 mov dx,p8255a ;检测A口状态 in al,dx cmp al,cl jnz k0 jmp clk1 k1: cmp al,02h ;判断是否按下K1按钮 jnz k2init_1:mov dx,p8254Ctrl ;初始化计数器0,1,实现定时1s mov al,36h ;通道0的控制字 00110110 out dx,al mov dx,p8

13、254a mov ax,100 ;A口初始值 out dx,al mov al,ah out dx,al mov dx,p8254Ctrl mov al,76h ;通道1的控制字 01110110 out dx,al mov dx,p8254b mov ax,10000 ;B口初始值 out dx,al mov al,ah out dx,al mov bl,80h ;点亮L7 jmp clkk2:cmp al,04h ;判断是否按下K2 jnz init_2init_2:mov dx,p8254Ctrl ;初始化计数器0,1,实现定时1.5s mov al,36h out dx,al mov

14、dx,p8254a mov ax,1500 out dx,al mov al,ah out dx,al mov dx,p8254Ctrl mov al,76h out dx,al mov dx,p8254b mov ax,1000 out dx,al mov al,ah out dx,al mov bl,80h ;点亮L7 jmp clk done: retApp8255endpend main八、 实验结果1、开关都未闭合 七个LED灯默认以间隔1.0s以L7-L0-L7的顺序,循环点亮。2、开关K0闭合 七个LED灯以间隔0.5s以L7-L0-L7的顺序,循环点亮。3、开关K1闭合 七个L

15、ED灯以间隔1.0s以L7-L0-L7的顺序,循环点亮。4、开关K2闭合 七个LED灯以间隔1.5s以L7-L0-L7的顺序,循环点亮。九、 实验总结 经过这几天的课程设计收获了很多,因为本次课程设计选取的是硬件设计,这就不仅要求编程能力,也同时要求要有较强动手能力。这个做跑马灯的课设,使用的是8255芯片和8254芯片,虽然在老师在课堂上也已经讲过这两个芯片,但是本次实验中对这两个芯片的使用方法和工作原理有了进一步的了解和掌握。课设过程中,我们首先要确定思路,想好代码框架,设计好实现任务的原理图,然后编写好代码,连好线。再测试、运行找出错误并改正,最后来实现。实验中也遇到一些问题,例如,连线的时候要细心谨慎,不要插错位置;计算出来的初值很大,所以要用两个通道来共同实现;设计时思路要清晰,最好先画出流程图。几天的课设虽短,但是提高了自己的编程能力和实践动手能力,今后自己要多做此类的锻炼,以此来提高自己的综合能力。14

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁