马跑灯-微机课设报告-大学毕设论文_第1页
马跑灯-微机课设报告-大学毕设论文_第2页
马跑灯-微机课设报告-大学毕设论文_第3页
马跑灯-微机课设报告-大学毕设论文_第4页
马跑灯-微机课设报告-大学毕设论文_第5页
已阅读5页,还剩10页未读, 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理课程设计——跑马灯专业计算机科学与技术班级学生同组指导教师目录TOC\o"1-3"\h\u782跑马灯实验 24058一、实验目的 22609二、实验要求 231141、基本要求 2311532、提高要求 217267三、设计思路 210525四、实验原理 33851、8254定时器 39626(1)计数通道 35426(3)工作方式(6种) 318360(4)内部结构 411625(5)引脚 416633(6)方式控制字 4171692、并行接口电路8255 59827(1)3个数据端口 58142(2)工作方式 526840(3)方式控制字 520357(4)内部结构 628944五、实验原理图 6六、实验流程图731467七、实验代码 91116八、实验结果 14234731、开关都未闭合 141662、开关K0闭合 14161513、开关K1闭合 14126154、开关K2闭合 1429146九、实验总结 14跑马灯实验一、实验目的(1)通过本次实验更加清楚的掌握芯片8255和8254的使用方法和工作原理;(2)编写一个简单的程序来实现最简单的跑马灯;(3)在此基础上来实现本次实验的要求和任务。二、实验要求1、基本要求采用8254精确定时,LED的点亮规律为LED7—>LED0,每个LED的点亮时间间隔由逻辑电平开关K0、K1和K2选择。K0的时间间隔为0.5s,K1的时间间隔为1.0s,K2的时间间隔为1.5s,当主机键盘按下任意键时停止演示。2、提高要求LED灯的点亮规律变成LED7—>LED0—>LED7。三、设计思路使用8255的A端口连接开关,以此判断选择哪个定时。用B口和LED灯连接,来实现跑马灯开始亮。使用C口来判断此时CLK是否为下降沿,以此判断此时是不是达到一个周期。四、实验原理1、8254定时器8254有3个相互独立的计数器通道,计数器0、计数器1和计数器2.(1)计数通道8254每个计数器通道都有3个信号与外界接口:CLK时钟输入信号、GATE门控输入信号和OUT计数器输出信号;(2)内部数据总线8254内部通过数据总线缓冲期引出8位数据引脚D7~D0,地址引脚A0和A1,控制引脚RD、WR、CS;(3)工作方式(6种)方式0:计数结束中断方式1:可变成单稳脉冲方式2:频率发生器方式3:发波发生器方式4:软件触发选通信号方式5:硬件触发选通信号(4)内部结构数据总线缓冲器数据总线缓冲器读写控制逻辑控制字寄存器计数器0计数器1计数器2D0~D7RDWRA0A1CSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2(5)引脚2423242322212019181716151413D7D6D5D4D3D2D1D0CLK0OUT0GATE0GNDVccWRRDCSA1A0CLK2OUT2GATE2CLK1GATE1OUT1(6)方式控制字D7D6D5D4D3D2D1D0计数器读写格式工作方式数制计数器读写格式工作方式数制2、并行接口电路8255(1)3个数据端口8255的3个数据端口分成两组进行控制:A组控制端口A和端口C的上半部;B组控制端口B和端口C的下半部。(2)工作方式方式0:基本输入输出方式方式1:选通输入输出方式方式2:双向选通传送方式(3)方式控制字1D6D5D4D3D2D1D01D6D5D4D3D2D1D0A组方式选择端口A输入输出端口C上部输入输出端口B输入输出B组方式端口C下部输入输出A组端口APA0~PA7PC4~PC7PB0~PB7PC0~PC3A组端口APA0~PA7PC4~PC7PB0~PB7PC0~PC3B组端口C下部B组端口BA组端口C上部B组控制数据总线缓冲器A组控制读写控制逻辑内部数据线内部控制线B组端口C下部B组端口BA组端口C上部B组控制数据总线缓冲器A组控制读写控制逻辑内部数据线内部控制线D0~D7RDWRA0A1CSRESET五、实验原理图280控制口D0280控制口D0~D7GATE0GATE1CLK0OUT0CLK1OUT1CS8254PC78255A0A1A2B0B1B2B3B4B5B6B71M5V288控制口K0K1K2L0L1L2L3L4L5L6L7六、实验流程图开始开始初始化8255芯片初始化8255芯片调用App8255调用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开始结束返回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点亮?结束NNNYYY七、实验代码.modelsmall.586.stack.datamsg db'PressanykeytoExit',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;控制口地址.codemain procmov ax,@datamov ds,ax;建立数据段movdx,offsetmsgmovah,09h;显示字符串int21hcall init8255call App8255movah,4ch;返回DOSint21hretmainendpinit8255procmovdx,p8255Ctrl;控制口地址moval,98h;设置8255为A,C口输入,B为输出outdx,al;控制字:10011000Bretinit8255endpApp8255procmovdx,p8255a;检测A口状态inal,dxk0:movcl,al cmpal,01h;判断是否按下K0jnzk1init_0:movdx,p8254Ctrl;初始化计数器0,1,实现定时0.5smoval,36h;通道0的控制字00110110outdx,almovdx,p8254amovax,500;A口初始值outdx,almoval,ahoutdx,almovdx,p8254Ctrlmoval,76h;通道1的控制字01110110outdx,almovdx,p8254bmovax,1000;B口初始值outdx,almoval,ahoutdx,almovbl,80h;点亮L7light:movdx,p8255bmoval,bloutdx,al;输出,使L7点亮clk:movdx,p8255cinal,dxandal,80hjnzhight;判断是否c口为下降沿cmpah,1jnzclkmovah,0jmpconhight:movah,1jmpclkcon:movdl,0ffh;直接控制台IO,相当于C中while(!kbhit())movah,06h;等待按键int21h;al=输入字符jnzdone;若无按键,则继续moval,blcmpal,01h;判断是否到达L0jzlight_1movdx,p8255boutdx,al;输出rorbl,1movdx,p8255a;检测A口状态inal,dxcmpal,cljnzk0jmpclklight_1:movdx,p8255bmoval,bloutdx,al;输出clk1:movdx,p8255cinal,dxandal,80hjnzhight1;判断是否c口为下降沿cmpah,1jnzclk1movah,0jmpcon1hight1:movah,1jmpclk1con1:movdl,0ffh;直接控制台IO,相当于C中while(!kbhit())movah,06h;等待按键int21h;al=输入字符jnzdone;若无按键,则继续moval,blcmpal,80hjzlightmovdx,p8255boutdx,al;输出rolbl,1;循环左移movdx,p8255a;检测A口状态inal,dxcmpal,cljnzk0jmpclk1k1:cmpal,02h;判断是否按下K1按钮jnzk2init_1:movdx,p8254Ctrl;初始化计数器0,1,实现定时1smoval,36h;通道0的控制字00110110outdx,almovdx,p8254amovax,100;A口初始值outdx,almoval,ahoutdx,almovdx,p8254Ctrlmoval,76h;通道1的控制字01110110outdx,almovdx,p8254bmovax,10000;B口初始值outdx,almoval,ahoutdx,almovbl,80h;点亮L7jmpclkk2:cmpal,04h;判断是否按下K2jnzinit_2init_2:movdx,p8254Ctrl;初始化计数器0,1,实现定时1.5smoval,36houtdx,almovdx,p8254amovax,1500outdx,almoval,ahoutdx,al movdx,p8254Ctrlmoval,76houtdx,almovdx,p8254bmovax,1000o

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论