微处理器实验指导书(电信学院)2015

更新时间:2024-04-27 16:49:01 阅读量: 综合文库 文档下载

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

实验指导书

教学单位:电子信息学院 课程名称:微处理器实验

电子科技大学中山学院

2015年5月修订

目录

第1章 ZSC-1单片机实验箱简介 ........................................................ 1

1.1 主要特点 .................................................................... 1 1.2 系统组成 .................................................................... 1 1.3 实验项目 .................................................................... 3 1.4 技术性能 .................................................................... 3 1.5 调试下载说明 ................................................................ 3 第2章 Keil C51软件的使用 ........................................................... 4

2.1 集成开发环境简介 ............................................................ 4 2.2 工程(项目)的创建与处理 .................................................... 4 2.3 脱机运行 .................................................................... 7 第3章 实验部分 ..................................................................... 8

实验一 集成开发环境的熟悉与指令练习 ............................................. 8 实验二 程序设计实验 ............................................................ 11 实验三 并口输入/输出实验 ....................................................... 15 实验四 中断与定时/计数器实验 ................................................... 19 实验五 串口实验 ................................................................ 22 实验六 音乐门铃设计 ............................................................ 26 实验七 串口扩展实验 ............................................................ 31 实验八 A/D与D/A转换实验 ....................................................... 39 实验九 键盘、数码管与点阵管实验 ................................................ 46 实验十 步进电机与直流电机控制实验 .............................................. 51 实验十一 简易电子钟设计 ........................................................ 59 实验十二 数字温度计设计 ........................................................ 65

I

第1章 ZSC-1单片机实验箱简介

1.1 主要特点

ZSC-1单片机实验箱是由电子科技大学中山学院研发的单片机教学实验与应用开发平台,除满足单片机原理与接口技术等相关课程的实验教学需要外,还可用于课程设计、电子竞赛培训、创新训练、毕业设计等实践环节的项目开发。该实验箱结构先进,外设丰富,通信能力强,扩展性好,能使学生快速熟悉单片机及常用外设的工作原理,掌握典型单片机系统的设计流程,提高应用开发能力,有效培养工程素质。

ZSC-1单片机实验箱的主要特点包括:

1、结构先进:设置4个以不同单片机为核心的实验分区,每个单片机既可独立工作,控制分区内各种外设,也可通过串行总线与其它单片机通信,实现信息交换。另设一个公用外设区,包括多种串行芯片/模块,由4个单片机通过串行总线分时访问。

2、外设丰富:配置多种人机设备、传感器件、执行设备、通信设备、存储设备并支持外部扩展,其中TFT LCD、TTS语音合成器、ZigBee模块、陀螺仪/加速度传感器、非接触式RFID读卡器等新型外设均为标配,提高了实验项目的交互性和趣味性。

3、外部通信能力强:提供RS232、RS485、USB、红外等多种通信接口,4个单片机均可利用这些接口与PC机等设备进行通信,实现程序下载、数据上传等功能。

4、扩展性好:单片机多个并行及串行IO口通过排针引出,用于外部扩展设备的连接。

5、可靠性高:每个实验区设有独立的电源开关和稳压电路,确保一个实验区的断电或故障不会影响其它实验区的正常工作。

6、实验项目丰富:支持不少于50个基础性、综合性和设计性实验项目。

7、开发效率高:提供设备驱动API、二级BootLoader、上位IAP编程软件,大幅提高单片机系统开发效率。 1.2 系统组成

ZSC-1实验箱由4个实验分区、公用外设区、外部通信区、串行总线、电源电路组成,如图1.1所示。每个实验分区包括一个单片机以及多种由单片机直接控制的外设,公用外设区包括多种可由4个单片机分时共享的串行芯片/模块,外部通信区提供RS232、RS485、USB、红外等多种通信接口,串行总线用于各实验分区、公用外设区、外部通信区之间的通信。

