单片机实验.docx

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

单片机实验.docx

《单片机实验.docx》由会员分享,可在线阅读,更多相关《单片机实验.docx(27页珍藏版)》请在冰点文库上搜索。

单片机实验.docx

单片机实验

第二部分硬件实验

实验一扩展存储器读写实验

一.实验要求

编制简单程序,对实验板上提供的外部存贮器(62256)进行读写操作。

二.实验目的

1.学习片外存储器扩展方法。

2.学习数据存储器不同的读写方法。

三.实验电路及连线

将P1.0接至L1。

CS256连GND孔。

四.实验说明

1.单片机系统中,对片外存贮器的读写操作是最基本的操作。

用户藉此来熟悉MCS51单片机编程的基本规则、基本指令的使用和使用本仿真实验系统调试程序的方法。

   用户编程可以参考示例程序和流程框图。

本示例程序中对片外存贮器中一固定地址单元进行读写操作,并比较读写结果是否一致。

不一致则说明读写操作不可靠或该存储器单元不可靠,程序转入出错处理代码段(本示例程序通过熄灭一个发光二极管来表示出错)。

读写数据的选用,本例采用的是55(0101,0101)与AA(1010,1010)。

一般采用这两个数据的读写操作就可查出数据总线的短路、断路等,在实际调试用户电路时非常有效。

   用户调试该程序时,可以灵活使用单步、断点和变量观察等方法,来观察程序执行的流程和各中间变量的值。

2.在I状态下执行MEM1程序,对实验机数据进行读写,若L1灯亮说明RAM读写正常。

3.也可进入LCA51的调试工具菜单中的对话窗口,用监控命令方式读写RAM,在I状态执行SX0000↓55,SPACE,屏幕上应显示55,再键入AA,SPACE,屏幕上也应显示AA,以上过程执行效果与编程执行效果完全相同。

注:

SX是实验机对外部数据空间读写命令。

4.本例中,62256片选接地时,存储器空间为0000~7FFFH。

五.实验程序框图

六.实验程序:

ORG0000H

LJMPSTART

ORG0040H

START:

MOVSP,#60H

MOVDPTR,#0000H;置外部RAM读写地址

MOVA,#55H;测试的数据一

MOVB,A

MOVX@DPTR,A;写外部RAM

MOVXA,@DPTR;读外部RAM

XRLA,B;比较读回的数据

JNZERROR

MOVA,#0AAH;测试的数据二

MOVB,A

MOVX@DPTR,A

MOVXA,@DPTR

XRLA,B

JZPASS;测试通过

ERROR:

SETBP1.0;测试失败,点亮LED

SJMP$

PASS:

CPLP1.0;LED状态(亮/灭)转换

MOVR1,#00H;延时

DELAY:

MOVR2,#00H

DJNZR2,$

DJNZR1,DELAY

LJMPSTART;循环测试

END

实验五外部中断实验(急救车与交通灯)

一.实验要求

在实验四内容的基础上增加允许急救车优先通过的要求。

有急救车到达时,两向交通信号为全红,以便让急救车通过。

假定急救车通过路口时间为10秒,急救车通过后,交通灯恢复中断前状态。

本实验以按键为中断申请,表示有急救车通过。

二.实验目的

1.学习外部中断技术的基本使用方法。

2.学习中断处理程序的编程方法。

三.实验电路及连线

PO0-PO3接DG1-DG4,PO4-P07接DR1-DR4。

CS273接8300H。

K7接P3.2。

四.实验说明

中断服务程序的关键是:

1.保护进入中断时的状态,并在退出中断之前恢复进入时的状

态。

2.必须在中断程序中设定是否允许中断重入,即设置EX0位。

本例中使用了INT0中断,一般中断程序进入时应保护PSW,ACC以及中断程序使用但非其专用的寄存器。

本例的INT0程序保护了PSW,ACC,2等三个寄存器并且在退出前恢复了这三个寄存器。

另外中断程序中涉及到关键数据的设置时应关中断,即设置时不允许重入。

本例中没有涉及这种情况。

实验开始时K7应在H(高电平)端,要产生中断时先拨向L(低电平)端再拨回H端。

五.实验程序框图

主程序框图

六.实验程序

ORG0000H

LJMPSTART

ORG0003H;INT0中断入口地址

LJMPINT0

ORG0040H

START:

MOVSP,#60H

SETBEX0;INT0中断有效

SETBIT0

SETBEA

LCALLSTATUS0;初始状态(都是红灯)

CIRCLE:

