单片机实验报告 附含说明书

更新时间:2024-06-19 22:24:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章 DICE-5208K开发型单片机综合实验仪概述

一、系统简介

DICE-5208K型单片机实验系统由DICE-5208K开发型单片机综合实验箱、DICE-3000型仿真器、扩展卡和DICE-51仿真开发系统软件等组成。是《MCS-51单片机原理与接口》、《单片机控制技术》、《C8051Fxxx高速SOC单片机原理及应用》、《EDA》、《VHDL硬件描述语言》、《CPLD/FPGA应用基础》等课程教学的配套实验设备。新增加了几乎所有最实用、新颖的接

2

口电路(如1 WIRE /IC/SPI总线等)和通讯类接口实验(如USB2.0通讯/TCP/IP网络通讯/CAN总线/红外线收发等)。可进行MCS-51、C8051F嵌入式单片机、CPLD/FPGA等课程的开放式实验教学。

二、主要特点

1.该实验系统配置DICE-3000型高性能MCS-51硬件仿真器,64K数据空间,64K程序空间全部开放,不占用CPU资源,采用双CPU模式,仿真CPU和用户CPU独立运行,上位仿真软件支持汇编、C语言、PL/M语言。可运行于WIN98/2000/NT/XP操作系统平台。

2.实验系统带有ISP在线下载电路,学生在完成实验后可脱离仿真机和PC机独立运行学生自行设计的单片机系统。(可在线编程AT89S51/52/53系列单片机)。

3.该实验系统可扩展C8051F020嵌入式实验开发模块, 并配有DICE-EC5型USB高速通讯仿真器,通过4脚的JTAG接口可以进行非侵入式、全速的在线系统调试、仿真;集成开发环境支持Silicon Labs IDE和KEIL C软件。

4.该实验系统可扩展CPLD/FPGA模块,并配有相应的并口下载电路,轻松变成一台EDA实验开发平台。

5.该实验系统可扩展“数控式电子演示装置”,该装置是本公司的专利产品,结合上位演示软件和USB接口,可为该实验系统扩展多达十五个生动、形象、复杂的实验,其中大部分是闭环实验,实验践性非常强。

6.实验电路单元尽可能独立开放,如开放式键盘, 开放式显示器,开放式串口等,为适应多种方式实验提供可能。

三、系统地址分配

1.I/0地址分配

1

地 址 扩展名称 用 途 8000H ~ 8FFFH 自定义 实验用口地址 9000H ~ 9FFFH 自定义 实验用口地址 0A000H~0AFFFH 自定义 实验用口地址 0B000H ~ 0BFFFH 自定义 实验用口地址 0C000H~ 0CFFFH 自定义 实验用口地址 0D000H ~ 0DFFFH 自定义 实验用口地址 0E000H ~ 0EFFFH 自定义 实验用口地址 0F000H ~ 0FEFFH 自定义 实验用口地址 0FF20H 8155控制口 写方式字 0FF21H 8155PA口 字位口 0FF22H 8155PB口 字形口 0FF23H 8155PC口 键入口 0FF28H 8255PA口 扩展用 0FF29H 8255PB口 扩展用 0FF2AH 8255PC口 扩展用 0FF2BH 8255控制口 写方式字 2.存储器地址分配 地 址 器 件 用 途 0000H ~ 0FFFFH AT89S52/27C512 用户程序空间 0000H ~ 7FFFH 62256 用户数据空间 2

第二章 开发环境简介

一、硬件安装

1.DICE-5208K(MCS-51单片机)硬件安装说明 (F1区)

首先用串行通讯电缆连接DICE-3000型仿真器串行口和PC机串行口,然后用34芯扁平线连接DICE-3000型仿真器和5208K开发型单片机综合实验仪的JF_1仿真接口。将5208K开发型单片机综合实验仪上的KB1开关设置在“一般模式”,KB2开关用两个短路块插在‘1’和‘2’(MCS-51)位置。从而完成实验系统与PC机的联机。

*注:实验系统上的CZ11串行口(F5区)为用户实验串行口。 2.系统开关设置 (F1区)