RS232RS485USB红外1#外设区2#外设区3#外设区4#外设区公用外设区外部通信区1#单片机2#单片机3#单片机4#单片机串行总线

图1.1 ZSC-1实验箱的总体结构

1

表1.1为4个实验分区以及公用外设区的外设清单。1#与2#实验分区均采用80C51内核的STC12C5A60S2单片机(只是封装不同),且配置外设较多。3#实验分区采用AVR内核的ATmega32,4#实验分区采用基于80C51内核并内置IEEE 802.15.4无线收发器的CC2530。

表1.1 ZSC-1实验箱外设清单

发光二极管 无源蜂鸣器 人机设备 1#实验分区 (STC12C5A60S2) 执行设备 传感器 独立按键 行列键盘 LED数码管 LED点阵管 16*2字符LCD显示器 直流电机 步进电机 DS18B20温度传感器 电位器 发光二极管 人机设备 2#实验分区 (STC12C5A60S2) 无源蜂鸣器 独立按键 传感器 通信设备 存储设备 DHT11温湿度传感器 电位器 nRF24L01+射频收发器 8MB串行Flash存储器 RC522 RFID读卡器 发光二极管 3#实验分区 (ATmega32) 传感器 4#实验分区 (CC2530) 传感器 异步串行外设 公用外设区 IC外设 2人机设备 无源蜂鸣器 独立按键 电位器 发光二极管 无源蜂鸣器 独立按键 电位器 MzTH24 TFT LCD显示器 SYN6288 TTS语音合成器 AT24C64串行EEPROM PCF8563T实时钟 PCF8591串行AD/DA MPU6050陀螺仪/加速度传感器 人机设备

图1.2为ZSC-1实验箱的实物图。各功能分区、主要元器件、1#单片机引脚、扩展排针引脚的名称均有丝印标注,1个总电源开关和4个分电源开关集中安排在位于上方的电源区,程序下载口(RS232/USB)设在左上方外部通信区。

2

图1.2 ZSC-1实验箱实物图

1.3 实验项目

一、基础性实验

1、并口实验;2、串口实验;3、定时/计数器实验;4、外部中断实验;5、A/D转换实验;6、 D/A转换实验;7、看门狗实验。

二、综合性实验

1、数码管显示实验;2、行列键盘扫描实验;3、直流电机实验;4、步进电机实验;5、字符型LCD显示实验;6、LED点阵显示实验;7、TFT LCD显示实验;8、TTS语音实验;9、I2C接口实验;10、SPI接口实验;11、RS485实验;12、无线数传实验;13、红外通信实验;14、多机通信实验;15、RFID实验;16、陀螺仪与加速度传感器实验

三、设计性实验

1、多功能电子钟设计;2、音乐门铃设计;3、数字温度计设计;4、温湿度测试仪设计;5、数字记录仪设计;6、交通灯设计;7、门禁系统设计;8、多通道遥控系统设计;9、信号发生器设计;10、数字频率计设计;11、电子密码锁设计;12、简易游艺机设计;13、ZigBee无线传感器网络设计;14、小型物联网设计;15、高速公路自动收费系统设计;16、智能小区管理系统设计;17、倒车避障系统设计 1.4 技术性能

电气参数:输入电压AC 220V±10% 50Hz,输出功率<30W 机械参数:采用铝合金箱体,外形尺寸400mm×280mm×120mm 使用环境:温度-10℃~+40℃,相对湿度<85%,海拔<4000m 1.5 调试下载说明

用USB电缆连接实验箱和PC机,运行PC机上的STC_ISP.exe,进行程序下载。具体步骤如下:

1、在STC_ISP主界面选择MCU型号为STC12C5A60S2,打开实验中生成的HEX格式程序文件,选择相应串口,设置最高波特率为38400bps;

2、将实验箱电源电路中的总电源开关拨到左侧位置,使主电源接通,将MCU1电源开关拨到下方位置,使1#单片机断电;

