THGQC-1 80C51实验指导书

更新时间:2024-06-04 10:23:01 阅读量: 综合文库 文档下载

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

目 录

第一章 初级软件实验部分…………………………………………………………………………1

实验一 二进制转换成十进制实验…………………………………………………………1 实验二 无符号数十进制加法实验…………………………………………………………3 实验三 数据传送实验………………………………………………………………………4 实验四 数据排序实验………………………………………………………………………5 第二章 硬件接口实验部分…………………………………………………………………………8

实验五 I/O口输入、输出实验………………………………………………………………7 实验六 定时器实验…………………………………………………………………………8 实验七 计数器实验…………………………………………………………………………9 实验八 音频控制实验………………………………………………………………………10 实验九 7279键盘显示实验…………………………………………………………………12 实验十 独立式键盘实验……………………………………………………………………13 实验十一 8155交通灯控制实验……………………………………………………………14 实验十二 LED双色点阵显示实验…………………………………………………………15 实验十三 液晶显示实验……………………………………………………………………16 实验十四 RS232通信实验…………………………………………………………………18 实验十五 SRAM外部数据存储器扩展实验…………………………………………………19 实验十六 Flash ROM外部数据存储器扩展实验…………………………………………20 实验十七 SMbus串行EEPROM数据读写实验………………………………………………22 实验十八 外部中断实验……………………………………………………………………24 实验十九 AD转换实验………………………………………………………………………25 实验二十 DA转换实验………………………………………………………………………27 第三章 应用实验部分………………………………………………………………………………29

实验二十一 DS18B20温度测量与控制实验………………………………………………29 实验二十二 直流电动机驱动实验…………………………………………………………32 实验二十三 步进电机驱动实验……………………………………………………………33 实验二十四 语音芯片控制实验……………………………………………………………35 实验二十五 电子时钟实验…………………………………………………………………40 实验二十六 USB从模式和PC机通信实验(选做)………………………………………41 实验二十七 单片机与CPLD实验……………………………………………………………44 附录一 系统原理图…………………………………………………………………………………46 附录二 THKL-C51仿真器联机及软件的使用说明………………………………………………70 附录三 使用THGQC-1实现Keil C的在线调试………………………………………………85 附录四 系统各跳线器的初始设置状态表…………………………………………………………91

第一章 初级软件实验部分

实验一 二进制转换成十进制实验

一、实验设备

1.THGQC-1型嵌入式单片机实验开发系统-套。 2.PC机一台。

注:其它实验与此相同,此项以后不再重述。 二、实验目的

掌握汇编语言设计和实验步骤,熟悉在KEIL环境下观察内部RAM 的方法。 三、实验内容

单片机中的数值有各种表达方式,这是单片机的基础。掌握各种数制之间的转换是一种基本功。本实验内容是将一个给定的一字节二进制数,通过编程将其转换成十进制码。 四、实验步骤

1)启动PC机,打开KEIL软件,软件设置为模拟调试状态。在所建的Project文件中添加TOBCD.ASM文件,打开TOBCD.ASM文件,阅读、分析、理解程序,编译程序进行调试。(如何建立工程请看附录说明)

2)打开RAM观察窗口,根据示例程序注释设置断点,运行程序。程序具体功能是将累加器A的值拆为三个BCD码,并存入RESULT开始的三个单元,例程A赋值#0ffh。打开MEMORY WINDOW数据窗口,(在MEMORY#1中输入D:30H)观察RAM地址30H、31H、32H的数据变化,30H更新为02,31H更新为05,32H更新为05。

3)修改源程序中给累加器A的赋值,重复实验,观察实验效果。

4)打开CPU寄存器窗口,选择单步或跟踪执行方式运行程序,观察各寄存器的变化,可以看到程序执行的过程,加深对实验的了解。 五、实验程序参考框图

1

六、实验参考程序

RESULT EQU 30H ORG 0000H JMP START ORG 0100H START: MOV SP,#40H MOV A,#0FFH CALL BINTOBCD

NOP ;此处设置断点,察看RAM 30H,31H,32H

LJMP $ BINTOBCD:

MOV B DIV AB

MOV RESULT MOV A MOV B DIV AB

MOV RESULT+1 MOV RESULT+2 RET END

,#100 ,A ,B ,#10 ,A ,B 100得百位数 10得十位数 2

;除以;余数除以;余数为个位数实验二 无符号数十进制加法实验

一、实验目的

掌握无符号数、十进制加法,熟悉在KEIL环境下观察内部RAM 的方法。 二、实验内容

编写并调试一个双字节无符号十进制数加法程序,其功能为将被加数写入30H、31H单元,加数写入40H、41H单元,运行程序结果写入52H、51H、50H单元中,则加法程序功能为

(31H) (30H)+(41H) (40H)=(52H) (51H) (50H)(都是高位在前、低位在后)。

三、实验步骤