(1)SW1(EA端):程序空间选择开关,SW1→IP,选择CPU内部(一般不设置此模式,如果将目标程序通过烧写器写入单片机内部FALSH ROM中,要运行写入的程序时需设置到该模式,一般用于工程人员的目标系统开发),SW1→UP(出厂模式),选择CPU外部,此时可脱机运行EPROM中固化的程序,也可用仿真器进行联机实验。(用短路块选择)

(2)SW3、SW4、SW5:为键盘/显示选择开关,开关置ON(出厂模式),键盘/显示控制选择系统配置的8155接口芯片,反之由用户选择自定义的I/O接口芯片控制,在本机实验中,除8279实验外,键盘/显示为出厂模式。

(3)KB1开关:KB1开关有两种工作模式,平时都工作在“一般模式”,当我们用到单片机ISP在线编程功能时,将KB1开关打在“编程模式”。(ISP在线可编程AT89S系列单片机)。 (4)KB2 开关(用短路块实现):为 “MCS-51系统”与“C8051F系统”读写信号切换开关。当使用“MCS-51系统”时,将两个短路插在‘1’和‘2’位置,使用“C8051F系统”时,将两个短路块插在‘2’和‘3’位置。

(5)仿真器所接实验系统的JF_1 (IDC34)口为系统通讯口,用于程序的仿真、连接、装载 。而实验系统的CZ11口为用户实验通讯口,用于实验系统与PC机之间的串行口通讯实验。

二、DICE-51仿真器软件安装步骤

1.DICE-51仿真器软件安装步骤

(1)将所配光盘放入光驱,双击我的电脑,然后双击光盘驱动器图标; (2)双击 DICE-5208K开发型单片机综合实验仪文件夹; (3)双击MCS-51系统资料文件夹; (3)双击DICE-51仿真开发系统.exe;

(4)按界面上的提示(下一步)进行操作直到安装结束。 2. 选择通讯端口

双击桌面上的“DICE-51仿真开发系统”图标启动程序运行,根据弹出的对话框选择与仿真器实际连接的串行通讯端口即可。

3

3.仿真模式的选择

在调试程序前您必须设置仿真模式,其中包括仿真CPU、RAM与ROM的选择等。具体操作是打开“设置/仿真模式”对话框,当完成仿真模式的设置后单击“确认”。

联机实验时的设置如下:

CPU:选8031/8032 RAM:选用户RAM ROM:选系统ROM

脱机实验时,从矩阵键盘模块输入相应实验序号(如实验一,输入“01”),再按F0/EX即可运行该实验程序。

4

三、菜单及其命令简介

1. 文件菜单

新文件(N) Ctrl+N:建立一个新的源文件。

打开文件(O) Ctrl+O:弹出对话框,选取列表中的文件或在输入框输入文件名,

单击“打开”,文件编辑窗口即显示该文件内容。

关闭(C):关闭当前的活动窗口。

存储(S):将当前编辑窗口中的文件存到磁盘上。

另存为(A):将当前编辑窗口中的文件换成另一个文件名再存盘。 输出列表文件:将当前ROM地址空间的代码保存为.LST列表文件。

保存程序区?:弹出文件列表对话框,输入要保存的文件名并单击“保存”。 保存数据区?:弹出文件列表对话框,输入要保存的文件名并单击“保存”。 退出(E) Alt+X:执行该命令可退出DICE-51仿真系统。

2.编辑菜单

取消操作(U) Ctrl+Z:使用该命令能恢复文件编辑中最后一次所做的修改。 剪切(T) Ctrl+X:清除编辑窗口中选定的文件,并放置在剪贴板上。只有在选定文

本后,这一命令才有效。放置在剪帖板上的文件始终保留在那里,直到新内容替换掉它们。

复制(C) Ctrl+C:使用该命令可将选定的文本复制到剪贴板上。只有在选定文本

后,这一命令才有效。复制到剪贴板上的文本将替换掉先前的内容 。

粘贴(P) Ctrl+V:使用该命令可以将剪贴板内容插入到当前编辑窗口的光标位置。

如果在编辑窗口中已选定内容。使用该命令可用剪贴板上的内容替换掉选定的内容。如果剪贴板上无内容,这一命令将是无效的。

