单片机实验报告信科091班.docx

上传人:b****4 文档编号:24526677 上传时间:2023-05-28 格式:DOCX 页数:24 大小:455.95KB
下载 相关 举报
单片机实验报告信科091班.docx_第1页
第1页 / 共24页
单片机实验报告信科091班.docx_第2页
第2页 / 共24页
单片机实验报告信科091班.docx_第3页
第3页 / 共24页
单片机实验报告信科091班.docx_第4页
第4页 / 共24页
单片机实验报告信科091班.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

单片机实验报告信科091班.docx

《单片机实验报告信科091班.docx》由会员分享,可在线阅读,更多相关《单片机实验报告信科091班.docx(24页珍藏版)》请在冰豆网上搜索。

单片机实验报告信科091班.docx

单片机实验报告信科091班

<<单片机原理及应用>>

 

姓名:

实验时间:

2012.1

 

实验一I/O接口P1、P2口实验

一、实验题目

1.用P1口做输出,接八只发光二极管,编写程序,使发光二极管循环点亮。

2.用P2口做输入口,接八个扭子开关,通过P1口在实验箱上LED灯上输出,编写程序读取开关状态,将此状态,在发光二极管上显示出来。

二、实验目的

1.熟悉使用CPLD实验箱进行单片机实验的方法。

2.设计出符合实验要求的CPLD硬件电路。

3.学习单1片机仿真开发软件Keil51的使用方法。

4.学习MCS-51汇编语言编程方法。

5.学习Pl口的使用方法。

6.学习延时子程序的编写和使用。

三、有关说明

P2口为准双向口,Pl的每一位都能独立地定义为输出线或输入线,作为输入的口线,必须向锁存器相应位写入“l”,该位才能作为输入。

803l中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写入过“0”,在需要时应写入一个“l”使它再成为一个输入。

可以用第二个实验做一下试验。

先按要求做好程序并调试成功后,可将P1口锁存器中置“0”,此时将P1作输入口,会有什么结果。

再来看一下延时程序的实现。

现常用的有两种方法:

一是用定时器中断来实现,一是用指令循环来实现。

在系统时间允许的情况下可以采用后一种方法。

根据实验系统的工作主频,计算出延时0.1s的时间常量,编制延时程序:

MOVR7,#X

(1)

DEl:

MOVR6,#Y

(2)

DE2:

DJNZR6,DE2(3)

DJNZR7,DEl(4)

上面MOV、DJNZ指令均需两个机器周期,所以每执行一条指令需的时间求出X和Y值。

指令(3)

(2)(4)

(1)

所需时间需时问需时间需时间

四、连线方法

执行程序1时:

P1.0-P1.7接发光二极管Ll—L8。

执行程序2时:

P1.0-P1.7接扭子开关K1—K8;P2口通过CPLD接发光二极管Ll—L8;

单片机扩展槽及外扩槽

在主板上留有一个模拟单片机扩展槽,用于CPLD模拟单片机之用,其与CPLD的接口分别为,P0.0—P0.7(39—32),对应与P44,P45,P46,P47,P53,P54,P55,P56;P1.0—P1.7(1—8),对应与P57,P58,P60,P61,P62,P63,P64,P65;P2.0—P2.7(21—28),对应与P75,P74,P73,P71,P70,P69,P68,P67;P3.0—P3.7(10—17),对应与P83,P85,P86,P87,P88,P89,P90,P92;PSEN脚对应于P194,ALE脚对应与P79;RST脚对应于P18

其中16个数据开关与CPLD的管脚的连接情况依次为:

SW1-P94,SW2-P95,SW3-P96,SW4-P97,SW5-P99,SW6-P100,SW7-P101,SW8-P102,SW9-P103,SW10-P104,SW11-P111,SW12-P112,SW13-P113,SW14-P114,SW15-P115,SW16-P116。

同时与数据开关和CPLD相应引脚相连的还有16个LED显示管,可以作为输出使用。

在作为输出时,不论数据开关和脉冲开关为高电平还是低电平,均不影响其状态。

五、程序框图

六,程序清单

(一)程序一T01_1.ASM

ST_ADDREQU4000H

ORGST_ADDR

LJMPSTART

ORGST_ADDR+200H

START:

MOVA,#01H;高电平对应的发光二级管灭,

;先让第一个发光二级管高。

LOOP:

MOVP1,A;从P1口输出到发光二级管

