




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科实验报告 微机原理课程设计报告 学 院 电子与信息学院 专 业 信息工程1班 学生姓名 李土荣 指导教师 提交日期 10年 01月 18 日 学 号200730212271 座位号 21 一 课程设计题目介绍题目:简易电子广告牌设计功能:“实验箱上设有一个共阳极88点阵的红黄两色LED显示器。编程使LED显示器循环显示一条广告语,例如:北京你好。要求:广告语可以自己任意选择,但字数不少于3个;广告语的颜色红黄交替显示,例如:先显示红色广告语,再显示黄色广告语,如此交替循环;广告语中每个字符显示的时间由8253定时器控制,定时时间到显示下一个字符,设置每个字符显示的时间为数秒不等,可以自行设置;若键盘输入“R”则返回DOS,结束程序。设计说明: 点阵LED显示器是将许多LED类似矩阵一样排列在一起组成的显示器件,双色点阵LED是在每一个点阵的位置上有红绿或红黄或红白两种不同颜色的发光二极管。当微机输出的控制信号使得点阵中有些LED发光,有些不发光,即可显示出特定的信息,包括汉字、图形等。实验箱上是一个共阳极88点阵的红黄两色LED显示器,其点阵结构参考教师实验指导书实验24。该点阵对外引出24条线,其中8条行线,8条红色列线,8条黄色列线。若使某一种颜色、某一个LED发光,只要将与其相连的行线加高电平,列线加低电平即可。例如欲显示汉字“年”,采用逐列循环发光。首先由“年”的点阵轮廓,确定点阵代码(如图所示)根据“年”的点阵代码,确定逐列循环发光的顺序如下: 行代码输出 44H; 红色列代码输 01H;第一列2个红色LED发光。 行代码输出 54H; 红色列代码输 02H;第二列3个红色LED发光。 行代码输出 54H; 红色列代码输 04H;第三列3个红色LED发光。 行代码输出 7FH; 红色列代码输 08H;第四列7个红色LED发光。 行代码输出 54H; 红色列代码输 10H;第五列3个红色LED发光。 行代码输出 DCH; 红色列代码输 20 H;第六列5个红色LED发光。 行代码输出 44H; 红色列代码输 40 H;第七列2个红色LED发光。 行代码输出 24H; 红色列代码输 80 H;第八列2个红色LED发光。 在步骤之间可插入几ms的延时,重复进行即可在LED上稳定的显示出红色“年”字。若想显示黄色“年”,只需把红色列码改为黄色列码即可。 实验仪上的点阵LED及驱动电路参考教师实验指导书实验24,行代码、红色列代码、黄色列代码各用一片74LS273锁存。行代码输出的数据通过行驱动器7407加至点阵的8条行线上,红和黄列代码的输出数据通过驱动器DS75452反相后分别加至红和黄的列线上。行锁存器片选信号为CS1,红色列锁存器片选信号为CS2,黄色列锁存器片选信号为CS3。接线方法:行片选信号 CS1 接 280H;红列片选信号 CS2 接 288H;黄列片选信号 CS3 接 290H。 电路图:二 课程设计的目的 进行一次综合的小型微机应用系统的软硬件设计。通过课程设计,进一步巩固所学的知识,并将所学的内容加以综合运用。将所学的理论与实际问题或应用相结合,进一步培养自主学习的能力,综合运用知识的能力,以及创新实践的能力。并且了解双色点阵LED显示器的基本原理 ,掌握PC机控制双色点阵LED显示程序的设计方法 。三 硬件设计:8253的基本工作原理和编程方法:按图1虚线连接电路,将计数器0设置为方式0,计数器初值为N(N0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。 图1按图2连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1HZ)。 图2可编程定时器计数器(8253)参考流程图:2 8255方式0的工作原理:(1)三个数据端口A、B、C,每个端口均为8位,可选择输入或输出操作;(2)A组控制和B组控制:端口A和端口C的高4位构成A组端口B和断口C的低4位构成B组,分别又A组和B组控制电路控制。两组控制电路内各有一个控制寄存器,接受CPU输出的控制字,决定各端口的工作方式;(3)数据总线缓冲器:这是个三态双向的8位缓冲器,起着8255A与CPU数据总线接口的作用,用来传送输入/输出的数据、CPU发出的控制字及状态信息;(4)读/写控制逻辑接收CPU发出的地址A1、A0及控制(RD、WR、RESET)和片选(CS)信号,产生给A组、B组的控制信号,以完成对数据、状态及控制信息的传送。实验电路:参考流程图:3 实验系统原理图及硬件原理说明:1、用8253的计数器0和计数器1作为1MHz时间的的分频,使间脉冲变成1Hz,由计数器1的OUT口输出,并把OUT口接到8255的PA0端口,目的是让8255去读这个端口的值,为程序中的定时,当时间到时就变换字。2、8253的两个计数器用工作方式2(分频器)和工作方式3(方波发生器),8255采用工作方式0,输出口为A口的第一个口PA0。3、显示块的三个片选端口分别接的是实验板上I/O口地址的298h(行显示),288h(红色列显示线),290h(黄色列显示线)4、接通电源,运行测试程序,由8253计时,8255检测8253OUT口的电平值,直到低电平就显示下一个字,并且中间有一定的器件延时。五 软件设计流程图:主程序开始定义控制端口地址显示提示信息是否按下R是执行显示8个字返回WINDOWS否8255 A0口电平为1是继续顺序执行否结束子程序:开始是否一秒初始化得到行码得到列码输出列码输出行码行码加1列码左移1位是否8次显示下一个字是否R是否按下否退出是是六 讨论和感想:七 源程序的清单:;=ioport equ 0c400h-0280h ;实验箱的端口地址proth equ ioport+280h ;行片选信号CS1端口地址protlr equ ioport+288h ;红列片选信号 CS2端口地址protly equ ioport+290h ;黄列片选信号 CS3端口地址io8253a equ ioport+29bh ;8253控制字端口地址io8253b equ ioport+298h ;计数器0端口地址io8253c equ ioport+299h ;计数器1端口地址io8255a equ ioport+2a3h ;8255控制字端口地址io8255b equ ioport+2a0h ;8255 P0口地址;-DATA SEGMENTMESS DB Strike the r key ,return to DOS!,0AH,0DH,$ ;运行界面信息提示min1 DB 00h,01h,02h,03h,04h,05h,06h,07hcount2 db ? ;定义计字变量BUFF dw ? ;定义行码地址变量BUFF1 DB 43h,21h,11H,0ffh,00h,0ffh,24h,22h ;“北”字BUFF2 DB 00H,41H,07AH,68H,0EFH,69H,7AH,41H ;“京”字BUFF3 DB 0C2H,84H,0FFH,85H,42H,80H,7FH,20H ;“你”字BUFF4 DB 48H,68H,5FH,49H,3DH,0E2H,3DH,20H ;“好” 字DATA ENDS;-CODE SEGMENTASSUME CS:CODE,DS:DATA;-START: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESSMOV AH,09INT 21H ;显示提示信息;-;-mov dx,io8255a ;设8255A口输入mov al,9bhout dx,al mov al,16h ;设置8253通道0为工作方式3,二进制计数mov dx,io8253aout dx,al mov al,70h ;设置8253通道1为工作方式0,先低后高,二进制计数mov dx,io8253aout dx,al mov dx,io8253b ;计数器0的端口地址 mov al,0fh ;写低8位计数值out dx,al agn: mov count2,04h ;赋值给计字变量 mov bx,offset buff1 mov buff,bx ;给行赋初值 c2: mov dx,io8253c ;计数器1的端口地址 mov al,0ffh ;先写低8位计数值 out dx,al mov al,0ffh ;再写高8位计数值 out dx,ald2: mov ah,01h ;列初值mov cx,0008h ;列循环次数mov si,offset min1next: mov dh,count2 ;判断字变量是否已经为0 cmp dh,00h jz agn1 ;是,转向agn1显示黄色字d4: mov al,si mov bx, buffxlat ;得到第一行码mov dx,prothout dx,al ;显示第一行码mov al,ahmov dx,protlrout dx,al ;显示第一列,红色字shl ah,01 ;左移1位inc sipush cxmov cx,0ffffhdelay2: loop delay2 ;延时mov cx,0ffffhdelay5: loop delay5 ;延时mov dx,io8255bin al,dx ;从8255A口读一字节test al,01 ;判PA0口是否为0 jz d5 ;若不为0,表示定时时间未到,则转d5dec count2 ;为0,则计字变量减1 mov dx,buff add dx,08h ;把下一个字的行代码地址给buff mov buff,dx mov al,00 ;不为0,则继续往下执行mov dx,protlr ;关闭所有列显示out dx,aljmp c2 ;跳转回去,循环显示d5: pop cx loop next ;循环显示 mov al,00 ;不为0,则继续往下执行mov dx,protlr ;关闭所有列显示out dx,al mov ah,01int 16h ;判断是否按了r jz b1 call PANDUANb1: jmp d2 ;不是,则循环显示;-a8: jmp a3;-a6: jmp agn;-a7: jmp a3;-;显示黄色字体;-agn1: mov count2,04h ;赋值给计字变量 mov bx,offset buff1 mov buff,bx ;给行赋初值 c1: mov dx,io8253c ;计数器1的端口地址 mov al,0ffh ;先写低8位计数值 out dx,al mov al,0ffh ;再写高8位计数值 out dx,ald1: mov ah,01h ;列初值mov cx,0008h ;列循环次数mov si,offset min1next1: mov dh,count2 ;判断字变量是否已经为0cmp dh,00hjz a6 ;是,转向agn显示红色字d7: mov al,si mov bx, buffxlat ;得到第一行码mov dx,prothout dx,al ;显示第一行码mov al,ahmov dx,protlyout dx,al ;显示第一列,黄色字shl ah,01 ;左移1位inc sipush cxmov cx,0ffffhdelay3: loop delay3 ;延时mov cx,0ffffhdelay4: loop delay4 ;延时mov dx,io8255bin al,dx ;从8255A口读一字节 test al,01 ;判PA0口是否为0 jz d8 ;若不为0,则转d8dec count2 ;为0,则表示定时时间已到,计字变量减1 mov dx,buff add dx,08h ;把下一个字的行代码地址给buff mov buff,dx mov al,00 ;不为0,则继续往下执行mov dx,protly ;关闭所有列显示out dx,al jmp c1 ;调回循环显示d8: pop cx loop next1 ;循环显示 mov al,00 ;不为0,则继续往下执行mov dx,protly ;关闭所有列显示out dx
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 品牌定位策略与市场营销精准化的结合路径
- 保温装饰装修材料的耐久性与长期节能效益评估
- 利用乡土资源提升学生科学探究能力的策略
- 提升国际营销能力开拓多元化市场渠道
- 跨学科整合促进小学英语词汇学习的多元化
- 枸杞产业融资支持与资本运作分析
- TPO防水材料施工安全管理与施工效率研究
- 计算机中级职称考试试题及答案
- 创新驱动发展与高科技产业培育
- 产教融合背景下的课程体系改革
- 冬季抢工措施方案
- 《统计学-基于Python》 课件 第7章 假设检验(Python-1)
- 回力品牌广告史
- 运用PDCA循环降低急诊科医护人员职业暴露发生率
- 淄博英文介绍课件
- 酒水业务员入职合同范本
- 2023新能源光伏电站检修规程
- 统编版语文二上《小鲤鱼跳龙门》阅读推进课(整本书阅读)一等奖创新教学设计
- 静脉治疗护理技术操作标准2023
- 中外科学家的故事大全
- 上海戏剧学院辅导员考试题库
评论
0/150
提交评论