3、点击STC_ISP主界面中的下载按钮,约等待5s,待系统提示“请给MCU上电”时再将MCU1电源开关拨到上方位置,使1#单片机通电,开始下载程序,数秒后下载结束,写入单片机Flash存储器中的程序自动开始运行。

3

MOV @R0,#33H MOV @R1,#44H MOV A,@R0 PUSH ACC MOV A,@R1 PUSH ACC NOP

POP ACC MOV @R0,A POP ACC MOV @R1,A NOP

SJMP $ END

;(30H)=? ;(40H)=? ;A=?

;SP=? (61H)=? ;A=?

;SP=? (62H)=?

;SP=? A=? ;(30H)=? ;SP=? A=? ;(40H)=?

③ 选择Project下的Rebuild all target files 对工程文件进行汇编和连接,如果出错,系统会提示出错并指出出错地方和出错类型,请按照提示返回程序进行修改,直到系统提示0 warnings,0 errors,表明程序没有语法错误,成功完成了汇编过程,就可以进行动态调试了。

④ 选择Project下的Options for target ‘Target1’进行动态调试的参数设置,点击debug,再点击 Use Simulator,最后点击完成。

⑤ 对程序进行动态调试,学会查看和修改相关寄存器(左边的register窗)、内部和外部存储器的内容。常用的工具条上的命令有开始/暂停动态调试,单步执行或,执行到光标处等。查看存储器内容的方式是在存储区(View/memory 窗)的地址栏内写上要查看的初始地址就可以了。比如看内部存储器用D:0000H,程序存储器用C:0000H,外部存储器用X:0000H。将每行程序执行后的结果写到该行程序的注释部分。

2、编写一个数据填充和数据块搬移程序。

仿照实验内容和步骤1的过程,建立、编辑、汇编、连接和动态调试程序,查看和验证数据区的内容是否正确。

ORG 0000H LJMP MAIN ORG 0100H

MAIN: MOV R0,#30H ; R0指向30H单元

MOV R2,#16 ; R2作循环计数器 NEXT1: MOV @R0,#'*' ; 填充当前单元

INC R0 ; 指针下移一个单元 DJNZ R2,NEXT1 ; 未填完16个单元,继续 ;以下程序将30H开始的16个字节内容送到100H开始的外部存储器中

MOV R1,#30H MOV DPTR,#0100H MOV R3,#10H NEXT2: MOV A,@R1

MOVX @DPTR,A INC R1 INC DPTR

9

DJNZ SJMP END R3,NEXT2 $

3、编写一个双字节算术加法程序。仿照实验内容和步骤1的过程,建立、编辑、汇编、连接和动态调试程序,将运行结果写到程序的注释部分。

MAIN:

ORG LJMP ORG MOV MOV MOV MOV MOV MOV ADD MOV MOV ADDC MOV MOV ADDC MOV SJMP END

0000H MAIN 0100H SP,#60H R1,#12H R0,#34H R2,#21H R3,#0EFH A,R0 A,R2 R4,A A,R1 A,R3 R5,A A,#0 A,#0 R6,A $

; R1R0=? ; R3R2=? ; 低8位相加

; 高8位相加

; R6R5R4=?

五、注意事项

1、源程序中的数字0切勿输成字母O,标点都要使用西文字符。 2、本次实验无需使用实验箱。 六、作业及预习要求

1、认真分析实验程序中各条指令的具体功能。 2、总结单片机程序设计与调试的一般流程。

3、对程序3进行修改,实现两个双字节BCD码的加法和减法。

10

实验二 程序设计实验

实验名称:程序设计实验 学时安排:4学时 实验类别:验证性 实验要求:必做 一、实验目的和任务

1、掌握分支、循环结构程序以及子程序的设计方法。 2、进一步熟悉Keil C51集成开发环境。 二、实验原理简介

在汇编语言程序设计中,普遍采用结构化程序设计方法。因为任何复杂的程序都可由顺序结构、分支结构及循环结构等构成。每种结构只有一个入口和出口,整个程序也只有一个入口和出口。结构化程序设计的特点是程序的结构清晰、易于读写和验证、可靠性高。结构化程序设计的基本方法有顺序结构、分支结构、循环结构、子程序。