1)启动PC机,打开KEIL软件,软件设置为模拟调试状态。在所建的Project文件中添加ADD.ASM文件,打开ADD.ASM文件,阅读、分析、理解程序,编译程序进行调试。

2)打开RAM观察窗口,根据示例程序注释设置断点,运行程序,打开MEMORY WINDOW数据窗口,分别观察30H(在MEMORY#1中输入D:30H)观察RAM地址30H、31H、40H、41H、50H、51H、52H的数据变化。示例程序执行: 3412H+7856H,结果为0AC68H。 四、实验参考程序

DATA0 EQU 12H DATA1 EQU 34H DATA2 EQU 56H DATA3 EQU 78H ORG 0000H AJMP START ORG 0100H START:MOV 30H,#DATA0

MOV 31H,#DATA1 ;被加数送31H,30H MOV 40H,#DATA2

MOV 41H,#DATA3 ;加数送41H,40H MOV A,30H

ADD A,40H ;(30H)+(40H)→A MOV 50H,A ;保存低位结果 MOV A,31H

ADDC A,41H ;(40H)+(50H)+CY→A MOV 51H,A ;保存高位结果 MOV 52H,#0 MOV A,#0 ADDC A,52H

MOV 52H,A ;进位→52H

SJMP $ ;此处设置断点,察看RAM 30H,31H,40H,41H,50H,51H,52H END

3

实验三 数据传送实验

一、实验目的

1.掌握对8051 内部RAM 及外部RAM 的数据操作。 2.掌握对8051片内外扩RAM的操作方法。 二、实验内容

本例程将内部RAM 70H~7FH 的16 个数据送到外部RAM 7000H~700FH 。 三、实验步骤

1)启动PC机,打开KEIL软件,软件设置为模拟调试状态。在所建的Project文件中添加Tran.ASM文件,打开Tran.ASM文件,阅读、分析、理解程序,编译程序进行调试。

2)打开VIEW菜单中打开MEMORY WINDOW数据窗口,分别观察70H(在MEMORY#1中输入D:70H并在其中输入任意的值)、7000H(MEMORY#2窗口输入X:7000H)。运行程序,观察内外70H和7000H的相对应的数据区的数据是否一致。

3)可单步执行程序,观察数据传送过程。 四、实验参考程序

ORG 0000H JMP MAIN ORG 0100H

MAIN: MOV R7,#16

MOV R1,#70H ;内部RAM地址70H送R1 MOV DPTR,#7000H ;DPTR指向XRAM地址7000H

LOOP: MOV A,@R1 ;内部RAM内容送累加器A

MOVX @DPTR,A ;将累加器A的值送到XRAM INC DPTR INC R1

DJNZ R7,LOOP ;判断数据是否送完

NOP ;次处设置断点观查7000H的值是否和70H的值一样

END

4

实验四 数据排序实验

一、实验目的

掌握排序程序的设计方法。 二、实验内容

本例程采用交换排序法将内部RAM 中的50~59H 单元中的10个单字节无符号二进制数按从小到大的次序排列,并将这一列排序后的数据从小到大依次存贮到外部RAM 1000H开始处。 三、实验步骤

1)启动PC机,打开KEIL软件,软件设置为模拟调试状态。在所建的Project文件中添加Order.ASM文件,打开Order.ASM文件,阅读、分析、理解程序,编译程序进行调试。

2)在VIEW菜单中打开MEMORY WINDOW数据窗口,分别观察50H(在MEMORY#1中输入D:50H)、1000H(MEMORY#2窗口输入X:1000H)

3)可在程序指令NOP 处设置断点,在第一个断点处可观察50~59H 单元内容是否为10 个任意排列原始数据。

4)在第二个断点处可观察每次排序的结果。 5)可单步执行程序观察排序过程。 四、实验参考程序

ORG 0000H

JMP MAIN ORG 0100H

MAIN: MOV R0,#50H

MOV @R0,#5FH

INC R0

MOV @R0,#56H INC R0

MOV @R0,#5AH INC R0

MOV @R0,#5EH INC R0

MOV @R0,#51H INC R0

MOV @R0,#5BH INC R0

MOV @R0,#53H INC R0

MOV @R0,#58H INC R0

MOV @R0,#57H INC R0

MOV @R0,#55H ;将10 个随机数送入内部RAM 的50~59H 单元 NOP ;可在此处设置断点 ACALL QUE ;调用排序子程序

OUT: MOV R0,#50H

5

MOV DPTR,#1000H MOV R7,#10

OUT1: MOV A,@R0

MOVX @DPTR,A INC R0 INC DPTR

DJNZ R7,OUT1

HERE: AJMP HERE

NOP ;可在此处设置断点,观察每次排序结果

QUE: CLR 00H ;清交换标志

MOV R1MOV R6I3: MOV AMOV R7MOV AMOV R0MOV AI2: INC R0