LCALLSTATUS1;南北绿灯,东西红灯

LCALLSTATUS2;南北绿灯闪转黄灯,东西红灯

LCALLSTATUS3;南北红灯,东西绿灯

LCALLSTATUS4;南北红灯,东西绿灯闪转黄灯

LJMPCIRCLE

INT0:

PUSHPSW;保护现场

PUSH2

PUSHACC

MOVDPTR,#8300H

MOVA,#0FH;南北,东西都亮红灯

MOVX@DPTR,A

MOVR2,#100;延时10秒

LCALLDELAY

POPACC;恢复现场

MOVX@DPTR,A

POP2

POPPSW

RETI

STATUS0:

;南北红灯,东西红灯

MOVDPTR,#8300H

MOVA,#0FH

MOVX@DPTR,A

MOVR2,#10;延时1秒

LCALLDELAY

RET

STATUS1:

;南北绿灯,东西红灯

MOVDPTR,#8300H

MOVA,#5AH;南北绿灯,东西红灯

MOVX@DPTR,A

MOVR2,#50;延时5秒

LCALLDELAY

RET

STATUS2:

;南北绿灯闪转黄灯,东西红灯

MOVDPTR,#8300H

MOVR3,#03H;绿灯闪3次

FLASH:

MOVA,#5FH

MOVX@DPTR,A

MOVR2,#03H

LCALLDELAY

MOVA,#5AH

MOVX@DPTR,A

MOVR2,#03H

LCALLDELAY

DJNZR3,FLASH

MOVA,#0AH;南北黄灯,东西红灯

MOVX@DPTR,A

MOVR2,#10;延时1秒

LCALLDELAY

RET

STATUS3:

;南北红灯,东西绿灯

MOVDPTR,#8300H

MOVA,#0A5H

MOVX@DPTR,A

MOVR2,#50;延时5秒

LCALLDELAY

RET

STATUS4:

;南北红灯,东西绿灯闪转黄灯

MOVDPTR,#8300H

MOVR3,#03H;绿灯闪3次

FLASH1:

MOVA,#0AFH

MOVX@DPTR,A

MOVR2,#03H

LCALLDELAY

MOVA,#0A5H

MOVX@DPTR,A

MOVR2,#03H

LCALLDELAY

DJNZR3,FLASH1

MOVA,#05H;南北红灯,东西黄灯

MOVX@DPTR,A

MOVR2,#10;延时1秒

LCALLDELAY

NOP

RET

DELAY:

;延时子程序

PUSH2

PUSH1

PUSH0

DELAY1:

MOV1,#00H

DELAY2:

MOV0,#0B2H

DJNZ0,$

DJNZ1,DELAY2;延时100mS

DJNZ2,DELAY1

POP0

POP1

POP2

RET

END

实验六定时器实验

一.实验要求

由8031内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1溢出中断一次。

P1口的P1.0-P1.7分别接八个发光二极管。

要求编写程序模拟一时序控制装置。

开机后第一秒钟L0,L2亮,第二秒钟L1,L3亮,第三秒钟L4,L6亮,第四秒钟L5,L7亮,第五秒L0,L2,L4,L6亮,第六秒钟L1,L3,L5,L7亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L0,L2亮,然后L1,L3亮......一直循环下去。

二.实验目的

1.学习8031内部计数器的使用和编程方法。

2.进一步掌握中断处理程序的编程方法。

三.实验电路及连线

P1.0--P1.7接L0--L7。

四.实验说明

1.关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。

内部计数器在单片机中主要有定时器和计数器两个功能。

2.内部计数器用作定时器时,是对机器周期计数。

每个机器周期的长度是12个振荡器周期。

因为实验系统的晶振是11.0592MHz,所以定时常数的设置可按以下方法计算:

机器周期=12÷11.0592MHz=1.0857μS

(65536-定时常数)*1.0857μS=50mS

定时常数=4C00H

3.定时器的有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。

TMOD用于设置定时器/计数器的工作方式0~3,并确定用于定时还是用于计数。

TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行

或停止等。

4.在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。

五.实验程序框图

六.实验程序

ORG0000H

AJMPSTART

ORG001BH;T1中断入口地址

AJMPINT_T1

ORG0100H

START:

MOVSP,#60H

MOVTMOD,#10H;置T1为方式1

MOVTL1,#00H;延时50mS的时间常数

MOVTH1,#4BH

MOVR0,#00H

MOVR1,#20

SETBTR1

SETBET1

SETBEA;开中断

SJMP$

INT_T1:

