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

上传人:b****4 文档编号:11402877 上传时间:2023-05-31 格式:DOCX 页数:33 大小:594.57KB
下载 相关 举报
《单片机原理及应用》实验指导书.docx_第1页
第1页 / 共33页
《单片机原理及应用》实验指导书.docx_第2页
第2页 / 共33页
《单片机原理及应用》实验指导书.docx_第3页
第3页 / 共33页
《单片机原理及应用》实验指导书.docx_第4页
第4页 / 共33页
《单片机原理及应用》实验指导书.docx_第5页
第5页 / 共33页
《单片机原理及应用》实验指导书.docx_第6页
第6页 / 共33页
《单片机原理及应用》实验指导书.docx_第7页
第7页 / 共33页
《单片机原理及应用》实验指导书.docx_第8页
第8页 / 共33页
《单片机原理及应用》实验指导书.docx_第9页
第9页 / 共33页
《单片机原理及应用》实验指导书.docx_第10页
第10页 / 共33页
《单片机原理及应用》实验指导书.docx_第11页
第11页 / 共33页
《单片机原理及应用》实验指导书.docx_第12页
第12页 / 共33页
《单片机原理及应用》实验指导书.docx_第13页
第13页 / 共33页
《单片机原理及应用》实验指导书.docx_第14页
第14页 / 共33页
《单片机原理及应用》实验指导书.docx_第15页
第15页 / 共33页
《单片机原理及应用》实验指导书.docx_第16页
第16页 / 共33页
《单片机原理及应用》实验指导书.docx_第17页
第17页 / 共33页
《单片机原理及应用》实验指导书.docx_第18页
第18页 / 共33页
《单片机原理及应用》实验指导书.docx_第19页
第19页 / 共33页
《单片机原理及应用》实验指导书.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《《单片机原理及应用》实验指导书.docx》由会员分享,可在线阅读,更多相关《《单片机原理及应用》实验指导书.docx(33页珍藏版)》请在冰点文库上搜索。

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

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

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

罗钧付丽编

重庆大学光电工程学院

2010年5月

目录