本实验在实验一基础上,要求掌握分支、循环结构程序以及子程序的设计方法。 三、实验设备

PC 机一台(已安装Keil uVision软件) 四、实验内容和步骤

1、分支程序:

分支程序是根据要求无条件或有条件地改变程序执行流向。编写分支程序主要在于正确使用转移指令。

设变量x以补码形式存放在片内RAM的30H单元中,变量y与x的关系如下:

x?0?x?y??20H x?0

?x?5x?0?仿照实验一的过程,编写程序、汇编、连接和软件仿真。

MAIN: NEXT: ED:

ORG JMP ORG MOV MOV JZ ANL JZ MOV ADD MOV SJMP MOV SJMP END

0000H MAIN 0100H

30H, A, 30H

NEXT ;x=0,转移 A, #80H ;保留符号位 ED ;x >0,转移 A, #05H ;x <0,不转移 A, 30H 30H, A ED

30H, #20H $

11

图3.2.1 程序1流程图

图3.2.2 循环程序流程图

2、循环程序:循环程序一般包含四部分:初始化部分、循环处理部分、循环控制部分和循环修改部分。下面分别介绍这四个组成部分。

1) 初始化部分:设置循环开始的初始值,为循环做准备。 2) 循环处理部分:循环程序中重复执行的内容。 3) 循环控制部分:判断是否结束循环。

4) 循环修改部分:修改循环参数,为执行下一次循环做准备。 设有一带符号的数组存放在内部RAM以20H为首址的连续单元中,数组长度为30,要求找出其中的最大值,并将其存放到内部RAM的1FH单元中。

请自行填写循环程序写入数组并运行以下程序,观察结果。

MAIN:

MOV R0, #20H ;置取数指针R0初值

12

MOV B, #29H ;置循环计数器B初值 MOV A, @R0 ;第一个数送A LOOP: INC R0 ;修改指针 MOV R1, A ;暂存

XRL A, @R0 ;两数符号相同? JB ACC.7, LAT ;若相异,则转LAT

MOV A, R1 ;若相同,则恢复A中原来值 CLR C ;C清零

SUBB A, @R0 ;两数相减,以判断两者的大小 JNB ACC.7, AA ;若A中值为大,则转AA

CXA: MOV A, @R0 ;若A中值为小,则将大数送入A SJMP BB

LAT: XRL A, @R0 ;恢复A中原值MOV A, R1 JNB ACC.7, BB ;若A中值为正,侧转BB SJMP CXA ;若A中值为负,则转CXA AA: MOV A, R1 ;恢复A中原值 BB: DJNZ B, LOOP

MOV 1FH, A ;最大者送1FH单元 END

3、子程序:同一个程序中,往往有许多地方都需要执行同一任务,这时可对这项任务独立编写,形成一个子程序。在原来的主程序中需要执行该任务时,调用该子程序,执行完后又返回主程序,这就是子程序结构。在程序设计过程中,适当地使用子程序具有以下优点:

1)不必重复编写同样的程序,提高了编码的效率。

2)缩短了源程序和目标程序的长度,节省了程序存储器的空间。 3)使程序模块化、通用化,便于阅读、交流和共享。 4) 便于分块调试。

参数传递大致可分为以下几种方法:

1) 传递数据:将数据通过工作寄存器R0~R7和累加器来传送。即主程序和子程序在交接处,通过工作寄存器或累加器存储要传递的参数。

2) 传送地址:数据存放在数据存储器中,参数传递时只通过R0、R1或DPTR传递数据所存放的地址。

3) 通过堆栈传递参数:在调用之前,先把要传送的参数压入堆栈,进入子程序之后,再将压入堆栈的参数弹出到工作寄存器或者其他内存单元。

