单片机实验指导书(学生08新版).doc_第1页
单片机实验指导书(学生08新版).doc_第2页
单片机实验指导书(学生08新版).doc_第3页
单片机实验指导书(学生08新版).doc_第4页
单片机实验指导书(学生08新版).doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

单片机实验指导书(学生08新版) 嵌入式系统实验指导书(修订稿)主编银翔萧祥锭主审彭楚武湖南大学电气与信息工程学院二八年前言嵌入式系统原理与应用是一门实践性很强的课程,通过理论教学后进行相应地实验训练才能深刻地理解,牢固掌握该学科的知识。 作为实验指导书,重点在于编程及应用。 为了便于理解,大部分实验都简单地介绍了编程的方法、画出了程序流程图以及电路原理图,尽可能使每个实验自成体系,有头有尾。 完成本实验指导书的实验,可使学生掌握嵌入式系统的基本结构、原理、指令系统、接口技术及汇编语言的程序设计。 作为电气院的学生,该实验指导书还应配合嵌入式系统课程设计指导书使用,将编程技巧与仿真相结合,设计一个独立的微机实时控制系统。 本书在编写过程中得到许多老师地帮助,提出了许多宝贵意见,在此表示感谢!书中错误不妥之处欢迎批评指正。 16752408.doc2目录实验一双字节二进制数到BCD码的转换-1实验二实验三实验四实验五实验六实验七实验八实验九实验十实验十一附录一附录二附录三附录四P1口实验-4定时器与中断实验-78255A可编程并行接口芯片实验(键盘实验)-11数码显示实验-178279键盘、显示接口实验(LED显示实验)-23串行口实验(与数据终端通讯)-29D/A,A/D转换实验-35电子音响实验-41继电器控制实验-45步进电机控制实验-49KEIL C51的使用方法-51PROTEUS软件的使用方法-60单片机指令速查表-66常用IC引脚图-68216752408.doc实验一双字节二进制数到BCD码的转换一实验目的:123学习KEIL C51软件的使用和调试方法.了解51单片机内部工作寄存器的使用方法.熟悉单片机汇编指令,了解程序的编写方法.二实验内容:1程序框图开始BCD码寄存器清零设循环指针二进制数左移一位,移入C()*2+ai N循环次数到?Y返回2程序清单ST EQU0000H ORG ST LJMPBCD1616752408.doc3;用户程序的首地址从0000H开始ORG ST+100H;下一条指令的地址为ST+100BCD16:CLR A;累加器A清零MOV R4,A MOV R5,A MOV R6,A;R4,R5,R6三个寄存器清零MOV R7,#10H MOV R2,#22H MOV R3,#33H;将10H,22H,33H分别送R7,R2,R3寄存器LP0:CLR CMOV A,R2RLC A MOV R2,A MOV A,R3RLC A MOV R3,A MOV A,R4ADDC A,R4DA A MOV R4,A MOV A,R5ADDC A,R5DA A MOV R5,A MOV A,R6ADDC A,R6DA A MOV R6,A DJNZ R7,LP0LL SJMPLL END3程序说明将二进制数从最高位逐一左移入单片机CPU中的寄存器的最低位并且每次都实现(?)*2+ai的运算.双字节则需循环16次,由R7寄存器中的值控制. 三、习题 (1)注意观察寄存器窗口,当R7中的值为“0”时,记录R6,R5,R4的值。 (2)修改R2,R3的数值,重复操作,记录R6,R5,R4的值。 16752408.doc4本文将简单介绍一下Proteus的使用。 在这里,我用的Proteus版本是Proteus6.7sp3Professional。 一、Proteus6Professional界面简介安装完Proteus后,运行ISIS6Professional,会出现以下窗口界面为了方便介绍,我分别对窗口内各部分进行中文说明(见上图)。 下面简单介绍各部分的功能1原理图窗口(The EditingWindow)顾名思义,它是用来绘制原理图的。 蓝色方框内为可区,元件要放到它里面。 注意,这个窗口是没有滚动条的,你可用预览窗口来改变原理图的可视范围。 16752408.doc52预览窗口(The OverviewWindow)它可显示两个内容,一个是当你在元件列表中选择一个元件时,它会显示该元件的预览图;另一个是,当你的鼠标焦点落在原理图窗口时(即放置元件到原理图窗口后或在原理图窗口中点击鼠标后),它会显示整张原理图的缩略图,并会显示一个绿色的方框,绿色的方框里面的内容就是当前原理图窗口中显示的内容,因此,你可用鼠标在它上面点击来改变绿色的方框的位置,从而改变原理图的可视范围。 3模型选择工具栏(Mode SelectorToolbar)主要模型(Main Modes)1*选择元件(ponents)(默认选择的)2*放置连接点3*放置标签(用总线时会用到)4*放置文本5*用于绘制总线6*用于放置子电路7*用于即时元件参数(先单击该图标再单击要修改的元件)配件(Gadgets)1*终端接口(terminals)有VCC、地、输出、输入等接口2*器件引脚用于绘制各种引脚3*仿真图表(graph)用于各种分析,如Noise Analysis4*录音机5*信号发生器(generators)6*电压探针使用仿真图表时要用到7*电流探针使用仿真图表时要用到8*虚拟仪表有示波器等2D图形(2D Graphics)1*画各种直线2*画各种方框3*画各种圆4*画各种圆弧5*画各种多边形6*画各种文本7*画符号8*画原点等16752408.doc64元件列表(The ObjectSelector)用于挑选元件(ponents)、终端接口(terminals)、信号发生器(generators)、仿真图表(graph)等。 举例,当你选择“元件(ponents)”,单击“P”按钮会打开挑选元件对话框,选择了一个元件后(单击了“OK”后),该元件会在元件列表中显示,以后要用到该元件时,只需在元件列表中选择即可。 5方向工具栏(Orientation Toolbar)旋转旋转角度只能是90的整数倍。 翻转完成水平翻转和垂直翻转。 使用方法先右键单击元件,再点击(左击)相应的旋转图标。 6仿真工具栏仿真控制按钮1*运行2*单步运行3*暂停4*停止 二、操作简介 1、绘制原理图绘制原理图要在原理图窗口中的蓝色方框内完成。 原理图窗口的操作是不同于常用的WINDOWS应用程序的,正确的操作是用左键放置元件;右键选择元件;双击右键删除元件;右键拖选多个元件;先右键后左键元件属性;先右键后左键拖动元件;连线用左键,删除用右键;改连接线先右击连线,再左键拖动;中键放缩原理图。 具体操作见下面例子。 2、定制自己的元件有三个个实现途径,一是用PROTEUS VSMSDK开发仿真模型,并制作元件;另一个是在已有的元件基础上进行改造,比如把元件改为bus接口的;还有一个是利用已制作好(别人的)的元件,我们可以到网上下载一些新元件并把它们添加到自己的元件库里面。 由于我没有PROTEUS VSMSDK,所以我只介绍后两个。 3、Sub-Circuits应用用一个子电路可以把部分电路封装起来,这样可以节省原理图窗口的空间。 三、实例16752408.doc7实验二P1口实验 一、实验内容1.作为左转弯开关,作为右转弯开关。 、作为左转弯灯,、作为右转弯灯。 2.程序实现的功能向上打时左转弯灯以一定频率闪烁,打时右转弯灯以一定频率闪烁,、同时向上或向下,发光二极管灭。 二、实验目的1.学习口作为输入、输出口的使用方法。 2.学习延时子程序的编写和使用。 3.学习数据输入、输出程序的设计方法。 4掌握proteus软件的使用。 三、实验电路16752408.doc8 五、程序流程图入口,口锁存器置读入,状态=1从口输出使发光二极管全灭,从口输出使发光二极管全灭从口输出使,亮从口输出使,亮延时使发光二极管全灭延时 六、程序清单SH2ST EQU0000H ORG ST LJMP START ORG ST+30H16752408.doc9START:SETB P1.0SETB P1.1MOV A,P1ANL A,#03H MOV DPTR,#TB;转移表首地址送DPTR MOVC A,A+DPTR JMPA+DPTR TB:DB PRG0-TB DBPRG1-TB DBPRG2-TB DBPRG3-TB PRG0:MOV P1,#00LJMP STARTPRG1:MOV P1,#0CH AAA:ACALL DELAY MOV P1,#00ACALL DELAYLJMPSTARTPRG2:MOV P1,#30H LJMPAAA PRG3:LJMP PRG0DELAY:MOV R1,#5;延时秒DEL1:MOV R2,#200DEL2:MOV R3,#126DEL3:DJNZ R3,DEL3DJNZ R2,DEL2DJNZ R1,DEL1RET END 七、习题改编程序,实现当开关K1=K2=0时,发光二极管L1,L2,L5,L6全部闪烁;当开关K1=K2=1时,发光二极管L1,L2,L5,L6全灭;(已实现)当开关K1=0,K2=1时,发光二极管L1,L2,L5,L6依次循环右移;当开关K1=1,K2=0时,发光二极管L1,L2,L5,L6依次循环左移;改写程序,当开关接任意P1口时,均可实现以上功能。 16752408.doc10实验三定时器、中断实验 一、实验内容模拟时序控制装置。 观测发光二极管现象L 1、3L 2、4L 5、7L 6、8L 1、 3、 5、7L 2、 4、 6、8全亮全灭 二、实验目的学习内部计数器的使用和编程方法。 掌握中断处理程序的编程方法。 三、实验原理时间常数的计算。 内部定时器,按方式工作,每秒钟溢出中断一次。 机器周期晶振频率()设初值为,则(), 四、实验电路16752408.doc11 五、程序流程图主程序入口置首显示代码(),初始地址偏移量(),计数初值()定时器初始化,设计数初值开放,?装计数初值于N指向下一个显示代码单元地址偏移?装入初始偏移量从表中取显示代码16752408.doc显示12中断子程序返回装人时间常数计数值减1中断入口关闭计数控制位开放计数控制位 六、接线方法:P1.0P1.7分别接发光二极管L1L8。 七、程序清单ST_ADDR EQU4000H ORG ST_ADDR LJMPSTART ORG ST_ADDR+1BH JMPIT11ORGST_ADDR+200H START:MOV A,#05H MOV R1,#03MOV R0,#0AH ANL TMOD,#0FH ORLTMOD,#10H MOV TL1,#00H MOV TH1,#38H ORLIE,#88H SETB TR1LOOP1:CJNE R0,#00,DISP MOV R0,#0AH INC R1CJNE R1,#0BH,LOOP216752408.doc13MOV R1,#03LOOP2:MOV A,R1MOVC A,A+PC LJMP DISP DB05H,0AH,50H,0A0H,55H,0AAH,0FFH,00H DISP:MOV P1,A JMPLOOP1IT11:CLR TR1DEC R0MOV TL1,#00H MOV TH1,#38H SETB TR1RETI END 八、习题改变发光二极管闪烁的间隔时间。 去掉定时与中断,编写延时子程序。 16752408.doc14实验四8255A可编程并行接口芯片实验 一、实验内容:利用单片机的小键盘,每按一个数字键(0F),用发光二极管将该代码显示出来,按其它键退出。 二、实验目的1掌握单片机系统中扩展外围芯片的方法。 2掌握8255A芯片的结构及编程方法。 3掌握键盘接口电路的工作原理,编程方法。 三、实验电路16752408.doc15 四、接线方法首先将键盘部分与8279连线的短路片全部拔掉,然后键盘矩阵的KA0KA7接8255A的PA0PA7,KB0KB2接8255A的PB0PB2。 8255A芯片的CS1接0007端,PC0PC7接发光二极管的L1L8。 注意实验完成后,请将短路片插回原处。 五、程序流程图入口显示初值放入24H单元置8255A控制字,A,C口出,B口入从C口输出显示往A口(行线)全输出低电平从B口(列线)读入数据,保存Y列线取反后全低电平?N延时去抖动重置8255A控制字,A口入,B,C口出通过B口(列线)输出保存的列线值由A口(行线)读入行线值,保存Y行线值取反后,全为低电平?N置计数初值和字符码表首址16752408.doc16从表中读一行线码N与读入值相等?指针指向下一行线码从表中读相应列线码字符码表指针下移N N与读入值相等?计数值减一,为0?Y Y据行线码,列线码从字符码表中取相应字符值并存入42H单元置8255A控制字,A,C口出,B口入从C口输出字符值显示把全0从A口输出到列线上从B口读入行线值只要低三位并取反N Y为0否?16752408.doc17 六、实验原理18255A有三种基本工作方式,其中方式0是一种基本的输入或输出方式。 在这种工作方式下,三个端口的每一个都可由程序设定为输入或输出,这种方式适用与无条件地传送数据的设备。 2识别键的闭合,通常采用行扫描法和行反转法。 行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。 本实验采用的是行反转法。 行反转法识别闭合键时,要将行线接一并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作与输入方式,程序使CPU通过输出端口往各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。 然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上输入值,那么,在闭合键所在行线上的值必定为0。 这样,当一个键被按下时,必定可以读得一对唯一的行线值和列线值。 七、程序清单T09.ASM ST_ADDR EQU4000H PAEQU1B00H PB EQU PA+1PC0EQU PB+1PCTL EQUPC0+1ORGST_ADDR LJMPSTART TABLE:DW06FEH,06FDH,06FBH,06F7H,06EFH,06DFH,06BFH DW067FH,05FEH,05FDH,05FBH,05F7H,05EFH DW05DFH,05BFH,057FH CHAR:DB08h,09H,0AH,0BH,0CH,0DH,0EH,0FH,00H,01H DB02H,03H,04H,05H,06H,07H ORGST_ADDR+200H START:MOV42H,#0F0H STA1:MOV DPTR,#PCTL MOV A,#82H MOVXDPTR,A LINE:MOV DPTR,#PC0MOV A,42H16752408.doc18MOVX MOVCLR MOVX MOV MOVX MOVDPTR,A DPTR,#PA ADPTR,A DPTR,#PB A,DPTR40H,A DEL0:DEL1:TT:MOVC MOVORL A,#0F8H A JZ LINE MOV R7,#10H MOV R6,#0FFH DJNZ R6,DEL1DJNZ R7,DEL0MOV DPTR,#PCTL MOV A,#90H MOVXDPTR,A MOV A,40H MOV DPTR,#PBDPTR,A MOV DPTR,#PA MOVX A,DPTR MOV41H,A CPLAJZLINEMOV DPTR,#TABLE MOV R7,#10H MOV R6,#00H MOVX A,DPTR CJNE A,40H,NN1INC DPTR MOVXA,DPTR CJNE A,41H,NN2MOV DPTR,#CHAR A,R6A,A+DPTR42H,A19CPL MOVXMOV16752408.doc BBB:MOV DPTR,#PCTL MOV A,#82H MOVXDPTR,A AAA:MOV A,42H MOV DPTR,#PC0MOVXDPTR,A MOV DPTR,#PA CLRA MOVXDPTR,A MOV DPTR,#PB MOVXA,DPTR ORL A,#0F8H CPLA JNZAAA JMPSTA1NN1:INC DPTR NN2:INC DPTRINCR6DJNZ R7,TT JMPBBB END 八、习题编写程序,改用行扫描法识别键的闭合。 16752408.doc20实验五数码显示实验 一、实验内容做一个电子钟利用定时器0定时中断,控制电子钟走时;利用单片机上的六个数码管显示分、秒。 显示格式X X-X X分秒 二、实验目的1进一步掌握定时器的使用和编程方法。 2了解七段数码显示数字的原理。 3熟练掌握Keil c51和Proteus联调的方法 二、实验电路16752408.doc21 四、程序流程图主程序16752408.doc入口显示单元置初值定时器0初始化,置位EA,ET0时间及分、秒计数单元置0开始计数,扫描初值R2显示缓冲单元首址R0取显示单元值,转为段码送段数据口扫描值送位数据口显示单元地址减一扫描值带进位位(=0)右移一位N扫描值=0?Y取分、秒计数值,经变换放入相应显示单元22中断程序:16752408.doc中断入口定时器置初值时间计时单元加一N计时单元=10?Y计时单元置0秒加一,十进制调整N秒值=60?Y秒置0,分加一,十进制调整N分值=60?Y分置0返回23 六、程序清单T10ASM ST_ADDR EQU0000H PAEQU7FFCH;A口地址PBEQU7FFDH;B口地址CTR EQU7FFFH;控制字地址BUF EQU23H SBFEQU22H;存放秒MBF EQU21H;存放分ORGST_ADDR LJMPMAIN ORGST_ADDR+0BH;定时器0中断入口LJMP CLOCK ORGST_ADDR+200H MAIN:MOV DPTR,#CTR;写控制字MOV A,#80H MOVXDPTR,A MOV R0,#40H MOV A,#00H MOVR0,A INCR0MOVR0,A INCR0MOV A,#0AH MOVR0,A INCR0MOVR0,A INCR0MOV A,#00H MOVR0,A INCR0MOVR0,A ANLTMOD,#0F0H ORLTMOD,#01H MOV TL0,#00H MOVTH0,#38H MOVBUF,#00H;清零MOV SBF,#00H MOVMBF,#00H16752408.doc24SETB ET0;开定时器0SETB EA SETB TR0DS1:MOV R0,#45H MOV R2,#20H DS2:MOV DPTR,#PB;位选MOV A,R2MOVXDPTR,A MOV DPTR,#PA MOV A,R0LCALL TABLE MOVXDPTR,A;送段码LCALL DELAY1;延时DEC R0CLR CMOV A,R2RRC A MOV R2,A JNZDS2MOV R0,#45H MOV A,SBF LCALLGET DEC R0DECR0MOV A,MBF LCALLGET SJMPDS1TABLE:INC A MOVC A,A+PC RET DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H,0BFH GET:MOV R1,A ANL A,#0FH MOVR0,A DECR0MOV A,R1SWAP A ANL A,#0FH16752408.doc25MOVR0,A DECR0RET CLOCK:MOV TL0,#00H;定时器中断子程序MOVTH0,#38H PUSH PSW PUSH ACC INCBUF MOV A,BUF CJNE A,#0AH,QUIT MOVBUF,#00H MOV A,SBF INC A DA A MOVSBF,A CJNEA,#60H,QUIT MOVSBF,#00H MOV A,MBF ADD A,#1H DA A MOVMBF,A CJNEA,#60H,QUIT MOVMBF,#00H QUIT:POP ACCPOP PSWRETI DELAY1:MOV R4,#10;4ms延时DEL11:MOV R5,#0AH DEL12:MOV R3,#18H DEL13:DJNZ R3,DEL13DJNZ R5,DEL12DJNZ R4,DEL11RET END 七、习题1改写程序,使数码管显示分、秒,并用小数点分隔。 2改编程序,使数码管显示时、分、秒计数。 3改写程序,使数码管可分时显示年,月,日,时间等。 16752408.doc26实验 六、8279键盘、显示接口实验LED显示实验 一、实验内容利用8279键盘显示接口电路和实验台上提供的六个数码显示,作成一个电子钟。 格式为XX.XX.XX由左向右分别为时、分、秒。 二、实验目的掌握在8031系统中扩展8279键盘显示接口的方法。 掌握8279工作原理和编程方法。 进一步掌握中断处理程序的编程方法。 三、实验原理利用8279可实现对键盘/显示器的自动扫描,以减轻CPU负担,具有显示稳定、程序简单、不会出现误动作等特点。 四、实验电路16752408.doc27 五、接线方法首先检查数码显示部分与8279之间连接的短路片是否已经插好,插好后再将片选端CS7接3037。 六、程序流程图主程序入口16752408.doc8279,定时器0,初始化开始计数写显示缓冲器RAM命令字显示单元首址R1取显示单元数据低四位转为段选玛,置位最高位使小数点亮,输出取显示单元数据高四位转为段选玛输出R1指向下一显示单元Y R7计数值减一,等于0?N28中断子程序置定时器0初值,置位TR0有关寄存器入栈时间计数单元加1N其值=10?Y将其清零,秒加1,十进制调整N秒值为60?Y秒清零,分值加1,十进制调整N分值为60?Y分值清零,时加1,十进制调整N时值为24?Y将时值清零有关寄存器出栈中断返回2916752408.doc 七、程序清单T11.ASM ST_ADDR EQU4000H PORTEQU1B30H BUFEQU24H HOUREQU23H MINEQU22H SECEQU21H ORGST_ADDR LJMPINIT ORGST_ADDR+0BH LJMPCLOCKORGST_ADDR+200H INIT:MOV DPTR,#PORT+1MOV A,#0D1H MOVXDPTR,A LP:MOV A,#2AH MOVXDPTR,A MOV A,#00H MOVXDPTR,A ANLTMOD,#0F0H ORLTMOD,#01H MOV TL0,#00H MOVTH0,#38H MOVHOUR,#00H MOVMIN,#00H MOVSEC,#00H MOVBUF,#00H SETBET0SETB EA SETB TR0LOOP:MOV DPTR,#PORT+1MOVA,#90H MOVXDPTR,A MOV R7,#03H MOVR1,#21H MOV DPTR,#PORT DL0:MOVA,doc MOV ANL LCALLORL MOVXMOV SWAPR2,A A,#0FH TABLEA,#80HDPTR,A A,R2A ANLLCALL MOVXINC DJNZLJMP TABLE:INC MOVCRETDB DB CLOCK:MOV MOV PUSH PUSHINC MOV CJNE MOV MOV INC DA MOVCJNE MOVMOV INCDA MOVCJNE MOVA,#0FH TABLEDPTR,A R1R7,DL0LOOP A A,A+PC3FH,06H,5BH,4FH,66H6DH,7DH,07H,7FH,6FH TL0,#00H TH0,#38H ACCPSW BUF A,BUFA,#0AH,ENDT BUF,#00H A,SEC A A SEC,A A,#60H,ENDT SEC,#00HA,MIN AA MIN,AA,#60H,ENDT MIN,#00H3116752408.doc MOVINCDA MOVCJNEMOVA,HOUR AA HOUR,AA,#24H,ENDT HOUR,#00H ENDT:POP PSW POP ACC RETI END3216752408.doc实验七串行口实验 一、实验内容将从单片机小键盘上输入的数字、字母显示在终端屏幕上,将终端键盘上键入的字符(0F)显示到单片机数码管上。 二、实验目的1掌握单片机串行口工作方式的程序设计。 2掌握单片机通讯程序的编制。 三、接线方法a)首先检查8279与数码显示和键盘之间连线短路片是否已经插好,然后将8279的片选端CS7接3037。 b)IRQ接INT01。 c)用RS232电缆将数据终端与实验台上J13相连。 四、实验电路 五、程序流程图子程序DISP显示R2中的内容。 16752408.doc写显示缓冲器RAM命令取R2中数值转换为段选码从数据口输出返回33主程序:入口定时器1初始化16752408.doc8279初始化设置EA及EX1(键盘中断)清除串口及定时器1中断允许串行口初始化N接收缓冲器中有数据否?(RI=1?)Y清除RI将接收的字符的ASCII码转换成十六进制数显示到LED上34中断程序KEYN从小键盘读入字符值并转换为ASCII码入口从键盘读入数据求列值求行值列值加8输出CASE行值列值加16输出输出列值CASE所得新值都当作空格符20H是数字加30H是AG是M加加37H3CH是P加3EH是R加3FH发送中断标志位TI=0?N清除TI所得ASCII码送SBUF Y中断返回3516752408.doc 五、程序清单T15.ASM ST_ADDR PORTMAIN:LOAD:KEYN:EQU4000H EQU1B30H ORGST_ADDR LJMPMAIN ORGST_ADDR+3H LJMPKEYN ANLTMOD,#0F0H ORLTMOD,#20H MOVTH1,#0F3H MOVTL1,#0F3H MOVDPTR,#PORT+1MOVA,#0D1H MOVXDPTR,A MOVA,#2AH MOVXDPTR,A MOVA,#40H MOVXDPTR,A MOVA,#00H MOVXDPTR,AMOVA,#80H MOVXDPTR,AMOVSCON,#52H SETB EASETBEX0SETB TR1CLR ESCLR ET1JNB RI,LOAD CLRRI MOVA,SBUF MOVR2,A LCALLCHANGE LCALLDISP JMPLOAD PUSHACC PUSHPSW3616752408.doc MOVMOVXMOVANL MOVMOVANLDPTR,#PORT A,DPTR R1,AA,#07H R2,AA,R1A,#38H LINE1:LINE2:QUIT1:CHAR:WD_M:RR ARR ARR AMOVR3,A CJNE R3,#00H,LINE1MOVA,R2ADD A,#08H LJMP QUIT1CJNE R3,#01H,LINE2MOVA,R2LJMUIT1MOVA,R2ADDA,#10H CLR C PUSHACC SUBB A,#0AH JNCCHAR POP ACC ADDA,#30H LJMP SEND POP ACC PUSHACC SUBB A,#11H JNCWD_M POPACC ADDA,#55LJMPSENDPOPACCCJNEA,#11H,WD_P ADDA,#3CH LJMPSEND3716752408.doc WD_P:CJNEA,#12H,WD_R ADDA,#3EH LJMPSEND WD_R:CJNEA,#13H,OTHR ADDA,#3FH LJMPSEND OTHR:MOVA,#20H SEND:JNB TI,SEND CLRTI MOVSBUF,A POPPSWPOPACCRETICHANGE:MOVA,R2CLRCSUBBA,#30H MOVR2,A SUBBA,#0AH JCRET2MOVA,R2SUBBA,#07H MOVR2,A RET2:RET DISP:MOVDPTR,#PORT+1MOVA,#80H MOVXDPTR,AMOVDPTR,#PORT DL0:MOVA,R2ANLA,#0FH LCALLTABLEMOVXDPTR,A RETTABLE:INCAMOVCA,A+PC RETDB3FH,06H,5BH,4FH,66H,6DH DB7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H,40H END16752408.doc38实验八A/D,D/A转换实验 一、实验内容1利用实验台上的ADC0809做A/D转换器,实验台上的电位器提供模拟量输入,将模拟量转换成数字量,用发光二极管显示。 2利用DAC0832,编制程序产生正弦波。 二、实验目的1掌握A/D芯片ADC0809转换性能及编程方法。 2掌握D/A转换芯片0832的性能及编程方法。 三、实验原理1ADC0809是八位逐次逼近法A/D转换器,每采集一次需100?s。 ADC0809D的START端为A/D转换启动信号,ALE端为通道选择地址的锁存信号。 实验电路中将其相连,以便同时锁存通道地址并开始/D采样转换,故启动A/D转换只需如下两条指令MOVDPTR,#1B20H MOVXDPTR,AA中为何内容并不重要,这是一次虚拟写。 中断方式下,A/D转换结束后会自动产生EOC信号,将其与8031的INT0相接。 中断处理程序中,使用如下指令即可读取A/D转换结果MOVDPTR,#1B20H MOVXA,DPTR3D/A转换是把数字量转换成模拟量。 本实验中,输入寄存器占偶地址端口,DAC寄存器占较高的奇地址端口。 两个寄存器均对数据独立锁存。 因而要把一个数据通过0832输出,要经两次锁存。 典型程序段如下MOVDPTR,PORTIN MOVA,#DATA MOVXDPTR,A INC DPTR MOVXDPTR,A其中,第二次I/O写是一个虚拟写过程,其目的只是产生一个WR信号,启动D/A. 四、接线方法内容1:0809片选端CS5接2027,EOC接INT0;P1.0P1.7接发光二极管L1L8。 2K电位器中间头接IN0,另外两个头一端接+5V,另一端接地。 内容20832片选端CS6接282F,AOUT接示波器探头。 五、实验电路内容1A/D转换16752408.doc39内容2D/A转换 六、程序流程图内容1:A/D转换,查询方式16752408.doc启动A/D转换软件延时读取转换结果送P1口由发光二极管显示40内容2:D/A转换主程序16752408.doc入口定时器0初始化,置位EA,ET0,装入时间常数计数初值送R1并显示锯齿波计数初值送R1并显示三角波计数初值送R1并显示正弦波显示方波中断子程序DELAY:入口向定时器0装时间常数计数值R1减一开始计数中断返回41正弦波显示子程序PRG3:入口初始化DAC寄存器端口送R0,计数值送R4,表首址送DPTR从表中取一数据数据输出到DAC输入寄存器启动D/A DPTR指向下一数据N R4计数值为0否?Y装计数初值入R4,表首址送DPTRN计数时间到?Y返回 七、程序清单内容1A/D转换,查询方式T19_2.ASM ST_ADDR EQU4000H PORTEQU1B20H ORGST_ADDR LJMPMAIN ORGST_ADDR+200H MAIN:MOVDPTR,#PORT LOOP:MOVXDPTR,A16752408.doc42MOVR6,#14H DELAY:NOP DJNZ R6,DELAY MOVXA,DPTR MOVP1,A SJMPLOOP END内容2D/A转换,输出正弦波ST_ADDR EQU4000H ORGST_ADDR LJMPMAIN ORGST_ADDR+1BH LJMP DELAY ORGST_ADDR+200H MAIN:ANLTMOD,#0FH ORLTMOD,#10H SETBEASETBET1MOVTL1,#00H MOVTH1,#38H SETB TR1MOVP2,#1BH DISP:MOVR1,#72H LCALL PRG1MOVR1,#0B2H LCALLPRG2MOVR1,#0F2H LCALLPRG3LCALLPRG4LJMPDISPDELAY:CLR TR1MOVTL1,#00H MOVTH1,#38H DECR1SETBTR1RETI PRG1:NOP RET43;锯齿波16752408.doc PRG2:NOP;三角波RET PRG3:MOVR0,#29H;正弦波MOVR4,#40H MOVDPTR,#DATA0LP11:MOVXA,DPTR DECR0MOVXR0,A INCR0MOVXR0,A INC DPTR DJNZR4,LP11MOVR4,#40H MOVDPTR,#DATA0CJNER1,#0C0H,LP11DATA0:DB80H,8CH,98H,0A5H,0B0H,0BCH,0C7H,0D1H,0DAH,0E2H,0EAH DB0F0H,0F6H,0FAH,0FDH,0FFH,0FFH,0FDH,0FAH,0F6H,0F0H DB0EAH,0E2H,0DAH,0D1H,0C7H,0BCH,0B0H,0A5H,98H,8CH DB80H,7FH,73H,67H,5AH,4FH,43H,38H,2EH,25H,1DH,15H DB0FH,09H,05H,02H,00H,00H,02H,05H,09H,0FH,15H DB1DH,25H,2EH,38H,43H,4FH,5AH,67H,73H,7FH RETPRG4:NOP;方波RET END 八、习题1.A/D转换重新编写程序,用中断方式实现。 2.D/A转换编写程序,使原程序增加锯齿波PRG1;三角波PRG2;方波PRG4。 (提示产生锯齿波和三角波只需由A存放的数字量增减来控制。 )16752408.doc44实验九电子音响实验 一、实验目的1了解计算机发声原理。 2学习使计算机发出不同音调声音的编程方法。 二、实验内容利用P1口输出不同频率的脉冲通过扬声器发出不同频率音调。 三、实验原理1音阶由不同频率的方波产生,音阶与频率的关系如表一所示。 2方波的频率由定时器控制。 定时器计数溢出后,产生中断,将P1.7口取反即得周期方波。 每个音阶相应的第时器初值可按下法计算晶振为6.144MHZ时,音阶“1”相应的定时器初值为X,则1262*2=(216-X)*12(6.144*106)可得X=64559D=FC2FH,其它的可同样求得(见下表单位HZ,X为16进制)音4调5671234567123频175196220247262294330349392440494523587659率X FA49FA E6FB7E FC0C FC2F FC8F FCF8FD23FD73FD BAFD FAFE18FE4C FE943音的节拍由延时子程序实现。 延时子程序实现基本延时时间,节拍值只能是它的整数倍。 四、实验电路 五、接线方法将8031的P1.7接LB插孔,扬声器接J616752408.doc45 六、程序流程图入口初始化定时器1置位ET1,EA从表中取X值高半部入TH1Y该值为0?N取X值低半部入TL1开始计数取节拍对应值,延迟相应时间长度表指针指向下一个X值中断子程序入口P1.7位取反转入计数初值置位TR1中断返回 七、程序清单T20.ASM16752408.doc46ST_ADDR MAIN:LOP:LOOP1:LOOP2:LOOP3:INT_0:EQU4000H ORGST_ADDR LJMPMAIN ORGST_ADDR+1BH LJMPINT_0ORGST_ADDR+200H ANLTMOD,#0FH ORLTMOD,#10H SETBET1SETBEAMOVDPTR,#TONE MOVA,#00H MOVCA,A+DPTR JZMAIN MOVR5,AMOVTH1,A INCDPTR MOVA,#00H MOVCA,A+DPTR MOVR6,AMOVTL1,R6SETBTR1INCDPTRMOVA,#00H MOVCA,A+DPTRMOVR2,AMOVR3,#80H MOVR4,#0FFH DJNZR4,LOOP3DJNZR3,LOOP2DJNZR2,LOOP1INCDPTRMOVA,#00H LJMPLOP PUSHDPH PUSHDPL PUSHACC CPLP1.74716752408.doc TONE:MOVTH1,R5MOVTL1,R6SETBTR1POPACCPOP DPLPOP DPH RETI DB0FCH,2FH,04H,0FCH,99H,04H DB0FCH,0F8H,04H,0FDH,22H,04H DB0FDH,073H,04H,0FDH,0BCH,04H DB0FDH,0FAH,04H,0FEH,17H,04H DB0FEH,17H,04H DB0FDH,0FAH,04H,0FDH,0BCH,04H DB0FDH,73H,04H,0FDH,22H,04H DB0FCH,0F8H,04H,0FCH,99H,04H DB0FCH,2FH,04H,00H,00H,00H END4816752408.doc实验十继电器控制实验 一、实验内容利用P1口输出高低电平,控制继电器的开合,以实现对外部转置的控制。 二、实验目的掌握用继电器控制的基本方法和编程。 三、实验原理现代自动化控制设备中,都存在一个电子电路与电气电路的互相联结问题,一方面要使电子电路的控制信号能够控制电气电路的执行元件(电动机,电磁铁,电灯等),一方面又要为电子电路的电气电路提供良好的电隔离,以保护电子电路和人身的安全。 电子继电器便能完成这一桥梁作用。 本实验所用继电器,型号为JDC3F,控制电压为直流+5V,控制端为JDQ插孔,当JDQ为高电平时,继电器不动作,为低电平时继电器动作(常闭触点断开,常开触点闭合)。 四、实验电路 五、程序流程图入口向继电器输出高电平延时向继电器输出低电平延时 六、接线方法8031的P1.1接JDQ端,继电器的输出J4接一白炽灯泡。 16752408.doc49 七、程序清单T22。 ASM ST_ADDR EQUORG LJMPORG START:SETB ACALLLP:CPL ACALLLJMPDE3S:MOVD0:MOVD1:MOVD2:DJNZ DJNZDJNZ RETEND4000H ST_ADDR STARTST_ADDR+200HP1.1DE3S P1.1DE3S LPR0,#30R1,#00H R2,#38H R2,D2R1,D1R0,D05016752408.doc实验十一步进电机控制实验 一、实验内容:利用74LS273输出脉冲序列,开关K1-K6控制步进电机转速(分6档),K7,K8控制步进电机转向。 必须要K1-K6中一开关和K 7、K8中一开关同时为1时步进电机才启动,其他情况步进电机不工作。 二、实验目的1.了解步进电机控制的基本原理。 2.掌握控制步进电机转动编程方法。 三、实验原理:步进电机驱动原理是通过对它每相线圈中的电流的顺序切换来使电机作步进式旋转。

温馨提示

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

评论

0/150

提交评论