实验规则(2

实验一单片机监控程序实验(4学时(3

附1.1:

LAB2000P实验仪(9

附1.2:

验证实验程序(10

附1.3:

KEIL的使用步骤参考(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/LEDCS接到相应的地址译码上。

位码输出的地址为0X002H,段码输出的地址为0X004H,键盘行码读回的地址为0X001H,此处X是由KEY/LEDCS决定,参见地址译码。

例如将KEY/LEDCS接到地址译码的CS0(如图1.2上,那么位码输出的地址就为08002H,段码输出的地址就是08004H,键盘行码读回的地址为08001H。

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

图1.2译码电路图

其中:

CS0:

08000H~08FFFHCS1:

09000H~09FFFHCS2:

0A000H~0AFFFH

CS3:

0B000H~0BFFFHCS4:

0C000H~0CFFFHCS5:

0D000H~0DFFFH

CS6:

0E000H~0EFFFHCS7:

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/LEDCS连接到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三个口输出方波*/

OUTBITequ08002h;位控制口

OUTSEGequ08004h;段控制口

INequ08001h;键盘读入口

Ctrl_8255equ09003h;8255控制口地址

PA_8255equ09000h;8255A口地址

LEDBufequ60h;键盘输入数字显示缓冲

LEDBuf1equ70h;六位数码管循环显示缓存

LEDBuf2equ50h;键码缓存,用于跳转用

ljmpStart

LEDMap:

;八段管显示码

db3fh,06h,5bh,4fh,66h,6dh,7dh,07h

db7fh,6fh,77h,7ch,39h,5eh,79h,71h

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

movr7,#0

DelayLoop:

djnzr7,DelayLoop

djnzr6,DelayLoop

ret

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

movr0,#020h

movr1,#6;共6个八段管

movr2,#00100000b;从左边开始显示

Loop:

movdptr,#OUTBIT

mova,#0

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

mova,@r0

movdptr,#OUTSEG

movx@dptr,a

movdptr,#OUTBIT

mova,r2

movx@dptr,a;显示一位八段管

mova,r2;显示下一位

rra

movr2,a

incr0

djnzr1,Loop

ret

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

movdptr,#OUTBIT

mova,#0

movx@dptr,a;输出线全置为0

movdptr,#IN;IN=08001h

movxa,@dptr;读入键状态

cpla

anla,#0fh;高四位不用

ret

KeyTable:

;键码定义

db16h,15h,14h,0ffh

db13h,12h,11h,10h

db0dh,0ch,0bh,0ah

db0eh,03h,06h,09h

db0fh,02h,05h,08h

db00h,01h,04h,07h

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

movdptr,#OUTBIT

movP2,dph

movr0,#Low(IN

movr1,#00100000b

movr2,#6

KLoop:

mova,r1;找出键所在列

cpla

movx@dptr,a

cpla

rra

movr1,a;下一列

movxa,@r0

cpla

anla,#0fh

jnzGoon1;该列有键入

djnzr2,KLoop

movr2,#0ffh;没有键按下,返回0ffh

sjmpExit

Goon1:

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

mova,r2

deca

rla

rla

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

mova,r1;r1中为读入的行值

movr1,#4

LoopC:

rrca;移位找出所在行

jcExit

incr2;r2=r2+行值

djnzr1,LoopC

Exit:

mova,r2;r2中为按下键的键码在键码表中的位置偏移量

movdptr,#KeyTable

movca,@a+dptr

movr2,a;取出键码

WaitRelease:

movdptr,#OUTBIT;等键释放

clra

movx@dptr,a

movr6,#10

callDelay

callTestKey

jnzWaitRelease

mova,r2

ret

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

movdptr,#LEDMap

movca,@a+dptr

ret

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

ToKeyTable:

movr1,LEDBuf2

mov@r1,a

ret

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

InitLED:

mov20h,#3fh

mov21h,#0h

mov22h,#0h

mov23h,#0h

mov24h,#0h

mov25h,#0h

ret

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

movLEDBuf,#020h

movLEDBuf2,#30h

callInitLED

movLEDBuf1+0,#0ffh;8字循环显示模块程序用到,0ffh为8.的段码

movLEDBuf1+1,#0ffh

movLEDBuf1+2,#0ffh

movLEDBuf1+3,#0ffh

movLEDBuf1+4,#0ffh

movLEDBuf1+5,#0ffh

movr4,#6

MLoop:

callDisplayLED

callTestKey;有键入?

jzMLoop;无键入,继续显示

callGetKey;读入键码

jb0e4h,commkey;如果ACC.4为1,则为命令键,转到commkey处理numkey:

movr0,a;保存数据a

callToKeyTable;键码保存在LEDBuf2(初始值30h指向的单元中mova,r0

anla,#0fh;显示键码

callToLED;查找A的段码并把段码保存在A中

movr0,LEDBuf

mov@r0,a;段码保存在LEDBuf(初始值20h指向的单元中

incLEDBuf

incLEDBuf2

djnzr4,MLoop

movr4,#6

movLEDBuf,#020h

movLEDBuf2,#030h

ljmpMLoop

commkey:

;处理命令键

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

callnextkey

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

nextkey:

acallpickdata

pushdpl

pushdph

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

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

pickdata:

movr0,#031h;将30H、31H单元中的低4位数据赋给DPH

acallpickone

movdph,a

movr0,#033h;将32H、33H单元中的4位数据赋给DPL

acallpickone

movdpl,a

ret

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

pickone:

mova,@r0

anla,#0fh

movr1,a

decr0

mova,@r0

swapa

anla,#0f0h

orla,r1

ret

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

movr0,#4

clra

movr3,#10;循环次数,可自行设置

DisplayLED1:

;轮流显示

movr0,#LEDBuf1

movr1,#6;共6个八段管

movr2,#00100000b;从左边开始显示

Loop1:

movdptr,#OUTBIT

mova,#0

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

mova,@r0

movdptr,#OUTSEG

movx@dptr,a

movdptr,#OUTBIT

mova,r2

movx@dptr,a;显示一位八段管

movr6,#200

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

rra

movr2,a

incr0

djnzr1,Loop1

djnzr3,DisplayLED1

acallInitLED;重新从左边显示

movr4,#6

movLEDBuf,#020h

movLEDBuf2,#030h

ajmpMLoop

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

testPort:

movdptr,#Ctrl_8255

mova,#80h

movx@dptr,a

mova,#55h

movr3,#20;循环次数,可自行设置

testPortA:

movdptr,#PA_8255;PA口

movx@dptr,a

incdptr

movx@dptr,a;PB口

incdptr

movx@dptr,a;PC口

rra

movr6,#200;输出延时,可自行设置延时时间

acallDelay

djnzr3,testPortA

ajmpMLoop

end

附1.3:

Keil的使用步骤参考

1、点击”ProjectÆNewProject……”,新建一个工程文件,在CreatNewProject窗口

中输入工程名。

图1.5新建工程

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

图1.6选择芯片

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

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

4、新建文件,File->New……或直接点击快捷按钮CreataNewFile,然后编写程序。

文件也可以在建立工程之前建立并编写。

图1.8新建程序文件

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

图1.9保存文件

6、把文件添加到建立的工程中,如下图,点击ProjectWorkspace窗口中的SourceGroup1,单击鼠标右键,在弹出的菜单中选择“AddFilesGroup“SourceGroup1””

图1.10添加文件到工程

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

图1.11ADDFilestoGroup窗口

8、按照下图1.12所示选择“OptionforTarget“Target1””。

图1.12选择“OptionforTarget“Target1””

9、单击选择OptionforTarget“Target1”窗口中的Debug。

设置.Use为“WAVEEmulatorDriver”。

图1.13OptionforTarget“Target1”窗口

10、Project->Rebuildalltargetfiles,工程编译链接。

注意:

观察输出窗口,看是否有错误提示,若有错误,需修改程序中的错误,然后再编译链接直至没有错误提示。

输出窗口

11、下载程序到仿真系统,选择Debug->start/stopDebugSession。

12、运行程序Debug->Go或按快捷键F5,若单步运行程序,可选择Debug->Step。

提示:

若需停止程序运行,选择Debug->StopRunning,然后再选择Debug->start/stopDebugSession

实验二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.设计性实验

ADC0809芯片A/D转换结束后会自动产生EOC信号,将EOC与CPU的外部中断相接,在验证实验基础上,用中断方式编程读回A/D结果。

四、实验原理

A/D转换器大致有三类:

一是双积分A/D转换器,优点是精度高,抗干扰性好;价格便宜,但速度慢;二是逐次逼近A/D转换器,精度,速度,价格适中;三是并行A/D转换器,速度快,价格也昂贵。

实验用的ADC0809属第二类,是八位A/D转换器。

每采集一次一般需100us。

本程序是用延时查询方式读入A/D转换结果。

验证程序流程图如图2.4所示。

图2.1ADC0809转换电路

图2.2ADC0809控制信号与单片机连接图2.38255A引脚图图2

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2