设0、1、...、9存放在内部RAM的20H开始的存储区域内,对其进行平方运算,计算所得结果存放在R3、R2中。要求:平方运算编写成子程序SORT,主程序通过调用SORT并求和完成运算。参数的传递用累加器。

MAIN:

ORG 0000H JMP MAIN ORG 0100H

(此处自行填写程序:将0~9存入内部RAM的20H开始的存储区域内) MOV R0, #20H ;置数据指针 MOV R7, #10 ;置计数初值 MOV R3, #0 ;结果单元清零 MOV R2, #0

13

CLR C

LOOP: MOV A, @R0 ;取数

ACALL SORT ;调用求平方子程序 ADD A, R2 ;累加平方和 MOV R2, A MOV A,R3

ADDC A, #0 ;加进位Cy MOV R3, A

INC R0 ;修改指针 DJNZ R7, LOOP ;未完,继续 SJMP EN

SORT: MOV DPTR, #TAB ;进入子程序查平方表 MOVC A, @A+DPTR RET

TAB: DB 0, 1, 4, 9, 16 DB 25, 36, 49, 64, 81 EN: NOP END

五、注意事项

1、80C51汇编指令中立即数前面要加#号。 2、子程序结束必须使用RET指令。 3、本次实验无需使用实验箱。 六、作业及预习要求

1、总结循环结构程序和子程序的优点及设计要点。

2、对程序3进行修改,使其能求出两位十进制数(最大99)的平方。

14

实验三 并口输入/输出实验

实验名称:并口输入/输出实验 实验类别:验证性 一、实验目的和任务

1、掌握80C51单片机程序的调试与下载方法。

2、掌握80C51单片机并口的工作原理及输入输出控制方法。 二、实验原理简介

80C51单片机包括P0~P3共4个并口,除可作为普通I/O口使用外,P0口还可用作8位数据总线口和低8位地址口,P2可用作高8位地址口,P3.6、P3.7可用作外部RAM或I/O接口的读、写控制引脚,P3.0~P3.5可用作串口、外部中断、计数器的功能引脚。

ZSC-1实验箱包括4个单片机,其中1#单片机(MCU1)和2#单片机(MCU2)的型号都是STC12C5A60S2,只是封装不同。STC12C5A60S2采用80C51内核,片内资源和性能较标准80C51单片机增强了许多。本课程的全部实验只用到MCU1。

图3.3.1为本实验的硬件电路(单片机时钟与复位电路略)。P0口用于控制发光管L101~L108,口线输出0(低电平)时,对应发光管点亮,口线输出1(高电平)时,对应发光管熄灭。P3口的4根口线连接独立按键KX0~KX3,由于P3口内部上拉电阻的作用,按键松开时,对应口线表现为1状态(高电平),按键按下时,对应口线表现为0状态(低电平)。

注意:在做本实验时,须将拨码开关JUMP2置为接通状态。

VccMCU1STC12C5A60S2KX0KX1KX2KX312141517P3.2P3.4P3.5P3.7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.73938373635343332L101L102L103L104L105L106L107L108JUMP2470Ω470Ω470Ω470Ω470Ω470Ω470Ω470Ω学时安排:4学时 实验要求:必做

图3.3.1 并口输入输出实验电路

三、实验设备

1、PC机一台(已安装Keil uVision、STC_ISP等软件); 2、ZSC-1单片机实验箱一台。 四、实验内容和步骤

1、设计程序,控制发光管L101~L108以一定的时间间隔轮流点亮。

① 在Keil中编写源程序。参考程序如下(请将下划线部分补充完整):

15

;===============================主程序=============================== MAIN: MOV A, #11111110B ;准备点亮第一只发光管 NEXT: MOV ,A

ACALL DELAY ;软件延时1s左右

A ;准备点亮下一只发光管 SJMP NEXT

;=============================延时子程序============================= DELAY: MOV R2,#200 DELAY2: MOV R3,#200 DELAY3: MOV R4,#100 DJNZ R4,$

DJNZ R3,DELAY3 DJNZ R2,DELAY2 RET

