单片机接口技术实验指导书(6个实验).doc_第1页
单片机接口技术实验指导书(6个实验).doc_第2页
单片机接口技术实验指导书(6个实验).doc_第3页
单片机接口技术实验指导书(6个实验).doc_第4页
单片机接口技术实验指导书(6个实验).doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

单片机接口技术实验指导书襄樊学院物理与电子信息技术系 实验报告内容及格式1.实验目的2.实验设备3.实验原理及环境4.实验内容只做文字叙述,程序部分放在程序清单中。流程图也可不画。5.程序清单本实验使用的完整程序。如果使用了本实验或前面实验中完全相同的子程序,可不列写,只做注明即可。6.实验步骤7.实验总结主要包括对实验结果、调试过程、错误及产生的原因的分析,以及本次实验的重要收获等。此项为实验成绩评定的重要依据。实验1 Keil C51的使用(汇编语言) 1.实验目的:初步掌握Keil C51(汇编语言)和ZY15MCU12BD型综合单片机实验箱的操作和使用,能够输入和运行简单的程序。2.实验设备:ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装Keil C51的计算机一台。3.实验原理及环境:在计算机上已安装Keil C51软件。这个软件既可以与硬件(ZY15MCU12BD型综合单片机实验箱)连接,在硬件(单片机)上运行程序;也可以不与硬件连接,仅在计算机上以虚拟仿真的方法运行程序。如果程序有对硬件的驱动,就需要与硬件连接;如果没有硬件动作,仅有软件操作,就可以使用虚拟仿真。 4.实验内容:1.掌握软件的开发过程:1)建立一个工程项目选择芯片确定选项。2)加入C 源文件或汇编源文件。3)用项目管理器生成各种应用文件。4)检查并修改源文件中的错误。5)编译连接通过后进行软件模拟仿真。6)编译连接通过后进行硬件仿真。7)I A P 编程操作2.按以上步骤实现在P1.0输出一个频率为1Hz的方波。3.在2的基础上,实现同时在P1.0和P1.1上各输出一个频率同为1Hz但电平状态相反的方波。5.程序清单:1. P1.0输出一个频率为1Hz的方波: 程序参见实验步骤中程序2. 同时在P1.0和P1.1上各输出一个频率同为1Hz但电平状态相反的方波: ORG 0000HSTART: CPL P1.1AGAIN: CPL P1.0 CPL P1.1 MOV R0,#10;延时0.5秒LOOP1:MOV R1,#100LOOP2:MOV R2,#250 DJNZ R2,$ DJNZ R1,LOOP2 DJNZ R0,LOOP1 SJMP AGAIN END6.实验步骤:以下假定你在E:TEST 文件夹下学习、运行Keil1.建立一个工程项目选择芯片确定选项ProjectNew Project输入工程名test保存工程文件(鼠标点击保存按钮),然后选CPU厂家(Atmel)选CPU型号(89C51), 选好后确定。接着选晶振频率及生成HEX 文件等。ProjectOptions for Target Target 1 在Target中更改CPU 晶振频率为12MHz在Output中选择生成HEX 格式其它采用缺省设置选好后确定。2.建立汇编源文件FileNew, 弹出源文件编辑窗口。输入以下源文件:ORG 0000HAGAIN: CPL P1.0MOV R0,#10;延时0.5秒LOOP1:MOV R1,#100LOOP2:MOV R2,#250DJNZ R2,$DJNZ R1,LOOP2DJNZ R0,LOOP1SJMP AGAINEND源程序编写完后,FileSave As 将文件以test.asm保存在E:test 目录下,获得汇编语言源程序。3.用项目管理器生成(编译)各种应用文件点击Target 1 前之+ 号出现Source Group1点击它并按鼠标右键会生弹出下拉菜单见图1-5 编译文件文件窗口选择Add Files to Group Source Group 1 点击add向项目中添加Test.asm 源文件点击close关闭Add Files to Group Source Group 1窗口在Source Group 1 前会出现一个+号点击之弹出test. asm 文件名点击该文件名主窗口中会出现该程序编译:ProjectBuild target 就会生成一系列到文件如OBJ 文件LST 文件HEX文件等。4.检查并修改源文件中的错误如果在源文件中存在错误在Output 窗口中会出现错误提示信息,你可以在源程序中进行修改,然后存盘后重新Build 观察错误提示信息。5.编译连接通过后进行软件模拟仿真DebugStart/Stop Debug Session进入软件模拟的仿真窗口,可使用单步、设断点来进行调试和除错。6.编译连接通过后进行硬件仿真实验箱的仿真串口必须与PC 机串口连接,通电,拨位开关K10必须拨在B端,连接P10和L0,连接P11和L1,设置硬件实时仿真调试选项:ProjectOptions for Target TargetlDebug.硬件实时仿真调试选项窗口,见图1-5 选硬件仿真选项,按确定按钮确定。进入硬件实时调试窗口后,可打开各种观察窗口,进行单步断点运行到光标连续执行等操作,无误后可连续运行观察LED发光管的显示效果。注意退出时须按单片机的复位按键SS10,在进行硬件连接前最好也先按单片机的复位按键SS10。7.修改以上程序,实现同时在P1.0和P1.1上各输出一个频率为1Hz但电平状态相反的方波。7.实验总结:实验2 十六进制与十进制的转换 1.实验目的:实践汇编语言顺序结构的编程方法,掌握十六进制数转换成十进制数的编程实现,掌握单步运行程序的基本技巧。2.实验设备:ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装Keil C51的计算机一台。3.实验原理及环境:将十六进制数转换成十进制数有多种方法,比较典型的是用待转换数除以权值的方法,即依次除以100、10,则各次的商和最后的余数就是所需要的十进制数。4.实验内容:将放在片内RAM30H中的2位十六进制数转换成3位十进制数,按照从高位到低位的顺序分别放入31H33H中(即非压缩的BCD码)。在本实验中,要求使用单步方式运行,以便观察各单元的变化过程。ORG 0000HMOV 30H,#128MOV A,30HMOV B,#10DIV ABMOV 33H,BMOV B,#10DIV ABMOV 32H,BMOV B,#10DIV ABMOV 31H,BEND5.程序清单: 参见实验内容中程序6.实验步骤:1.建立一个工程,将在预习中做好的*.asm文件加入。2.调出存储器编辑窗口,将30H单元修改成某一值。3.在希望停下来的指令上设断点,然后运行,在断点处停下来后,再单步运行,可以看到各单元的变化情况。运行完最后一条指令后,在31H33H中应获得30H中十六进制数对应的十进制数。7.实验总结:实验3 8段LED显示器动态显示1.实验目的:掌握8段LED显示器的使用及显示程序的设计方法。2.实验设备:ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装Keil C51的计算机一台。3.实验原理及环境:1. 实验箱上有6位8段LED显示器,采用动态方式驱动。即使一位LED显示器显示内容一段时间,然后下一位LED显示器显示内容一段时间,周而复始。只要刷新频率不小于50Hz,就可以获得清晰稳定的显示效果。2.MCS-51CPU通过一片8255对8段LED显示器进行段驱动和位驱动,8255的A口、B口、C口、控制口的地址分别为片外RAM的4000H、4001H、4002H、4003H。3.LED显示器的各段由8255的B口驱动,低电平对应段发光,高电平对应段熄灭。各段的驱动位如图5-1,各显示字的字形代码如下所示:显示字 字形代码 显示字 字形代码 显示字 字形代码 0 C0H 0. 40H - BFH 1 F9H 1. 79H 灭 FFH 2 A4H 2. 24HD4D3D6D2D1D5D0D7 3 B0H 3. 30H 4 99H 4. 19H 5 92H 5. 12H 6 82H 6. 02H 7 F8H 7. 78H 8 80H 8. 00H 9 90H 9. 80H A 88H A. 08H B 83H B. 03H图5-1 8段LED各段控制位 C C6H C. 46H D A1H D. 21H E 86H E. 06H F 8EH F. 0EH 4. LED显示器的各位由8255的A口驱动,低电平对应位发光,高电平对应位熄灭。 LED显示器 对应位口位 左起第一位 D0 左起第二位 D1 左起第三位 D2 左起第四位 D3 左起第五位 D4 左起第六位 D54.实验内容: 1.编写一个6位LED显示器驱动子程序(在主程序中已对接口芯片8255做好必要的初始化)。字形表按0F、0.F.、-、灭的顺序排列。该子程序的要求如下: 入口:待显示数(00H1FH)放在20H25H( 分别对应显示器的左起第1第6位)中。 出口:每位LED显示0.5mS后返回。占用:R0、R1、R2、A、PSW、DPTR。 2.子程序自身无法运行,为了运行这个子程序,另编写一个主程序。这个主程序的功能是首先对8255进行初始化,然后就反复调用显示子程序,显示20H25H中的待显示内容。 首先在20H起始的6个字节中置入00H0FH,然后连续运行此程序,应显示0F;在20H起始的6个字节中置入10H1FH,然后连续运行此程序,应显示0.F.;若置入20H、21H,则显示-、灭。3.按以下框图编写一段程序,运行后会在显示器上应出现连续向左移动的0F。5.程序清单:ORG 0000HMOV SP,#6FHMOV 20H,#01 MOV 21H,#02 MOV 22H,#03 MOV 23H,#04 MOV 24H,#05 MOV 25H,#06MOV DPTR,#4003H ;8255初始化 MOV A,#10000001B ; A口、B口方式0输出,C口高4位输出,低4位输入 MOVX DPTR,A ;ACALL DELAY500MS;延时0.5秒 LOOP3:LCALL DISP;调用显示子程序SJMP LOOP3DISP:MOV R0,#20H MOV R2,#0FEHDISP1:MOV A,R0 MOV DPTR,#TAB MOVC A,A+DPTR MOV DPTR,#4001H MOVX DPTR,A MOV A,R2 MOV DPTR,#4000H MOVX DPTR,A CALL DELAY500US MOV A,#0FFH MOVX DPTR,A MOV A,R2 RL A MOV R2,A INC R0 CJNE R0,#26H,DISP1RETDELAY500MS: PUSH 00H MOV R0,#25;延时0.5秒NEXT: ACALL DELAY20MS DJNZ R0,NEXT POP 00H RET DELAY500US:PUSH 03H MOV R3,#250 DJNZ R3,$ POP 03H RETDELAY20MS:PUSH 06H PUSH 07H MOV R7,#99 AGAIN: MOV R6,#100 DJNZ R6,$ DJNZ R7,AGAIN POP 07H POP 06H RETTAB: DB 0C0H,0F9H,0A4H,0B0H, 99H, 92H, 82H,0F8H ;0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 DB 80H, 90H, 88H, 83H,0C6H,0A1H, 86H, 8EH ;8 ,9 ,A ,B ,C ,D ,E ,F DB 40H, 79H, 24H, 30H, 19H, 12H, 2H, 78H ;0.,1.,2.,3.,4.,5.,6.,7. DB 00H, 10H, 08H, 03H, 46H, 21H, 06H, 0EH ;8.,9.,A.,B.,C.,D.,E.,F.END6.实验步骤:1.将P0.0P0.7与JD0JD7连接起来。开关KC倒向上方。2.建立一个工程,将在预习中做好的实验内容1和2的程序拷贝到一个*.asm文件加入。3.编译后与单片机硬件连接,运行。4.在20H起始的6个字节中置入00H0FH中的任意6个值,然后连续运行此程序,应显示0F中的6个数字;在20H起始的6个字节中置入10H1FH中的任意6个值,然后连续运行此程序,应显示0.F. 中的6个数字。5.如果运行结果不正常,可以用设断点、单步运行的方法查找错误所在,修改后重新编译、与单片机硬件连接,运行。直至获得正确的结果。6.建立一个工程,将在预习中做好的实验内容1和3的程序拷贝到一个*.asm文件加入。7.编译后与单片机硬件连接,运行。8.观察LED显示器,应从右向左依次出现0、1、2、37.实验总结:实验4 矩阵键盘的使用1.实验目的:掌握矩阵键盘的使用及键盘扫描程序的设计方法。2.实验设备:ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装Keil C51的计算机一台。3.实验原理及环境:实验箱上有一个16键的矩阵键盘,分为4行4列。4行分别连接到一片8255(与8段LED显示器的段驱动和位驱动共用)的PC0PC3,4列分别连接到8255的PC4PC7。8255的A口、B口、C口、控制口的地址分别为片外RAM的4000H、4001H、4002H、4003H。第4列(PC7)第3列(PC6)第2列(PC5)第1列(PC4)行输入PC300H01H02H03H第4行PC204H05H06H07H第3行PC108H09H0AH0BH第2行PC00CH0DH0EH0FH第1行00H01H02H03H列 驱 动图6-1 键盘布置及键值选择列驱动码使某一列为低电平而其它列为高电平,再读取行输入,若该列有键按下则相应的位便是低电平。每个键均安排一个键值,如图6-1所示。4.实验内容: 1.编写一个键盘扫描子程序(在主程序中已对接口芯片8255做好必要的初始化)。这个程序对键盘作一次扫描,若无键按下,返回时累加器A中为FFH,若有键按下,返回时A中为该键键值,键盘扫描子程序 其中,查键值子程序可以自行编写,也可以使用下面这个查键值子程序,这个子程序的参数如下: 入口:行列关键值码放在累加器A中,高4位是列驱动码(被扫描列的对应位为0,其余位均为1),低4位是行状态(按下键的对应位为0,其余位均为1)。 出口:键码放在A中带出。 占用:R1、A、PSW、DPTR。 程序清单如下: ;查键值子程序,起始地址为KEY20KEY20:PUSH ACC ;暂存关键值MOV R1,#00H ;查键值自变量清0KEY21:JNB ACC.4,KEY22;计算列数RR AINC R1SJMP KEY21KEY22:MOV A,R1 ;按每列4个键计算MOV B,#4MUL ABMOV R1,APOP ACC ;恢复关键值KEY23:JNB ACC.0,KEY24;计算行数RR AINC R1SJMP KEY23KEY24:MOV DPTR,#KEYTAB;读取键值MOV A,R1MOVC A,A+DPTRRETKEYTAB:DB 0FH,0BH,07H,03HDB 0EH,0AH,06H,02HDB 0DH,09H,05H,01HDB 0CH,08H,04H,00H 2.键盘扫描子程序自身无法运行,为了运行这个子程序,另编写以下程序:ORG 0000HMOV SP,#6FHMOV R0,#5;延时0.5秒LOOP1:MOV R1,#200LOOP2:MOV R2,#250DJNZ R2,$DJNZ R1,LOOP2DJNZ R0,LOOP1MOV DPTR,#(ADD_8255+3) ;8255初始化MOV A,#10000001B ; A口、B口方式0输出,C口高4位输出,低4位输入 MOVX DPTR,ALOOP3:LCALL DISP;调用显示子程序DIS,设显示子程序入口为DISPLCALL KEY;调用键盘扫描子程序,设键盘扫描子程序入口为KEYCJNE A,#0FFH,LOOP4;如果有键按下转SJMP LOOP3LOOP4:MOV 20H,21HMOV 21H,22HMOV 22H,23HMOV 23H,24HMOV 24H,25HMOV 25H,ASJMP LOOP3其中显示子程序使用实验3中的显示子程序。程序运行后,每按一键便从显示器的右端移入一个对应的数。5.程序清单:参见实验内容中的程序6.实验步骤:1.将P0.0P0.7与JD0JD7连接起来。开关KC倒向上方。2.建立一个工程,将在预习中做好的实验内容1和2的程序以及实验5中的显示子程序拷贝到一个的*.asm文件加入。3.编译后与单片机硬件连接,运行。4.按下键盘上的各键,相应的数字会出现在LED显示器上。7.实验总结:实验5 A/D转换1.实验目的:掌握用ADC0809实现A/D的方法。2.实验设备:ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装Keil C51的计算机一台。3.实验原理及环境:电位器W1将+5V电压分压后送入ADC0809的输入IN4IN7,调节电位器W1可以获得0+5V的电压输入。ADC0809的接口参数如下: 输入电压范围 0+5V 启动IN0IN7 A/D转换 写任意数到8000H8007H 取转换结果 读8000H8007H EOC通过一个反相器输出4.实验内容:设计一个程序,将IN4输入的0+5V模拟电压转换成数字量,再将这个2位十六进制转换成3位十进制数,放在LED显示器的第四六位显示。其中显示子程序可以用实验3中的子程序。判断转换是否结束可以将ADC0809的EOC(经反相器)引入到P1.0,然后查询P1.0的状态。5.程序清单:6.实验步骤:1.将P0.0P0.7与JD0JD7连接起来。开关KC倒向上方。2.将P0.0P0.7与U9D0U9D7连接起来。3.将P1.0与EOC连接起来。4.建立一个工程,将在预习中做好的实验程序*.asm文件加入。5.编译后与单片机硬件连接,运行。6.旋转电位器W1,LED显示器上的数字应在000000000255之间变化(因受电位器的调节范围限制,有可能小于这个范围)。7.实验总结:实验6 D/A转换 1.实验目的:掌握用DAC0832实现D/A转换的方法。2.实验设备:ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装Keil C51的计算机一台。3.实验原理及环境: DAC0832的连接使用单缓冲方式,D/A转换口地址为6000H。

温馨提示

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

评论

0/150

提交评论