查找(S)? Ctrl+F:使用该命令可以在当前编辑窗口中查找文本字符串。该命令

包含两参数,您可选择使用:Whole Word 整字匹配、Match Case 区分大小写。

查找下一个 Ctrl+L:使用该命令可以继续查找在“查找”命令中指定的文本。

跳到行? Ctrl+G:使用该命令可以跳转到编辑窗口中指定的行。 字体(F):对编辑窗口中的文本进行字体、字号、颜色等设置。 刷新(R):重新显示当前编辑窗口。

5

3. 编译菜单

文件编译、连接:对当前编辑窗口源文件或当前工程组进行编译、连接,生成目标代码。 文件编译、连接、装载 Ctrl+F9:对当前编辑窗口源文件或当前工程组进行编译、连

接,并将生成的目标代码装入ROM。

装载(L) F3:将磁盘上存在的目标代码直接装入ROM。

浏览模块(B)? Ctrl+F3:该命令可在调试窗口中浏览源文件内容,通常适用于

浏览工程组中的源文件。

编译选项(J)?:使用该命令您可设置源文件编译的各选项。

4.调试菜单

连续运行(G) F9:执行该命令便开始连续运行用户程序,当遇到断点或按下Esc

暂停键时停止。

运行到指定地址(A)?:以连续方式运行程序,运行到指定的地址停下。如果在源文件方式下调试,可以选择符号地址。

运行到光标处(C) F4:以连续方式运行程序,运行到光标所在行停下。如果光标

移在非执行语句行,将不响应此命令。

单步运行(S) F7:逐步运行用户程序,遇到调用子程序,则跟踪进入子程序运行。 宏单步运行(O) F8:逐步运行用户程序,遇到调用子程序,一步执行完整个过程

而不进入子程序运行。

自动单步:以连续单步方式运行用户程序。 自动宏单步:以连续宏单步方式运行用户程序。

增加变量? Ctrl+F5:将程序中想要观察的变量增加到变量窗口,在程序运行时您要随时观察变量的内容。

设置或清除断点 Ctrl+F8:当光标移到调试窗口可执行语句行时,可以用该命令设

置断点,重复该命令也可清除断点。技巧:将鼠标移到调试窗口的可执行语句行左侧,单击鼠标即可设置断点。重复此操作也可清除断点。

浏览断点?:执行此命令即弹出对话框,您可通过对话框查看断点个数、断点所在的模块、断点地址、断点在源文件中的行号,您也可用此命令增加或清除断点。

清除所有断点:该命令可清除各个调试模块中所有设置的断点。

6

复位(R) Ctrl+F2:该命令可对(目标系统)CPU复位,同时将PC指针回复到装载

文件的初始值(如0000)。

重新开始运行(PC=0000):将当前PC置初始值(如0000)后再以连续方式运行。 暂停(O) Esc:该命令可停止当前程序的运行(适用于连续运行、自动单步/自动

宏单步运行方式),返回待令状态。

夭折处理(H):强制停下当前正在运行的程序。一般来讲,“暂停”命令即可停止,

如果正在运行和程序无法用“暂停”命令停止,可使用此命令。

设置PC?:将当前PC指针指向您输入的地址。如果在源文件方式下调试,可以选择符号地址。

PC=当前地址:将PC指针指向当前光标所在的可执行语句行。 用行断点进行调试:用行断点进行调试。

5.工程菜单

新建(N)?:打开文件列表框,创建新工程文件。

打开(O)?:弹出文件列表框,打开已存在的工程文件。

编辑(E)?:打开对话框,增加或删除工程中的文件。 关闭(C):关闭当前使用的工程文件。

文件列表?:打开工程文件列表对话框,可指定编辑工程中的源文件。

6.设置菜单

仿真模式(M)?:打开对话框,可对仿真CPU、RAM、ROM读写控制等选项进行设置。 通讯端口选择(P)?:选择与仿真器实际连接的通讯端口。

重新连接(C):通讯失败、检查硬件连接或重新选择通讯端口后,该命令可重新进

行通讯测试。