MOVR1,#10;延时1秒

DEL1:

MOVR2,#200

DEL2:

MOVR3,#126

DEL3:

DJNZR3,DEL3

DJNZR2,DEL2

DJNZR1,DEL1

RLA;左移一位,下一个发光二级管亮

LJMPLOOP;循环

END

(二)程序二T01_2.ASM

ST_ADDREQU4000H

PORTEQU1B08H

ORGST_ADDR

LJMPS1

ORGST_ADDR+200H

S1:

MOVP1,#0FFH

START:

MOVA,P1;从P1口读入开关状态

MOVDPTR,#PORT

MOVX@DPTR,A;从74LS273输出到发光二级管显示

LJMPSTART;循环

END

七,实验步骤

1,用MAX+plusII软件打开CPLD文件下以.gdf结尾的文件,按照实验要求定义输入输出接口,然后编译,编译成功后,再选择引脚分配,进入视图编辑画面后,按照先前定义的输入输出接口,将单片机的引脚接到CPLD上。

2,打开CPLD2003软件,先进行串口设置及器件,串口测试通过以后,选择上一步生成的.sof文件,将其下载到CPLD中并显示正确的结果

3,打开keil软件,创建相关工程,输入汇编程序,并编译成功。

接下来进入联

机仿真阶段。

4,步骤一:

生成Project和Compile用户程序。

如何生成一个PROJECT和编辑用户程序,请参考uVision的详细资料。

选择一个SSTMCU(如SST89C54,SST89C58,SST89x554RC,SST89x564RD)做目标器件。

 

步骤二:

配置

从KEIL用户界面选择“OptionsforTarget“Target1””,

在“OptionsforTargettarget1”窗口Debug栏中,选择“UseKeilMonitor-51Driver”,注意当每次RESET目标板时用户的代码区会被擦除,如果用户程序需要在开始时下装到目标板,要勾上“LoadApplicationatStartup”。

点击Setting项,弹出TargetSetup窗口进行配置,选择目标板与PC通讯的串行接口

(COM1-COM4)和波特率,如果需要显示存储器的实时窗口,不要选择CacheOptions。

注意如果选择了SerialInterrupt去StopPorgramExecution,SoftICE将修改在位置c:

0023h的中断向量3个BYTE,请确保用户程序没有占用这些地址。

以上的设定可以在程序调试过程再次修改。

步骤三:

开始调试

从DEBUG菜单点击Start/StopDebugSession开始调试过程。

八、实验小结

基本掌握了CPLD试验箱进行单片机实验的方法,可以设计简单的CPLD实验电路,基本掌握了Keil、汇编语言编程及P1口的使用方法。

 

实验二简单I/0口扩展实验1

(行列式键盘扫描程序设计和LED动态显示程序实验)

一、实验题目

1、以一个单片机的8位口,连接实验箱的4X4阵列式键盘,编制键盘扫描程序和散转程

序,实现键盘扫描并散转。

2、利用两个8位的I/O接口,设计一个6位的动态7段LED显示器。

二、实验目的

1.学习在单片机系统中扩展简单I/0接口的方法。

2.学习键盘扫描程序、散转程序的设计方法。

3.学习动态显示扫描程序的编写方法。

三、实验说明

要完成本实验,首先必须了解键盘扫描程序和散转程序的设计方法以及LED动态显示程序的设计方法。

并通过外围电路来显示相关状态,验证程序执行的正确性。

四、接线方法

74LS273(U4)的输出,011-018接发光二级管L1-L8,CS2端接I/0译码的08-0F,另一片74LS273(U5)的021-024接发光二级管L9-L12,CS3端接I/0译码的10-17端。

此时U4的I/0地址为1B08H,U5为1B10H。

五、程序清单T03.ASM

ST_ADDREQU4000H

ORGST_ADDR

LJMPSTART

ORGST_ADDR+200H

START:

MOVP2,*1BH

MOVR0,#08H;1B08H,1B10H分别为两片74LS273;的端口地址

MOVR1,#10H

MOVA,#24H;四个红灯亮,四个黄灯、绿灯灭

MOVX@R0,A

MOVA,#09H

MOVX@R1,A

ACALLDE6s;延时6秒

LLL:

MOVA,#0CH;东、西路口绿灯亮,南、北路口红灯亮

MOVX@R0,A

MOVA,#03H

MOVX@R1,A

ACALLDE12s;延时12秒