MOV R2SUBB AMOV AJC I1 SETB 00H XCH AI1: DJNZ R7JNB 00HMOV @R1INC R1 DJNZ R6 RET

END ,#50H ,#09H

,R6

,A ,R1 ,A ,@R0

,A ,@R0 ,R2 ,@R0

,I2

,STOP ,A ,I3

6

第二章 硬件接口实验部分

实验五 I/O口输入、输出实验

一、实验目的

掌握单片机I/O口输入、输出数据的方法; 二、实验内容

以P1口为输入口,接八位逻辑电平输出,以P0口为输出口,接八位逻辑电平显示,编写一个程序,读入P1口状态并在P0口输出显示。 三、实验电路

实验电路参见指导书中的附录一系统原理图。系统原理图的第一部分为MCU模块,详细地描述了MCU的管脚连接。系统原理图的其它部分为各模块原理图。本实验所需电路请参见系统原理图的第一部分和图9-1、图10-1。 四、实验步骤

1) 系统各跳线器处在初始设置状态(参见附录四),J1的8只短路帽打在1,2处,3,4五只短路帽打在右边,用8位数据线连接八位逻辑电平输出模块的JD50到MCU的JD12(P1口), MCU的JD13连接到八位逻辑电平显示模块的JD30。

2)启动PC机,打开KEIL软件,软件设置为硬件调试状态。在所建的Project文件中添加“LED.ASM”文件,打开“LED.ASM”文件,阅读、分析、理解程序,编译程序进行调试。

3)观察发光二极管的亮灭与拨动开关的状态是否一致。设拨动开关拨下输出为低电平,发光二极管点亮。改变拨动开关的状态,发光二极管的亮灭随之变化。 五、源程序:

ORG 0000H LJMP START ORG 0100H MAIN: MOV A,#0XFF MOV A,P1 MOV P0,A LCALL DELAY LJMP MAIN DELAY: MOV R6,#20 DLOOP1: MOV R7,#0 DLOOP2: DJNZ R7,DLOOP2 DJNZ R6,DLOOP1 RET End

7

实验六 定时器实验

一、实验目的

1.学习8051内部计数器的使用和编程方法 2.进一步掌握中断处理程序的编写方法 二、实验说明

关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。内部计数器在单片机中主要有定时器和计数器两个功能。本实验使用的是定时器,定时为一秒钟。CPU运用定时中断方式,实现每一秒钟输出状态发生一次反转,即发光管每隔一秒钟亮一次。

定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。

内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振荡器周期。假设实验系统的晶振是12MHZ,程序工作于方式2,即8位自动重装方式定时器, 定时器100uS中断一次, 所以定时常数的设置可按以下方法计算:

机器周期=12÷12MHz=1uS (256-定时常数)×1uS=100uS

定时常数=156。然后对100uS中断次数计数10000次,就是1秒钟。

在本实验的中断处理程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。 三、实验内容及步骤

1)J1的P1.0打在左边,JD12用排线接到JD30八位逻辑电平显示上。 2)安装好仿真器,用串行数据通信线连接计算机与仿真器。

3)启动PC机,打开KEIL软件,软件设置为硬件调试状态。在所建的Project文件中添加“定时器.ASM”文件,打开“定时器.ASM”文件,阅读、分析、理解程序,编译程序进行调试。

4)运行程序观察发光二极管隔一秒点亮一次,点亮时间为一秒。

8

实验七 计数器实验

一、实验目的

1.学习8031内部定时/计数器使用方法 2.学习计数器各种工作方式的用法 二、实验说明

1.8031内部有两个定时/计数器T0和T1,16位是指定时/计数器内的计数器是16位的,由2个8位计数器组成。本实验用的是T0,它的2个8位计数器TH0和TL0,TH0是高8位,TL0是低八位。所谓加法计数器,指其计数的方法是对计数脉冲每次加1。在其它单片机和可编程计数器芯片中,有的计数器是减法计数器,如8155的14位计数器,8253的16计数器,即先设置计数器的初值,然后对计数器脉冲每次减1,减到0,计数器溢出。而8031内部的计数器是加法计数器,需先设置计数器的初值,本实验设置计数器初值为0,然后对计数脉冲每次加1,加到计数器满后溢出。

2.本实验中内部计数器起计数器的作用。外部事件计数脉冲由P3.4引入定时器T0。单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变。这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。这就决定了输入波形的频率不能超过机器周期频率。 三、实验内容及步骤

T0接外部脉冲输入,P1口接八位逻辑电平显示模块,脉冲个数以二进制形式显示出来。 1)J1的P1.0-P1.7打在左边,JD12用排线接到JD30八位逻辑电平显示上。T0端口接单次脉冲电路的输出端。

2)安装好仿真器,把仿真头插到模块的单片机插座中

