东华大学51单片机课程设计指导书(硬件实验部分)_第1页
东华大学51单片机课程设计指导书(硬件实验部分)_第2页
东华大学51单片机课程设计指导书(硬件实验部分)_第3页
东华大学51单片机课程设计指导书(硬件实验部分)_第4页
东华大学51单片机课程设计指导书(硬件实验部分)_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机系统设计实验指导书( 硬件部分 )东华大学信息学院自动化系2013 6第一部分硬件系统介绍一、系统资源分配1 .存储器地址分配程序存储器和数据存储器统一编址, 最多可达64k,板载rom (监控程序) 12k; ram1 (程序存储器6264) 8k供用户下载实验程序, ram2 (数据存储 器6264) 8k供用户程序使用。在程序存储器中,0000h2fffh为监控程序存储区,用户不可用。用户i/o区ffffh系统i/o区cfbeh用户i/o区cfbehram2 用户实验程序区7fffhram1 用户实验数据区4fffhrom 系统监控程序区2fffh0000h图1-1存储器系统组织图

2、2 .中断资源单片机系统中可使用的中断信号方式有外中断、定时器中断、串行口中断,相应的中断入口地址如表 1-1所示。另外还可以使用实验箱的8259中断控制器扩展中断资源。表1-1用户中断程序入口表中断名称中断入口地址外中断00003h定时器0中断000bh定时器1中断001bh串行口中断0023h单片机实验指导书第1页3 .地址资源分配本系统采用可编程逻辑器件(cpld) epm7128作为地址译码器,此单元分为两部分:一部分为系统cpld ,完成系统器件如存储器、系统显示控制器、系统串行 通讯控制器的地址译码功能,同时将部分地址译码后输出(插孔 cs0cs7)给用户 使用。它们的地址固定,用