MOVA,#04H;东、西路口绿灯灭,南、北路口红灯亮

MOVX@R0,A

MOVA,#01H

MOVX@R1,A

MOVR2,#08H;R2用于计闪烁次数八次

TTT:

MOVA,#14H;东、西路口黄灯亮,南、北路口红灯亮

MOVX@R0,A

MOVA,#05H

MOVX@R1,A

ACALLDE02s;延时0.2秒

MOVA,#04H;东、西路口黄灯灭,南、北路口红灯亮

MOVX@R0,A

MOVA,#01H

MOVX@R1,A

ACALLDE02s

DJNZR2,TTT;返回TTT,使东、西路口黄灯闪烁八次

MOVA,#24H;四个红灯全亮,四个黄灯、绿灯全都灭

MOVX@R0,A

MOVA,#09H

MOVX@R1,A

ACALLDE02s;延时0.2秒

MOVA,#61H;东、西路口红灯亮,南、北路口绿灯亮

MOVX@R0,A

MOVA,#08H

MOVX@R1,A

ACALLDE12s;延时12秒

MOVA,@20H;东、西路口红灯亮,南、北路口绿灯灭

MOVX@R0,A

MOVA,#08H

MOVX@R1,A

MOVR2,#08H;置计数值为8

GGG:

MOVA,#0A2H;东、南路口红灯亮,南、北路口黄灯灭

MOVX@R0,A

ACALLDE02s;延时0.2秒

MOVA,#20H;东、西路口红灯亮,南、北路口黄灯灭

MOVX@R0,A

ACALLDE02s

DJNZR2,GGG;返回GGG,使南、北路口黄灯闪烁八次

MOVA,@24H;绿灯、黄灯全灭,红灯全亮

MOVX@R0,A

MOVA,#09H

MOVX@R1,A

ACALLDE02s;延时0.2秒

JMPLLL;转LLL循环

DE12s:

MOVR5,@120;延时0.1

LJMPDE1

DE6s:

MOVR5,#60

LJMPDE1

DE02s:

MOVR5,#02H

DE1:

MOVR6,#200

DE2:

MOVR7,3126

DE3:

DJNZR7,DE3

DJNZR6,DE2

DJNZR5,DE1

RET

END

六、实验步骤

1、用MAX+plusII软件打开CPLD文件下以.gdf结尾的文件,按照实验要求定义输入输出接口,然后编译,编译成功后,再选择引脚分配,进入视图编辑画面后,按照先前定义的输入输出接口,将单片机的引脚接到CPLD上。

2、打开CPLD2003软件,先进行串口设置及器件,串口测试通过以后,选择上一步生成的.sof文件,将其下载到CPLD中并显示正确的结果

3、打开keil软件,创建相关工程,输入汇编程序,并编译成功。

接下来进入联

机仿真阶段。

4、步骤一:

生成Project和Compile用户程序。

如何生成一个PROJECT和编辑用户程序,请参考uVision的详细资料。

选择一个SSTMCU(如SST89C54,SST89C58,SST89x554RC,SST89x564RD)做目标器件。

 

步骤二:

配置

从KEIL用户界面选择“OptionsforTarget“Target1””,

在“OptionsforTargettarget1”窗口Debug栏中,选择“UseKeilMonitor-51Driver”,注意当每次RESET目标板时用户的代码区会被擦除,如果用户程序需要在开始时下装到目标板,要勾上“LoadApplicationatStartup”。

点击Setting项,弹出TargetSetup窗口进行配置,选择目标板与PC通讯的串行接口

(COM1-COM4)和波特率,如果需要显示存储器的实时窗口,不要选择CacheOptions。

注意如果选择了SerialInterrupt去StopPorgramExecution,SoftICE将修改在位置c:

0023h的中断向量3个BYTE,请确保用户程序没有占用这些地址。

以上的设定可以在程序调试过程再次修改。

步骤三:

开始调试

从DEBUG菜单点击Start/StopDebugSession开始调试过程。

七、实验小结

基本掌握了扩展简单I/0接口的方法、键盘扫描程序及散转程序的设计方法及动态显示扫描程序的编写方法。

 

实验三简单I/0口扩展实验2

(双字节无符号整数算术运算程序设计)

一、实验题目

设计简单的双字节无符号整数的加、减、乘、除运算程序。

借助实验二的结果,制作一个简单的具有加减乘除运算的计算器。