3)启动计算机,进入仿真环境,所建的Project文件添加“计数器.ASM”源程序,编译无误后全速运行程序,连续按动单次脉冲的按键,8位逻辑电平显示按键次数。

9

实验十九 AD转换实验

一、实验目的

1.掌握ADC0809模/数转换芯片与单片机的连接方法及ADC0809的典型应用。 2.掌握用查询方式、中断方式完成模/数转换程序的编写方法。 二、实验说明

本实验使用ADC0809模数转换器,ADC0809是8通道8位CMOS逐次逼近式A/D转换芯片,片内有模拟量通道选择开关及相应的通道锁存、译码电路,A/D转换后的数据由三态锁存器输出,由于片内没有时钟需外接时钟信号。

芯片的引脚如图22.1,各引脚功能如下: IN0~IN7:八路模拟信号输入端。

ADD-A、ADD-B、ADD-C:三位地址码输入端。 CLOCK:外部时钟输入端。CLOCK输入频率范围在10~1280KHz,典型值为640KHz,此时A/D转换时间为100us。51单片机ALE直接或分频后可与CLOCK相连。本实验CLOCK信号由CPLD Lattice3128分频产生(12MHz晶振12分频)。

D0~D7:数字量输出端。

OE:A/D转换结果输出允许控制端。 图22.1 0809引脚

当OE为高电平时,允许A/D转换结果从D0~D7端输出。 ALE:地址锁存允许信号输入端。

八路模拟通道地址由A、B、C输入,在ALE信号有效时将该八路地址锁存。 START:启动A/D转换信号输入端。

当START端输入一个正脉冲时,将进行A/D转换。 EOC:A/D转换结束信号输出端。

当 A/D转换结束后,EOC输出高电平。 Vref(+)、Vref(-):正负基准电压输入端。

基准正电压的典型值为+5V。

三、实验内容

本实验从ADC0809的IN-0输入模拟量0~5V,数码管以十进制形式显示模拟量(单位为伏特),转换后的数字量由发光二极管以二进制形式显示。本实验示例程序采用查询方式完成模/数转换。 四、实验电路

本实验所需电路请参见系统原理图的第一部分和图5-1 ADC0809模数转换电路。 五、实验程序参考框图

25

六、实验步骤

1)系统各跳线器处在初始设置状态(参见附录四),将MCU模块JT12跳线器的C、D、E、F四只短路帽置位上边(1、2短接),G短路帽置位下边(2、3短接);

2)A/D、D/A模块J101跳线器的短路帽置位左边;CPLD模块JT110跳线器的短路帽置位左边。J1的都打到左边,J2的WR,RD打在左侧,J3打在CS7279处。

3)在所建的Project文件中添加“AD0809.ASM”项目文件,打开项目中的文件,阅读、分析、理解程序,编译、生成项目、下载程序,全速运行程序。

4)数码管以十进制形式显示模拟量(单位为伏特),手动调节电位器RP100,改变输入模拟量电压的大小,数码管显示将随之变化。

注:本实验CLOCK信号由CPLD Lattice3128分频产生,因此CPLD必须先下载相应程序。本机出厂时下载了相应的程序,若此程序被覆盖,下载实验二十六中的示例程序即可。

26

实验二十 DA转换实验

一、实验目的

1.了解DAC0832直通方式,单缓冲器方式、双缓冲器方式的编程方法。 2.掌握DAC0832单缓冲器方式数模转换程序的编程方法和调试方法。 二、实验说明

DAC0832是8位D/A转换器,它采用CMOS工艺制作,具有双缓冲器输入结构,其引脚排列如图所示,DAC0832各引脚功能说明:

DI0~DI7:转换数据输入端。 CS:片选信号输入端,低电平有效。

ILE:数据锁存允许信号输入端,高电平有效。 WR1:第一写信号输入端,低电平有效, Xfer:数据传送控制信号输入端,低电平有效。 WR2:第二写信号输入端,低电平有效。

Iout1:电流输出1端,当数据全为1时,输出电流最大;

数据全为0时,输出电流最小。

Iout2:电流输出2端。DAC0832具有:Iout1+Iout2=常数的特性。 Rfb:反馈电阻端。

Vref:基准电压端,是外加的高精度电压源,它与芯片内的电阻网络相连接,该电压范

围为:-10V~+10V。

DAC0832内部有两个寄存器,而这两个寄存器的控制信号有五个,输入寄存器由ILE、CS、WR1控制,DAC寄存器由WR2、Xref控制,用软件指令控制这五个控制端可实现三种工作方式:直通方式、单缓冲方式、双缓冲方式。

直通方式是将两个寄存器的五个控制端预先置为有效,两个寄存器都开通只要有数字信号输入就立即进入D/A转换。

单缓冲方式使DAC0832的两个输入寄存器中有一个处于直通方式,另一个处于受控方式,可以将WR2和Xfer相连在接到地上,并把WR1接到51的WR上,ILE接高电平,CS接高位地址或地址译码的输出端上。