;===============================程序结束============================= END

② 在Keil中创建工程,加入源程序文件,设置选项,进行汇编/编译、连接、转换处理,生成HEX格式的单片机程序文件。

③ 用串行电缆连接实验箱和PC机各自的串行通信口,并运行PC机上的STC_ISP程序,进行单片机程序下载。具体步骤如下:

a.在STC_ISP主界面选择MCU型号为STC12C5A60S2,打开②中生成的HEX格式程序文件,选择正确的串口号,设置最高波特率为38400bps;

b.将实验箱总电源开关拨到左侧位置,接通主电源,将MCU1电源开关拨到下方位置,使1#单片机断电;

c.点击STC_ISP主界面中的下载按钮,待系统提示“请给MCU上电”时再将MCU1电源开关拨到上方位置,使1#单片机通电,开始下载程序,数秒后下载结束,写入单片机Flash存储器中的程序自动开始运行。

④ 验证程序运行效果。若LED显示效果与要求的效果不同,或者想试验其它效果,则须修改源程序,重新进行汇编/编译、连接、转换处理,生成最新HEX文件,再按③中介绍的步骤下载和运行最新程序。

2、设计程序,通过查表操作,控制L101~L108逐个点亮,再逐个熄灭。 参考程序如下(请将下划线部分补充完整):

;===============================主程序=============================== MAIN: MOV DPTR,# ;DPTR指向表首单元 MOV A, #0 ;A从0开始

NEXT: PUSH ACC ;A中的数据入栈保存 A,@A+DPTR ;查表

MOV P0,A ;输出当前字节 ACALL DELAY ;软件延时1s左右 POP ACC ;恢复入栈保存的A值 A ;调整A的值

CJNE A,# ,NEXT ;检查是否已到表尾 SJMP MAIN

;=============================延时子程序============================= DELAY: MOV R2,#200 DELAY2: MOV R3,#200 DELAY3: MOV R4,#100 DJNZ R4,$

DJNZ R3,DELAY3

16

DJNZ R2,DELAY2 RET

;==============================LED控制表============================= LEDTBL: DB 11111110B,11111100B,11111000B,11110000B DB 11100000B,11000000B,10000000B,00000000B DB 00000001B,00000011B,00000111B,00001111B DB 00011111B,00111111B,01111111B,11111111B

;===============================程序结束============================= END

3、设计程序,利用按键KX0~KX3分别控制发光管L101~L104的亮灭,具体要求是:每按一次按键,对应的发光管便翻转一次状态(由灭变亮或由亮变灭)。 参考程序如下(请将下划线部分补充完整):

;============================声明外设对应口线======================== KX0 EQU P3.2 KX1 EQU P3.4 KX2 EQU P3.5 KX3 EQU P3.7 L101 EQU P0.0 L102 EQU P0.1 L103 EQU P0.2 L104 EQU P0.3

;===============================主程序=============================== MAIN:

CHKKX0: JB KX0,CHKKX1 ;KX0未按下,则检测KX1

LCALL DELAY ;软件延时10ms左右(按键消抖) JB KX0,CHKKX1 ;KX0未按下,则检测KX1 L101 ;KX0按下,则求反L101 KX0, ;等待KX0松开

SJMP MAIN ;跳转到主程序开头 (以下请自行编写) CHKKX1: ??

;=============================延时子程序============================= DELAY: MOV R2,#2 DELAY2: MOV R3,#200

17

DELAY3: MOV R4,#100 DJNZ R4,$

DJNZ R3,DELAY3 DJNZ R2,DELAY2 RET

;==============================程序结束============================== END

五、注意事项

1、注意程序的完整性、正确性和逻辑性,对出现的语法和逻辑错误要认真分析原因。

2、必要时可利用Keil进行软件模拟调试。

3、STC12C5A60S2采用了优化的内部时钟电路,程序运行速度可达传统80C51单片机的8-12倍,因此软件延时子程序中循环变量的取值也增加了相应倍数。 六、作业及预习要求