7.视图菜单

调试(D):打开程序调试窗口。如果未装载程序,可看到随机代码。 寄存器(R):打开寄存器窗口。您可对该窗口进行增加、删除操作。

存储空间1、存储空间2:IDE允许同时打开两窗口,可在该窗口切换查看程序存储器、数据存储器、CPU内部存储器、特殊寄存器等内容。

变量(V):打开变量窗口,可随时观察变量的变化。

编译连接信息:打开编译连接信息窗口,可查看源文件编译是否有错。

7

8.窗口菜单

层叠(C):以重叠方式排列已打开的窗口,但保持每窗口的标题栏都可见。 平铺(H):把已打开的窗口水平排列,使已打开的窗口都可见。 平铺(V):把已打开的窗口垂直排列,使已打开的窗口都可见。 前一窗口 F5:切换到前一窗口。 后一窗口 F6:切换到后一窗口。

关闭所有窗口(A):关闭所有已打开的窗口。

选择“窗口”菜单下已打开窗口的名称及编号可以激活该窗口。 9.帮助菜单

系统使用指南:可以打开DICE-51仿真器使用手册。 实验指导 8

实验一 彩灯控制实验

一、实验目的

(1)掌握MCS-51型单片机输入/输出端口的使用方法; (2)学习汇编语言的编程方法及调试技巧。

二、实验内容

根据K1(P3.0)、K2(P3.1)的状态,编程使P1口驱动的8位发光二极管按要求点亮。 要求:

(1)当K1(P3.0)=0、K2(P3.1)=0时,点亮方式为:L1(亮)、L2~L8(灭)→延时1秒→L2(亮)、L1、L3~L8(灭)→延时1秒→?→L8(亮)、L1~L7(灭)→延时1秒,不断循环;

(2)当K1(P3.0)=1、K2(P3.1)=0时,点亮方式为:L1、L2(亮)、L3~L8(灭)→延时1秒→L3、L4(亮)、L1、L2、L5~L8(灭)→延时1秒→?→L7、L8(亮)、L1~L6(灭)→延时1秒,不断循环;

(3)当K1(P3.0)=0、K2(P3.1)=1时,点亮方式为:L1(亮)、L2~L8(灭)→延时1秒→L1、L2(亮)、L3~L8(灭)→延时1秒→L1、L2、L3(亮)、L4~L8(灭)→延时1秒→?→L1~L8(亮)→延时1秒,不断循环;

(4)当K1(P3.0)=1、K2(P3.1)=1时,点亮方式为:L4、L5(亮)、L1~L3、L6~L8(灭)→延时1秒→L3、L6(亮)、L4、L5、L1~L2、L7、L8(灭)→延时1秒→?→L1、L8(亮)、L3~L7(灭)→延时1秒,不断循环。

三、实验接线图

9

四、实验程序框图

五、程序清单 文件名:DPJ01.ASM

ORG 0000H LJMP P010

ORG 0030H P010: MOV P3,#0FFH P011: MOV P1,#0FFH LCALL DELY

JB P3.0,P012 JB P3.1,P013 LCALL PRG1 ; P3.1=0,P3.0=0

AJMP P011

P012: JB P3.1,P014

LCALL PRG2

; P3.1=0,P3.0=1

10

P013:

P014:

PRG1: AJMP LCALL AJMP LCALL AJMP MOV LCALL P011

PRG3 ; P3.1=1,P3.0=0 P011

PRG4 ; P3.1=1,P3.0=1 P011

P1,#11111110B DELY

MOV LCALL MOV LCALL MOV LCALL MOV LCALL MOV LCALL MOV LCALL MOV LCALL

RET PRG2: MOV LCALL MOV LCALL MOV LCALL MOV LCALL

RET PRG3: MOV LCALL MOV LCALL MOV LCALL MOV

LCALL

P1,#11111101B DELY

P1,#11111011B DELY

P1,#11110111B DELY

P1,#11101111B DELY

P1,#11011111B DELY

P1,#10111111B DELY

P1,#01111111B DELY

P1,#11111100B DELY

P1,#11110011B DELY

P1,#11001111B DELY

