云文档网 - 专业文章范例文档资料分享平台

《单片机原理及应用》实验指导书.

来源:网络收集 时间:2024-05-01 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xuecool-com或QQ:370150219 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h

;============================= = 延时子程序============================ Delay:

mov r7, #0 DelayLoop: djnz r7, DelayLoop djnz r6, DelayLoop ret

;========================6位数码管轮流显示子程序======================= DisplayLED:

mov r0, #020h

mov r1, #6 ; 共6个八段管

mov r2, #00100000b ; 从左边开始显示 Loop:

mov dptr, #OUTBIT mov a, #0

movx @dptr, a ; 关所有八段管 mov a, @r0

mov dptr, #OUTSEG movx @dptr,a mov dptr, #OUTBIT mov a, r2

movx @dptr, a ; 显示一位八段管 mov a, r2 ; 显示下一位 rr a mov r2, a inc r0 djnz r1, Loop ret

;========================== 单片机读入键盘行的状态子程序 =============== TestKey:

mov dptr, #OUTBIT mov a, #0

movx @dptr, a ; 输出线全置为0 mov dptr, #IN ; IN =08001h movx a, @dptr ; 读入键状态 cpl a

anl a, #0fh ; 高四位不用 ret

KeyTable: ; 键码定义 db 16h, 15h, 14h, 0ffh db 13h, 12h, 11h, 10h db 0dh, 0ch, 0bh, 0ah db 0eh, 03h, 06h, 09h db 0fh, 02h, 05h, 08h db 00h, 01h, 04h, 07h

;==========================扫描键盘子程序 =========================== GetKey:

mov dptr, #OUTBIT mov P2, dph mov r0, #Low(IN mov r1, #00100000b mov r2, #6 KLoop:

mov a, r1 ; 找出键所在列 cpl a

movx @dptr, a cpl a rr a

mov r1, a ; 下一列 movx a, @r0 cpl a anl a, #0fh

jnz Goon1 ; 该列有键入 djnz r2, KLoop

mov r2, #0ffh ; 没有键按下, 返回 0ffh sjmp Exit Goon1:

