MCU综合课程设计——IO接口实验与LED显示实验.doc_第1页
MCU综合课程设计——IO接口实验与LED显示实验.doc_第2页
MCU综合课程设计——IO接口实验与LED显示实验.doc_第3页
MCU综合课程设计——IO接口实验与LED显示实验.doc_第4页
MCU综合课程设计——IO接口实验与LED显示实验.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

实 验 报 告课程名称: mcu(微控制器)综合课程设计 实验名称: i/o接口实验与led显示实验 院 (系): 专 业: 姓 名: 学 号: 实 验 室: 测控技术实验室 实验组别: 同组人员: 实验时间: 2011 年 4 月 29 日评定成绩: 审阅教师: 目 录一、 实验目的和要求3二、 实验原理3三、 实验方案和实验步骤5四、 实验设备与器材配置8五、 实验记录8六、 实验总结8七、 源代码8一、 实验目的和要求1、 熟悉和掌握编辑和编译环境keil和medley;2、 熟悉汇编语言;3、 了解i/o接口和使led灯和数码管亮的原理。4、 利用实验板i/o口(例如p0口)控制8个led循环显示,循环点亮时间间隔约为1秒(采用软件延时实现)。5、 在8个led数码管显示8个指定的数(例如学号后8位)。二、 实验原理(1)、i/o接口实验(流水灯实验):本实验采用上排led指示灯(与fpga相连),其原理图如下:主板左下方有16个led指示灯,其中上面8个led指示灯fled0fled7输入直接与fpga插座引脚相连,可由fpga模块输出引脚直接驱动,需要8根导线将i/o口与相应的led连接。输入高电平时相应指示灯被点亮(这里实验箱开机复位后默认是点亮的)。通过改变送到i/o接口的8位数,控制8个led灯的亮灭。本实验中使用的单片机的工作频率为12mhz,机器周期为1us。延时1s的实现可通过控制指令周期来实现。(2)、led显示实验:要求在8个led数码管显示8个指定的数(例如学号后8位)。led数码管的电路图如下:如图所示:实验装置上设有8只共阳极七段数码管及驱动电路,8只数码管共数据线,通过片选可以分别显示。段码表为:数码管模块具有两个地址:片选地址(位控地址)0f400h和数据(段码)地址0f300h,要在某个数码管上显示1个数,需要先向片选地址上送一个数,选中其中一个数码管,再向数据地址送要显示的数据的段码值,这就是位控和段控。数码管的i/o地址都为片外地址。数码管要8位同时显示,需要采用动态刷新的方式将8位数码管轮流显示。刷新时间可设为1ms,可用软件延时实现。段码可采用查表法或其它方法来实现,例如查表法tab: db 0c0h,0f9h,三、 实验方案与实验步骤(最好绘制程序流程图)(一)、i/o接口实验(流水灯实验)实验步骤:编译环境为medley(1)新建项目,命名后其它设置按默认进行,无需手工进行任何设置(一路默认设置即可)直到完成项目的创建。(2)添加自己编写的.asm源文件。(3)编译/汇编。(4)用8根导线分别将8个led指示灯 fled0fled7和p0口的8位相连。(5)生成代码并下载到仿真器上。(6)全速运行,即可看到流水灯现象。实验方案:利用实验板i/o口(例如p0口)控制8个led循环显示,循环点亮时间间隔约为1秒。先将a中的数赋01,并送到p0口,即右边第一个灯亮,调用延时,然后a的数值左移,再送p0口,再延时,采用rl a左移,所以当最左边的灯亮后,下一次亮的会是最右边的灯,如此循环反复,流水灯就运作起来了。流程图:开 始将累加器a中赋立即数01,即从右边的灯开始亮起将累加器a中的值送到p0口调用延时将寄存器r2置初始值5将寄存器r3置初始值20将寄存器r4置初始值20将寄存器r5置初始值248将(r5)-1,判断是否为0将(r4)-1,判断是否为0将(r3)-1,判断是否为0nynny将寄存器r6赋168将(r6)-1,判断是否为0将(r2)-1,判断是否为0yy跳出延时子程序将a中的数值左移一位nyn该实验的延时1s用指令周期的个数实现,一个机器周期为1us,所以需要1000000个指令周期。计算所编写程序的延时时间为: (248*2+3)*20+3*20+3+1+2*168*5+3=1000003us(二)、led显示实验实验步骤:编译环境为medley,本实验无需连图,编写.asm源文件,编译后生成代码下载到仿真器上,全速运行,即可看到数码管的现象。实验方案:通过片选地址(位控地址)0f400h和数据(段码)地址0f300h送的内容显示数值。要在8个数码管上显示8个数,需要先向片选地址上送一个数选中其中一个数码管,再向数据地址送要显示的数据的段码值,再选中下一个数码管,然后送该数码管要显示的段码值,如此循环,使数码管动态显示,由于两个数码管之间亮的时间间隔短,视觉暂留,仿佛8位同时显示一样。流程图:开 始将08008401八个数分别送到地址80h79h将立即数79送入寄存器r0中,建立缓冲区首址将位控码fe送寄存器r3 ,并同时送ay 将位控地址0f400送dptr将位控码从a通过dptr间址送到位控口0f400h通过r0间址将要显示的数送a将查询表的地址送dptr将dptr加a中的偏移后,取该地址中的字行代码送到a将段控地址0f300送dptr将段控码从a通过dptr间址送到段控口0f300h将数值2送入r4将数值248送入r5(r5)-1,判断是否为0(r4)-1,判断是否为0y nn进入延时退出延时将r0+1,转向下一个缓冲单元将r3的内容送给a判断位控是否达到最高位a中内容左移一位a的内容即位控码送r3保存yn该实验的延时1ms用指令周期的个数实现,一个机器周期为1us,所以需要1000个指令周期。计算所编写程序的延时时间为:(248*2+1+2)*2+1=999us=0.999ms四、 实验设备与器材配置电脑一台(配有medley编译环境)、mcu单片机实验硬件箱、八根导线五、 实验记录流水灯实验现象:8个led灯从右边到左依次亮,每次只亮一个灯,间隔时间为1s。当亮完最左边的灯时,最右边的灯又开始亮,如此循环反复。数码管显示实验现象:8位学号显示在8个数码管上。六、 实验总结1、 使用keil和medley软件大致相同,但也有些微不同,特别是在运行存储器内容交换的程序时,medley需要下载到单片机里,但是keil不需要。2、 外部数据存储器读/写只能通过累加器a使用间接寻址方式进行,间址寄存器可以是ri或dptr.。3、 查询a累加器里面的位的状态,只能使用acc形式,acc代表累加器地址(e0h)。七、 源代码(一)、i/o接口实验(流水灯实验)org 0000hljmp mainorg 0100hmain:mov a,#01hddd:mov p0,acall delayrl asjmp ddddelay:mov r2,#5; 延时1秒d0: mov r3,#20 d1: mov r4,#20d2: mov r5,#248 djnz r5,$ djnz r4,d2 djnz r3,d1mov r6,#168djnz r6,$ djnz r2,d0 retend(二)、led显示实验:org 0000hljmp mainorg 0100hmain:mov 79h,#01hmov 7ah,#00hmov 7bh,#04hmov 7ch,#08hmov 7dh,#00hmov 7eh,#00hmov 7fh,#08hmov 80h,#00hddd:mov r0,#79h;建立显示缓冲区首址mov r3,#0feh;从右边开始显示mov a,r3;位控码初值ld0:mov dptr,#0f400h;位控口地址movx dptr,a;输出位控码mov a,r0;取出显示数据mov dptr,#tabmovc a,a+dptr;查表取字形代码mov dptr,#0f300h;段控口地址movx dptr,a;输出段控码call delay;延时inc r0;转向下一缓冲单元mov a,r3jnb acc.7,ld1;判断是否到最高位,到,则返回rl a;不到,向显示器高位移位mov r3,a;位控码送r3保存ajmp

温馨提示

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

评论

0/150

提交评论