P1,#00111111B DELY

P1,#11111110B DELY

P1,#11111100B DELY

P1,#11111000B DELY

P1,#11110000B DELY

11

MOV P1,#11100000B LCALL DELY

MOV P1,#11000000B LCALL DELY

MOV P1,#10000000B LCALL DELY

MOV P1,#00000000B LCALL DELY

RET PRG4: MOV P1,#11100111B LCALL DELY

MOV P1,#11011011B LCALL DELY

MOV P1,#10111101B LCALL DELY

MOV P1,#01111110B LCALL DELY

RET DELY: MOV R7,#10 DEL0: MOV R6,#200 DEL1: MOV R5,#250 DEL2: DJNZ R5,DEL2 ;250×2us =500us DJNZ R6,DEL1 ;200×500us=100ms DJNZ R7,DEL0

;10×100ms=1s

RET END

六、实验步骤

(1)将P3.1、P3.0用导线连至拨动开关K2、K1,将P1.7~P1.0用导线连至L8~L1;(2)拨动K2、K1选择好LED灯的点亮方式;

(3)观察LED灯的点亮情况是否与开关的状态一致。

七、思考题

如何修改程序,可实现更多不同的二极管点亮方式。

12

实验二 定时/计数器实验(脉冲计数)

一、实验目的

熟悉单片机内部定时/计数器的功能,掌握定时/计数器的初始化编程方法。

二、实验内容

将定时/计数器T0设为计数器方式,对外部输入(P3.4)的脉冲序列进行计数,并送显示器显示。计满数时,将P1.0置为低电平发出提示信号,延时后恢复P1.0为高电平。

三、实验接线图

将P3.4接C2区(单脉冲与时钟模块)的“二极管输出模块)的L1端。

”或“