双缓冲方式把DAC0832的输入寄存器和DAC寄存器都接成受控方式,这种方式可用于多路模拟量要求同时输出的情况下。

三种工作方式区别是:直通方式不需要选通,直接D/A转换;单缓冲方式一次选通;双缓冲方式二次选通。 三、实验内容

本实验采用单缓冲方式,示例程序为编程输出矩形方波。 四、实验电路

本实验所需电路请参见系统原理图的第一部分和图6-1 DAC0832数模转换电路。 五、实验程序参考框图

27

六、实验步骤

1) 系统各跳线器处在初始设置状态(参见附录四),将MCU模块JT12跳线器的C、D、E、F四只短路帽置位上边(1、2短接),G短路帽置位下边(2、3短接),J2的WR打在左边。A/D D/A模块的DAOUT端口接入示波器。示波器接地端接电源开关JP00处。

2) 在所建的Project文件中添加“DA0832.ASM”文件,打开项目中的文件,阅读、分析、理解程序编译、下载程序,全速运行程序。观察示波器测量输出波形的周期和幅度。手动调节电位器RP101,可调节输出波形的幅度。

3) 如无示波器,用导线连接DAOUT端口到八位逻辑电平显示模块的JD30,修改延时子程序Delay的R5、R6、R7的值(如R5=1、R6=0、R7=0),使方波周期加长,发光二极管随方波正负周期显示亮灭。

28

第三章 应用实验部分

实验二十一 DS18B20温度测量与控制实验

一、实验目的

1.了解单总线器件的编程方法。

2.了解温度测量的原理,掌握DS18B20的使用。 二、实验说明

本实验系统采用的温度传感器DS18B20是美国DALLAS公司推出的增强型单总线数字温度传感器。

Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持 “一线总线”接口的温度传感器。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。

DS18B20测量温度范围为 -55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。DS18B20可以程序设定9~12位的分辨率,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。

DS18B20内部结构

DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如下:

DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。

光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。

DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。

LS Byte: Bit7 2 MS Byte: Bit15 S Bit14 S Bit13 S Bit12 S Bit11 S Bit10 2 63Bit6 2 2Bit5 2 1Bit4 2 0Bit3 2 -1Bit2 2 -2Bit1 2 -3Bit0 2 -4Bit9 2 5Bit8 2 4这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得

29

到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。

例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。 温度 +125℃ +85℃ +25.0625℃ +10.125℃ +0.5℃ 0℃ -0.5℃ -10.125℃ -25.0625℃ -55℃ 数据输出(二进制) 0000 0111 1101 0000 0000 0101 0101 0000 0000 0001 1001 0001 0000 0000 1010 0010 0000 0000 0000 1000 0000 0000 0000 0000 1111 1111 1111 1000 1111 1111 0101 1110 1111 1110 0110 1111 1111 1100 1001 0000 数据输出(十六进制) 07D0h 0550h 0191h 00A2h 0008h 0000h FFF8h FF5Eh FE6Fh FC90h DS18B20温度传感器的存储器

DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。

暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。第六、七、八个字节用于内部计算。第九个字节是冗余检验字节。

该字节各位的意义如下: TM R1 R0 1 1 1 1 1 低五位一直都是1 ,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表所示:(DS18B20出厂时被设置为12位)

分辨率设置表: R1 0 0 1 1 R0 0 1 0 1 分辨率 9位 10位 11位 12位 温度最大转换时间 93.75ms 187.5ms 375ms 750ms 根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示

30

复位成功。 三、实验内容

本实验示例程序为读取DS18B20温度转换数据,并在数码管上以十进制形式显示并能够控制加热装置,使温度保持在所设定的范围之内。 四、实验电路

本实验所需电路请参见系统原理图的第一部分和图7-1DS18B20。 五、实验步骤

1)系统各跳线器处在初始设置状态(参见附录四),用导线连接MCU模块的P1.0和A/D D/A模块的DQ输出端。将MCU模块的JT11跳线器的CONTROL短路帽置位左边,J1的P1.4打在2,3处其他在左边,J3打在CS7279处。

2)在所建的Project文件中添加“DS18B20.ASM”,打开项目中的文件,阅读、分析、理解程序,编译、生成项目、下载程序,全速运行程序。观察数码管显示温度值。

3)将MCU模块的JT11跳线器的CONTRL短路帽置位左边,手动按下A/D D/A模块的控制按键,接通加热电路,观察温度上升的过程,并观察当温度上升到所设定值时的控制过程。

31

实验二十二 直流电动机驱动实验

一、实验目的

了解直流电动机的驱动方式,掌握转速测量及控制的基本原理。 二、实验说明

