还剩33页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
前言由于单片机具有高可靠性、超小型、低价格、容易产品化等特点,在仪器仪表智能化、实时工业控制、实时数据采集、智能终端、通信设备、导航系统、家用电器等控制应用领域,具有十分广泛的用途目前在国内单片机应用中,MCS-51系列单片机仍然是一种主流单片机为配合《单片机应用技术》课程的教学,使学生尽快了解、掌握89C51单片机的使用,特编写了这本上机指导书(基础篇)《单片机》是一门实践性很强的课程,提高教学质量的一个重要环节是上机实习和训练,无论是学习汇编语言程序设计,还是学习接口电路和外设与计算机的连接,或者软硬兼施地研制单片机应用系统,不通过加强动手是不能获得预期效果的本实验指导书提供了9个实验的指导性材料,实验还有一些思考题,可以根据课时的安排和教学要求进行取舍为了达到某些实验的目的,书中提供的参考程序与实际应用中的程序会有些差别,所以不一定是最优的由于时间紧迫,加上编者学识有限,如有不妥之处,欢迎读者批评指正编者实验须知
1.实验前必须阅读教科书的有关部分和本实验指导书,了解实验目的、内容、步骤,做好实验前的准备工作,编写好实验中要求自编或修改的程序;完成实验前要求完成的准备工作后方可以上机实验,否则不得上机操作
2.各种电源的电压和极性不能接错,严禁带电接线和接插元器件通电前须经过指导教师检查认可后方能通电
3.不准随意拨弄各种与实验无关的旋钮和开关,凡与本次实验无关的任何设备都禁止动用和摸弄,注意安全
4.严禁用手触摸实验系统印制电路板和元器件的引脚,防止静电击穿芯片
5.实验中若损坏仪器或元器件,应及时向指导教师报告,听候处理
6.在实验室内保持安静和卫生,不得随意走动和喧哗,集中精力完成实验
7.实验完成后,关掉电源,及时整理实验台桌面,保持环境整洁
8.按规定认真完成实验报告,对实验中出现的现象进行分析,在规定的时间内交上实验报告
9.凡实验或实验报告未能按规定完成的学生,不能参加本课程的考试或考查第一章实验系统介绍本实验系统采用EL-MUT-III型单片机教学实验系统
1.系统概述1)微处理器89S51,P1口、P3口对用户开放,供用户使用2)时钟频率
6.0MHz3)存储器程序存储器与数据存储器统一编址,最多可达64KB,板载ROM(监控程序27C256)12KB;RAM1(程序存储器6264)8KB供用户下载实验程序,可扩展达32KB;RAM2(数据存储器6264)8KB供用户程序使用,可扩展达32KB0000H----2FFFH为监控程序存储器区,用户不可用4000H----5FFFH为用户实验程序存储区,供用户下载实验程序数据存储器的范围为6000H----7FFFH,供用户实验程序使用用户在编写实验程序时要注意,程序的起始地址应为4000H,所用的中断入口地址均应在原地址的基础上,加上4000H用户中断入口地址见表1-1表1-1用户中断程序入口表中断名称8051原中断程序入口用户实验程序响应程序入口外中断00003H4003H定时器0中断000BH400BH外中断10013H4013H定时器1中断001BH401BH串行口中断0023H4023H
2.资源分配本系统采用可编程逻辑器件(CPLD)EPM7128做为地址的译码地址的编译码分为两部分一部分为系统CPLD,提供了系统器件(如监控程序存储器、用户程序存储器、数据存储器、系统显示控制器、系统串行通讯控制器等)的地址译码功能,此外还通过插孔CS
0、CS
1、CS
2、CS
3、CS
4、CS5提供固定的译码地址给用户使用译码地址见表1-2另一部分为用户CPLD,它完全对用户开放,用户可通过芯片的JTAG接口与PC机相连,对芯片进行编程,得到译码地址,由插孔LCS
0、LCS
1、LCS
2、LCS
3、LCS
4、LCS
5、LCS
6、LCS7输出,供使用表1—2CPLD地址分配表地址范围输出孔/映射器件性质(系统/用户)0000H---2FFFH监控程序存储器系统*3000H---3FFFH数据存储器系统*4000H---7FFFH用户程序存储器系统*8000H---CFDFHLCS0---LCS7用户CFE0HPC机串行通讯芯片8250系统*CFE8H显示、键盘芯片8279系统CFA0H---CFA7HCS0系统CFA8H---CFAFHCS1系统CFB0H---CFB7HCS2系统CFB8H---CFBFHCS3系统CFC0H---CFC7HCS4系统CFC8H---CFCFHCS5系统CFD0H---FFFFHLCS0----LCS7用户注系统地址中带“*”的表示用户不可用,也不可改,其他系统地址用户可用,但不可改
3.系统使用方法1)用通信电缆将EL-MUT-III型单片机教学实验系统侧面的RS232接口与PC机的COM口相连接2)启动EL-MUT-III型单片机教学实验系统的电源开关,EL-MUT-III型单片机教学实验系统面板上的LED显示“199502”,几秒后显示P-3)双击桌面MCS51快捷图标如图1-1,启动51实验系统,启动后的界面如图1-2图1-1图1-24)如需改变串口和波特率,在相应列表框中修改点击“确定”按钮后,立即实验系统面板上的“PRESET”键,面板上的LED显示“C-”,同时PC机屏幕显示“51EL型(80C51)教学实验环境”界面,如图1-3图1-351EL型(80C51)教学实验环境界面5)通过“文件”菜单新建或打开汇编语言文件,也可通过工具按钮新建汇编文件新建汇编文件的扩展名为.ASM6)用“编译”菜单下的汇编命令或工具按钮对汇编文件进行汇编如有错误,应对文件重新编辑,直至汇编无错误为止7)用“调试”菜单下的“调试”命令或工具按钮进入“调试”界面,如图1-4图1-4“调试”界面8)用“调试”菜单下各调试命令,如图1-5对汇编文件进行调试,或用工具按钮对汇编文件进行调试工具按钮的功能如图1-6图1-5图1-6第二章上机指导实验一P1口实验
(一)
一、实验目的1.学习P1口作为输出口的使用方法2.延时子程序的编写和使用
二、实验设备EL-MUT-III型单片机实验箱、8051CPU模块
三、实验原理实验原理如图2-1-1图2-1-1P1口输出实验电路1.P1口的使用方法P1口为准双向口,每一位都能独立地定义为输入位或输出位作为输入位时,必须向锁存器相应位写入“1”89S51在复位时所有口锁存器均置为“1”,如果曾对口锁存器写过“0”,此时要使它作为一个输入口,则应再次写入一个“1”2.延时程序的实现常用两种方法实现延时程序,一是用定时器中断来实现,二是用指令循环来实现在系统时间允许的情况下可以采用后一种方法本实验系统晶振为
6.0MHZ,则一个机器周期为12÷6us=2us延时
0.1s的程序如下MOVR7,#X
(1)DEL1MOVR6,#200
(2)DEL2DJNZR6,DEL2
(3)DJNZR7,DEL1
(4)程序中X为延时值指令MOV、DJNZ需两个机器周期,所以每执行一条指令需要4us延时程序中X值应满足下式4+X4+200×4+4)=
0.1×106指令
(1)时间指令
(2)时间指令
(3)时间指令
(4)时间故X=
123.75D=7CH将X=
123.75D=7CH代入上式,得到实际延时时间约为
0.1002S3.程序流程图程序流程图见图2-1-2和图2-1-3图2-1-2点亮发光二极管程序流程图图2-1-3左移循环点亮发光二极管程序流程图
四、实验内容与步骤1.实验内容1)P1口做输出口,接八只发光二极管,根据程序流程图2-1-2,编写程序使P1口8个发光二极管同时熄灭-----延时-----点亮2)根据程序流程图1-3,编写程序使P1口8个发光二极管每隔一个左移循环点亮2.实验步骤1)将P
1.0~P
1.7分别连接发光二极管L1~L82)按流程图2-1-2编写程序,对程序进行编辑、汇编直至无语法错误3)调试程序
(1)单步调试,观察并记录相应寄存器内容及发光二极管L1~L8的状态
(2)全速运行程序,观察并记录发光二极管L1~L8的状态4)重复
2、3步骤,进行实验内容2的实验
五、实验报告1.写出使P1口8个发光二极管同时熄灭-----延时-----点亮源程序清单,并对每条指令给予注解2.写出使P1口8个LED每隔一个(或二个)左移循环点亮源程序清单,并对每条指令给予注解
六、思考题1.改变延时常数,重做实验2.修改程序,使LED发光方式、方向等改变
七、参考程序1.点亮8个LED程序清单ORG4000HLJMPSTARTORG4100HSTART MOVA,#00HMOVP1,A;点亮8个LEDLCALLDELAY;延时
0.1秒MOVA,#0FFHMOVP1,A;熄灭8个LEDLCALLDELAY;延时
0.1秒JMPSTARTDELAY MOVR1,#124;延时
0.1秒DEL1MOVR2,#200DEL2DJNZR2,DEL2DJNZR1,DEL1RETEND2.循环点亮LED程序清单ORG4000HLJMPSTARTORG4100HSTART MOVA,#0FEHLOOP MOVP1,A;点亮1个LEDRLA;左移一位,点亮下一个发光二极管LCALLDELAY;延时
0.1秒JMPLOOPDELAY MOVR1,#124;延时
0.1秒DEL1MOVR2,#200DEL2DJNZR2,DEL2DJNZR1,DEL1RETEND实验二P1口实验
(二)
一、实验目的1.P1口作为输入口的使用方法2.掌握数据输入、输出程序的设计方法
二、实验设备EL-MUT-III型单片机实验箱、8051CPU模块
三、实验原理1.P1口作为输入口实验原理见图2-2-1图2-2-1P1口作为输入口实验电路2.程序流程图程序流程图见图2-2-2图2-2-2显示P1口状态程序流程图
四、实验内容与步骤1.实验内容P1口做输入口如图2-2-1,P1口的P
1.0-P
1.8分别接8个单刀双郑开关K1~K8,74LS273做输出口接八个LED,编写程序读取开关K1-K8状态,并在LED上显示出来2.实验步骤1)根据图2-2-1连线,CS273接CS02)根据流程图2-2-2编写相应程序,对程序进行编辑、汇编直至无语法错误3)调试程序,拨动开关K1-K8,观察并记录程序运行结果
五、实验报告仿照实验一,写出相应的实验报告
六、思考题1.图2-2-1中芯片74LS273的作用是什么?2.在图2-2-1中,若LED反转1800,电路和程序如何修改?
七、参考程序;通过LED将P1口的状态显示ORG0000HLJMPSTARTORG4100HSTART MOVP1,#0FFH;设置P1口为输入状态LP MOVA,P1;P1口的状态读入累加器AMOVDPTR,#0CFA0H;74LS273地址(输出口地址)送DPTRMOVX@DPTR,A;A的值送LED显示JMPLP;继续循环监测端口P1的状态END实验三P1口实验
(三)
一、实验目的1.掌握P1口既做输入又做输出的使用方法2.掌握分支程序的设计方法
二、实验设备EL-MUT-III型单片机实验箱、8051CPU模块
三、实验原理1.P1口同时作输入、输出口电路原理见图2-3-1图2-3-1P1口同时作输入、输出口实验电路2.程序流程图程序流程图见图2-3-2
四、实验内容与步骤1.实验内容图2-3-1为模拟汽车转向灯控制电路图,K1为左转弯开关,L
5、L6做为左转弯灯;K2为右转弯开关,L
7、L8做为右转弯灯编写程序实现表2-3-1的功能表2-3-1开关K
1、K2功能表图2-3-2P1口既做输入又做输出程序流程图2.实验步骤1)根据图2-3-1连线2)输入相应程序,对程序进行编辑、汇编直至无语法错误3)调试程序,拨动开关K1-K2,观察并记录程序运行结果
五、实验报告仿照实验一,写出相应的实验报告
六、思考题当K1K2=11时,左转弯灯和右转弯灯同时闪烁,程序应如何修改?编程并调试
七、参考程序;P1口同时作输入、输出口实验程序ORG4000HLJMPSTARTORG4100HSTART SETBP
1.0SETBP
1.1;用于输入时先置位口内锁存器L0MOVA,P1ANLA,#03H;从P1口读入开关状态,取低两位CJNEA,#00H,L1LJMPPRG0L1CJNEA,#01H,L2LJMPPRG1L2CJNEA,#02H,L3LJMPPRG2L3CJNEA,#03H,L4LJMPPRG3L4LJMPL0PRG0MOVP1,#0FFH;向P1口输出#0FFH,LED全灭;此时K2K1=00LJMPSTARTPRG1MOVP1,#0F3H;只点亮L
5、L6,表示左转弯ACALLDELAY;此时K2K1=01MOVP1,#0FFH;熄灭LED
0.5秒ACALLDELAY;延时
0.5秒LJMPSTARTPRG2MOVP1,#0CFH;只点亮L
7、L8,表示右转弯ACALLDELAY;此时K2K1=10MOVP1,#0FFH;熄灭LED
0.5秒ACALLDELAYLJMPSTARTPRG3MOVP1,#00H;LED全亮,此时K2K1=11LJMPSTARTDELAY MOVR1,#5;延时
0.5秒DEL1MOVR2,#200DEL2MOVR3,#126DEL3DJNZR3,DEL3DJNZR2,DEL2DJNZR1,DEL1RETEND实验四中断实验
一、实验目的1.外部中断技术的基本使用方法2.中断处理程序的编程方法3.中断嵌套处理程序的编程方法
二、实验设备EL-MUT-III型单片机实验箱、8051CPU模块
三、实验原理1.实验原理如图2-4-1图2-4-1外部中断实验电路2.程序流程图程序流程图见图2-4-2图2-4-2K1中断控制LED程序流程图
四、实验内容与步骤1.实验内容1)单一外部中断控制按K1在INT0端产生中断信号,从而使P1的8个LED同时闪烁5次2)两级中断控制(中断嵌套)按K1使8个LED闪烁后,按K2使LED右循环点亮3)根据图2-4-3,编写程序的下降沿产生中断,中断服务程序为读入P
1.4~P
1.7开关状态,并通过P
1.0~P
1.3输出图2-4-32.实验步骤1)按图2-4-1连接线路2)根据程序流程图编写程序,编辑程序并进行汇编3)用“单步连续运行程序”命令运行程序,观察程序运行等待中断过程,在等待中断过程时,按K1K2键,观察并记录程序运行过程和LED显示情况4)对实验内容2编程,重复2-3步骤观察并记录程序运行结果5)对实验内容3编程,重复2-3步骤观察并记录程序运行结果6)在中端服务程序中设置断点,重复2-3步骤观察并记录程序运行结果
五、实验报告1.根据实验1内容写出相应的实验报告2.画出实验内容2的程序框图3.对程序语句加以注解
六、思考题1.中断时,需保护现场(如PSW,ACC等寄存器的内容),中断服务程序应如何修改?2.如何在程序中实现INT1的中断优先权高于INT0中断优先权?
七、参考程序;实验四;INT0中断实验程序;主程序8个LED熄灭,等待INT0中断ORG4000HLJMPSTARTORG4003HLJMPEXT0ORG4013HLJMPLPTORG4100HSTART:MOVA,#0FFHMOVBAH,ASETBEX0SETBEX1CLRIT0SETBEAMOVSP#70HMOVA#0FFHMOVP1ASJMP$DELAY:MOVR1#5DEL1:MOVR2#200DEL2:MOVR3#126DEL3:DJNZR3DEL3DJNZR2DEL2DJNZR1DEL1RET;INT0中断服务程序:8个LED闪烁5次EXT0:MOVR0#10MOVA#00HLOOP:MOVP1ACALLDELAYCPLAMOVP1ADJNZR0LOOPMOVA#0FFHMOVP1ARETILPT:MOVA,#01HSHIF:LCALLFLASHRRASJMPSHIFTFLASH:MOVP1ALCALLDELATMOVP1#00HLCALLDELAYDJNZR2FLASHRETDELAY:MOVR5#200D1:MOVR6#123NOPDJNZR6$DJNZR5D1RET实验五定时器/计数器实验
(一)
一、实验目的1.掌握89S51内部定时器、计数器的使用和编程方法2.定时器中断处理程序的编程方法
二、实验设备EL-MUT-III型单片机实验箱、8051CPU模块
三、实验原理1.实验原理如图2-5-1图2-5-1定时器实验电路1)定时常数的确定采用定时器中断方法可实现时间延时,延时时间由主频和定时器方式来确定本实验中时钟频率为
6.0MHZ,其延时时间最大值约为
0.13s(方式一下)若要产生
0.5秒延时时间,需采用定时器定时和软件计数的方法来实现为此我们可在主程序中设置软件循环次数初值为05H(用R0)的软件计数器和定时时间为
0.1s的定时器这样定时器每隔
0.1s产生一次中断,CPU响应中断后将R0中计数值减一,即可实现
0.5s延时定时器时间常数的确定方法如下机器周期=12÷晶振频率=12/6×106=2(us)=2×10-6(s)定时器工作于方式一,设计数初值为X,则有(216-X)×2×10-6s=
0.1s,由此可求得X=15536D=3CB0H故初始值为TH=3CH,TL=B0H2)初始化程序初始化程序包括定时器初始化和中断系统初始化,即对IP、IE、TCON、TMOD的相应位进行正确的设置,并将时间常数送入定时器中3)设计中断服务程序和主程序中断服务程序除了要完成计数减一工作外,还要将时间常数重新送入定时器中,为下一次中断做准备主程序则用来控制发光二极管按要求亮灭2.程序流程图程序流程图见图2-5-2图2-5-2定时器T0中断控制LED程序流程图
四、实验内容与步骤1.实验内容定时器工作于方式1,每
0.5秒LED1~LED8闪烁2.实验步骤1)按图2-5-1连接线路2)根据程序流程图编写程序,编辑程序并进行汇编3)运行程序,观察并记录LED显示情况
五、实验报告根据实验内容写出相应的实验报告(变化花样可自行设计),
六、思考题1.用定时器工作方式0或方式2,能否实现本实验功能?2.如能,修改程序并调试3.根据图2-5-3,编写用T0中断控制LED闪烁5次的程序图2-5-3定时器T0中断控制LED闪烁5次程序流程图
七、参考程序;实验五定时器定时
0.5S中断实验,LED闪烁,R
00.5s延时循环次数ORG4000HLJMPSTARTORG400BHLJMPT0INTORG4100HSTART:MOVTMOD#01HMOVTH0#3CHMOVTL0#0B0HMOVA#0FFHMOVP1ASETBEASETBET0SETBTR0MOVR0#05HSJMP$T0INT:CLRTR0DJNZR0NEXTCPLAMOVP1AMOVR0#05HNEXT:MOVTH0#3CHMOVTL0#0B0HSETBTR0RETIEND;实验五1LED闪烁5次,R
00.5s延时循环次数,R1闪烁次数ORG4000HLJMPSTARTORG400BHLJMPT0INTORG4100HSTART:MOVTMOD#01HMOVTH0#3CHMOVTL0#0B0HMOVR1#10MOVA#0FFHMOVP1ASETBEASETBET0SETBTR0MOVR0#05HSJMP$T0INT:CLRTR0DJNZR0NEXTDJNZR1LPMOVA#0FFHMOVP1ASJMPLP1LP:CPLAMOVP1AMOVR0#05HNEXT:MOVTH0#3CHMOVTL0#0B0HSETBTR0LP1:RETIEND实验六定时器/计数器实验
(二)
一、实验目的1.8031外部计数的使用和编程方法2.中断处理程序的编程方法
二、实验设备EL-MUT-III型单片机实验箱、8051CPU模块
三、实验原理1.实验原理如图2-6-1图2-6-1计数器实验电路图中74LS
132、按键S和电阻组成一单脉冲发生器,P+端接89S51的T0端,按键每按动一次将在P+端产生一个负脉冲,从而在T0端产生一次中断请求,因此将T0设置为计数器方式即可对外部脉冲进行计数2.程序流程图程序流程图见图2-6-2
四、实验内容与步骤1.实验内容定时器工作于方式2,定时器每计5个脉冲使LED1~LED8亮、灭一次(或发光方式变化一次)2.实验步骤1)按图2-6-1连接线路2)根据程序流程图编写程序,编辑程序并进行汇编3运行程序,观察并记录LED显示情况
五、实验报告根据实验内容写出相应的实验报告图2-6-2用T0对外部脉冲进行计数控制LED程序流程图
六、思考题1.用定时器工作方式0或方式2,能否实现本实验功能?2.如能,修改程序并调试3.采用查询方式编写程序,实现外部脉冲进行计数控制LED
七、参考程序;实验六按右下角的“PULSE”按键5次,LED交替亮灭ORG4000HLJMPSTARTORG400BHLJMPT0INTORG4100HSTART:MOVTMOD#06HMOVTH0#0FBHMOVTL0#0FBHMOVA#00HSETBEASETBET0SETBTR0SJMP$T0INT:MOVP1ACPLARETIEND实验七8255APB口控制PA口实验
一、实验目的1.掌握8255A芯片的结构及编程方法2.掌握8255A并行口读取开关数据的方法
二、实验设备EL-MUT-III型单片机实验箱、8051CPU模块
三、实验原理1.实验原理如图2-7-1图2-7-18255A接口实验电路2.程序流程图程序流程图见图2-7-2����������������8255��A��������B��������#0;����8255��B������������������CPU��#0;����8255��A������������������������������������#0;����10ms#0;#0;图2-7-28255A接口实验程序流程图
四、实验内容步骤1.实验内容8255AB口作为开关量输入口,A口作为显示输出口编写程序读取按纽开关状态,在发光二极管上显示出来2.实验步骤1)按图2-7-1连接线路2)根据程序流程图编写程序,编辑程序并进行汇编3)运行程序,拨动开关K1-K8,观察并记录LED显示情况
五、实验报告根据实验内容写出相应的实验报告
六、参考程序;实验七8255A接口实验,A口显示输出口,B口作为开关量输入口ORG4000HLJMPSTARTORG4100HPAEQU0CFA0HPBEQU0CFA1HPCTLEQU0CFA3HSTART:MOVDPTR#PCTL;置8255A控制字A、B、C口均工作方式0;A、C口为输出B口为输入MOVA#82HMOVX@DPTRALOOP:MOVDPTR#PB;从B口读入开关状态值MOVXA@DPTRMOVDPTR#PA;从A口将状态值输出显示MOVX@DPTRAMOVR7#10H;延时DEL0:MOVR6#0FFHDEL1:DJNZR6DEL1DJNZR7DEL0JMPLOOPEND实验八8位A/D转换器ADC0809接口实验
一、实验目的1.了解A/D转换器ADC0809的工作原理2.掌握ADC0809与89S51接口电路设计方法3.掌握A/D转换程序编程方法
二、实验设备EL-MUT-III型单片机实验箱、8051CPU模块、数字万用表
三、实验原理1.实验原理如图2-8-1图2-8-189S51与ADC0809接口电路2.程序流程图根据A/D与单片机连接方式和控制系统本身要求的不同,实现A/D转换的软件设计方也不同常用的控制方式有程序查询、定时采样和中断方式定时采样方式程序流程图见图2-8-2
四、实验内容与步骤1.实验内容1)从ADIN0输入模拟信号VIN(0~5V),间隔为
0.25V(即0V、
0.25V
0.5V、
0.75V5V)用万用表电压档测量该模拟信号的大小2)启动A/D转换用转换后数字量与万用表测量结果进行比较3)用模拟电压作横坐标,转换后的数字量作纵坐标作D-V图,找出ADC0809的数字量输出值D(换算为十进制叔)与模拟量输入值VIN之间的关系检查A/D转换的线性度2.实验步骤1)按图2-8-1连线ADIN0接AN0,参考程序采用查询法,因此ADC0809的EOC引脚不连接2)通过“V.ARJ”电位器调整加在IN0通道的电压,用数字万用表进行测量,从0V开始,间隔为
0.25V3)输入程序对每个电压值,运行程序转换后的数字量保存于30H开始的单元4)读取30H开始的单元中的数据,并填入表格VIN(V)
0.
000.
250.
500.
751.
001.
251.
501.
752.
002.25VOUTHVOUTDVIN(V)
2.
502.
753.
003.
253.
503.
754.
004.
254.
504.
755.00VOUTHVOUTD图2-8-2A/D转换实验流程图
五、实验报告1.根据实验内容写出相应的实验报告2.用模拟电压作横坐标,转换后的数字量作纵坐标作D-V图,找出ADC0809的数字量输出值D(换算为十进制叔)与模拟量输入值VIN之间的关系检查A/D转换的线性度
六、思考题1.若转换后的数字量保存于外部RAM4300H开始单元,程序应如何修改上机调试2.若程序采用中断法,电路应如何连接?3.画出中断法流程图,修改程序,重做实验
七、参考程序;实验八A/D采样程序ORG4000H;开始执行第一条指令的地址LJMPSTART;跳转到主程序ORG4100H;主程序的地址START:MOVR1#30H;指向内部RAM20H单元MOVR6#20H;30H-4FH共32个内部RAM单元它们用MOVA#00H;来存放被采集电压的数据区LP:MOV@R1A;30H-4FH内部RAM单元清0INCR1;指向下一个单元DJNZR6LP;32个单元清0未完成返回LP处继续清0MOVR1#30H;数据区首址送R1寄存器MOVR7#14H;采集数据的总数14H
(20)送R7寄存器MOVDPTR#0CFA0H;IN0通道地址0CFA0H送DPTR寄存器CAIJI:MOVX@DPTRA;启动A/D进行转换LP1:MOVR2#40H;设置延时时间WAIT:DJNZR2WAIT;延时等待A/D转换结束MOVXA@DPTR;读A/D转换的数值到累加器AMOV@R1A;转换后的数据送数据区(30H—4FH)保存INCR1;指向下一个单元CW:DJNZR7CAIJI;20个数据采集完成停止否则继续采集SJMP$;停止END;结束实验九8位D/A转换器DAC0832接口实验
一、实验目的1.了解D/A转换器DAC0832的工作原理2.掌握DAC0832与89S51接口电路设计方法3.掌握D/A转换程序编程方法
二、实验设备EL-MUT-III型单片机实验箱、8051CPU模块
三、实验原理1.实验原理如图2-9-1图2-9-189S51与DAC0832接口电路D/A转换是把数字量转换成模拟量的变换,从D/A输出的是模拟电压信号产生锯齿波和三角波只需由A存放的数字量的增减来控制图2-9-1为双缓冲接口电路,数据要经过输入寄存器和DAC寄存器两级缓冲后才能进入D/A转换电路输入寄存器和DAC寄存器的地址由A1控制,A1=0控制输入寄存器,A1=1控制DAC寄存器因此输入寄存器占偶地址端口(PORT),DAC寄存器占较高的奇地址端口(PORT+1)两个寄存器均对数据独立进行锁存因而要把一个数据通过0832输出,要经两次锁存启动D/A转换程序如下MOVDPTR,#PORT;输入寄存器端口地址送DPTRMOVA,#DATA;转换初值MOVX@DPTR,A;送数据到输入寄存器锁存INCDPTR;DAC寄存器端口地址送DPTRMOVX@DPTR,A;送数据到DAC寄存器锁存并进行D/A转换其中第二次I/O写是一个虚拟写过程,其目的只是产生一个WR信号,来启动D/A2.程序流程图略
四、实验内容与步骤1.实验内容利用DAC0832,编制程序产生锯齿波、三角波程序2.实验步骤1)DAC0832的片选CS0832接CS0,输出端DAOUT、GND接示波器探头2)用短路端子将图2-9-1中DS的
1、2短路3)编写锯齿波、三角波程序,并运行程序4)记录示波器显示的图形
五、实验报告根据实验内容写出相应的实验报告,画出锯齿波、三角波程序流程图
六、思考题设计产生方波、阶梯波、正弦波的程序提示要产生正弦波,较简单的办法是建立一张正弦数字量表取值范围为一个周期,采样点越多,精度就越高
七、参考程序;实验九1锯齿波输出程序PORTEQU0CFA0HORG4000HLJMPDASAWORG4100HDASAW:MOVA#00H;转换初值W:MOVDPTR#PORT;输入寄存器端口地址送DPTRMOVX@DPTRA;送数据到输入寄存器INCDPTR;DAC寄存器端口地址送DPTRMOVX@DPTRA;D/A转换INCA;转换值增量SJMPWEND;实验九2三角波的输出程序PORTEQU0CFA0HORG4000HLJMPSTARTORG4100HSTART:CLRAUP:MOVDPTR#PORT;输入寄存器端口地址送DPTRMOVX@DPTRA;送数据到输入寄存器INCDPTR;DAC寄存器端口地址送DPTRMOVX@DPTRA;D/A转换INCAJNZUPMOVA#0FFHDOWN:MOVDPTR#PORTMOVX@DPTRAINCDPTR;DAC寄存器端口地址送DPTRMOVX@DPTRA;D/A转换DECAJNZDOWNSJMPUPEND。