单片机原理实验指导书(5) 下载本文

内容发布更新时间 : 2024/9/24 22:28:00星期一 下面是文章的全部内容请认真阅读。

2.1 实验五 定时/计数器实验

一、 实验目的

加深对MCS-51单片机定时/计数器基础知识的理解。

二、 实验设备

Keil C单片机程序开发软件。

Proteus仿真软件

DP51-PROC单片机综合实验仪。 DT-2003数字万用表。

三、 实验内容和步骤

内容:

利用定时/计数器测量电动机的转速。

实验程序:

使用T1作为定时器(定时时间为50毫秒),T0作为计数器(计数由电机测速

电路产生的脉冲个数,每转4个脉冲),每1秒时间后,读出T0的值(读出后须将T0清0),将该值(速度值*4)显示到LCM显示器上(显示子程序/函数由实验库文件提供)。

本次实验程序需要使用实验库文件(LCMDRV_12864.LIB)。该库中的子程序/函数占用单片机片内RAM中地址为18H~20H的单元,因此实验程序不能使用这些单元。

如果用汇编编写实验程序,必须先用$INCLUDE (LCMDRV_12864.INC )指令加载实验库头文件,表2.5说明了LCMDRV_12864.LIB中子程序的功能和在汇编语言编程时的调用方法。

如果用C51编写实验程序,必须先用#include \.h\语句加载实验库头文件,库函数的使用详见LCMDRV_12864.h中的说明。 设计思路:

① 主程序在完成对T0和T1的设置后,可进入死循环(等待中断请求)。

② 在T1的中断服务程序中需要使用一存储单元对T1的中断次数进行计数,当计

数次数达20次时,意味着定时1秒时间到(此后需要重置存储单元的内容,以便进行下1秒定时)。

③ 为便于理解,速度值在显示前应进行BCD转换(库文件自动完成转换)。

- 20 -

表2.5 LCMDRV_12864.LIB的子程序说明

子程序名 _DelayX10us _DelayX1ms _DelayX100ms 功能 延时 延时。 延时。 将字型无符号二进制整数转换成组合型BCD码 参数 入参:R7延时系数N 出参:无 入参:R7延时系数N 出参:无 入参:R7延时系数N 出参:无 入参:R7二进制数的低位 R6二进制数的高位 R1结果的首地址 出参:无 入参:R7 =0 不显示光标 =1 显示光标 出参:无 入参:R7 行值(0-7) R5 列值(0-20) R1 字串首地址 出参:无 入参:R7 行值(0-7) R5 列值(0-20) R3 无符号整数的低位 R2 无符号整数的高位 出参:无 说明 时间=(N+1)*10us,12MHz 占用R7,A,C 时间= N * 1ms + 12us,12MHz 占用1FH,R7,A,C 时间= N * 100ms + 12us,12MHz 占用1EH,1FH,R7,A,C 结果为3字节,高位在前,低位再后。 占用R0,R1,R2,R3, R6,R7,A,C 初始化LCM后,屏幕清屏,光标位置为0行0列。 (共8行21列) 占用1DH,1EH,1FH,20H,DPTR,R6,R7,A,C 占用18H,19H,1DH,1EH,1FH,DPTR, R1 ~ R7,A,B,C _BCD16 _LCM_Init LCM初始化 _LCM_DispStrXY 从屏幕的指定位置开始显示字符串 从屏幕的指定位置开始显示无符号整数 _LCM_DispUIntXY 占用18H~20H,DPTR,R0 ~ R7,A,B,C

设计参考:

① 主程序需要设置的控制位如下:

ET0和ET1 中断允许控制 0=屏蔽 1=允许 PT0和PT1 中断优先级级别控制 0=低级 1=高级

在同级别(PT0=PT1)时T0的优先级高于T1

EA 中断允许总控制 0=屏蔽 1=允许 TR0和TR1 定时/计数器运行控制 0=停止 1=允许 ② 定时/计数器工作方式控制寄存器(TMOD):

D7 D6 D5 D4 D3 D2 D1 D0 GATE C / T M1 M0 GATE C / T M1 M0 T1 T0 GATE

门控位

0=由TRX控制定时/计数器运行

1=TRX和INTX信号共同控制 ( X = 0或1)

- 21 -

C/T M1M0 定时/计数方式选择 工作方式选择

0=定时 1=计数

00=13位定时/计数器工作方式 01=16位定时/计数器工作方式 10=常数自动装入的8位定时/计数

器工作方式

11=两个8位定时/计数器工作方式

(仅适用于T0)

③ 中断服务程序的入口地址:

000BH 定时/计数器0 001BH 定时/计数器1

预习:

1) 编写好实验程序。

2) 根据编写的程序和实验步骤的要求制定调试仿真的操作方案。

实验单元电路:

1) 电机测速电路。

电机测速电路使用光电检测传感器,通过联接在电机转轴上的光码盘,将电机的转动变换成脉冲序列(每转4个脉冲)。如图2.9。

+ – + – DCM_SPEED 光电 传感器 光源 电机 图2.9 电机测速电路原理图

2) 电机驱动电路

ZDJ_A ZDJ_B H桥 M 图2.10 直流电机驱动电路原理图

当ZDJ_A为高电平,ZDJ_B为低电平时,电机正转;反之,则电机反转。如果两端电平相同,则电机不转。

- 22 -