本实验箱选用霍尔开关传感器测量转速。根据霍尔效应原理,将一块磁钢固定在电机转轴的边沿,在转盘下方安装一个霍尔器件,当转盘旋转到霍尔组件上方时,霍尔器件输出脉冲信号其频率和转速成正比,测量输出脉冲的周期和频率即可计算出转速。

直流电机的转速与施加于电机两端的电压大小有关。本实验使用0832片内DAC0输出电压,经驱动电路放大后驱动直流电机转动,DAC0输出不同的电压大小,从而可得到不同的转速,达到调节直流电机的转速的效果。 三、实验内容

本实验示例程序将电机当前的转速值在七段数码管上显示出来。 四、实验电路

本实验所需电路请参见系统原理图的第一部分和图17-1 电机驱动电路。 五、实验步骤

1) 系统各跳线器处在初始设置状态(参见附录四),直流/步进电动机驱动模块的JT70跳线器的VCC、DAC0、CS3172三只短路帽置位左边。将MCU模块JT12跳线器的C、D、E、F四只短路帽置位上边(1、2短接),G短路帽置位下边(2、3短接),J2的WR打在左边。A/D D/A模块的DAOUT端口接入DAC0,J2的P3.5打在右侧P3.3打在左侧,J3 打在CS7279处。

2) 把D/A转换处的RP101顺时针打到最大,在所建的Project文件中添加“直流电机调速.ASM”文件,阅读、分析、理解程序,编译下载,全速运行程序。

3) 直流电机顺时针旋转,观察数码管显示,调节RP101观察电机转速。

特别注明:本实验系统使用的直流电动机由于其性能的原因,当驱动电压较小(约为2V左右)时,会出现停转现象,因此电机转速不能设得过低(不低于600转/分)。

32

实验二十三 步进电机驱动实验

一、实验目的

1.掌握采用单片机控制步进电机的硬件接口技术。 2.掌握步进电机驱动程序的设计和调试方法。 3.熟悉步进电动机的工作特性。 二、实验说明

1.步进电动机有三线式、五线式、六线式三种,但其控制方式均相同,必须以脉冲电流来驱动。若每旋转一圈以20个励磁信号来计算,则每个励磁信号前进18度,其旋转角度与脉冲数成正比,正、反转可由脉冲顺序来控制。

2.步进电动机的励磁方式可分为全部励磁及半步励磁,其中全步励磁又有1相励磁及2相励磁之分,而半步励磁又称1-2相励磁。图为步进电动机的控制等效电路,适应控制A、B、/A、/B的励磁信号,即可控制步进电动机的转动。每输出一个脉冲信号,步进电动机只走一步。因此,依序不断送出脉冲信号,即可步进电动机连续转动。

A)相励磁法:在每一瞬间只有一个线圈导通。消耗电力小,精确度良好,但转矩小,振动较大,每送一励磁信号可走18度。若欲以1相励磁法控制步进电动机正转,其励磁顺序如图所示。若励磁信号反向传送,则步进电动机反转。

励磁顺序: A→B→C→D→A

STEP 1 2 3 4

A 1 0 0 0

B 0 1 0 0

C 0 0 1 0

D 0 0 0 1

B)相励磁法:在每一瞬间会有二个线圈同时导通。因其转矩大,振动小,故为目前使用最多的励磁方式,每送一励磁信号可走18度。若以2相励磁法控制步进电动机正转,其励磁顺序如图所示。若励磁信号反向传送,则步进电动机反转。

励磁顺序: AB→BC→CD→DA→AB

STEP 1 2 3 4

A 1 0 0 1

B 1 1 0 0

C 0 1 1 0

D 0 0 1 1

C)1-2相励磁法:为1相与2相轮流交替导通。因分辨率提高,且运转平滑,每送一励磁信号可走9度,故亦广泛被采用。若以1相励磁法控制步进电动机正转,其励磁顺序如图所示。若励磁信号反向传送,则步进电动机反转。

励磁顺序: A→AB→B→BC→C→CD→D→DA→A

STEP 1 2 3 4

A 1 1 0 0

B 0 1 0 1

C 0 0 1 1

33

D 0 0 0 0

5 6 7 8

0 0 0 1

0 0 0 0

1 1 0 0

0 1 1 1

3.电动机的负载转矩与速度成反比,速度愈快负载转矩愈小,当速度快至其极限时,步进电动机即不再运转。所以在每走一步后,程序必须延时一段时间。 三、实验内容及步骤:

由单片机的P1.0~P1.3来控制步进电机。

1)CPU板的J1打在1,2处,JT70的VCC打在左侧,P1.0-P1.3打在左侧。

2)在所建的Project文件中添加“步进电机驱动.ASM”源程序,编译无误后,运行程序,观察步进电机转动。

34

实验二十四 语音芯片控制实验

一、实验目的

1.掌握采用单片机控制语音芯片(ISD1420)的硬件接口技术。 2.掌握语音芯片ZY1420控制程序的设计。 二、实验说明