1、认真分析实验程序的结构和功能。

2、对程序2进行改进,添加更多LED显示花样。

3、对程序3进行改进,用按键控制多种LED显示花样的动态切换(选做)。

18

实验四 中断与定时/计数器实验

实验名称:中断与定时/计数器实验 学时安排:4学时 实验类别:验证性 实验要求:必做 一、实验目的和任务

1、掌握80C51单片机外部中断的初始化及中断服务子程序设计方法。 2、掌握80C51单片机定时器/计数器的程序控制方法。 二、实验原理简介

中断是指在突发事件到来时先中止当前正在进行的工作,转而去处理突发事件。待处理完成后,再返回到原先被中止的工作处,继续进行随后的工作。引起突发事件的来源称为中断源,中断源要求服务的请求称为中断请求,对中断请求提供的服务称为中断服务,中断管理系统处理事件的过程称为中断响应过程。80C51单片机至少包括5个中断源:

INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。(本实验用) INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。 T0:定时器/计数器0中断,由T0计满回零引起。(本实验用) T1:定时器/计数器l中断,由T1计满回零引起。

TI/RI:串口中断,串口完成一帧字符发送/接收后引起。

本实验对应的硬件电路与实验三相同(见图3.3.1)。P0口用于控制发光管L101~L108,口线输出0(低电平)时,对应的发光管点亮,口线输出1(高电平)时,对应的发光管熄灭。P3口的4根口线连接独立按键KX0~KX3,其中KX0对应外部中断0,进行KX0按键动作的时候可以触发外部中断。

注意:在做本实验时,须将拨码开关JUMP2置为接通状态(向左)。 三、实验设备

1、PC机一台(已安装Keil μVision、STC_ISP等软件); 2、ZSC-1单片机实验箱一台。 四、实验内容和步骤

1、编写一段程序,用P0口作为控制端口,使实验箱上的LED轮流点亮(走马灯)。用外部中断0/KX0控制走马灯的暂停/继续。

ORG 0000H

LJMP MAIN ORG 0003H

LJMP __________ ORG 0100H MAIN: MOV SP,#60H SETB IT0

MOV A,#0FEH MOV R5,#00H

NEXT: CJNE R5,#00H,NEXT

;准备点亮第一只发光管 ;00表示继续,FF表示暂停

19

MOV P0,A ACALL DELAY

RL A SJMP NEXT

; 延时子程序

DELAY: MOV R2,#3 DELAY2: MOV R3,#200 DELAY3: MOV R4,#200 DJNZ R4,$ DJNZ R3,DELAY3 DJNZ R2,DELAY2 RET

;外部中断0服务子程序 ZEX0: PUSH ACC SETB RS0 MOV R2,#2 ACALL DELAY2 CLR RS0

JB P3.2,EXIT MOV A,R5 XRL A,#0FFH MOV R5,A EXIT: POP ACC CLR IE0 END

;准备点亮下一只发光管

观察实验结果,解释如何实现走马灯的暂停和继续。 比较电平触发和边沿触发时走马灯控制的难易程度。

2、编写一段程序,用P0口作为控制端口,使实验箱的LED轮流点亮(走马灯)。用定时/计数器0控制走马灯切换速度。

MAIN:

ORG LJMP ORG LJMP ORG MOV MOV MOV MOV MOV MOV SETB SETB SETB SJMP

0000H MAIN ZIT0 0100H SP,#60H TMOD,#01H TH0,#3CH TL0,#0B0H R6,

R7, ;准备点亮第一只发光管 ET0 EA TR0 $

20

;定时中断0服务子程序 ZIT0: DJNZ R6,ZRET MOV A,R7 MOV ,A RL A MOV R7,A MOV R6, ZRET: MOV TH0,#3CH MOV TL0,#0B0H

END

修改R6=0或1时,观察走马灯的速度快慢。

ZRET:处没有重置初值时的走马灯的速度与 ZRET处有重置初值时的走马灯的速度的比较。