;T1中断服务子程序

PUSHACC;保护现场

PUSHPSW

PUSHDPL

PUSHDPH

CLRTR1;关中断

MOVTL1,#00H;延时50mS常数

MOVTH1,#4BH

SETBTR1;开中断

DJNZR1,EXIT

MOVR1,#20;延时一秒的常数

MOVDPTR,#DATA1;置常数表基址

MOVA,R0;置常数表偏移量

MOVCA,@A+DPTR;读常数表

MOVP1,A;送P1口显示

INCR0

ANL00,#07H

EXIT:

POPDPH;恢复现场

POPDPL

POPPSW

POPACC

RETI

;LED显示常数表

DATA1:

DB0FAH,0F5H,0AFH,05FH,0AAH,55H,00H,0FFH

END

实验八8255扫描键盘、显示实验

一.实验要求

利用8255可编程并行口做一个扫描键盘实验,把按键输入的键码,显示在由8279控制的七段数码管上。

8255PA口做键盘输入线,PB口作扫描线。

二.实验目的

1.掌握8255编程方法。

2.掌握扫描键盘和显示的编程方法。

三.实验电路及连线

 

CS8255接8500H,则命令字地址为8506H,PA口地址为8500H,PB口地址为8502H,PC口地址为8504H。

CS8279已固定接至8700H,则8279的状态口地址为8701H;8279的数据口地址为8700H;

29模块中的十个短路套都套在8255侧。

四.实验说明

在PA口与PB口组成的64点阵列上,把按键接在不同的点上,将得到不同的键码,本实验采用8×2的阵列,共可按16个键。

显示部分由8279控制,由7407驱动8位数码管显示。

五.实验程序框图