近几年语音电路发展极为迅速,在单片机系统中的应用越来越广。语音接口作为输出口时,主要用于报告运行状态、运行结果、提示系统操作过程及故障报警等;作为输入时,则主要是语音的记录、语言库的建立和语音的识别。

在单片机的应用系统中,语音接口有如下特点:

1.输出的基本词汇都是确定的,且数量有限,如故障提示、操作提示、运行报告结果等; 2.发挥单片机灵活的控制功能,根据系统的实时状态结果,选择合适的语音词汇或语言段随时组合输出;

3.写入后不易遗失,修改方便。

现在语音处理合成芯片很多,大多是先将语音经A/D转换后存入内存中,放音时取出再经D/A转换输出。美国信息内存件公司推出的ISD系列语音电路采用直接模拟存储技术,不需要专用开发工具、编程器。

1)ISD1420芯片的特点

① 外围组件简单,仅需少量阻容组件、麦克风即可组成一完整录放系统。 ② 模拟信息存储重放音质极好,并有一定混响效果。 ③ 待机时低功耗(0.5uA),典型放音电流15mA。 ④ 放音时间20s,可扩充级联。

⑤ 可持续放音,也可分段放音,最小分段20s/160段=0.125s/段,可分段数160段。 ⑥ 录放次数达10万次。

⑦ 断电信息存储,无需备用电池,信息可保100年。 ⑧ 操作简单,无需专用编程器及语音开发器。 ⑨ 高优先级录音,低电平或负边沿触发放音。 ⑩ 单电源供电,典型电压+5v 2)ISD1420的内部逻辑结构

ISD1420系列语音集成电路的内部结构由内部时钟电路,自动增益控制电路,前置控制电路,滤波器,差动功率放大电路,电源电路,内存EEPROM,地址译码电路,存储控制电路等组成。

3)ISD1420的封装引脚及含义

ISD1420系列语音芯片最后2位数字表示语音录放时间的长度。录放时间最长为20s ISD1420系列语音芯片的封装引脚如图所示。它是有28条引脚的双列直插式芯片。各条引脚的功能含义说明如下。A0~A7: 引脚1~6,9,10,地址输入端或控制命令输入端。A7,A6同时为高电平时,A4~A0为控制命令;否则,A7~A0为地址。

SP-,SP+: 扬声器连接端,输出音频信号。

35

DGND: 引脚12,数字信号地线。 AGND: 引脚13,模拟信号地线。 V+: 模拟信号电源,+5V。 MIC: 引脚17,话筒输入端。 MIC REF: 引脚18,话筒参考输入端。 AGC: 引脚!9,自动增益控制端。 ANA IN: 引脚20,模拟信号输入端。 ANA OUT: 引脚21,模拟信号输出端。 PLAYL/: 引脚23,放音控制电平触发端。当

该端为低电平时,芯片进入放音周

期。当该端为高电平时,停止放音。 图29.1 ISD1420封装引脚

PLAYE/: 引脚24,放音控制脉冲触发端。该端输入由高电平向低电平跳变的下降沿时,

芯片进入放音周期。

RECLED/: 引脚25,录音显示端。该端接发光二极管,在录音时作录音指示灯。 XCLK: 引脚26,时钟控制端。

REC/: 引脚27,录音控制端。该端为低电平时,芯片进入录音状态,录音期间该端

必须保持低电平。REC/信号的优先级高与PLAYL/和PLAYE/两种放音信号。

4.ZY1420语音录放模块介绍

为减少外围元件,本实验系统使用了ZY1420语音录放模块。

ZY1420内部使用ISD1420作为主控芯片,且具备ISD1420的全部优良性能,如大容量的EEROM存储器,消噪的话筒放大器,自动增益调节AGC电路,专用语音滤波电路,高稳定性的时钟震荡电路和语音处理电路。

5.ZY1420的应用方法

ZY1420 具备ISD1420 的多种工作模式。

图29.2 ZY1420简单用法

(1)对于通常的使用,用户一般是采用一段录音放音的方法,这样ZY1420A 能为用户提供最长20 秒的录音和放音时间。图29.2给出的是采用最简单的按键操作的使用方法,用户也可以使用MCU 或逻辑电路来加以控制。

36

当开始录音时,RECLED 脚变为低电平,可以下拉电流驱动一个LED 显示。ZY1420内部已经设计了一个LED 位置,用户也可以在外部设计一个LED 显示。如上图电路,接通电源后,电路自动进入节电准备状态。

录音:按住录音按键(REC 保持低电平),电路进入录音状态(录音指示LED 亮*见注1),当REC 变高或录音内存录满时,电路退出录音状态进入准备状态。注意REC 的优先级大于PALYE 和PLAYL 。

放音:放音有两种方式即触发放音和电平放音。

1)触发放音:轻按PLAYE 按键,这样给PLAYE 脚一个低电平脉冲,电路进入放音状态,