二、实验目的

1.学习键盘扫描程序、散转程序的设计方法。

2.学习动态显示扫描程序的编写方法。

3.学习双字节无符号整数运算程序的设计方法。

三、实验说明

要完成本实验,首先必须了解键盘扫描程序和散转程序的设计方法以及LED动态显示程序的设计方法,了解汇编语言的双字节无符号算术运算程序的设计方法,学会程序的组织方法。

并通过外围电路的合理设计,验证设计的正确性。

四、连线方法

1、74LS244(U6)的11-18接开关的K1-K8,CS4端接18-1F。

2、74LS273(U4)的011-018接发光二级管L1-L8,CS2端接08-0F。

五、程序清单T04.ASM

ST_ADDREQU4000H

ORGST_ADDR

LJMPSTAR

ORGST_ADDR+200H

STAR:

MOVP2,#1BH

MOVR0,#18H;1B18H为74LS244口地址

MOVR1,#)8H;1B08H为74LS273口地址

LOOP:

MOVXA,@R0;通过74LS244输入开关状态

MOVX@R1,A;通过74LS273把开关状态输出到;发光二级管显示

MOVR7,#10H;延时

DEL0:

MOVR6,#0FFH

DEL1:

DJNZR6,DEL1

DJNZR7,DEL0

LJMPLOPP;循环

END

六、实验步骤

1、用MAX+plusII软件打开CPLD文件下以.gdf结尾的文件,按照实验要求定义输入输出接口,然后编译,编译成功后,再选择引脚分配,进入视图编辑画面后,按照先前定义的输入输出接口,将单片机的引脚接到CPLD上。

2、打开CPLD2003软件,先进行串口设置及器件,串口测试通过以后,选择上一步生成的.sof文件,将其下载到CPLD中并显示正确的结果

3、打开keil软件,创建相关工程,输入汇编程序,并编译成功。

接下来进入联

机仿真阶段。

4、步骤一:

生成Project和Compile用户程序。

如何生成一个PROJECT和编辑用户程序,请参考uVision的详细资料。

选择一个SSTMCU(如SST89C54,SST89C58,SST89x554RC,SST89x564RD)做目标器件。

 

步骤二:

配置

从KEIL用户界面选择“OptionsforTarget“Target1””,

在“OptionsforTargettarget1”窗口Debug栏中,选择“UseKeilMonitor-51Driver”,注意当每次RESET目标板时用户的代码区会被擦除,如果用户程序需要在开始时下装到目标板,要勾上“LoadApplicationatStartup”。

点击Setting项,弹出TargetSetup窗口进行配置,选择目标板与PC通讯的串行接口

(COM1-COM4)和波特率,如果需要显示存储器的实时窗口,不要选择CacheOptions。

注意如果选择了SerialInterrupt去StopPorgramExecution,SoftICE将修改在位置c:

0023h的中断向量3个BYTE,请确保用户程序没有占用这些地址。

以上的设定可以在程序调试过程再次修改。

步骤三:

开始调试

从DEBUG菜单点击Start/StopDebugSession开始调试过程。

7、实验小结

加深了扩展简单I/0接口的方法、键盘扫描程序及散转程序的设计方法及动态显示扫描程序的编写方法。

 

实验四定时器实验

(外部中断及定时器中断实验)

一、实验题目

设计简单的一分钟定时器。

要求:

由单片机的外部中断0端连接一个按键,作为本定时器的启动按钮,按钮工作于中断方式。

由外部中断0的中断处理程序启动定时器0和定时器1(系统时钟以22MHz计算)。

定时器0工作于定时器的扫描方式,用于产生1ms的定时和定时器1的计数脉冲(由P3.4输出);定时器1工作于计数器的中断方式(计数脉冲由P3.5输入),用于产生1分钟的定时。

在实验箱上表示出定时工作开始和定时时间到达即可。

二、实验目的

1.学习外部中断程序的设计方法。

2.学习定时器中断程序的编写方法。

3.学习定时器程序的设计方法。

三、实验说明

要完成本实验,首先必须了解外部中断、定时器/计数器的初始化、定时器/计数器中断程序的设计方法,学会程序的组织方法。

并通过外围电路的合理设计,验证设计的正确性。

四、实验原理

1.定时常数的确定

定时器/计数器的输入脉冲周期与机器周期一样,为振荡器频率的1/2。