R6=50时,改变T0的初值,设为最大、最小时,比较走马灯的速度。 去掉R6的软件辅助延时,是否可以?速度怎样? 五、注意事项

1、中断服务子程序的返回指令不可用普通子程序的返回指令代替。 2、根据实际需要决定是否对中断服务子程序进行现场保护处理。 3、程序下载前可先利用Keil进行软件模拟调试。 六、作业及预习要求

1、理解实验程序的结构和功能,为关键语句加上注释,并回答相关问题。 2、对程序1进行修改,由KX0控制1个LED的状态翻转。 3、将程序2中的定时初值改为可读性更好的形式。

21

实验五 串口实验

实验名称:串口实验 学时安排:4学时 实验类别:验证性 实验要求:必做 一、实验目的和任务

1、理解80C51单片机串口工作原理。 2、掌握80C51单片机串口控制方法。 3、掌握简单串行通信协议的设计方法。 二、实验原理简介

串行通信是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,并可以利用电话线,从而大大降低了成本,特别适用于远距离通信。串行接口通讯实验是单片机和主机之间进行的通讯实验。

图3.5.1为ZSC-1实验箱串口通信电路的硬件结构,该电路提供RS232、USB两种接口,用于单片机与PC机之间的串行连接。CH340G为USB-UART协议转换芯片,在驱动程序支持下,CH340G可将PC机USB口映射为虚拟串口,其信号电平和数据格式与单片机串口兼容。MAX232A为串口电平转换芯片,可实现PC机RS232口与单片机串口之间的电平匹配。

Vcc1N581710uFUSBVCCD-D+GND12340.1uF654USBDMUSBDPV3XI7161N58170.1uFVcc2K2KCH340GTXDRXDGNDXO8VCC2311N5817MCU1STC12C5A60S212MHz22pF22pF1011MAX232AVCCV+C1+C1-T1OUTR1INV-GNDC2+C2-R1OUTT1IN6P3.0/RXDP3.1/TXDRS232162738495Vcc160.1uF210.1uF154512110.1uF314130.1uF1N5817 图3.5.1 串行通信电路

三、实验设备

1、PC机一台(已安装Keil μVision、STC_ISP等软件); 2、ZSC-1单片机实验箱一台。 四、实验内容和步骤

22

1、编写一段程序,利用单片机的串行口向PC机发送字符串。

① 编写程序,设置目标选项成功通过KEIL系统的编辑、编译和部分程序的动态调试。

ORG

LJMP ORG DB ORG MAIN: CLR MOV MOV MOV MOV MOV MOV SETB MOV MOV LOOP: MOV MOVC MOV JNB CLR INC DJNZ SJMP END

0000H MAIN 0050H

'WELCOME TO ZSC!' 0100H EA

SP,#60H TMOD, TH1, TL1, SCON, PCON,#00H

TR1 R7, DPTR,#0050H A,#00H A,@A+DPTR

,A TI,$ TI DPTR R7,LOOP $

;设置T1为方式2 ;设置波特率为9600 ;选择串口方式1

;启动定时器1

;开始发送

② 下载程序到单片机的FLASH中。

③ 运行PC机上的串口调试助手软件,设置串口参数和接收显示格式。 ④ 运行单片机程序,观察PC机串口调试助手收到的字符串是否正确。

2、编写一段程序,接收主机串行口发送来的字符,在单片机接收到‘X’的时候返回一个‘T’表示正确,否则返回一个‘F’表示错误。

MAIN: LOOP:

ORG LJMP ORG MOV MOV MOV MOV MOV MOV SETB JNB CLR MOV

0000H MAIN 0100H SP,#60H TMOD,#20H TH1,#0FDH TL1,#0FDH SCON,#50H PCON,#00H TR1 RI,$ RI A,SBUF

;设置T1 为方式2 ;设置波特率为9600 ;设置串口为方式1 ;启动定时器1

23

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

Top