3、户不可改变。另一部分为用户 cpld,它们完全对用户开 放,用户可在一定地址范围内,进行编码,输出为插孔lcs0lcs7的地址选通信号。详细信息如表1-2所示。表12: cpld地址分配表地址范围输出孔/映射器件性质(系统/用户)0000h-2fffh监控程序存储器系统*3000h-3fffh数据存储器系统*4000h-bfffh用户程序存储器系统*000h-cf9fhlcs0lcs7用户cfe0hpc机串行通讯芯片8250系统*cfe8h显示、键盘芯片 8279系统fa0h-cfa7h(;s0系统fa8h-cfafh(cs1系统fb0h-cfb7h(;s2系统fb8h-cfbfh(cs3系统

4、fc0h-cfc7hcs4系统fc8h-cfcfhcs5系统注:系统地址中,除带 “*”用户既不可用,也不可改外,其他系统地址用户可用但不可改。、仿真芯片资源介绍:本实验采用仿真芯片代替实际的8051芯片,仿真芯片具有以下特点:1、支持keil c环境下的汇编、c;2、完全仿真p0、p1、p2 口 ;3、可以设置单步全速断点运行方式;4、可以查阅变量ram xdata等数据;5、仿真器占用了单片机的串行口和定时器2的资源以及部分程序空间。单片机实验指导书第3页6、从0地址开始仿真。用汇编时,注意中断矢量单元为标准设置(如:外部中 断0为0003h, t0溢出中断为 000bh)。、实验箱面板布

5、局:片选信号单片机仿真器8255 信8253 信第二部分软件说明本次实验采用 keil c软件作为源代码的编辑、编译、调试工具。其基本操作方 法如下。1、打开keil c环境。巴f m: i 色口aftel-i *$上口业 ixk 忙弓h=bi mjm 口叭 a 州 42、新建工程或打开工程文件:在主菜单上选“ project ”项,在下拉列表中选 择“new project ”新建工程,浏览保存工程文件为扩展名为“ .uv2”的文 件。或在下拉列表中选择open project ”打开已有的工程文件。tfe ldl epicti qebum fwi ?brjier ab- lodi亚irdo

6、r tfet& * q 毛酿w 3 | tr号* ,3 隔厂 f |百 i血r n 口谿心回numm h jw3、环境设置:新建工程文件后,在工具栏中选择如下图选项设置调试参数及运-b. *np 匚1.3行环境穿依卜3中七1三1,或从主菜单“project ”项中选择单片机实验指导书第25页“options for target targetl ,打开如下图设置窗口。在device”项下选择要仿真的芯片类型,如: generic - 8051。在“target ”项下的晶振设置中修改为硬件电路所用晶振频率,如:6mhz)选择合适存储模式。在“output”项下如在 creat hex file

7、 选项前打勾,则在编译的同时生成可下 载执行的hex文件,用仿真芯片仿真时可以不进行此项设置。在debug”项下选择use: keil moniter-51 driver”使用硬件仿真。点击“settings ”按钮,进入串口选择及波特率设置窗口(如下图所示)选择合适的波特率及串口号。serial interrupt ”项不可选,把前面的勾打掉。 点ok保存设置。在option for target targetl ”窗口中,点确定,退出环境设置。4、新建文件:在主菜单的“file ”下拉列表中选“ new新建文件。编辑文件并保存文件。文件保存为扩展名为“ .c”或 .asm的文件。5、添加文

8、件:在左边的project window/,窗口中,用右键选取source group 1”,在弹出的列表中选择add files to group source group 1 ,弹出浏览窗口。浏览添加编辑好的 c或asm文件。添加完毕点“ close”,关闭窗口。这时发现添加的文件名已出现在“project window ”窗口中。双击刚添加的或asmt件。打开编辑文件窗口。7、译链接:在build bar” .赖国嬲务工具条中,选第二项编译当前文件,第三项为编译全部。编译完成,在下方“output”窗口中出现编译结果。口#上 fjt pr_ cek七明 同5 1口24 九k号北工whfc

9、w 卡51 叁-51 *1史年:舌行13邛部端才mmnijfn拿性可!黑;占eff共&审.黄锄科感的iztt世志蹙北.4m. ffirrwftffejltdiie. ej打上|再划iffll第jijtrirrriii ,rtt,*tii,t- ht11slit-tf ttw*1fo*t,ttf ulcllji rje3 52. a,ikjje : aim 1? u .比 cgr41aptp加七上3 l3i_24a itellxctao: 加大门5 flrut_2t3 mjee鼠fie *能 in t uufiuei口口. ar口号匚皿 emcu.cioa mue口 h, h ! /7、仿真调试

10、:点击调试按钮囤i底国i鹤眄的试 “start/stop debgu session 中。窗口下方显示下载进度条。ctrl+f5 (快捷键 ctrl+f5),100%下载完成后出现如下窗口。2七图 一一丽t金|,或从主菜单选取调程序下载到仿真芯片fell o ?行8、程序仿真:运用运行“ debug bar”调试工具条 反3 r守m工产,进行单步、进入、跳出、运行到光标、全速运行等。凰的浒* *全速运行后,程序不受控。如需再次单步调试,需点击调试工具停止按钮,停止调试。停止后,硬件复位仿真芯片,再次运行第7步。第三部分 基础实验实验 1 p1 口实验一一、实验目的:1 学习p1 口的使用方法。

11、2 学习延时子程序的编写和使用。二、实验设备:cpus 箱、8031cpuii块三、实验内容:1 p1 口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。2 p1 口做输入口,接八个按纽开关,以实验箱上74ls273 做输出口,编写程序读取开关状态,在发光二极管上显示出来。四、实验原理:p1 口为准双向口, p1 口的每一位都能独立地定义为输入位或输出位。作为输入位时,必须向锁存器相应位写入“ 1” ,该位才能作为输入。 8031 中所有口锁存器在复位时均置为“ 1 ” ,如果后来在口锁存器写过“ 0 ” ,在需要时应写入一个“ 1 ” ,使 它成为一个输入。可以用第二个实验做一下

12、实验。先按要求编好程序并调试成功后,可将p1 口锁存器中置“ 0” ,此时将 p1 做输入口,会有什么结果。再来看一下延时程序的实现。现常用的有两种方法,一是用定时器中断来实现,一是用指令循环来实现。本实验由于延时时间较短, 故采用后一种方法。本实验系统晶振为 6.144mhz,则一个机器周期为12+6.144us即1 + 0.512us。现要写一个延时0.1s 的程序,可大致写出如下:mov r7 , #x(1)del1 : mov r6, #200(2)del2 : djnz r6, del2( 3 )djnz r7 , del1(4)上面mov djnz指令均需两个机器周期,所以每执行一

13、条指令需要1 + 0.256us ,现求出x值:1 + 0.256 +x (1 + 0.256 + 200 x 1 + 0.256+ 1 +0.256 ) =0.1 x 10?指令(1)指令(2)指令(3)指令(4)所需时间所需时间所需时间所需时间x=(0.1 xx 1021 +0.256)/ (1 +0.256+200 x 1 + 0.256+1 +0.256 ) =127d=7fh经计算得x=127o代入上式可知实际延时时间约为0.100215s ,已经很精确了。五、实验原理图:p1 口输出实验tnulutn-tnunutlilinup1 口输入实验六、实验步骤:执行程序1(t1_1.as

14、m)时:p1.0p1.7接发光二极管 l1l8。执行程序2(t1_1.asm)时:p1.0p1.7接平推开关 k1k8; 74ls273的o(h o7接发光二极管l1l8; 74ls273的片选端cs273接cs0(由程序所选择的入口地址而定,与cso- cs7相应的片选地址请查看第一部分系统资源,以后不赘述)。七、程序框图:循环点亮发光二极管通过发光二极管将 p1 口的状态显示八、参考程序:1、循环点亮发光二极管(t1name t1_1;p1cseg at 0000hljmp startcseg at 4100hstart: mov a,#0fehloop: rl a ;mov p1,a l

15、call delay jmp loop;delay: mov r1,#127del1: mov r2,#200del2: djnz r2,del2djnz r1,del1 ret;1.asm)口输实验左移一位,点亮下一个发光二极管;延时0.1秒延时0.1秒end2、通过发光二极管将p1name t1_2out_port equcseg at 0000hljmp startcseg at 4100hstart: mov p1,#0ffhmov a,p1mov dptr,#out_portmovx dptr,a ;jmp start ;(t1_2.asm);p10cfa0h口输入实验复位 p1 口

16、为输入状态; 读 p1 口的状态值入累加器 a将输出口地址赋给地址指针dptr将累加器a的值赋给dptr旨向的地址继续循环监测端口 p1 的状态end思考题:将 p1 口读入的开关状态用led 闪烁显示,闪烁的方式为每间隔一秒显示一次。实验2 p1 口实验二一、实验目的:1. 学习p1 口既做输入又做为输出的使用方法。2. 学习数据输入、输出程序的设计方法。二、实验设备:cpu 箱、8031cpuii块三、实验原理:p1 口的使用方法这里不讲了。有兴趣者不妨将实验例程中的“ setbp1.0, setb p1.1 ”中的“ setb改为 clr看看会有什么结果。另外,例程中给出了一种 n路转移

17、的常用设计方法,该方法利用了 jmpa+dptr的计算功能,实现转移。该方法的优点是设计简单,转移表短,但转移表大小加上 各个程序长度必须小于 256字节。四、实验原理图:+5vgfu3031p1 口输入、输出实验五、实验步骤:平推开关的输出 k1接p1.0; k2接p1.1 ;发光二极管的输入 l1 接 p1.2 ; l2 接 p1.3 ; l5 接 p1.4 ; l6 接 p1.5 。运行实验程序, k1 做为左转弯开关, k2 做为右转弯开关。 l5 、 l6 做为右转弯灯,l1、 l2 做为左转弯灯。结果显示: 1: k1 接高电平 k2 接低电平时,右转弯灯(l2)以一定频率闪烁;2

18、: k2接高电平k1接低电平时,左转弯灯(l6)以一定频率闪烁;3: k1、 k2 同时接低电平时,发光二极管全灭;4 : k1、 k2 同时接高电平时,发光二极管全亮。六、参考程序: t2.asmname t2;p1cseg at 0000hljmp startcseg at 4100hstart: setb p1.0setb p1.1;mov a,p1anl a,#03h;mov dptr,#tab ;movc a,a+dptr jmp a+dptrtab: db prg0-tabdb prg1-tabdb prg2-tabdb prg3-tabprg0: mov p1,#0ffh ;jm

19、p startprg1: mov p1,#0f3h ;acall delay ;mov p1,#0ffh ;acall delay ;jmp startprg2: mov p1,#0cfh ;acall delay ;mov p1,#0ffh ;acall delayl5、l6)灭,左转弯灯(l1l1、l2)灭,右转弯灯(l5发光二极管全灭;发光二极管全亮。口输入输出实验用于输入时先置位口内锁存器从 p1 口读入开关状态, 取低两位转移表首地址送dptr向p1 口输出#0ffh,发光二极管全灭此时 k1=0,k2=0只点亮l5、l6,表示左转弯此时 k1=1,k2=0再熄灭 0.5 秒延时 0

20、.5 秒只点亮l7、l8,表示右转弯此时 k1=0,k2=1再熄灭 0.5 秒jmp start发光二极管全亮 , 此时 k1=1,k2=1prg3: mov p1,#00hjmp startdelay: mov r1,#5;延时0.5秒del1: mov r2,#200del2: mov r3,#126del3: djnz r3,del3djnz r2,del2djnz r1,del1ret七、程序框图:end思考题:修改程序,使k1, k2接高电平时,所有发光二极管闪烁。实验 3 简单 i/o 口扩展实验一交通灯控制实验一、实验目的:1 学 习在单片机系统中扩展简单i/o 接口的方法。2

21、学 习数据输出程序的设计方法。3 学 习模拟交通灯控制的实现方法。 二、实验设备:cpus 箱、8031cpuii块三、实验内容:扩展实验箱上的 74ls273 做为输出口,控制八个发光二极管亮灭,模拟交通灯管理。四、实验原理:要完成本实验,首先必须了解交通路灯的亮灭规律。本实验需要用到实验箱上八个发光二极管中的六个,即红、 黄、绿各两个。不妨将l1(红)、l2 (绿)、l3(黄) 做为东西方向的指示灯,将 l5 (红)、l6 (绿)、l7 (黄)做为南北方向的指示灯。 而交通灯的亮灭规律为:初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东

22、西路口绿灯灭,黄灯开始闪烁。闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。闪烁若干次后,再切换到东西路口方向, 重复上述过程。 各发光二极管的阳极通过保护电阻接到 +5v 的电 源上,阴极接到输入端上,因此使其点亮应使相应输入端为低电平。五、实验原理图mwmm1|%tbg日a3un0白目4u*泞渴洒nieg*vi9r=vooeoooo-ibg11 彳一273六、实验步骤:74ls273的输出。-07接发光二极管 l1l8, 74ls273的片选cs273接片选信 号 cso.运行实验程序,观察 led显示情况是否与实验内

23、容相符。七、程序框图:八、参考程序:t3.asmname t3 ;i/o口扩展实验一port equ 0cfa0h ;片选地址 cs0cseg at 0000hljmp startcseg at 4100hstart: mov a,#11h;两个红灯亮,黄灯、绿灯灭acall disp;调用273显示单元(以下雷同)acall de3s ;延时 3 秒lll: mov a,#12h;acall disp东西路口绿灯亮 ; 南北路口红灯亮acall de10s ;延时 10 秒mov a,#10h;acall disp东西路口绿灯灭; 南北路口红灯亮mov r2,#05h;r2中的值为黄灯闪烁次

24、数ttt: mov a,#14h;acall disp东西路口黄灯亮 ; 南北路口红灯亮acall de02s ;延时 0.2 秒mov a,#10h;acall disp东西路口黄灯灭; 南北路口红灯亮acall de02s ;延时 0.2 秒djnz r2,ttt ;返回iii,使东西路口黄灯闪烁五次mov a,#11h;acall disp两个红灯亮,黄灯、绿灯灭acall de02s ;延时 0.2 秒mov a,#21h;acall disp东西路口红灯亮 ; 南北路口绿灯亮acall de10s ;延时 10 秒mov a,#01h;acall disp东西路口红灯亮 ; 南北路口

25、绿灯灭mov r2,#05h;黄灯闪烁五次ggg: mov a,#41h;acall disp东西路口红灯亮 ; 南北路口黄灯亮acall de02s ;延时 0.2 秒mov a,#01h;acall disp东西路口红灯亮 ; 南北路口黄灯灭acall de02s ;延时 0.2 秒djnz r2,ggg ;返回ggg使南北路口 ;黄灯闪烁五次mov a,#03h;两个红灯亮,黄灯、绿灯灭acall dispacall de02s ;延时 0.2 秒jmp lll ;转 lll 循环de10s: mov r5,#100; 延时 10 秒jmp de1de3s: mov r5,#30; 延时

26、 3 秒jmp de1de02s: mov r5,#02; 延时 0.2 秒de1: mov r6,#200de2: mov r7,#126de3: djnz r7,de3djnz r6,de2djnz r5,de1retdisp: mov dptr,#port ;273 显示单元cpl amovx dptr,aretend单片机实验指导书第29页思考题:修改程序,要求将红绿灯控制循环中,红绿灯转换时,黄灯闪烁 灯亮,黄、绿灯全灭”状态,改为“红绿灯全灭,东西、南北方向黄灯闪烁5 次后的“红10 次” 。实验4简单i/o 口扩展实验二一、实验目的:1 .学习在单片机系统中扩展简单i/o 口的方

27、法。2 .学习数据输入,输出程序的编制方法。二、实验设备:cpu 挂箱、8031cpuii块三、实验原理:mcs-51外部扩展空间很大,但数据总线口和控制信号线的负载能力是有限的。若需要扩展的芯片较多,则mcs-51总线口的负载过重,74ls244是一个扩展输入口,同时也是一个单向驱动器,以减轻总线口的负担。程序中加了一段延时程序,以减少总线口读写的频繁程度。延时时间约为0.01秒,不会影响显示的稳定。 四、实验内容:利用74ls244做为输入口,读取开关状态,并将此状态通过发光二极管显示出 来。五、实验原理图:tntnu简单i/o实验2六、实验步骤:1 . 74ls244的in0in7接开关

28、的k1k8,片选信号 cs244接cs1。单片机实验指导书第24页2 . 74ls273的。卜o7接发光二极管的 l1l8,片选信号 cs273接cs23 .编程、全速执行。4 .拨动开关k1k8,观察发光二极管状态的变化。七、程序框图:八、参考程序:t4.asmname t4 ;i/o口扩展实验cseg at 0000hljmp startcseg at 4100hinport equ 0cfa8h ;74ls244 端口地址outport equ 0cfb0h ;74ls273 端口地址start: mov dptr,#inportloop: movx a,dptr ;读开关状态mov d

29、ptr,#outportmovx dptr,a ; 显示开关状态mov r7,#10h; 延时del0: mov r6,#0ffhdel1: djnz r6,del1djnz r7,del0jmp startend实验 5 中断实验有急救车的交通灯控制实验一、实验目的:1 学习外部中断技术的基本使用方法。2 学习中断处理程序的编程方法。二、实验设备:cpu挂箱、8031cpu模块三、实验内容:在实验三的内容的基础上增加允许急救车优先通过的要求。 当有急救车到达时,两个方向上的红灯亮,以便让急救车通过,假定急救车通过路口的时间为 10 秒,急救车通过后,交通灯恢复中断前的状态。本实验以单脉冲为中

30、断申请,表示有急救车通过。四、实验原理:交通灯的燃灭规律见实验三。本实验中断处理程序的应用,最主要的地方是如何保护进入中断前的状态,使得中断程序执行完毕后能回到交通灯中断前的状态。 要保护的地方, 除了累加器acc、标志寄存器 psm卜,还要注意:一是主程序中的延时程序和中断处理程序中的延时程序不能混用,本实验给出的程序中,主程序延时用的是rs r& r7,中断延时用的是ra r4和新的r5。第二,主程序中每执行一步经74ls273的端口输出数据的操作时,应先将所输出的数据保存到一个单元中。因为进入中断程序后也要执行往74ls273 端口输出数据的操作, 中断返回时如果没有恢复中断前74ls2

31、73 端口锁存器 的数据,则显示往往出错,回不到中断前的状态。 还要注意一点,主程序中往端口输出数据操作要先保存再输出,例如有如下操作:mov a ,#0f0h( 0)movx r1,a( 1)mov save, a( 2 )程序如果正好执行到( 1 )时发生中断,则转入中断程序,假设中断程序返回主程序前需要执行一句mov a, savejf令,由于主程序中没有执行(2),故save中的内容实际上是前一次放入的而不是(0)语句中z出的 0f0h,显示出错,将(1)、2)两句顺序颠倒一下则没有问题。发生中断时两方向的红灯一起亮10 秒,然后返回中断前的状态。五、实验原理图:(同实验三)六、实验步

32、骤:74ls273的输出。卜o7接发光二极管 l1l8,74ls273的片选 接片选信 号cs2此时74ls273的片选地址为 cfb0+ cfb7h之间任选。单脉冲输出端 p-接cpu 板上的int0。七、程序框图:主程序框图开始置口地址外部中断初始优两个芬灯亮延时拙 卜1东西路口绿灯品 割匕路口红灯壳1111延时一秒1 1 1东西路一灯灭西路口司丁闪烁5次|1两红灯亮延时。之秒南北洛匚绿火一帚灯网路口红灯亮| 1 延时1例.1,南w国口渤ta.1,南:嘀口黄灯闪烁妖用红灯亮延时0 2秒中断程序框图打断入口.1.有关寄存器人代, 1 , 操信端口使红灯金亮,苣、缥灯金灭1延时10秒.1取中断

33、前所俣存的数据输出,恢复原始状态,1.情关寄后署出一.1.|外都中断后t标志置位|, 1 , 中断返回单片机实验指导书第61页八、参考程序: t5.asmname t5;outport equ 0cfb0hsave equ 55h ;savecseg at 0000hljmp startcseg at 0003hljmp intcseg at 4100hstart: setb it0setb ex0setb eamov a,#11h;mov save,a;acall disp;acall de3s;lll: mov a,#12h;mov save,aacall dispacall de10s

34、;mov a,#10h;mov save,aacall dispmov r2,#05h;ttt: mov a,#14hmov save,aacall dispacall de02smov a,#10hmov save,aacall dispacall de02sdjnz r2,tttmov a,#11h;mov save,aacall dispacall de02s ;mov a,#21h;mov save,aacall disp中断控制实验端口地址保存从端口 cfa0 输出的数据置首显示码保存显示输出延时 3 秒东西路口绿灯亮,南北路口红灯亮延时 10 秒东西路口绿灯灭东西路口黄灯闪烁5 次

35、红灯全亮延时 0.2 秒东西路口红灯亮,南北路口绿灯亮acall de10s mov a,#01h mov save,a acall disp mov r2,#05h ggg: mov a,#41h mov save,a acall disp acall de02s mov a,#01h mov save,a acall disp acall de02s djnz r2,ggg mov a,#11h mov save,a acall disp acall de02s jmp lll ;de10s: mov r5,#100 jmp de1de3s: mov r5,#30 jmp de1de02s

36、: mov r5,#02 de1: mov r6,#200 de2: mov r7,#126 de3: djnz r7,de3 djnz r6,de2 djnz r5,de1 retint: clr eapush acc push psw mov a,r5 push acc mov a,#11h;acall dispdel10s: mov r3,#100 del1: mov r2,#200 del2: mov r5,#126延时 10 秒南北路口绿灯灭南北路口黄灯闪烁5 次红灯全亮延时 0.2 秒转 lll 循环延时 10 秒延时 3 秒延时 0.2 秒中断处理红灯全亮,绿、黄灯全灭延时 10

37、 秒del3: djnz r5,del3djnzr4,del2djnzr3,del1mova,save ;acalldisppopacc ;movr5,apoppswpopaccsetbea ;reti取save中保存数据输出到 cfa0端口出栈允许外部中断disp: mov dptr,#outportcpl amovx dptr,aretend思考题:修改程序, 要求按下单脉冲按钮pulse 后, 红灯状态由常亮方式改为闪烁方式,时间 10 秒,然后恢复原状态。实验 6 定时器实验循环彩灯实验一、实验目的:1 学习 8031 内部计数器的使用和编程方法。2 进一步掌握中断处理程序的编写方法。

38、 二、实验设备:cpu挂箱、8031cpu模块三、实验原理:3 定时常数的确定定时器 / 计数器的输入脉冲周期与机器周期一样, 为振荡频率的 1/12 。本实验 中时钟频率为6.0 mhz现要采用中断方法来实现0.5秒延时,要在定时器 1中设置一个时间常数,使其每隔0.1秒产生一次中断,cpup向应中断后将 r0中计数值减一, 令r0=05h即可实现0.5秒延时。时间常数可按下述方法确定:机器周期=12+晶振频率=12/(6 x10?)=2us-6设计数初值为 x,则(2e+16-x) x 2x10=0.1 ,可求得 x=15535化为十六进制则 x=3cafh故初始值为 th1=3ch tl

39、1=afh4 初始化程序包括定时器初始化和中断系统初始化,主要是对 ip、ie、tcon tmod勺相应位 进行正确的设置,并将时间常数送入定时器中。由于只有定时器中断, ip 便不必设置。5 设计中断服务程序和主程序中断服务程序除了要完成计数减一工作外, 还要将时间常数重新送入定时器中,为下一次中断做准备。主程序则用来控制发光二极管按要求顺序燃灭。 四、实验题目由 8031 内部定时器 1 按方式 1 工作,即作为16 位定时器使用,每0.1 秒钟 t1溢出中断一次。p1 口的p1.0p1.7分别接发光二极管的l1l8。要求编写程序模拟一循环彩灯。彩灯变化花样可自行设计。例程给出的变化花样为

40、:l1、l2、l8依次点亮;l1、l2、l8依次熄灭;l1、l2、l8全亮、全灭。各时序间隔为 0.5 秒。让发光二极管按以上规律循环显示下去。五、实验电路:六、实验步骤:p1.0p1.7分别接发光二极管 l1l8即可。七、程序框图:t6.asm主程序框图中断程序框图开始i理皆显示码小、初始也垠涓移箧阳)、计数初值i叫七、参考程序: t6.asmname t6 ;定时器实验cseg at 0000hljmp startcseg at 001bh定时器 / 计数器 1 中断程序入口地址ljmp intcseg at 4100hstart: mov a,#01h ; 首显示码cpl amov r1

41、,#03h ;03mov r0,#05h ;05mov tmod,#10h ;mov tl1,#0afh ;mov th1,#03chorl ie,#88h ;cpu ;1setb tr1 ;是偏移量,即从基址寄存器到表首的距离是计数值计数器置为方式1装入时间常数中断开放标志位和定时器溢出中断允许位均置位开始计数loop1: cjne r0,#00,disp计数计完一个周期,重置初值表地址偏移量加1如到表尾,则重置偏移量初值从表中取显示码入累加器mov r0,#05h ;r0inc r1 ;cjne r1,#15h,loop2mov r1,#03h ;loop2: mov a,r1 ;movc

42、 a,a+pccpl ajmp dispdb 01h,03h,07h,0fh,1fh,3fh,7fh,0ffh,0feh,0fchdb 0f8h,0f0h,0e0h,0c0h,80h,00h,0ffh,00hdisp: mov p1,a;将取得的显示码从p1 口输出显示jmp loop1int: clr tr1;停止计数dec r0 ;计数值减一mov tl1,#0afh ; 重置时间常数初值mov th1,#03chsetb tr1 ;开始计数reti ; 中断返回end思考题:修改程序,使彩灯变化花样为: l1、l2、l8依次点亮;l1、l2、l8依 次熄灭;以双灯方式 l1l2、l3l4

43、、依次点亮;以双灯方式 l8l7、l6l5、依 次熄灭。实验7 8255a可编程并行接口实验一、实验目的:1 . 了解8255a芯片的结构及编程方法。2 .掌握通过8255a并行口读取开关数据的方法。二、实验设备:cpu 挂箱、8031cpuii块三、实验原理:设置好8255a各端口的工作模式。实验中应当使三个端口都工作于方式0,并使a 口为输出口, b 口为输入口。四、实验内容:利用8255a可编程并行接口芯片,重复实验四的内容。实验可用b通道作为开关量输入口, a通道作为显示输出口。五、实验电路:44-111gnd4-4-4 i-i-ho白f-白773修 u ni 可口 用到口 刈 2 曾

44、出旧* *8255六、实验步骤:8255a 的pah pa7接发光二极管 l1l8; pbg pb7接开关 k1k8;片选信号 8255cs接 csq七、程序框图:八、参考程序:t7.asmname t7;8255acseg at 0000hljmp startcseg at 4100hpa equ 0cfa0hpb equ 0cfa1hpctl equ 0cfa3hstart: mov dptr,#pctl ;;mov a,#82hmovx dptr,aloop: mov dptr,#pb ;movx a,dptrmov dptr,#pa ;movx dptr,a mov r7,#10h ;

45、实验一置8255a控制字,a b、c 口均工作 方式0, a、c 口为输出,b 口为输入从b 口读入开关状态值从a 口将状态值输出显示延时del0: mov r6,#0ffhdel1: djnz r6,del1djnz r7,del0jmp loopend思考题:修改连线,使pa 口接开关, pb 口接 led 发光二极管;并修改程序,使开关在推上时,led亮;使开关在拨下时,led灭。实验 8 8255a 可编程并行接口实验二键盘实验一、实验目的:1 掌握 8255a 编程原理。2 了解键盘电路的工作原理。3 掌握键盘接口电路的编程方法。二、实验设备:cpus 箱、8031cpuii块三、实

46、验原理:1 识别键的闭合,通常采用行扫描法和行反转法。行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如所读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。本实验例程采用的是行反转法。行反转法识别键闭合时,要将行线接一并行口,先让它工作于输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使cpu通过输出端口往各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为 0。然后,程序对两个并行端口进行方式设置,使行线工作于输入方式, 列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上的输入值,那么,

47、在闭合键所在的行线上的值必定为0。这样,当一个键被按下时,必定可以读得一对唯一的行线值和列线值。2程序设计时,要学会灵活地对8255a 的各端口进行方式设置。3程序设计时,可将各键对应的键值(行线值、列线值)放在一个表中,将要显示的0f字符放在另一个表中,通过查表来确定按下的是哪一个键并正确显示出来。实验题目利用实验箱上的 8255a 可编程并行接口芯片和矩阵键盘,编写程序,做到在键盘上每按一个数字键(0f),用发光二极管将该代码显示出来。四、实验步骤:将键盘 rl10rl17接 8255a 的 pb0pb7; ka10- ka12 接 8255a 的 pa0pa2;pco- pc7接发光二极

48、管的l1l8; 8255a芯片的片选信号 8255cs接cs&五、实验电路:口二.六、程序框图t8.asm源代码参考: 将键盘 rl10rl17接8255a的pb0pb7;ka10 ka12 接 8255a 的 pa0pa2;pc0pc7接发光二极管的 l1l8 ;8255a 芯片的片选信号8255cs 接 cs0 。本程序与普通8051 程序在查表时有所不同,见程序中注释部分;8255 键盘实验name t8pa equ 0cfa0hpb equ pa+1pc0 equ pb+1pctl equ pc0+1cseg at 0000hljmp startcseg at 0100hstart:mov42h,#0ffh;42h 中放显示的字符码,初值为 0ffhsta1:movdptr,#pctl; 设置控制字, abc 口工作于方式0;ac 口输出而b 口用于输入mova,#82hmovxdptr,aline:movdptr,#pc0; 将字符码从c 口输出显示mova,42hcplamovxdptr,

温馨提示

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

最新文档

评论

0/150

提交评论