”端,P1.0接E5区(发光

单脉冲电路

四、实验程序框图

13

主程序及中断服务程序流程图

五、程序清单 文件名:DPJ02.ASM

ORG 0000H LJMP MAIN ORG 000BH

LJMP TINT ;转中断服务程序

ORG 0100H

MAIN: MOV SP,#53H ;设置堆栈

MOV R0,#79H ;显示缓冲区清零 MOV R7,#06H

MOV A,#00H DIPP: MOV @R0,A INC R0

DJNZ R7,DIPP SETB P1.0

MOV TMOD,#06H ;置T0工作方式 MOV TH0,#0FBH

MOV TL0,#0FBH ;计数初值送计数器

14

XIAN: SETB ET0 ;允许T0中断 SETB EA ;CPU开中断 SETB TR0 ;启动T0 MOV A,TL0 SUBB A,#0FAH ANL A,#0FH MOV 79H,A LCALL DIS

AJMP XIAN ; DIS: PUSH DPH PUSH DPL SETB RS1

MOV P2,#0FFH

MOV A,#43H MOV R1,#20H ;FF20H MOVX @R1,A

MOV R1,#21H ;FF21H MOV A,#0FFH ; MOVX @R1,A

MOV R0,#7EH ; MOV R2,#20H ;00100000B MOV R3,#00H

MOV DPTR,#LS0

LS2: MOV A,@R0 ; MOVC A,@A+DPTR ; MOV R1,#22H ;8155PB MOVX @R1,A ; MOV A,R2 ; DEC R1 ; CPL A ; MOVX @R1,A ; CPL A

DEC R0 ;LS1: DJNZ R3,LS1 ; CLR C

RRC A ; MOV R2,A ; JNZ LS2 ;

INC R1 ;

;8155循环显示计数值 的定时器停止计数,PA、PB输出,PC输入为8155控制口地址 为8155PA口地址(字位口) 关显示 显示缓冲区首地址送R0

(位选码)从右向左显示 取待显示的数据 查表(段码)

口地址(字形口) 输出段码 取位选码 指向8155PA口

位选码取反(外部有反向驱动器75451) 输出位码 取下一位数据 延时 修改位选码(准备显示下一位数据) 保存

六位显示完否? 指向8155PB口

15

MOV A,#0FFH ;关显示 MOVX @R1,A CLR RS1 POP DPL POP DPH RET

LS0: DB 0C0H,0F9H,0A4H,0B0H,99H,92H ;012345 DB 82H,0F8H,80H,90H,88H,83H,0C6H ;6789Abc DB 0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH ;dEF灭PH.-

TINT: CLR P1.0 ;中断服务程序 LCALL DELY

SETB P1.0

RETI

DELY: MOV R7,#10 ;延时程序 DEL0: MOV R6,#200 DEL1: MOV R5,#250

DEL2: DJNZ R5,DEL2 ;250×2us =500us DJNZ R6,DEL1 ;200×500us=100ms DJNZ R7,DEL0 ;10×100ms=1s RET END

六、实验步骤

1.执行程序,按动单脉冲产生按钮(AN0),观察数码管上的计数值是在按钮按下时加“1”还是在按钮松开时计数数值加“1”。

2.观察发光二极管L1在单脉冲产生按钮(AN0)按动多少次时发生变化。

七、思考

1.计数器是在外部输入脉冲的上升沿还是下降沿加“1” 计数的。 2.外部输入的计数脉冲的频率最高不得超过单片机振荡频率的多少倍?

16

实验三 可编程I/O接口芯片8255实验

一、实验目的

1.掌握单片机系统中扩展可编程I/O接口芯片8255的方法; 2.掌握可编程I/O接口芯片8255的初始化编程方法。

二、实验内容

将8255 PA口设置为输入,接一组拨动开关。将PB口设置为输出,接一组发光二极管。将PC口设置为输出,PC0接一蜂鸣器。编程将PA口所接拨动开关的状态在PB口所接的发光二极管上显示出来。当PA口的值为FFH和00H时,蜂鸣器响,当PA口的值为其他值时,蜂鸣器关闭。

三、实验程序框图

17

8255 PC0与蜂鸣器的接口电路

8051与8255的接口电路

18

四、实验接线图

8255PA口与拨动开关的接口电路

8255PB口与发光二极管的接口电路

19

五、程序清单 文件名: DPJ03.ASM

MAIN: LOOP:

ORG LJMP ORG MOV MOV MOVX MOV MOVX INC

MOVX

CJNE SJMP

LOFF: CJNE L034: MOV

MOV MOVX SJMP

LOOW: MOV MOV

MOVX

SJMP END

0000H MAIN 0100H

DPTR,#0FF2BH A,#90H @DPTR,A DPTR,#0FF28H A,@DPTR DPTR @DPTR,A A,#00H,LOFF L034

A,#0FFH,LOOW DPTR, #0FF2BH A,#00H @DPTR,A LOOP

DPTR,#0FF2BH A,#01H @DPTR,A LOOP

;FF2BH为8255控制口地址 ;90H为控制字

;PA口方式0输入、PB、PC方式0输出 ;FF28H为8255 PA口地址 ;读拨动开关状态

;FF29H为8255 PB口地址 ;显示拨动开关状态 ;与设定状态00H比较

;与设定状态FFH比较

;开关的状态为00H或FFH时开蜂鸣器 ;01H为PC0置位控制字 ;开蜂鸣器

;开关的状态非00H或FFH时关蜂鸣器 ;00H为PC0复位控制字

六、实验步骤

8255 PA口接K1~K8,PB口接L1~L8运行程序,PC0接蜂鸣器输入端SP。运行程序,拨动K1~K8,观察L1~L8发光二极管是否对应点亮,蜂鸣器在PA口的值为FFH和00H时,是否会响。

七、思考

修改程序,8255 PB口接K1~K8,PA口接L1~L8运行程序,PC6接蜂鸣器输入端SP。运行程序,拨动K1~K8,观察L1~L8发光二极管是否对应点亮,蜂鸣器在PA口的值为FFH和00H时,是否会响。

20

实验四 ADC0809实验

一、实验目的

1.了解模/数转换器ADC0809的工作原理及性能; 2.掌握单片机与ADC0809的接口及编程方法; 3.通过实验了解单片机如何进行数据采集。

二、实验内容

利用实验系统上的ADC0809做A/D转换器,实验系统上的电位器提供模拟量输入,编制程序,将模拟量转换成数字量,通过数码管显示出来。

三、实验接线图

四、实验程序框图

21

五、程序清单 文件名:DPJ04.ASM

ORG 0000H LJMP SE11 ORG 0590H SE11: MOV SP,#53H MOV P2,#0FFH MOV A,#43H MOV DPTR,#0FF20H MOVX @DPTR,A

MOV 7EH,#00H MOV 7DH,#08H MOV 7CH,#00H MOV 7BH,#09H MOV 7AH,#10H MOV 79H,#10H LO18: LCALL SSEE MOV A,#00H

MOV DPTR,#8000H MOVX @DPTR,A L019: JNB P3.2,L019 MOVX A,@DPTR

;命令字(停止计时,PA、PB输出,PC输入) ;FF20H为8155控制口地址 ;‘0’ →7EH ;‘8’ →7DH ;‘0’ →7CH ;‘9’ →7BH ;‘灭’→7AH ;‘灭’→79H ;调显示子程序

; 8000H为A/D转换器地址 ;启动A/D转换 ;读转换结果

22

MOV R0,#79H ;显示缓冲区首地址→R0 LCALL PTDS ;调拆字子程序 SJMP LO18

PTDS: MOV R1,A ;拆字子程序 ACALL PTDS1 MOV A,R1 SWAP A

PTDS1: ANL A,#0FH MOV @R0,A INC R0 RET

SSEE: SETB RS1 ;切换工作寄存器区 MOV R5,#05H ;

SSE2: MOV 30H,#20H ;20H=00100000B位选码 MOV 31H,#7EH ;显示区首地址7EH送31H MOV R7,#06H ;循环计数器置初值,6位显示 SSE1: MOV R1,#21H ;FF21H为8155A口地址(字位口) MOV A,30H ;取出位选码 CPL A ;取反11011111B

MOVX @R1,A ;输出位选码(扫描字) MOV R0,31H ;显示区首地址7EH送R0 MOV A,@R0 ;取待显示数据 MOV DPTR,#DDFF ;表首地址送DPTR

MOVC A,@A+DPTR ;查表得待显示数据的ASC2码

MOV R1,#22H ;FF22H为8155B口地址(字形口) MOVX @R1,A ;输出待显示数据的ASC2码(字形码) MOV A,30H ;

RR A ;修改扫描字 MOV 30H,A ;保存扫描字

DEC 31H ;修改待显示数据地址 MOV A,#0FFH ;“灭” MOVX @R1,A ;关显示器

DJNZ R7,SSE1 ;6位显示完否?未完继续 DJNZ R5,SSE2 ;刷新5次

CLR RS1 ;返回原工作寄存器区 RET

DDFF: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;0~9共阳极

DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH ;AbcdEF‘灭’PH┌ END

23

六、实验步骤

接线: 500k→CLK Vin→+5V IN0→Vout

JX6(ADC0809的D0~D7)→JX0(P0) WR→/IOWR RD→/IORD ADDA→A0 ADDB→A1 ADDC→A2 CS4→8000H

启动IN0~IN7各通道进行A/D转换的地址对应为8000H~8007H。

运行程序,数码管上显示0809.XX,后二位显示当前采集的电压转换的数字量,调节RW1(可调电压),该二位将随着电压变化而相应变化。

七、思考

修改程序,用其它通道轮流采样显示。

24

实验五 DAC0832实验

一、实验目的

1.掌握DAC0832与单片机的接口方法; 2.掌握DAC0832的性能及编程方法;

3.了解单片机系统中扩展D/A转换芯片的基本方法。

二、实验内容

利用DAC0832输出一周期三角波,其电压范围为0~5V。

三、实验接线图

单缓冲型接口电路

四、实验程序框图

25

五、程序清单 文件名: DPJ05.ASM ORG 0000H LJMP SE13 ORG 0100H

SE13: MOV SP,#53H

MOV P2,#0FFH ;8155 地址(FF20H~FF23H 控制口、A、B、C口) MOV A,#43H ;8155 控制字

MOV DPTR,#0FF20H ;FF20H为8155控制口地址 MOVX @DPTR,A ;8155 初始化

MOV 7EH,#00H ;7BH~7EH为显示缓冲区高4位,显示0832 MOV 7DH,#08H MOV 7CH,#03H MOV 7BH,#02H

LO20: MOV R6,#00H ;待转换数据初始值→R6 LO21: MOV DPTR,#8000H ;8000H为0832的地址

26

MOV MOVX MOV LCALL LCALL MOV LCALL INC A,R6 ;待转换数据→A @DPTR,A ;启动D/A转换

R0,#79H ;79H~7AH为显示缓冲区低2位 PTDS ;调拆字子程序 SSEE ;调显示子程序 R2,#08H ;延时初值送R2 DELYA ;调延时子程序 R6 ;待转换数据加1 CJNE LO22: MOV DEC MOV MOVX MOV LCALL LCALL MOV LCALL CJNE LJMP PTDS: MOV LCALL MOV SWAP PTDS1: ANL MOV INC RET SSEE: SETB MOV SSE2: MOV MOV MOV SSE1: MOV MOV CPL MOVX MOV MOV

R6,#0FFH,LO21 DPTR,#8000H

R6 A,R6

@DPTR,A R0,#79H PTDS SSEE

R2,#08H DELYA

R6,#00H,LO22 L020

R1,A PTDS1 A,R1

A A,#0FH @R0,A R0 RS1 R5,#05H 30H,#20H 31H,#7EH R7,#06H R1,#21H A,30H A @R1,A R0,31H A,@R0 ;升压结束否? ;待转换数据减1 ;启动D/A转换 ;延时初值送R2 ;降压结束否? ;待显示数据送R1临时保存 ;待显示数据高、低4位交换 ;屏蔽高4位

;待显示数据低4位送39H ;待显示数据高4位送3AH ;切换工作寄存器区 ;

;20H=00100000B位选码 ;显示区首地址7EH送31H ;循环计数器置初值,6位显示 ;FF21H为8155A口地址(字位口);取出位选码 ;取反11011111B

;输出位选码(扫描字) ;显示区首地址7EH送R0 ;取待显示数据

27

MOV DPTR,#DDFF ;表首地址送DPTR

MOVC A,@A+DPTR ;查表得待显示数据的ASC2码

MOV R1,#22H ;FF22H为8155B口地址(字形口) MOVX @R1,A ;输出待显示数据的ASC2码(字形码) MOV A,30H ;

RR A ;修改扫描字 MOV 30H,A ;保存扫描字

DEC 31H ;修改待显示数据地址 MOV A,#0FFH ;“灭” MOVX @R1,A ;关显示器

DJNZ R7,SSE1 ;6位显示完否?未完继续 DJNZ R5,SSE2 ;刷新5次

CLR RS1 ;返回原工作寄存器区 RET

DDFF: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;0~9共阳极

DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH ;AbcdEF‘灭’PH DELYA: PUSH 02H ;将R2的内容压入堆栈 DELYB: PUSH 02H DELYC: PUSH 02H

DELYD: DJNZ R2,DELYD ;延时8×2×1us=16us LCALL SSEE ;刷新显示

POP 02H ;还原R2中的值 DJNZ R2,DELYC ;16us×8=128us POP 02H

DJNZ R2,DELYB ;128us×8=1024us POP 02H

DJNZ R2,DELYA ;1024us×8=8192us RET END

六、实验步骤

CS5→8000H JX2→JX0 WR→/IOWR AOUT→DJ

运行程序,数码管上显示不断加大或减小的数字量,观察小直流电动机的转速与数码管上所显示数据的对应关系。

七、思考

修改程序,使能产生锯齿波。

28

键盘显示电路

29

MCS-51单片机实验指导书

机电工程学院单片机实验室

2010年4月

30

目 录

第一章 DICE-5208K开发型单片机综合实验仪概述 第二章 开发环境简介

实验一 彩灯控制实验

实验二 定时/计数器实验(脉冲计数) 实验三 可编程I/O接口芯片8255实验 实验四 ADC0809实验 实验五 DAC0832实验

31

本文来源:https://www.bwwdw.com/article/ba43.html

Top