`

主程序框图读键显示部分框图

六.实验程序

D8255EQU8506H;8255状态/数据口地址

D8255AEQU8500H;8255PA口地址

D8255BEQU8502H;8255PB口地址

Z8279EQU8701H;8279状态口地址

D8279EQU8700H;8279数据口地址

DISPTREQU08H;当前显示位置

KEYVALEQU09H;读到的键码

ORG0000H

LJMPSTART

ORG0040H

START:

MOVSP,#60H

LCALLDELAY;延时

MOVDISPTR,#30H;显示缓冲区头指针

MOVDPTR,#D8255

MOVA,#90H;置8255状态

;方式0,PB,PC口输出,PA口输入

MOVX@DPTR,A

MOVDPTR,#Z8279;置8279命令字

MOVA,#0D3H

MOVX@DPTR,A;清LED显示

MOVA,#00H

MOVX@DPTR,A

MOVA,#38H

MOVX@DPTR,A

MOVA,#0D1H

KB_DIS:

LCALLRD_KB;读键盘

MOVA,#0FFH

CJNEA,KEYVAL,DISBUF;判读到键

SJMPKB_DIS;没有则继续读键

DISBUF:

LCALLDISP;把键移入显存

LCALLDELAY;延时消抖

LCALLDELAY

SJMPKB_DIS

DISP:

;显存依次前移

MOVR1,#31H;在最后加入新键值

MOVE:

MOVA,@R1

DECR1

MOV@R1,A

INCR1

INCR1

CJNER1,#38H,MOVE

MOV37H,KEYVAL

MOVKEYVAL,#0FFH

MOVDPTR,#Z8279

MOVA,#90H

MOVX@DPTR,A

MOVR0,#08H

MOVR1,#30H

MOVDPTR,#D8279

LP:

MOVA,@R1

MOVX@DPTR,A

INCR1

DJNZR0,LP

RET

RD_KB:

;键盘扫描

MOVA,#02H;扫描第一行

MOVDPTR,#D8255B

MOVX@DPTR,A

MOVDPTR,#D8255A

MOVXA,@DPTR

MOVR1,#00H

CJNEA,#0FFH,KEYCAL;判键是否按下

MOVA,#01H;扫描第二行

MOVDPTR,#D8255B

MOVX@DPTR,A

MOVDPTR,#D8255A

MOVXA,@DPTR

MOVR1,#08H

CJNEA,#0FFH,KEYCAL

SJMPNOKEY;无键按下

KEYCAL:

;计算键码

MOVR0,#08H

SHIFT:

RRCA

JNCCALC

INCR1

DJNZR0,SHIFT

CALC:

;换算显示码

MOVDPTR,#DL_DAT

MOVA,R1

MOVCA,@A+DPTR

MOVKEYVAL,A

RET

NOKEY:

MOVKEYVAL,#0FFH;返回无键标志

RET

DELAY:

MOVR0,#0H;延时子程序

DELAY1:

MOVR1,#0H

DJNZR1,$

DJNZR0,DELAY1

RET

DL_DAT:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;0,1,2,3,4,5,6,7

DB7FH,6FH,77H,7CH,39H,5EH,79H,71H;8,9,A,B,C,D,E,F

END

实验十A/D转换实验

一.实验要求

利用实验板上的ADC0809做A/D转换器,利用实验板上的电位器W1提供模拟量输入。

编制程序,将模拟量转换成二进制数字量,用发光二极管显示。

二.实验目的

1.掌握A/D转换与单片机的接口方法。

2.了解A/D芯片ADC0809转换性能及编程。

3.通过实验了解单片机如何进行数据采集。

三.实验电路及连线

CS0809接8000H。

19模块电位器中心抽头(即0~5v孔)接至ADC0809的IN0(通道0)。

EOC连P3.2(INT0)。

将单片机的P1.0~P1.7接至八位发光二极管L0--L7。

四.实验说明

ADC0809是八位逐次逼近法A/D转换器,每采集一次一般需100us。

中断方式下,A/D转换结束后会自动产生EOC信号,经一级74LS14反相后与8031的INT0相接。

本示例程序采取了中断处理来正确读取A/D转换的结果。

用户也可以用延时来保证A/D转换完成。

读取结果由P1口送至八位发光二极管显示。

五.实验程序框图

主程序框图

六.实验程序

A_DPORTEQU8000H;0809通道0地址

ORG0000H

LJMPSTART

ORG0003H

LJMPINT_0

ORG0040H

START:

MOVSP,#60H

MOVR7,#0FFH;初始化

SETBIT0

SETBEA

SETBEX0;INT0允许

A_D:

MOVDPTR,#A_DPORT

MOVX@DPTR,A;启动A_D

CJNER7,#00H,$;等待A_D转换结束

CPLA

MOVP1,A;数据输出

MOVR7,#0FFH;清读数标志

SJMPA_D

INT_0:

MOVXA,@DPTR;读A_D数据

MOVR7,#00H;置读数标志

RETI

END

实验十三串并转换实验

一.实验要求

利用8031串行口,和并行输出串行移位寄存器74LS164,扩展一位数码显示在数码显示器上循环显示0-9这10个数字。

二.实验目的

1.掌握8031串行口方式0工作方式及编程方法。

2.掌握利用串行口扩展I/O通道的方法。

三.实验电路及连线

RXD接DATAIN,TXD接DCLK。

四.实验说明

  串行口工作在方式0时,可通过外接移位寄存器实现串并行转换。

在这种方式下,数据为8位,只能从RXD端输入输出,TXD端总是输出移位同步时钟信号,其波特率固定为晶振频率1/12。

由软件置位串行控制寄存器(SCON)的REN后才能启动串行接收,在CPU将数据写入SBUF寄存器后,立即启动发送。

待8位数据输完后,硬件将SCON寄存器的TI位置1,TI必须由软件清零。

五.实验程序框图

六.实验程序:

TIMEREQU01H

ORG0000H

AJMPSTART

ORG000BH;T0中断程序入口地址

AJMPINT_T0

ORG0040H

START:

MOVSP,#60H

MOVTMOD,#01H;T0方式1

MOVTL0,#00H;延时50mS的常数

MOVTH0,#4BH

MOVR0,#0H

MOVTIMER,#20

MOVSCON,#00H;置串口工作方式0

CLRTI

CLRRI

SETBTR0;开中断

SETBET0

SETBEA

SJMP$

INT_T0:

;T0中断子程序

PUSHACC;保护现场

PUSHPSW

CLREA;关中断

CLRTR0

MOVTL0,#00H;延时50mS的常数

MOVTH0,#4BH

SETBTR0

DJNZTIMER,EXIT

MOVTIMER,#20;延时一秒的常数

MOVDPTR,#DATA1;置表格基址

MOVA,R0;置表格偏移量

MOVCA,@A+DPTR;读表格数据

CLRTI

MOVSBUF,A;串行发送数据

INCR0

CJNER0,#0AH,EXIT;判断是否到表尾

MOVR0,#00H;调整表格偏移量

EXIT:

SETBEA;开中断

POPPSW

POPACC;恢复现场

RETI

;数码管显示常数表

DATA1:

DB03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H

;0123456789

END

 

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

当前位置:首页 > 人文社科 > 文化宗教

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

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