本实验中时钟频率为6.1441,tHZ,现要采用中断方法来实现1秒延时,要在定时器l中设置一个时间常数,使其每隔0.1s产生一次中断,CPU响应中断后将RO中计数值减一,令(R0)=0AH,即可实现ls延时。

时间常数可按下法确定:

机器周期=12÷晶振频率=l2÷6.144*l06=l.953l*l0-6s

需设初值为X,则(216-X)*1.953l*l0-6=0.l

216=X=51200X=65536-51200=14336

化为十六进制:

X=3800H,故初始值为THl=38H,TLl=00H

2、初始化程序

包括定时器初始化和中断系统初始化,主要是对1P、1E、TCON、TMOD的相应位进行正确的设置,并将时问常数送入定时器中。

由于只有定时器中断,IP便不必设置。

注意一点,定时器l初始化耐建议用下述指令:

ANLTHOD,#OFH

0RLTMOD,#l0H

而不要用如下指令:

MOVTMOD,#10H

否则定时器0被屏蔽,可能会影响串行口波特率,使程序不能执行。

3、设计中断服务程序和主程序

中断服务程序除了要完成计数减一工作外,还要将时间常数重新送入定时器中,为下一次中断做准备。

主程序则用来控制发光二极管按要求顺序亮灭。

五、实验电路及连线

P1.0-P1.7分别接发光二级管L1-L8即可。

六、程序清单T06.ASM

ST_ADDREQU4000H

ORGST_ADDR

LJMPSTART

ORGST_ADDR+1BH;定时器/计数器1中断程序入口地址

JMPIT11

ORGST_ADDR+200H

START:

MOVA,#05H;第一秒时L1、L2亮,故A中置05H

MOVR1,#02;02是偏移量,即从基址寄存器到表首距离

MOVR0,#0AH;OA是计数值

MOVTMOD,#0FH;计数器置为方式1

MOVTMOD,#10H

MOVTL1,#00H;装入时间常数

MOVTH1,#38H

ORL1E,#88H;CPU中断开放标志位和定时器1溢

出中断允许位均置位

SETBTR1;开始计数

LOOP1:

CJNER0,300,DISP

MOVR0,#0AH;R0计数计完一个周期,重置初值

INCR1;表地址偏移量加1

CJNER1,#0AH,LOOP2

MOVR1,#02;如到表尾后一单元,则重置偏移量初值,

重新开始一个周期

LOOP2:

MOVA,R1;从表中显示码入累加器

MOVCA,@A+PC

LJMPDISP

DB05H

DB0AH

DB50H

DBOAOH

DB55H

DB0AAH

DB0FFH

DB00H

DISP:

MOVP1,A;累加器中显示码从P1口送往发光二级管显示

JMPLOOP1

IT11:

CLRTR1;停止计数

DECR0;计数值减一

MOVTL1,#00H;重置时间常数初值

MOVTH1,#38H

SETBTR1;开始计数

RET1;中断返回

END

七,实验步骤

1、用MAX+plusII软件打开CPLD文件下以.gdf结尾的文件,按照实验要求定义输入输出接口,然后编译,编译成功后,再选择引脚分配,进入视图编辑画面后,按照先前定义的输入输出接口,将单片机的引脚接到CPLD上。

2、打开CPLD2003软件,先进行串口设置及器件,串口测试通过以后,选择上一步生成的.sof文件,将其下载到CPLD中并显示正确的结果

3、打开keil软件,创建相关工程,输入汇编程序,并编译成功。

接下来进入联

机仿真阶段。

4、步骤一:

生成Project和Compile用户程序。

如何生成一个PROJECT和编辑用户程序,请参考uVision的详细资料。

选择一个SSTMCU(如SST89C54,SST89C58,SST89x554RC,SST89x564RD)做目标器件。

步骤二:

配置

从KEIL用户界面选择“OptionsforTarget“Target1””,

在“OptionsforTargettarget1”窗口Debug栏中,选择“UseKeilMonitor-51Driver”,注意当每次RESET目标板时用户的代码区会被擦除,如果用户程序需要在开始时下装到目标板,要勾上“LoadApplicationatStartup”。

点击Setting项,弹出TargetSetup窗口进行配置,选择目标板与PC通讯的串行接口

(COM1-COM4)和波特率,如果需要显示存储器的实时窗口,不要选择CacheOptions。

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

当前位置:首页 > 经管营销 > 公共行政管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1