单片机实验指导书计算机系.doc_第1页
单片机实验指导书计算机系.doc_第2页
单片机实验指导书计算机系.doc_第3页
单片机实验指导书计算机系.doc_第4页
单片机实验指导书计算机系.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

单片机实验指导书计算机系 一、实验目的 1、熟悉仿真环境。 2、学习简单程序调试的方法。 二、实验内容 1、KEIL软件的安装将带有KEIL安装软件的光盘放入光驱里,打开光驱中带有KEIL安装软件的文件夹,双击Setup文件夹中“Setup”即开始安装。 如果您的微机上已经安装了KEIL的软件,会提示您是否要先把您以前的软件先卸载,此时您最好是先卸载掉,然后再安装本软件(如图所示)。 如果您需要把软件安装在C盘以外的其它盘,需要运行一个补丁文件,直接打开KEIL软件已安装目录中的KEILUV2,双击“Crackdir”图标,点击确定即完成补丁的安装(如图所示)。 实验中所用实验例程在盘符keiluv2中,文件名为“3000TB51配套实验程序”都是工程文件,直接打开就可以进入调试界面;本书中所讲软件实验在“51asm”文件夹中,都以ASM的格式存放文件夹中。 2、硬件安装连接51CPU板,在实验箱右下角有三个插座J 1、J 2、J3,用来连接51CPU板,在51CPU板上有一个小拨码开关J18,是单片机的EA脚,是用来选择读片内还是片外ROM的,拨向左边为读片内ROM;拨向右边为读片外ROM。 KEIL仿真器与实验箱的连接将KEIL仿真器40芯的排线连到51CPU板的40芯插座上,仿真器的USB连接线连到微机的USB口。 八段数码管右上角的两个拨码小开关是用来设置工作模式的,将两个拨码小开关同时拨向右边是选择51单片机工作模式,此时应拨向右边。 3、Keil C软件的操作说明新建一个项目文件。 3首先点击Keil uVision2,进入uVision2界面。 点击工具栏Project选项中的New Project,准备开始建立自己的项目。 输入工程文件名称,并选择保存工程文件的目录。 为项目文件选择一个目标器件(如ATMEL89C51),如图所示。 用鼠标对项目工作区的目标1,点击右键在弹出的菜单中选择“为目标目标1设置选项”如下图所示。 在“为目标目标1设置选项”中,点击“调试”菜单,在此菜单中可选择是使用硬件仿真,还是软件仿真,连接实验箱做实验时选择硬件仿真,点击硬件仿真选项后面的设4置选项,在此对对话框中选择串口和波特率,串口根据所连电脑来决定。 波特率为38400。 软件仿真硬件仿真选择串口选择波特率点击“文件/新建”创建源程序文件并输入程序代码。 在文本框中输入原程序,如下图所示点击“文件/保存“对程序进行保存5用鼠标对项目工作区的目标1,点击右键在弹出的菜单中选择添加文件到原代码组,如下图所示在弹出的添加文件框中,选择需要添加到项目中的文件点击编译连接的图标,对项目文件进行编译6点击“调试/启动/停止调试”进入调试界面在调试界面中可以对程序进行单步或者全速运行的调试连机/停止全速运行单步若要查看内存中的数据,点击“视图/存储器窗口”7在此地址框中,输入不同的指令查看内部数据如果需要查看一些内部数据,在菜单栏点击视图/存储窗口。 C0X地址显示程序存储区数据X0X地址显示数据存储区中数据D0X地址显示CPU内部存储区中数据注意仿真器使用者使用时应注意Keil C仿真器用户程序在全速运行时,如果需暂停运行,请按实验仪键盘“RST”,此时仿真器存储器数据清零。 如果您要再次运行您所编写的程序,就必须重新装载运行。 2、拆字程序把8000H地址上的内容拆开,高位送8001H地址的低位,低位送8002H地址的低位,8001H、8002H地址的高位清零;参考程序ORG0000H MOV DPTR,#8000H;指定的字节MOVX A,DPTR MOVB,A;暂存SWAP A;交换ANL A,#0FH;屏敝高位INC DPTR MOVXDPTR,A INCDPTR MOV A,B ANL A,#0FH;指定字节的内容屏敝高位MOVXDPTR,A LOOP:SJMP LOOPEND3实验结果三实验心得8实验二数据区传送、数据排序程序实验 一、实验目的 1、学习Windows平台下的、编译、排错调试方法。 2、学习修改和观察变量的方法;综合使用单步、断点调试的方法。 二、实验内容 1、数据传送把内部RAM中起始地址为DATA的数据传送到内部RAM以BUFFER为首地址的区域,直到发现“$”字符的ASCII码为止,数据串的最大长度为32个字节。 2、多字节BCD码加法 3、编写并调试一个排序子程序,其功能为用冒泡法将内部RAM中几个单字节无符号正整数,按从小到大的次序重新排列。 三、实验器材计算机1台 四、实验步骤 1、参阅硬件安装把综合实验仪、仿真器与PC机串行口连起来,打开电源。 2、在PC机上用鼠标点击“KEIL uvision2”图标,进入KEIL调试环境,选择串行口,点击“确认”。 3、打开“项目/新建项目”,输入项目名,选择目标MCU,如intel89C52。 4、文件用鼠标点击文件|新文件,在文本器中程序 5、文件保存用鼠标点击文件|保存,在对话框中输入文件名。 6、为项目添加文件单击左边的项目工作区/源代码组1右键在出现菜单中选择添加文件到组“源代码组1”,在弹出的对话框中选中您刚保存的文件,点击确认完成项目文件的添加。 7、为项目设置通讯口单击左边的项目工作区/目标1右键在出现的菜单中选择为目标“目标1”设置选项,在弹出的菜单中选择调试。 在新窗口中选择使用Keil monitor-51Driver。 单击设置在出现的窗口中设置串口和波特率(注波特率必须为38400)。 8、文件编译、连接、装载用鼠标点击项目/重建所有目标文件,系统自动进行编译,并出现信息窗口。 若有语法错误,则需重新修正,需再次执行重建所有目标文件;若无语法错误,点击调试/启动/停止调试后,进入调试状态。 9、设置观察窗口用鼠标点击视图/存储口窗口,在地址口输入CPU内部存贮区地址,回车之后出现地址为50H的数据显示于窗口中。 10、单步执行程序按F11键一条一条地执行下去,注意观察左边寄存器区中相应的寄存器或者CPU内部存贮区中相应的数据寄存器单元的数据变化。 11、连续运行用鼠标点击外围设备/复位CPU,使PC指向0000H,点击调试/运行后,程序开始连续运行。 如需暂停,用鼠标点击调试/停止运行。 12、断点运行要使程序执行到某条指令处暂停,如希望程序执行到LOOP1处暂停,可按如下操作将光标移到LOOP1处双击鼠标左键,即可设置断点,用鼠标点击调试/运行,程序将在LOOP行停止运行。 13、复位用鼠标点击外围设备/复位CPU,强迫PC指向0000H。 9A送目的地址源地址内容送A根据(R0)取数A(R0)+1送R0Y源地址加1(A)开始开始清标志位目地址加1N置标志位,交换内容长度减N字节数到标志位N Y结束图1数据传送子程序流程图Y结束图2数据排序程序流程图数据传送子程序 1、数据传送把内部RAM中起始地址为DATA的数据传送到内部RAM以BUFFER为首地址的区域,直到发现“$”字符的ASCII码为止,数据串的最大长度为32个字节。 Org0000h MOV R0,#DATA MOV R1,#BUFFER MOV R2,#20H LOOPMOV A,R0CLR C SUBB A,#24H JZEXIT MOV A,R0MOVR1,A INC R1INC R0DJNZ R2,LOOP10L00P1AJMP$END 2、多字节BCD码加法入口条件字节数在R7中,被加数在R0中,加数在R1中。 出口条件和在R0中,最高位进位在CY中。 影响资源PSW、A、P2堆栈需求2字节Org0000h BCDAMOV A,R7MOV R2,A ADD A,R0MOV R0,A MOV A,R2ADDA,R1MOV R1,A CLR C BCDlDEC R0DEC R1MOV A,R0ADDC A,R1DA A MOVR0,A DJNZ R2,BCDl ret3;用冒泡法进行数据排序ORG0000H MOV R3,#50H LOOP0:MOV A,R3MOV R0,A;指针送R0MOV R7,#0AH;长度送R7CLR00H;标志位为0MOV A,R0LOOP1:INC R0MOV R2,A CLRC MOV22H,R0CJNE A,22H,LOOP2;相等吗?SETB CLOOP2:MOV A,R2JC LOOP3;小于或等于不交换SETB00H XCH A,R0DEC R0XCHA,R011INC R0;大于交换位置LOOP3:MOV A,R0DJNZ R7,LOOP1JB00H,LOOP0;一次循环中有交换继续LOOP:SJMP LOOP;无交换退出END 五、实验心得12实验三键盘扫描显示实验 一、实验目的 1、掌握键盘和显示器的接口方法和编程方法。 2、掌握键盘扫描和LED八段数码管显示器的工作原理。 二、实验要求在上一个实验的基础上,利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来。 实验程序可分成三个模块。 1、键输入模块扫描键盘、读取一次键盘并将键值存入键值缓冲单元。 2、显示模块将显示单元的内容在显示器上动态显示。 3、主程序调用键输入模块和显示模块。 三、实验器材 1、单片机综合实验仪1台 2、KEIL仿真器1台 3、计算机1台 四、实验电路这里只是键盘示意图,详细原理参见“8155键显模块”。 行码(0e103H)列码(0e101H)图3键盘示意图 五、实验说明本实验仪提供了一个64的小键盘,向列扫描码地址(0e101H)逐列输出低电平,然后从13行码地址(0e103H)读回,如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的作用,行码为高.这样就可以通过输出的列码和读取的行码来判断按下的是什么键。 在判断有键按下后,要有一定的延时,防止键盘抖动。 列扫描码还可以分时用作LED的位选通信号。 六、实验流程图显示缓冲区初始化LED显示否有键输入?是读取键值键值转换为显示数据图4实验主程序框图开始初始化地址参数输出列扫描信号列扫描信号移位读入行信号是该列有键输入?按照行列计算键值否查表得键码否6列扫描完?等待键盘释放返回图5读键输入子程序框图14显示程序框图见上个实验 一、实验目的 1、熟悉8031定时/计数器的记数功能; 2、掌握初始化编程方法; 3、掌握中断程序的调试方法。 二、实验内容定时/记数器0对外部输入的脉冲进行计数,并送显示器显示。 三、实验器材 1、单片机综合实验仪1台 2、KEIL仿真器1台 3、连线若干根 4、计算机1台 四、实验原理MCS-51有两个16位的定时/计数器T0和T1。 计数和定时实质上都是对脉冲信号进行计数,只不过脉冲源不同而已。 当工作在定时方式时,计数脉冲单片机的内部,每个机器周期使计数器加1,由于计数脉冲的频率是固定的(即每个脉冲为1个机器周期的时间),故可通过设定计数值来实现定时功能。 当工作在计数方式时,计数脉冲单片机的引脚,每当引脚上出现一个由1到0的电平变化时,计数器的值加1,从而实现计数功能。 可以通过编程来指定时计数器的功能,以及它的工作方式。 读取计数器的当前值时,应读3次。 这样可以避免在第一次读完后,第二次读之前,由于低位溢出向高位进位时的错误。 五、接线方案接线方案2接线方案1图6实验接线图20 六、程序框图开定时器堆栈、定时/计数初始化0送CY R2R3右移一位2*(R4R5R6)+CY送R4R5R6开始0送R4R5R6,10HR7取出TL0/TH0内容转换(R7-1)=0显示结束图7主程序流程图图8二转十进制程序流程图 七、实验步骤用连线把“总线插孔”的P3.4孔连“脉冲源”的“DOWN”孔,执行程序,按动AN锁按钮,观察数码管上计数脉冲的个数。 八、思考问题把P3.4孔分别与“脉冲源”的2MHZ、1MHZ、0.5MHZ孔相连时,显示值反而比连0.25MHZ孔更慢,为什么?当fosc=6MHZ时,能够计数的脉冲信号最高频率为多少? 九、实验程序;对定时器0外部输入的脉冲信号进行计数且显示OUTBIT equ0e101h CLK164equ0e102h;段控制口(接164时钟位)DAT164equ0e102h;段控制口(接164数据位)LEDBuf equ40h IN equ0e103h ORG0000h MOVSP,#60H MOVDPTR,#0e100H;8155初始化MOVA,#03H MOVXDPTR,A MOVTMOD,#05H;定时器初始化MOV TH0,#00H MOVTL0,#00H SETBTR021LOOP0:MOVR2,TH0MOVR3,TL0LCALL LOOP1MOVR0,#40H MOVA,R6LCALL PTDSMOVA,R5LCALL PTDSMOVA,R4LCALL PTDSLCALL DISPLAYSJMP LOOP0LOOP1:CLRA MOVR4,A MOVR5,A MOVR6,A MOVR7,#10H LOOP2:CLRCMOVA,R3RLC AMOVR3,AMOVA,R2RLC AMOVR2,AMOVA,R6ADDC A,R6DA AMOVR6,AMOVA,R5ADDC A,R5DA AMOVR5,AMOVA,R4ADDCA,R4DA AMOVR4,A DJNZR7,LOOP2RET PTDS:MOVR1,A ACALLPTDS1MOVA,R1SWAP APTDS1:ANLA,#0FH MOVR0,A;二转十子程序;拆字子程序22INCR0RET Delay:mov r7,#0;延时子程序DelayLoop:djnz r7,DelayLoop djnz r6,DelayLoop retDISPLAY:setb0d3h mov r0,#LEDBuf mov r1,#6mov r2,#00000001b Loop:mov dptr,#OUTBIT mov a,#00h movxdptr,a mov a,r0mov dptr,#LEDmap movca,a+dptr movB,#8DLP:rlc a mov r3,a mov a.0,c anl a,#0fdh mov dptr,#DAT164movxdptr,a mov dptr,#CLK164orl a,#02h movxdptr,a anla,#0fDh movxdptr,a mov a,r3djnz B,DLP mov dptr,#OUTBIT mov a,r2movxdptr,a mov r6,#1call Delaymov a,r2rl a mov r2,a inc r0djnz r1,Loop;共6个八段管;从左边开始显示;关所有八段管;送164;显示一位八段管;显示下一位23mov dptr,#OUTBIT mov a,#0movxdptr,a;关所有八段管clr0d3h ret LEDMAP:;八段管显示码db3fh,06h,5bh,4fh,66h,6dh,7dh,07h db7fh,6fh,77h,7ch,39h,5eh,79h,71h END24实验四A/D转换实验 一、实验目的掌握A/D转换与单片机接口的方法;了解A/D芯片0809转换性能及编程方法。 二、实验内容利用综合实验仪上的0809做A/D转换器,综合实验仪上的电位器提供模拟量输入,编制程序,将模拟量转换成数字量,通过8155键显区数码管显示出来。 三、实验器材 1、单片机综合实验仪1台 2、KEIL仿真器1台 3、连线若干根 4、计算机1台 四、实验原理A/D转换器的功能主要是将输入的模拟信号转换成数字信号,如电压、电流、温度测量等都属于这种转换。 本实验中采用的转换器为ADC0809,它是一个8位逐次逼近型A/D转换器,可以对8个模拟量进行转换,转换时间为100S。 其工作过程如下首先由地址锁存信号ALE的上升沿将引脚ADDA、ADDB和ADDC上的信号锁存到地址寄存器内,用以选择模拟量输入通道;START信号的下降沿启动A/D转换器开始工作;当转换结束时,AD0809使EOC引脚由低电平变成高电平,程序可以通过查询的方式读取转换结果,也可以通过中断方式读取结果。 CLOCK为转换时钟输入端,频率为100KHz-1.2MHz,推荐值为640KHz。 五、程序流程图开始0809初始化08090通道采样图9程序流程图显示 六、实验步骤 1、设定仿真模式为程序空间在仿真器上,数据空间在用户板上,即点击设置下的仿真模式,在RAM区选中用户RAM,ROM区选中系统ROM(注本书中的实验除另行说明外,均与此相同)。 把AD0809的零通道09IN0孔用连线接至模拟信号发生器的VIN孔,AD0809的片选信号CS09孔接“译码器”YC2(0A000-0AFFFH)孔,“脉冲源”中的0.5MHZ孔连AD0809的CLOCK孔。 2、编写程序,并编译通过。 本程序使用查询的方式读取转换结果。 在读取转换结果的指令后设置断点,运行程序,在断点处检查并读出A/D转换结果,数据是否与VIN相对应。 修改程序中错误,使显示值随VIN变化而变化。 七、接线图案25(不要图)图10实验接线图 八、思考问题 1、试编写循环采集8路模拟量输入A/D转换程序; 2、以十进制方式显示。 九、实验程序OUTBIT equ0e101h;位控制口CLK164equ0e102h;段控制口(接164时钟位)DAT164equ0e102h;段控制口(接164数据位)IN equ0e103h;键盘读入口LEDBuf equ40h;显示缓冲org0000h movsp,#60h mov dptr,#0e100h;8155初始化mov a,#03h movxdptr,a mov40h,#00h;显示缓冲器初始化mov41h,#08h mov42h,#00h26mov43h,#09h mov44h,#00h mov45h,#00h LOOP1:MOVR7,#40VI:lcall DISPLAYDJNZR7,VI mov a,#00h mov dptr,#0a000h;0809AD的通道开始转换吗?movxdptr,a mov r7,#0fh loop2:djnz r7,loop2movx a,dptr mov r0,#45h;拆字lcall ptdssjmp loop1ptds:mov r1,a lcallptds1mov a,r1swap aptds1:anla,#0fh movr0,a dec r0ret Delay:mov r7,#0;延时子程序DelayLoop:djnz r7,DelayLoop djnz r6,DelayLoop retDISPLAY:setb0d3h mov r0,#LEDBuf mov r1,#6;共6个八段管mov r2,#00100000b;从左边开始显示Loop:mov dptr,#OUTBIT mova,#00h movxdptr,a;关所有八段管mova,r0movdptr,#LEDmap movca,a+dptr movB,#8;送164DLP:rlc a mov r3,a27mov a.0,c anla,#0fdh movdptr,#DAT164movxdptr,a movdptr,#CLK164orl a,#02h movxdptr,a anla,#0fDh movxdptr,a mova,r3djnz B,DLP movdptr,#OUTBIT mova,r2movxdptr,a;显示一位八段管mov r6,#1call Delaymova,r2;显示下一位rr a mov r2,a incr0djnz r1,Loop movdptr,#OUTBIT mova,#0movxdptr,a clr0d3h;关所有八段管retLEDMAP:;八段管显示码db3fh,06h,5bh,4fh,66h,6dh,7dh,07h db7fh,6fh,77h,7ch,39h,5eh,79h,71h END 十、实验心得28实验六D/A0832转换实验 一、实验目的了解D/A转换与单片机的接口方法;了解D/A转换芯片DA0832的性能及编程方法。 二、实验内容利用0832输出一个从0V开始逐渐升至5V再降至0V的三角波电压,数码管显示数字量值。 三、实验器材 1、单片机综合实验仪1台 2、KEIL仿真器1台 3、连线若干根 4、计算机1台 四、接线图案 五、程序框图图11实验接线图290832初始化显示转换显示加1输入是否到FF?N输入显示减1N输入是否到00?图12实验接线图 六、实验原理D/A转换器的功能主要是将输入的数字量转换成模拟量输出,在语音合成等方面得到了广泛的应用。 本实验中采用的转换器为DAC0832,该芯片为电流输出型8位D/A转换器,输入设有两级缓冲锁存器,因此可同时输出多路模拟量。 本实验中采用单级缓冲连接方式,用0832来产生三角波,具体线路如上图所示。 VREF引脚的电压极性和大小决定了输出电压的极性与幅度,单片机综合实验仪上的DA0832的第8引脚(VREF)的电压已接为-5V,所以输出电压值的幅度为0-5V。 七、实验步骤 1、设定仿真模式为程序空间在仿真器上,数据空间在用户板上。 把DA0832的片选CS32孔接至YC3(0B000H-0BFFFH)孔。 2、编写程序、编译程序用单步、断点、连续方式调试程序,排除软件错误。 运行程序,8155键显区数码管上显示不断加大或减小的数字量,用万用表测量D/A输出孔AOUT,应能测出不断加大或减小的电压值。 八、思考问题修改程序,使能产生锯齿波。 九、实验程序OUTBIT equ0e101h;位控制口CLK164equ0e102h;段控制口(接164时钟位)DAT164equ0e102h;段控制口(接164数据位)INequ0e103h;键盘读入口LEDBuf equ40h;显示缓冲30org0000h movsp,#60h movdptr,#0e100h;8155初始化mova,#03h movxdptr,a mov40h,#00h;显示缓冲区置值mov41h,#08

温馨提示

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

评论

0/150

提交评论