直到放音结束。

2)电平放音:按下PLAYL 按键(PLAYL 脚保持为低电平),电路进入放音状态,直到

PLAYL 变高或放音结束,电路重新进入准备状态。

(2)复杂操作方法

根据A6 A7 的电平不同,电路可以进入两种不同的工作模式:地址模式和操作模式。如果A7 A6 至少有一位为低电平,则电路认为A0-A7 全部为地址位,A0-A7 的数值将作为本次录音或放音操作的起始地址。A0-A7 全部为纯输入引脚,不会象操作模式中A0-A7 还可能输出内部地址信息。输入的A0-A7 的信息在PALYE,PLAYL 或REC 的下降沿被电路锁存到内部使用。

1)地址模式

当A7 A6 至少有一位为0时,器件进入地址模式。在地址模式中,A0-A7 由低位向高位排列, 每位地址代表125毫秒的寻址,160 个地址覆盖20秒的语音范围(160*0.125s=20s),录音及放音功能均从设定的起始地址开始,录音结束由停止键操作决定,芯片内部自动在该段的结束位置插入结束标志(EOM);而放音时芯片遇到(EOM)标志即自动停止放音。

2)操作模式

当A7 A6 全部为1 时,器件进入操作模式。ISD1420 内部具备有多种操作模式,并能以最少的组件实现较多的功能,下面将详细描述。操作模式的选择使用地址管脚来实现,但实际的地址在ISD1420 的有效地址外部。当地址的最高两位A7 A6 为高电平时,其余的地址位将被成为状态标志位而不再是地址位。因此,操作模式和寻址模式不能兼容,也就是说不能同时使用。

在使用操作模式时必须注意两点。第一,所有的操作开始于地址0,也就是ISD1420 的起始地址。以后的操作根据操作模式的不同可以从其它地址开始。另外,在操作模式中当A4=1, 从录音变换到放音而不是从放音到录音,器件地址指针复位到0。第二,操作模式的执行必须是A7 A6 为高电平在PALYL,PLAYE 或REC 变为低电平时开始执行。当前的操作模式将一致有效, 直到下一次的控制信号变低, 并取样地址线上的信息开始新的操作。

3)操作模式描述

可以使用微处理器来控制操作模式,也可以直接使用直接联机来实现需要的功能。 A0 – 信息检索:信息检索允许用户在内容上跳转浏览,而不必关系每个信息的实际物理位置。每个控制信号的低电平脉冲将内部地址指针转移到下一个信息位置。这种模式只能在放音中使用,通常与A4 操作同时应用。

A1 – 删除EOM 结尾标志:A1 操作模式允许多次记录的信息组合成一个信息,结束标志

37

只出现在最后录制信息的结尾。当配置成这种模式后,多次录制的信息在放音时会形成连续的信息。

A2 – 没有使用

A3 – 循环播放:A3 操作模式能够实现自动连续的信息播放,播放的信息处于地址空间的起始处。如果一个信息充满了ISD1420,则用循环模式可以从头到尾连续地播放。PALYE 脉冲可以启动播放,PLAYL 脉冲可以结束播放。

A4 – 连续寻址:在通常的操作中,当放音操作遇到结尾标志(EOM)时,地址指针将复原到0。A4 操作模式将禁止地址指针的复位,允许信息能连续录制和播放。当电路处于静止状态,不是处于录音或放音状态,即可设置该脚为低电平,将禁止地址指针的复位。

A5 – 没有使用

表29-1 ZY1420 操作模式表 地址控制(高有效) A0 A1 A2 A3 A4 A5

在录音时,为防止开关抖动引起重复触发,应在信号启动后有一定的延时。 三、实验内容

示例程序运行时对按键控制来进行对ZY1420进行录音和放音操作。 四、实验电路

本实验所需电路请参见系统原理图的第一部分和图22-1 语音模块接口与音频驱动电路。

38

功能 信息检索 删除结尾标志 没使用 循环 连续寻址 没使用 典型应用 正向信息快进 可以同时使用的模式 A4 将结尾标志置为最后 A3,A4 从地址0 连续放音 录音/放音连续执行 A1 A0,A1 表29-2 ISD1420 地址功能范例表

五、实验步骤

1) 系统各跳线器处在初始设置状态(参见附录四),使用语音接口模块, 将语音接口模块的JT60跳线器的SP+、SP-二只短路帽置位右边,JT60跳线器的VCC_1420短路帽置位左边,JT61跳线器的全部短路帽置位上边,J1都打在左边1,2处。

2) MIC端口插入麦克风。

3) 在所建的Project文件中添加“语音控制.ASM”文件,打开项目中的文件,阅读、分析、理解程序。下载程序,全速运行程序。(按下REC键进行录音操作,PLAYE键触发放音,PLAYL键电平放音)。

39

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

Top