单片机原理实验指导书(5)

化,同时观察LCM显示器的数字显示情况(显示刷新周期为1秒,数值为转速脉冲信号的累加计数),如果没有观察到数字变化,在连线和操作正确且不能正确显示后向教师示意。

v. 将D1区的SW2开关拨到上方,观察电机是否转动,如果不转,立即关闭实验仪电源,在连线和操作正确且不能转动后向教师示意。 vi. 测试完成后退出调试,然后关闭这个用于测试的Keil窗口。 vii. 将D1区的SW2开关重新拨到下方。 D1区 B10区 TEST DCM_SPEED T0 C2区 A2区 SW2 ZDJ_A 图2.13 电机测速连接线路

③ 将万用表设置成测量频率的状态,黑表笔插入C1区的GND插孔,红表笔

插入连在B10区DCM_SPEED信号的导线的插孔中。 ④ 连续运行实验程序。将D1区的SW2开关拨到上方,记录几组由实验程序测

得的数据和用万用表测得的数据(可用手指轻轻接触电机转盘的边缘,利用摩擦改变电机的转速),将它们填入表2.6。

表2.6 实验数据表

次数 1 2 … 万用表值 程序测量值 偏差(万用表值-程序测量值) 四、 实验报告要求

1、 工整书写实验程序并画出其流程图。

2、 根据实验记录计算表2.6中的偏差,分析其规律,解释产生的原因。

五、 参考

实验程序架构(汇编):

$INCLUDE(LCMDRV_12864.INC) ;包含库程序定义

;资源定义 ************************************** ;位变量 ******************************** REFRESHDISP EQU 08H ;刷新显示标志 ;字节变量 ****************************** SPEED_CNTH EQU 30H ;速度脉冲计数高8位 SPEED_CNTL EQU 31H ;速度脉冲计数低8位 SECOND_CNT EQU 32H ;秒计数

- 25 -

VAR_END EQU 32H ;最后一个字节变量的位置, ;应根据实际需要修改 ;堆栈定义 ****************************** STACK_INI EQU VAR_END+1 ;须保证足够的空间 ;程序 ****************************************** ORG 0000H ;复位入口 LJMP RESET ORG 0003H ;外部中断0 服务程序入口 RETI ORG 000BH ;定时器/计数器0 溢出中断服务程序入口 RETI ORG 0013H ;外部中断1 服务程序入口 RETI ORG 001BH ;定时器/计数器1 溢出中断服务程序入口 LJMP INT_T1 ORG 0023H ;串行口中断服务程序入口 RETI ORG 040H ;复位处理程序 RESET: MOV SP,#STACK_INI ;设置栈底指针 ;初始化外部设备 ******************************** MOV R7,#00H ;初始化显示器(不显示光标) LCALL _LCM_Init

;中断设置 ******************************

;此处添加设置中断许可和优先的指令(ET1, PT1)

;定时/计数设置 *************************

;此处添加设置定时/计数器的指令(TMOD, THx, TLx)

;初始化变量 **************************** ;如果定义了变量, 此处添加对变量的初始化指令 CLR REFRESHDISP ;清刷新显示标志 MOV SECOND_CNT,#20

;启动内部定时 **************************

;此处添加启动定时/计数的指令(TRx) ;开中断 ******************************** SETB EA

;主程序 **************************************** MAIN: JNB REFRESHDISP,$ ;判断是否需要刷新显示 CLR REFRESHDISP ;清刷新显示标志 MOV R7,#01H ;从第2行第8列开始显示速度值(5位数值) MOV R5,#07H MOV R2,SPEED_CNTH MOV R3,SPEED_CNTL CALL _LCM_DispUIntXY SJMP MAIN

- 26 -

;内部定时中断服务程序 ************************** INT_T1:

;此处添加重置定时常数的指令

;此处添加保护现场内容的指令(如果有的话)

;此处添加判断一秒钟时间到的指令, 如果没到时间则跳转恢复现场, ;否则执行下面的指令。 ;此处添加重置秒计数单元的指令 MOV MOV MOV MOV SETB

SPEED_CNTL, TL0 SPEED_CNTH, TH0 TL0, #00 TH0, #00

REFRESHDISP

;记录速度检测计数(供主程序显示用) ;速度检测计数归零

;设置刷新显示标志 (控制主程序刷新显示)

;此处添加恢复现场内容的指令(如果有的话)

RETI

;程序结束 ************************************** END

- 27 -

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4