完整的实验指导文件word版本下载:
THGMU-1型 (MS51部分).doc
(2.27 MB, 下载次数: 7)
下面是文件预览(无图版):
目 录 I
实验一 流水灯实验 1
实验二 I/O口控制实验 2
实验三 74LS164串转并实验 3
实验四 74LS165并转串实验 4
实验五 74HC138译码器实验 5
实验六 继电器控制实验 6
实验七 音频驱动实验 7
实验八 PWM信号的产生实验 8
实验九 电子琴模拟实验 9
实验十 计数器实验 10
实验十一 定时器实验 11
实验十二 外部中断实验 12
实验十三 看门狗实验 13
实验十四 查询式键盘实验 15
实验十五 7279阵列式键盘实验 17
实验十六 双色LED点阵显示实验 20
实验十七 555电路的测频实验 22
实验十八 I2C总线实验 24
实验十九 串行AD转换实验 26
实验二十 串行DA转换实验 27
实验二十一 温度传感器温度控制实验 29
实验二十二 字符型液晶显示实验 32
实验二十三 128×64液晶显示实验 35
实验二十四 RS-232串口通信实验 37
实验二十五 RS-485通信实验 38
实验二十六 直流电动机控制实验 40
实验二十七 步进电动机控制实验 41
附录一 C8051核心板和主板IO的对应关系 43
实验一 流水灯实验
一、实验目的
1.学习51的P1口的使用方法。
2.学习延时子程序的编写和使用。
二、实验说明
AT89S52有32个通用的I/O口,分为P0、P1、P2、P3,每组都是8位,它们是准双向口,它作为输出口时与一般的双向口使用方法相同。P3口也可以做第二功能口用,本实验使用P1口做输出口,控制LED等产生流水灯效果。
三、实验内容及步骤
注:实验程序放在Soundcode/MS51的文件夹中。
用P1口做输出口,接八位逻辑电平显示,程序功能使发光二极管循环点亮。
1.最小系统中插上80C51核心板,用扁平数据线连接MCU的P1口与八位逻辑电平显示模块JD3。
2、用串行数据通信线、USB线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3、打开Keil uVision2仿真软件,首先“流水灯”文件夹下的 “8031.Uv2” 实验的项目文件,对源程序进行编译,直到编译无误。
4、全速运行程序,程序功能使发光二极管循环点亮的流水灯的效果。
注:在做完实验时记得养成一个好习惯:把相应单元的短路帽和电源开关还原到原来的位置!以下将不在重述。
四、源程序(见光盘)
五、电路图
实验十 定时/计数器实验
一、实验目的
1.学习单片机内部定时/计数器在不同工作方式上的使用方法;
2.学习定时/计数器程序编写方法.
二、实验内容
1.用定时器来延时,设计跑马灯电路和程序
2.外部脉冲从P3.4引入计器T0,用
1.单片机内部有两个定时/计数器T0和T1,4种工作方式.单片机的定时器/计数器是加计数器.单片机定时脉冲来源于内部,计数脉冲来源于外源,单片机的工作方式是通过设制方式寄存器实现,
16位是指定时/计数器内的计数器是16位的,由2个8位计数器组成。本实验用的是T0,它的2个8位计数器TH0和TL0,TH0是高8位,TL0是低八位。所谓加法计数器,指其计数的方法是对计数脉冲每次加1。在其它单片机和可编程计数器芯片中,有的计数器是减法计数器,如8155的14位计数器,8253的16计数器,即先设置计数器的初值,然后对计数器脉冲每次减1,减到0,计数器溢出。而8031内部的计数器是加法计数器,需先设置计数器的初值,本实验设置计数器初值为0,然后对计数脉冲每次加1,加到计数器满后溢出。
2.本实验中内部计数器起计数器的作用。外部事件计数脉冲由。单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变。这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。这就决定了输入波形的频率不能超过机器周期频率。
关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。内部计数器在单片机中主要有定时器和计数器两个功能。本实验使用的是定时器,定时为一秒钟。CPU运用定时中断方式,实现每一秒钟输出状态发生一次反转,即发光管每隔一秒钟亮一次。
定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。
内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振荡器周期。因为如果实验系统的晶振是12MHZ,本工作于方式2,即8位自动重装方式定时器,定时器100uS中断一次,所以定时常数的设置可按以下方法计算:
机器周期=12÷12MHz=1uS
(256-定时常数)×1uS=100uS
定时常数=156。然后对100uS中断次数计数10000次,就是1秒钟。
在本实验的中断处理程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。
三、实验内容及步骤
T0接外部脉冲输入,P1口接八位逻辑电平显示模块,脉冲个数以二进制形式显示出来。
1.最小系统中插上80C51核心板,用扁平数据线连接MCU的P1口与八位逻辑电平显示模块JD3,P34端口接单次脉冲电路的输出端(绿色防转座)。
2、用串行数据通信线、USB线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3、打开Keil uVision2仿真软件,首先“计数器”文件夹下的 “计数器.Uv2” 实验的项目文件,对源程序进行编译,直到编译无误。
4、全速运行程序,按动单次脉冲按钮,脉冲个数以二进制形式通过LED显示。
四、源程序(见光盘)
五、思考题
1.由功能、计数启动条件、重复启动条件等诸方面比较89S52的各种方式。
2.89S52单片机的最高计数频率为多少?
实验十一 定时器实验
一、实验目的
1.学习89S52内部计数器的使用和编程方法;
2.进一步掌握中断处理程序的编写方法。
二、实验说明
关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。内部计数器在单片机中主要有定时器和计数器两个功能。本实验使用的是定时器,定时为一秒钟。CPU运用定时中断方式,实现每一秒钟输出状态发生一次反转,即发光管每隔一秒钟亮一次。
定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。
内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振荡器周期。因为如果实验系统的晶振是12MHZ,本工作于方式2,即8位自动重装方式定时器,定时器100uS中断一次,所以定时常数的设置可按以下方法计算:
机器周期=12÷12MHz=1uS
(256-定时常数)×1uS=100uS
定时常数=156。然后对100uS中断次数计数10000次,就是1秒钟。
在本实验的中断处理程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。
三、实验内容及步骤
1.最小系统中插上80C51核心板,用导线连接MCU的P10到八位逻辑电平显示的L0发光二极管处。
2、用串行数据通信线、USB线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3、打开Keil uVision2仿真软件,首先“定时器”文件夹下的 “定时器.Uv2” 实验的项目文件,对源程序进行编译,直到编译无误。
4、全速运行程序,观测L0发光二极管1S亮一次。
四、源程序(见光盘)
实验十二 外部中断实验
一、实验目的
1.掌握外部中断技术的基本使用方法;
2.掌握中断处理程序的编写方法。
二、实验说明
1.外部中断的初始化设置共有三项内容:中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断方式设置。中断方式设置一般有两种方式:电平方式和脉冲方式,本实验选用后者,其前一次为高电平后一次为低电平时为有效中断请求。因此高电平状态和低电平状态至少维持一个周期,中断请求信号由引脚INT0(P3.2)和INT1(P3.3)引入,本实验由INT0(P3.2)引入。
2.中断服务的关键:
A.保护进入中断时的状态。
堆栈有保护断点和保护现场的功能使用PUSH指令,在转中断服务程序之前把单片机中有关寄存单元的内容保护起来。
B.必须在中断服务程序中设定是否允许中断重入,即设置EX0位。
C.用POP指令恢复中断时的现场。
3.中断控制原理:
中断控制是提供给用户使用的中断控制手段。实际上就是控制一些寄存器,51系列用于此目的的控制寄存器有四个:TCON 、IE 、SCON 及IP。
4.中断响应的过程:
首先中断采样然后中断查询最后中断响应。采样是中断处理的第一步,对于本实验的脉冲方式的中断请求,若在两个相邻周期采样先高电平后低电平则中断请求有效,IE0或IE1置“1”;否则继续为“0”。所谓查询就是由CPU测试TCON和SCON中各标志位的状态以确定有没有中断请求发生以及是那一个中断请求。中断响应就是对中断请求的接受,是在中断查询之后进行的,当查询到有效的中断请求后就响应一次中断。
INT0端接单次脉冲发生器。P1.0接LED灯,以查看信号反转。
三、实验内容及步骤
1.最小系统中插上80C51核心板,用导线连接MCU的P10到八位逻辑电平显示的L0发光二极管处,P32接单次脉冲电路的输出端(绿色防转座)。
2、用串行数据通信线、USB线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3、打开Keil uVision2仿真软件,首先“中断”文件夹下的 “中断.Uv2” 实验的项目文件,对源程序进行编译,直到编译无误。
4、全速运行程序,按一次单次脉冲的按钮灯取反一次
四、源程序(见光盘)
实验十四 查询式键盘实验
一、实验目的
掌握查询式键盘的接口和编程方法。
二、实验内容
本实验提供了8个按键的小键盘,如果有键按下,则相应输出为低电平,否则输出为高电平。MCU判断有键按下后,要有一定的延时,防止由于键盘抖动而引起误操作。
编写一个程序,能读出键盘操作的编号,并在数码显示器上显示。
三、实验电路
本实验所需电路请参见系统原理图的第一部分和独立式键盘电路。
四、实验程序参考框图
(a) 主程序框图 (b) 键盘扫描子程序框图
五、实验步骤
1.最小系统中插上80C51核心板,把7279阵列式键盘的JT9短路帽打在VCC处,用8P排线将JD16、JD17接八位动态数码显示JD1和JD2相连。
2.查询式键盘的JD15和MCU最小系统的P2口相连,MCU最小系统的P15、P16、P17分别接7279键盘的CS、CLK、DATA。
3、用串行数据通信线、USB线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
4、打开Keil uVision2仿真软件,首先“KEY”文件夹下的 “KEY.Uv2” 实验的项目文件,对源程序进行编译,直到编译无误。
5、全速运行程序,键盘上按下某个键,观察数显是否与该键号一致。
六、源程序(见光盘)
七、思考题
1.程序如何确保每按一次键,只处理一次。
八、原理图
实验十九 串行AD转换实验
一、实验目的
1.掌握单片机和TLC549硬件联接及软件编程。
2.熟悉八位串行AD转换器TLC549的性能及转换过程。
二、实验说明
TLC549是一种采用8位逐次逼近式工作的A/D转换器。内部包含系统时钟、采样和保持、8位A/D转换器、数据寄存器以及控制逻辑电路。TLC549每25uS重复一次“输入—转换—输出”。器件有两个控制输入:I/O CLOCK和片选(CS)。
内部系统时钟和I/O CLOCK可独立使用。应用电路的设计只需利用I/O时钟启动转换或读出转换结果。当CS为高电平时,DATA OUT处于高阻态且I/O时钟被禁止。
当CS变为低电平时,前次转换结果的最高有效位(MSB)开始出现在DATA OUT端。在接下来的7个I/O CLOCK周期的下降沿输出前次转换结果的后7位,至此8位数据已经输出。然后再将第8个时钟周期加至I/O CLOCK,此时钟周期的下跳沿变使芯片进行下一轮的AD转换。在第8个I/O CLOCK周期之后,CS必须变为高电平,并且保持高电平直至转换结束为止(>17uS),否则CS的有效高电平至低电平的转换将引起复位(其它详细资料看芯片说明)。
三、实验内容及步骤
1.最小系统中插上80C51核心板,把7279阵列式键盘的JT9短路帽打在上方VCC处,用8P排线将JD16、JD17分别接八位动态数码显示的JD1、 JD2相连;MCU最小系统的P16、P17、P27分别接7279键盘的CLK、DATA、CS。
2.MCU最小系统的P10,P11,P12分别接AD转换的DATA、CLK、CS-549,AD转换的AIN接可调电压0~5V可调端。
3、用串行数据通信线、USB线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
4、打开Keil uVision2仿真软件,首先“TLC549”文件夹下的 “TLC549.Uv2” 实验的项目文件,对源程序进行编译,直到编译无误。
5、全速运行程序数码显示电压转化的数字量,调节模拟信号输入端的电位器旋钮,显示值随着变化,顺时针旋转值增大,AD转换值的范围是0~4.98V左右。
四、源程序(见光盘)
六、电路图
实验二十 串行DA转换实验
一、实验目的
1.掌握LTC1446 12位串行D/A转换芯片的工作方法。
2.掌握LTC1446 12位串行D/A转换芯片编程方法和调试方法。
二、实验内容
使用LTC1446实现单片机数模转换,输出方波。
三、实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验说明
LTC1446是一种采用12位逐次逼近式工作的A/D转换器。内部包含系统时钟、采样和保持、12位A/D转换器、数据寄存器以及控制逻辑电路。LTC1446每25uS重复一次“输入——转换——输出”。器件有两个控制输入:DIN CLK和片选(CS)。
内部系统时钟和DIN CLK可独立使用。应用电路的设计只需利用时钟启动转换或读出转换结果。当CS为高电平时, Dout处于高阻态且DIN时钟被禁止。
当CS变为低电平时,前次转换结果的最高有效位(MSB)开始出现在Dout端。(其它详细资料看芯片说明)。
1.LTC1446 的内部管脚图
2.LTC1446 时序图
三、实验步骤
1.最小系统中插上80C51核心板,MCU最小系统的P1.0接串行D/A的CLK,P1.1接DIN,P1.2接CS-1446。
2、用串行数据通信线、USB线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3、打开Keil uVision2仿真软件,首先“LTC1446”文件夹下的 “LTC1446.Uv2” 实验的项目文件,对源程序进行编译,直到编译无误。
4、全速运行程序用示波器观察OUT端的波形为方波。
四、程序(见光盘)
六、电路图
实验二十二 字符型液晶显示实验
一、实验目的
1.了解字符型液晶显示器的工作原理。
2.了解字符型液晶显示器控制方式。
二、实验说明
字符型液晶显示器,是专门用于显示、数字、图形符号及少量自定义符号的显示器。由于LCD液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,自问世以来就得到了广泛应用。字符型液晶显示器模块在国际上已经规范化,在市场上内核为HD44780的较常见。TC1602A是一种16字×2行的字符型液晶显示模块,其显示面积为64.5×13.8mm2。本实验以TC1602A型LCD为例介绍其使用方法。
1.模块特点
可与8位或4位微处理器直接;
内藏式字符发生器ROM可提供160种工业标准字符,包括全部大小写字母、阿拉伯数字及日文片假名,以及32个特殊字符或符号的显示;
内藏RAM可根据用户的需要,由用户自定义字符或符号;
+5V单电源供电;
低功耗(10mW)
2.引脚及其功能
TC1602A共有16个引脚,其引脚及功能如表19-1所列。
表19-1 引脚功能
引脚 符号 输入/输出 功能说明
1 Vss 电源地:0V
2 Vdd 电源:5V
3 V1~V5 LCD驱动电压:0~5V
4 RS 输入 寄存器选择:“0”为指令寄存器,“1”为数据寄存器
5 R/W 输入 “1”为读操作;“0”为写操作
6 E 输入 使能信号:E=1时,使能;E=0时,禁能
7~10 D0~D3 输入/输出 数据总线的低4位,与4位MCU连接时不用
11~14 D4~D7 输入/输出 数据总线的高4位
15~16 LED+/LED- 电源背光
3.TC1602A的内部结构
TC1602A的内部结构主要由DDRAM、CGROM、IR、DR、BF、AC等大规模集成电路组成。
1)DDRAM为数据显示用的RAM(Data DisplayRAM,简称DDRAM),用以存放要LCD显示的数据,只要标准的ASCII码放入DDRAM,内部控制线路就会自动将数据传送到显示器上,并显示出该ASCII码对应的字符。
2)CGROM为字符产生器ROM(CharacterGenerator RAM,简称CGRAM),可供使用者存储特殊造型的造型码,CGRAM最多可存8个造型。
3)IR为指令寄存器(Instruction Register,简称IR),负责存储MCU要写给的LCD的指令码,当RS及R/W引脚信号为0且Enable引脚信号由1变为0时,D0~D7引脚上的数据便会存入到IR寄存器中。
4)DR为数据寄存器(Data Register,简称DR),它们负责存储微机要写到CGRAM或DDRAM的数据,或者存储MCU要从CGRAM或DDRAM读出的数据。因此,可将DR视为一个数据缓冲区,当RS及R/W引脚信号为1且Enable引脚信号由1变为0时,读取数据;当RS引脚信号为1,R/W引脚信号为0且Enable引脚信号由1变为0时,存入数据。
5)BF为忙碌信号(Busy Flag,简称BF),当BF为1时,不接收微机送来的数据或指令;当BR为0时,接收外部数据或指令,所以,在写数据或指令到LCD之前,必须查看BF是否为0。
6)AC为地址计数器(Address Counter,简称AC),负责计数写入/读出CGRAM或DDRAM的数据地址,AC依照MCU对LCD的设置值而自动修改它本身的内容。
TC1602A可分为2行共显示32个字符,每行显示16个字符。
内含HD44780控制器的液晶显示模块的TC1602A有两个寄存器:一个是命令寄存器,另一个数据寄存器。所有对TC1602A的操作必须先写命令字,再写数据。内含HD44780控制器的指令系统表如表19-2所列,各指令功能如下。
表19-2 指令表
控制信号 指令代码 功能
RS RW D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 0 0 0 0 0 0 1 清屏
0 0 0 0 0 0 0 0 1 * 软复位
0 0 0 0 0 0 0 1 I/D S 内部方式设置
0 0 0 0 0 0 1 D C B 显示开关控制
0 0 0 0 0 1 S/C R/L * * 位移控制
0 0 0 0 1 DL N F * * 系统方式设置
0 0 0 1 ACG CGRAM地址设置
0 0 1 ADD 显示地址设置
0 1 BF AC 忙状态检查
1 0 写数据 MCU-LCD
1 1 读数据 LCD-MCU
表19-3 CGROM和CGRAM中字符代码与字符图形对应关系
高位
低位 0000 0010 0011 0100 0101 0110 0111 1010 1011 1100 1101 1110 1111
××××0000 CGRAM(1) 0 P \ p 一 夕 三 α P
××××0001 (2) ! 1 A Q a q 口 ア チ ム ä q
××××0010 (3) 2 B R b r イ 川 メ β θ
××××0011 (4) # 3 C S c s ウ モ c ∞
××××0100 (5) $ 4 D T d t \ エ ト セ μ Ω
××××0101 (6) % 5 E U e u ロ オ ナ ユ B 0
××××0110 (7) & 6 F V f v テ カ ニ ヨ P ∑
××××0111 (8) > 7 G W g w ア キ ヌ ラ g π
××××1000 (1) ( 8 H X h x イ ケ ネ リ ∫ X
××××1001 (2) ) 9 I Y i y ヴ ゲ ノ ル -1 y
××××1010 (3) : J Z j z エ コ リ レ j 千
××××1011 (4) + : K [ k { オ サ ヒ ロ x 万
××××1100 (5) < L ¥ l | セ シ フ ワ |