mov r1, a ; 按下键的键码在键码表中的位置偏移量=(列-1 X 4 + (行-1 ;从第6列开始

mov a, r2 dec a rl a rl a

mov r2, a ; r2 = (r2-1*4

mov a, r1 ; r1中为读入的行值 mov r1, #4 LoopC:

rrc a ; 移位找出所在行 jc Exit

inc r2 ; r2 = r2+ 行值 djnz r1, LoopC Exit:

mov a, r2 ;r2中为按下键的键码在键码表中的位置偏移量 mov dptr, #KeyTable movc a, @a+dptr mov r2, a ; 取出键码 WaitRelease:

mov dptr, #OUTBIT ; 等键释放 clr a

movx @dptr, a mov r6, #10 call Delay call TestKey

单片机原理及应用 实验指导书 罗钧 付丽 编

重庆大学光电工程学院 2010年5月 目 录 实 验 规 则 (2

实验一 单片机监控程序实验(4学时 (3 附1.1:LAB2000P实验仪 (9 附1.2:验证实验程序 (10 附1.3:K EIL的使用步骤参考 (17 实验二 A/D转换实验 (3学时 (21 附2.1:验证实验程序 (24 实验三 D/A转换实验 (2学时 (25

附3.1:DA转换实验程序 (27

实验四 单片机系统综合实验( 3学时 (28 附4.1:实验仪中的温度传感器电路 (30 附4.2:直流电机和步进电机控制接口电路 (31 实 验 规 则

为了维护正常的实验教学次序,提高实验课的教学质量,顺利的完成各项实验任务,确保人身、设备安全,特制定如下实验规则:

一、实验前必须充分预习,完成指定的预习内容,预习要求如下: 1.认真阅读本实验指导书,分析掌握本次实验的基本原理; 2.完成各实验预习要求中指定的内容; 3.明确实验任务。

二、实验时,认真、仔细的写出源程序,进行调试,有问题向指导老师举手提问; 三、实验时注意观察,如发现有异常现象(电脑故障或实验箱故障,必须及时报告指导老师,严禁私自乱动。

四、实验过程中应仔细观察实验现象,认真记录实验数据、波形、逻辑关系及其它现象,记录的原始结果必须经指导教师审阅签字后,方可离开。

五、自觉保持实验室的肃静、整洁;实验结束后,必须清理实验桌,将实验设备、工具、导线按规定放好,并填写仪器设备使用记录。

六、凡有下列情况之一者,不准做实验: 1.实验开始后迟到10 分钟以上者;

2.实验中不遵守实验室有关规定,不爱护仪器,表现不好而又不服从教育者; 七、实验后,必须认真作好实验报告,在规定时间里必须交给实验指导老师,没交实验报告者,视为缺做一次实验。实验报告要求必须包括:

1.写出设计实验程序; 2.总结实验步骤和实验结果;

八、一次未做实验,本实验课成绩视为不及格。 以上实验规则,请同学们自觉遵守,并互相监督。 实验一 单片机监控程序实验(4学时 实验预习要求:

1.按照附3学习使用Keil软件。 2.熟悉键盘和显示器接口及工作原理。

3.根据实验原理,读懂验证实验程序,并写出设计性实验源程序。 4.思考题:

(1从附1.2监控程序可以看出:六位数码管显示的数据存放在单片机哪个位置? (2参考图1.1A与监控程序,键盘上若数字键7被按下,单片机怎样判断该键被按下?

一、实验目的

1.掌握8031系统中,键盘和显示器的接口方法。 2.掌握键盘扫描和LED八段码显示器的工作原理。

3.掌握对单片机IO口的控制编程。 二、实验器材

PC 机一台,Lab2000P 教学实验系统一台,导线数根。 三、实验内容 1.验证性实验

利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在八位数码管上显示出来。

2.设计性实验

用Lab2000P 教学实验系统(见附2图,P1口产生一矩形波(周期可自己设定,设计的程序加到验证实验程序中,放在单片机程序空间0280h开始位置。

程序运行时,把产生矩形波的P1口(P1.0~P1.7任意一位接到示波器,观察设计程序运行时P1口产生的波形是否正确。

四、实验原理 1.实验仪器简介

实验设备中Lab2000P教学实验系统是核心部件,所有实验都通过计算机处理后下载到实验箱中进行验证。本实验系统提供了多个模块,本次实验使用的主要模块为:单片机8031模块、8255模块。4×6键盘模块,六位LED显示模块等。

2.键盘扫描显示原理

键盘与六位LED显示器连接电路图见图1.1。 (1芯片介绍

74HC245:高速CMOS 型8位双向总线收发器(三态。主要用于数据总线的同步双向通信,起总线隔离驱动作用。

74HC374:为八D 触发器集成芯片,电路中起显示驱动作用。 图1.1(A

图1.1(B

图1.1 键盘及LED 显示电路 (2扫描键盘和LED 显示原理 (1 (2 MC1413 (2

本实验仪的LED显示电路和键盘电路如图1.1(A。显示控制的位码由芯片74374(1输出,经反向驱动后(反向驱动芯片MC1413,作为LED的位选通信号。位选通信号也同时作为键盘列扫描码,键盘扫描的行数据从芯片74245读回单片机,74374(1输出的列扫描码经245读入后,用来判断是否有键被按下,以及按下的是什么键。如果没有键按下,由于上拉电阻的作用,经245读回的数据位均为高,如果有键按下,74374(1输出的低电平经过按键被接到245的端口上,这样从245读回的数据

就会有低位,根据74374(1输出的列信号和245读回的行信号,就可以判断哪个键被按下。LED显示的段码由74374(2输出。

键盘和LED显示的地址译码见图1.1(B,做键盘和LED显示实验时,需将KEY/LED CS 接到相应的地址译码上。位码输出的地址为0X002H,段码输出的地址为0X004H,键盘行码读回的地址为0X001H,此处X是由KEY/LED CS 决定,参见地址译码。例如将KEY/LED CS接到地址译码的CS0(如图1.2上,那么位码输出的地址就为08002H,段码输出的地址就是08004H,键盘行码读回的地址为08001H。

(3Lab2000P实验仪单片机系统138译码电路

图1.2 译码电路图

其中:CS0: 08000H~08FFFH CS1: 09000H~09FFFH CS2: 0A000H~0AFFFH CS3: 0B000H~0BFFFH CS4: 0C000H~0CFFFH CS5: 0D000H~0DFFFH CS6: 0E000H~0EFFFH CS7: 0F000H~0FFFFH 4. 段码表和键码表 (1段码表

七段数码管的字符型代码表如下表:

(2键码表 键码表如下: KeyTable: ; 键码定义 功能键:

16h, 15h, 14h, 0ffh 分别对应 MON ,LAST,NEXT,RST

13h, 12h, 11h, 10h 分别对应TRACE/MODE,MOVE,HERE,EXEC 数字键:

0dh, 0ch, 0bh, 0ah 分别对应D,C,B,A 0eh, 03h, 06h, 09h 分别对应E,3,6,9 0fh, 02h, 05h, 08h 分别对应F,2,5,8 00h, 01h, 04h, 07h 分别对应0,1,4,7 3. 验证实验程序流程 (1主程序流程

图1.3 监控实验主程序流程图 (2键盘扫描子程序流程图

图1.4 键盘输入子程序流程图 五、实验步骤

1.运行Keil软件,按照附1.3 “Keil软件使用的参考步骤”步骤1~10,建立工程、编译、链接。

2、硬件连接:

(1连接片选信号,将KEY/LED CS连接到CS0即可(具体的电路原理图请参考图1.1; 8255的片选连接到CS1。

(2用串口线连接Lab2000P实验箱(右上角标有“仿真器串口”处到PC机。用电源线连接实验箱到220V电源,开启实验箱的电源(电源开关在实验箱的左侧。

3、按照附1.3步骤11~12下载目标文件,并全速运行程序。

4、程序全速运行时,从实验箱上的键盘输入0200,再按“EXEC”键,观察实验结果。等到最左边的数码管显示“0”时,再从键盘输入0300,然后按“EXEC”键,用示波器观察8255的PA、PB、PC口输出的波形。或者把PA、PB、PC中的每位输出连接到实验箱中“逻

辑笔”输入,观察指示灯的变化,记录实验结果。 5、开始做设计实验。 附1.1:lab2000P实验仪 仿真器串口输入 附1.2:验证实验程序

/*监控程序:包括键盘扫描、8字循环显示、8255三个口输出方波*/ OUTBIT equ 08002h ; 位控制口 OUTSEG equ 08004h ; 段控制口 IN equ 08001h ; 键盘读入口

Ctrl_8255 equ 09003h ; 8255控制口地址 PA_8255 equ 09000h ; 8255A口地址 LEDBuf equ 60h ; 键盘输入数字显示缓冲 LEDBuf1 equ 70h ; 六位数码管循环显示缓存 LEDBuf2 equ 50h ; 键码缓存,用于跳转用 ljmp Start

LEDMap: ; 八段管显示码

jnz WaitRelease mov a, r2 ret

;================查找A中存放的数所对应LED显示段码子程序 ============== ToLED:

mov dptr, #LEDMap movc a, @a+dptr ret

;===========将键码(在A中 存放到LEDBuf2所指向的内部存储器单元===========

ToKeyTable: mov r1,LEDBuf2 mov @r1,a ret

;==========================初始化单片机内存子程序=====================

InitLED: mov 20h, #3fh mov 21h, #0h mov 22h, #0h

mov 23h, #0h mov 24h, #0h mov 25h, #0h ret

//////////////////////////////////////////////////////////// 主程序 /////////////////////////////////////////////////////////////// Start:

mov LEDBuf,#020h mov LEDBuf2,#30h call InitLED

mov LEDBuf1+0, #0ffh ; 8字循环显示模块程序用到,0ffh为8.的段码 mov LEDBuf1+1, #0ffh mov LEDBuf1+2, #0ffh mov LEDBuf1+3, #0ffh mov LEDBuf1+4, #0ffh mov LEDBuf1+5, #0ffh mov r4,#6 MLoop: call DisplayLED call TestKey ;有键入?

jz MLoop ;无键入, 继续显示 call GetKey ;读入键码

jb 0e4h,commkey ;如果ACC.4为1,则为命令键,转到commkey处理numkey: mov r0,a ;保存数据a

call ToKeyTable ; 键码保存在LEDBuf2(初始值30h指向的单元中 mov a,r0 anl a, #0fh ;显示键码

call ToLED ;查找A的段码并把段码保存在A中 mov r0,LEDBuf

mov @r0,a ;段码保存在LEDBuf(初始值20h指向的单元中 inc LEDBuf inc LEDBuf2 djnz r4,MLoop mov r4,#6

mov LEDBuf,#020h mov LEDBuf2,#030h ljmp MLoop

commkey: ;处理命令键

cjne a,#13h,start ;如果按下的键不是EXEC,则转向程序开始 call nextkey

;==========================把dph、dpl压入堆栈子程序====================

nextkey: acall pickdata push dpl push dph

ret ;dph与dpl弹出堆栈赋给PC

;=================================子程序

==============================; ;单片机内部RAM30h-33h单元中存储的是从键盘输入的地址,用于改变PC,执行相应的程序;

pickdata:

mov r0,#031h ;将30H、31H 单元中的低4 位数据赋给DPH acall pickone mov dph,a

mov r0,#033h ;将32H、33H 单元中的4 位数据赋给DPL acall pickone mov dpl,a ret

;=============================取相邻内存单元低4位子程序

================ ;取出r0 与r0-1所指向的单元中低4 位数据,并保存到A中,只取低4 位,键盘上输入的每位数据(0到;F最多只用到4位表示

pickone: mov a,@r0 anl a,#0fh mov r1,a dec r0 mov a,@r0 swap a anl a,#0f0h orl a,r1 ret

////////////////////////////////////六位数码管轮流显示“8”字,从左到右共循环10次//////////////////////////// org 0200h

mov r0,#4 clr a

mov r3,#10 ;循环次数,可自行设置 DisplayLED1: ;轮流显示 mov r0, #LEDBuf1

mov r1, #6 ; 共6个八段管

mov r2, #00100000b ; 从左边开始显示 Loop1:

mov dptr, #OUTBIT mov a, #0

movx @dptr, a ; 关所有八段管 mov a, @r0 mov dptr, #OUTSEG movx @dptr, a mov dptr, #OUTBIT mov a, r2

movx @dptr, a ; 显示一位八段管 mov r6, #200

call Delay ; 延迟值如果设定的太大的话,就会检测不到按键mov a, r2 ; 显示下一位

rr a mov r2, a inc r0 djnz r1, Loop1

djnz r3, DisplayLED1

acall InitLED ;重新从左边显示 mov r4,#6

mov LEDBuf,#020h mov LEDBuf2,#030h ajmp MLoop

//////////////////////////////////////8255 的PA,PB,PC 口分别循环输出方波程序/////////////////////////// org 0300h

testPort:

mov dptr,#Ctrl_8255 mov a,#80h movx @dptr,a mov a,#55h

mov r3,#20 ;循环次数,可自行设置 testPortA:

mov dptr,#PA_8255 ;PA 口 movx @dptr,a inc dptr

movx @dptr,a ;PB 口

inc dptr

movx @dptr,a ;PC 口 rr a

mov r6, #200 ;输出延时,可自行设置延时时间 acall Delay djnz r3, testPortA ajmp MLoop end

附1.3:Keil的使用步骤参考

1、点击”Project?New Project……”,新建一个工程文件,在Creat New Project窗口

中输入工程名。

图1.5 新建工程

2、Creat New Project窗口中,点击“确定”,然后出现如下窗口,选择芯片类型,本实验选用芯片为Intel公司的8051AH。

图 1.6 选择芯片

3、点击“确定”后,在出现的如下窗口中选择“否”。

图1.7 是否添加Startup文件到工程中

4、新建文件,File->New……或直接点击快捷按钮Creat a New File ,然后编写程序。文件也可以在建立工程之前建立并编写。

图1.8 新建程序文件

5、保存文件,注意文件名必须有后缀名,若是汇编程序后缀名为.asm,C程序为.c。

图1.9 保存文件

6、把文件添加到建立的工程中,如下图,点击Project Workspace窗口中的Source Group1,单击鼠标右键,在弹出的菜单中选择“Add Files Group “Source Group 1””

图1.10 添加文件到工程

7、找到程序文件保存的目录,在出现如下图所示的窗口中,单击“ADD”按钮。

图1.11 ADD Files to Group窗口

8、按照下图1.12所示选择“Option for Target “Target 1””。

图1.12 选择“Option for Target “Target 1””

9、单击选择Option for Target “Target 1”窗口中的Debug。设置.Use为“WA VE Emulator Driver”。

图1.13 Option for Target “Target 1”窗口

10、Project->Rebuild all target files,工程编译链接。注意:观察输出窗口,看是否有错误提示,若有错误,需修改程序中的错误,然后再编译链接直至没有错误提示。

输出窗口

11、下载程序到仿真系统,选择Debug->start/stop Debug Session。 12、运行程序Debug->Go或按快捷键F5,若单步运行程序,可选择Debug->Step。

提示:若需停止程序运行,选择Debug->Stop Running,然后再选择Debug->start/stop Debug Session

实验二 A/D转换实验 (3学时 实验预习要求:

1.熟悉AD0809工作原理,熟悉单片机中断编程方法。 2.写出设计性实验源程序。 3.思考题:

参考ADC0809转换电路图,ADC0809的控制引脚ALE、ENABLE、START怎样和单片机连接?叙述其原理。

一、实验目的

1.理解A/D转换的基本原理。

2.掌握A/D转换芯片0809的性能及编程方法。 3.掌握单片机系统中扩展A/D和8255的基本方法。 4.掌握单片机外部中断编程方法。 二、实验器材

PC 机一台,Lab2000P 教学实验系统一台,导线数根 三、实验内容 1.验证性实验

利用实验箱上的ADC0809做A/D转换实验,实验板上的电位器提供模拟量输入,验证程序将模拟量转换成二进制数字量,用8255的PA口输出到发光二极管显示(图2.4。

2.设计性实验

单四拍方式 B C D A 单,双八拍工作方式 DA A AB B BC C CD D A B D 图 4.4 电机工作方式的时序图 上图中示意的脉冲信号是高有效, 但实际控制时公共端是接在VCC上的, 所以实际控制 脉冲是低有效.8255的PA口输出的脉冲信号经

(ULN2003A倒相驱动后,向步进电机输出 脉冲信号序列. 8051单片机也可以通过P1口输出脉冲信号控制步进电机的运转. 也可以通过 实验仪上的波形发生器来产生脉冲序列来控制步进电机的运转. 第 32 页 共 33 页

百度搜索“yundocx”或“云文档网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,云文档网,提供经典综合文库《单片机原理及应用》实验指导书.在线全文阅读。

《单片机原理及应用》实验指导书..doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.yundocx.com/wenku/171662.html(转载请注明文章来源)
Copyright © 2018-2022 云文档网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:370150219 邮箱:370150219@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:7 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219