搜档网
当前位置:搜档网 › 单片机实验报告(1)

单片机实验报告(1)

单片机实验报告(1)
单片机实验报告(1)

实验报告

实验课程:单片机原理及应用实验

学生姓名:

学号:

专业班级:

指导老师:

2018年 12 月 26 日

实验目录

实验一 I/O 口输入、输出实验 (3)

实验二外部中断实验 (5)

实验三定时/计数器实验 (7)

实验四并行I/O接口8255应用 (9)

实验五简单I/O口扩展实验 (11)

实验六 8255 控制键盘与显示实验 (13)

实验七 D/A转换实验 (17)

实验八并行A/D 转换实验 (21)

实验一 I/O 口输入、输出实验

一、实验目的

掌握单片机P1口、P3口的使用方法。

二、实验内容

以P1 口为输出口,接八位逻辑电平显示,LED 显示跑马灯效果。以P3 口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。

三、实验要求

根据实验内容编写一个程序,并在实验仪上调试和验证

四、实验原理

P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。因为内部上拉电阻阻值是20K~40K,故不会对外部输入产生影响。若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。

本实验需要用到CPU模块(F3区)和八位逻辑电平输出模块(E4区)和八位逻辑电平显示模块(B5区),八位逻辑电平输出电路原理图参见图1-1。八位逻辑电平显示电路原理图参见图1-2。

2

五、实验步骤

1)系统各跳线器处在初始设置状态。用导线连接八位逻辑电平输出模块的K0 到CPU 模块的RXD(P3.0 口);用8 位数据线连接八位逻辑电平显示模块的JD4B 到CPU 模块的JD8(P1 口)。

2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。

3)观察发光二极管显示跑马灯效果,拨动K0 可改变跑马灯的方向。

六、实验程序

DIR BIT P3.0

ORG 0000H

LJMP START

ORG 0100H

START:

Output1:

mov a, #0fEH 只有一个灯对应低电平,即只有一个灯亮

mov r5, #8 对应八个LED灯

loop1:

CLR C

mov C,DIR 判断KO电平

JC Output2

mov P1, a

rl a 跑马灯左移

Acall Delay

djnz r5, loop1

Sjmp Output1 循环开始

Output2:

mov a, #07fH

mov r5, #8

loop2:

CLR C

mov C,DIR

JNC Output1

mov P1, a

rr a 跑马灯右移

Acall Delay

djnz r5,loop2

Sjmp Output2

Delay:

mov r6,#0 延时

DelayLoop1:

mov r7,#0

DelayLoop2:

NOP

NOP

djnz r7,DelayLoop2

djnz r6,DelayLoop1

ret

end

七、实验现象及结果分析

实验现象:LED灯从左往右依次点亮或从右往左依次点亮,循环一次从头开始;拨动开关K0后,LED灯依次点亮的顺序发生改变。

结果分析:

当开关K0未接通时,即P3.0处于高电平,P3.0=1,执行程序OUTPUT2部分,LED灯从左往右依次点亮;当开关K0接通时,即P3.0处于低电平,P3.0=0,执行程序OUTPUT1部分,LED灯从右往左依次点亮。

八、实验心得体会

通过这次实验,我掌握了单片机P1口、P3口的使用方法。了解并熟悉了单片机

I/O口和LED灯的电路结构,对于单片机实验台上的相关器件有了一定了解,深化了课本上对于I/O口功能的理解,P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。

同时初步了解程序设计的基本方法、标准程序设计的步骤以及LED的使用。该实验程序巧妙地利用了左移右移指令来控制LED灯的亮灭以及亮灭的顺序,同时还增加了跳转指令以及调用子程序指令,加深了对单片机汇编指令的掌握和理解,增加了对单片机学习的兴趣。

实验二外部中断实验

一、实验目的

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

二、实验内容

INT0 端接单次脉冲发生器。按一次脉冲产生一次中断,CPU 使P1.0 状态发生一次反转,P1.0接LED 灯,以查看信号反转。

三、实验要求

根据实验内容编写一个程序,并在实验仪上调试和验证。

四、实验原理

1)外部中断的初始化设置共有三项内容:中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断方式设置。中断方式设置一般有两种方式:电平方式和脉冲方式,本实验选用后者,其前一次为高电平后一次为低电平时为有效中断请求。因此高电平状态和低电平状态至少维持一个周期,中断请求信号由引脚INT0(P3.2)和INT1(P3.3)引入。

2)中断服务的关键:

a、保护进入中断时的状态。堆栈有保护断点和保护现场的功能使用PUSH 指令,在转中断服务程序之前把单片机中有关寄存单元的内容保护起来。

b、必须在中断服务程序中设定是否允许中断重入,即设置EX0 位。

c、用POP 指令恢复中断时的现场。

3)中断控制原理:中断控制是提供给用户使用的中断控制手段。实际上就是控制一些寄存器,51 系列用于此目的的控制寄存器有四个:TCON 、IE 、SCON 及IP。

4)中断响应的过程:首先中断采样然后中断查询最后中断响应。采样是中断处理的第一步,对于本实验的脉冲方式的中断请求,若在两个相邻周期采样先高电平后低电平则中断请求有效,IE0 或IE1 置“1”;否则继续为“0”。所谓查询就是由CPU 测试TCON 和SCON 中各标志位的状态以确定有没有中断请求发生以及是那一个中断请求。中断响应就是对中断请求的接受,是在中断查询之后进行的,当查询到有效的中断请求后就响应一次中断。

五、实验步骤

1)系统各跳线器处在初始设置状态,用导线连接单次脉冲模块的输出端到CPU 模块的P32;CPU 模块的P10 接八位逻辑电平显示模块的灯。

2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。

3)连续按动单次脉冲产生电路的按键,发光二极管L0 每按一次状态取反,即隔一次点亮。

六、实验程序

LED BIT P1.0

LEDBuf BIT 20H

org 0

ljmp Start

org 3

Interrupt0:

push PSW ; 保护现场

cpl LEDBuf ; 取反LED

mov c, LEDBuf

mov LED, c

pop PSW ; 恢复现场

reti

Start:

clr LEDBuf

clr LED

mov TCON, #01h ; 外部中断0下降沿触发

mov IE, #81h ; 打开外部中断允许位(EX0)及总中断允许位(EA)

OK: ljmp OK

End

七、实验现象及结论分析

实验现象:按一下按键,LED由灭变亮,再按一下,LED由亮变灭;连续按动按钮,隔一次点亮一次。

结果分析:该实验程序将外部中断0设置成下降沿触发形式,然后打开外部中断允许位及总中断允许位,然后等待中断。当按键往下按了一下以后,高电平变为低电平触发外部中断0,P1.0变为高电平,LED灯熄灭,连续按动按钮,间隔一次亮一次。

八、实验心得

通过外部中断实验学到了如何使用外部中断,要使用外部中断要从两方面进行准备:首先,在硬件上必须将中断信号引到DSP的外部中断引脚上;其次是在软件上的配置对单片机实现中断的处理,外部中断首先要初始化设置,中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断方式的选择可以选择电平方式或者脉冲方式,掌握如何通过产生脉冲来控制单片机的中断处理。

实验三定时/计数器实验

一、实验目的

学习MCS-51 内部计数器的使用和编程方法。

二、实验内容

使用MCS-51 内部定时/计数器,定时一秒钟,CPU 运用定时中断方式,实现每一秒钟输出状态发生一次反转,即发光管每隔一秒钟亮一次。

三、实验要求

根据实验内容编写一个程序,并在实验仪上调试和验证。

四、实验原理

关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。内部计数器在单片机中主要有定时器和计数器两个功能。本实验使用的是定时器,定时为一秒钟。

定时器有关的寄存器有工作方式寄存器TMOD 和控制寄存器TCON。TMOD 用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON 主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。

内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12 个振荡器周期。假设实验系统的晶振是12MHZ,程序工作于方式2,即8 位自动重装方式定时器, 定时器100uS中断一次, 所以定时常数的设置可按以下方法计算:

机器周期=12÷12MHz=1uS

(256-定时常数)×1uS=100uS

定时常数=156。然后对100uS 中断次数计数10000 次,就是1 秒钟。

在本实验的中断处理程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。

五、实验步骤

1)系统各跳线器处在初始设置状态,用导线连接CPU 模块P10 到八位逻辑电平显示模块的L0。

2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。

3)运行程序观察发光二极管隔一秒点亮一次,点亮时间为一秒。六、实验程序

Tick equ 10000 ; 10000 x 100us = 1s T100us equ 156 ; 100us时间常数(6M)

C100us equ 30h ; 100us记数单元

LEDBuf bit 20h

org 0

ljmp Start

org 000bh

T0Int:

push PSW

mov a, C100us+1

jnz Goon

dec C100us

Goon:

dec C100us+1

mov a, C100us

orl a, C100us+1

jnz Exit ; 100us 记数器不为0, 返回

mov C100us, #27H ; #high(Tick)

mov C100us+1, #10H ; #low(Tick)

cpl LEDBuf ; 100us 记数器为0, 重置记数器 ; 取反LED

Exit:

pop PSW

reti

Start:

mov TMOD, #02h ; 方式2, 定时器

mov TH0, #t100us

mov TL0, #t100us

mov IE, #10000010b ; EA=1, IT0 = 1

setb TR0 ; 开始定时

clr LEDBuf

clr P1.0

mov C100us, #27H ;#high(Tick)

mov C100us+1, #10H ;#low(Tick)

Loop:

mov c, LEDBuf

mov P1.0, c

ljmp Loop

end

七、实验现象及结论分析

实验现象:发光二极管隔一秒点亮一次,点亮时间为一秒。

结果分析:实验系统的晶振是12MHZ,机器周期=12÷12MHz=1uS。该实验程序的START部分,设定程序工作于方式2,即8 位自动重装方式定时器, 定时器100uS中断一次, (256-定时常数)×1uS=100uS,定时常数=156 。然后TOLNT部分、GOON部分对100uS 中断次数计数10000 次,就是1 秒钟。

八、实验心得

通过本次实验,对单片机的定时/计数功能有了一定的了解,加上复习巩固课本上的知识,熟悉了定时/计数器的设置、控制和最基本的应用,初步获悉了定时/计数器的内部结构,然后和上一次实验对中断的实验结合起来思考问题,掌握了定时器/计数器的初步使用。定时器和计数器是单片机里比较重要的部分,可以实现很多功能,比如制作周期方波波形、特定时间计时、测量脉冲宽度、实时时钟设计等,对以后的工作生活有很大的帮助。

实验四并行I/O接口8255应用

一、实验目的

了解8255芯片的结构及编程方法。

二、实验内容

用8255的PA口做输入口,PB口做输出口,控制PA口状态从PB 口输出显示。三、实验内容

如实验原理图(见附件中实验三)所示,PA口8位接8个开关K1~K8,PB口8位接8个发光二极管,从PA口读入8位开关量送PB口显示。拨动K1~ K8,PB口上接的8个发光二极管L0~ L7对应显示K1~ K8的状态。编程将PA口设置为方式0输入,PB口设置为方式0输出,其方式控制字应为90H。

7 6 5 4 3 2 1 0

PC3~0:1=输入, 0=输出

PB口: 1=输入,0=输出B组

方式选择:0=方式0,1=方式1

PC7~4:1=输入, 0=输出

PA口:1=输入,0=输出

方式选择:00=方式0 A组

01=方式1

01×=方式2

方式标志:1=有效

图(4-4)8255方式选择控制字

三、

四、 实验程序框图 如图4-5

五、 实验步骤

1、8255 芯片的PA (PA0~PA7)插座用8芯线连接开关JK (K1~K8)。

2、8255 芯片的PB (PB0~PB7)连接发光二极管JL (L0~L7)。

3、8255芯片的片选8255CS 插孔接译码输出Y0。

4、调试、运行程序test3中8255.ASM 。拨动开关,相对应的发光二极管显示其状态。 六、 实验参考程序 org 0000h

ajmp main org 0030h main:mov sp,#60h

mov dptr,#8003h ;控制寄存器地址赋给DPTR

mov a, #90h ;PA 口方式0输入,PB 口、PC 口方式0输出的控制字送A movx @dptr,a ;方式控制字赋给控制寄存器 m: mov dptr,#8000h ;PA 口地址赋给DPTR movx a,@dptr ;从PA 口读入数据赋给A lcall delay

mov dptr,#8001h ;PB 口地址赋给DPTR movx @dptr,a ;要输出的数据赋给A lcall delay ajmp m

delay: mov r6,#00h djnz r6,$ ret end

开 始

8255初始化

置8255PA 口为低电平 读PA 口的值 将PA 口的值送PB 口显示 图(4-5)

七、实验现象及结果分析

实验现象:按下按键KEY0,指示灯LED0亮;按下按键KEY1;指示灯LED1亮;….;按下按键KEY7,指示灯LED7亮。

结果分析:拨动开关,相对应的发光二极管亮表示开关接通,灭表示开关断开。

结果分析:程序首先将PA口方式0输入,PB口、PC口方式0输出的控制字送A,mov dptr,#8000h表示将PA口地址赋给DPTR,movx a,@dptr表示从PA口读入数据赋给A;mov dptr,#8001h表示PB口地址赋给DPTR,movx @dptr,a表示将要输出的数据赋给A。这样通过PA口接8个开关K1~K8,PB口接8个发光二极管,从PA口读入8位开关的状态送PB口显示,拨动K1~K8,PB口上接的8个发光二极管L0~L7对应显示K1~K8的状态。

八、实验心得

通过本次实验了解8255芯片的结构及编程方法,了解了并行I/O口8255的应用,对8255芯片的PA口、PB口、PC口以及它们的工作方式由了一个大致的了解,可通过编程改变其功能,因而使用灵活方便,可作为单片机与多种外围设备连接时的中间接口电路。

实验五简单I/O口扩展实验

一、实验目的

学习在单片机系统中扩展简单I/ O口的基本方法。

二、实验内容

MCS—51外部扩展空间很大,但数据总线口和控制信号的负载能力是有限的,若需要扩展的芯片较多,则MCS—51总线口负载过重,74LS244是一个输入扩展口,同时也是一个单向驱动器,以减轻总线负担。74LS273作为同向输出口,控制8个发光二极管的亮灭。

三、实验程序框图

如图5-1

四、实验步骤

1、74LS244的输入端PI0~PI7接JK(K1~K8),74LS273的输出端PO0~PO7接JL (L0~L7),244CS接Y2,273CS接Y3。

2、调试、运行程序test4中的IO.ASM。

3、拨动K1~K8,观察L0~L7点亮情况。

开始

置端口地址

从74LS244读入开关状态

从74LS273输出开关状态

延时0.1S

图(5-1)

五、实验参考程序

ORG 0000H

AJMP MAIN

ORG 0030H

SCAN: MOV DPTR , #0A000H MOVX A , @DPTR

ANL A , #03H

CJNE A , #00H , D1

LJMP LOOP1

D1: CJNE A , #01H , D2

LJMP LOOP2

D2: CJNE A , #02H , D3

LJMP LOOP3

D3: LJMP LOOP4

LOOP1: MOV DPTR , #0B000H MOV A , #FFH

MOVX @DPTR , A

LCALL DELAY

LJMP SCAN

LOOP2: MOV DPTR , #0B000H MOV A , #F5H

MOVX @DPTR , A

LCALL DELAY

MOV A , #FFH

MOVX @DPTR , A

LCALL DELAY

LJMP SCAN

LOOP3: MOV DPTR , #0B000H MOV A , #FAH

MOVX @DPTR , A

LCALL DELAY

MOV A , #FFH

MOVX @DPTR , A

LCALL DELAY

LJMP SCAN

LOOP4: MOV DPTR , #0B000H MOV A , #F0H

MOVX @DPTR , A

LCALL DELAY

MOV A , #FFH

MOVX @DPTR , A

LCALL DELAY

LJMP SCAN

DELAY:MOV R5,#10

DD1: MOV R6,#10

DD: MOV R7,#248

D1:DJNZ R7,D1

DJNZ R6,DD

DJNZ R5,DD1

RET

END

六、实验现象及结果分析

实验现象:当S0=0,S1=1时,LED0、LED2闪烁;当S0=1,S1=0时,LED1、LED3闪烁;当S0=1,S1=1时,LED0、LED1、LED2、LED3闪烁;当S0=0,S1=0时,LED0、LED1、LED2、LED3全部熄灭。

结果分析:74LS244作为一个输入扩展口,读取按键的信息,重点读取S0、S1开关闭合状态,并将结果分成四种情况。74LS273作为同向输出口,接收74LS传送过来的指令,控制LED0~LED3闪烁和亮灭。

七、实验心得

通过本次实验让我知道了可以利用74LS244(缓冲输入驱动器)和74LS273(8D锁存器)芯片,将P0口扩展成简单输入/输出的电路,分别了解了两个芯片的使用功能和特性,懂得了扩展接口的输入/输出就像从外部RAM读/写数据一样方便,但作为输入口时,一定要有三态输入缓冲功能,否则将影响总线的正常使用。

实验六 8255 控制键盘与显示实验

一、实验目的

1.掌握8255 输入、输出编程方法。

2.掌握阵列键盘和数码管动态扫描显示的控制方法。

二、实验内容

用8255 可编程并行口做一个键盘、显示扫描实验,把按键输入的键值,显示在8255 控制的七段数码管上。8255 PB 口做键盘输入线,PC 口做显示扫描线,PA 口做显示数据线。

三、实验要求

根据实验内容编写一个程序,并在实验仪上调试和验证。

四、实验说明

本实验需要用到 CPU 模块(F3 区)、8255 模块(C6 区)、8279 键盘与显示模块(E7 区)。CS_8255 接8000H,则8255 状态/命令口地址为8003H,PA 口地址为8000H,PB 口地址为8001H、PC 口地址为8002H。8255 键盘与显示电路原理图参见图7-1A、图7-1B。

图7-1A 键盘显示电路1 22

图7-1B 键盘显示电路2

五、实验步骤

1)系统各跳线器处在初始设置状态,S11E 和S12E 红开关全部打到下方(OFF)。

2)用8 位数据线对应连接8255 模块的JD3C(PA 口)、JD4C(PB 口)、JD5C(PC 口)到

8279

模块的JD3E、JD2E、JD4E;用导线连接8255 模块的CS_8255 到地。

3)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。

4)在键盘上按任一单键,观察数码管的显示,数码管低位显示按键值。

六、实验程序

D8255A EQU 8000H ;8255 PA 口地址

D8255B EQU 8001H ;8255 PB 口地址

D8255C EQU 8002H ;8255 PC 口地址

D8255 EQU 8003H ;8255 状态/命令口地址

LEDBUF EQU 50H ;显示缓存

KEYVAL EQU 60H ;读到的键码

ORG 0000H

LJMP START

ORG 0100H

START: MOV SP,#80H

MOV DPTR,#D8255

MOV A,#90H ;方式0,PB,PC口输出,PA口输入

MOVX @DPTR,A

MOV LEDBUF,#10H

MOV LEDBUF+1,#11H

MOV LEDBUF+2,#11H

MOV LEDBUF+3,#11H

MOV LEDBUF+4,#5

MOV LEDBUF+5,#5

MOV LEDBUF+6,#2

MOV LEDBUF+7,#8

KB_DIS: LCALL RD_KB ;读键盘

MOV A,#0FFH

CJNE A,KEYVAL,TOSHOW ;判读到键

SJMP SHOW ;没有则继续读键

TOSHOW: MOV LEDBUF,KEYVAL

SHOW: LCALL DISPLAY

SJMP KB_DIS

RD_KB: ;键盘扫描

MOV A,#02H ;扫描第一行

MOV DPTR,#D8255C

MOVX @DPTR,A

MOV DPTR,#D8255A

MOVX A,@DPTR

MOV R1,#00H

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

MOV A,#01H ;扫描第二行

MOV DPTR,#D8255C

MOVX @DPTR,A

MOV DPTR,#D8255A

MOVX A,@DPTR

MOV R1,#08H

CJNE A,#0FFH,KEYCAL

SJMP NOKEY ;无键按下

KEYCAL: MOV R0,#08H ;计算键码

SHIFT: RRC A

JNC TORET

INC R1

DJNZ R0,SHIFT

SJMP NOKEY ;无键按下

TORET: MOV KEYVAL,R1

RET

NOKEY: MOV KEYVAL,#0FFH ;返回无键标志

RET

Display:MOV R7,#8 ;8个数码管

MOV R5,#0

MOV R0,#LEDBUF

DLOOP: MOV A,R5

RL A

RL A

RL A

ANL A,#11111011B

INC R5

MOV DPTR,#D8255C

MOVX @DPTR,A ;点亮对应的LED

MOV A,@R0

MOV DPTR,#LEDSEG

MOVC A,@A+DPTR

INC R0

MOV DPTR,#D8255B

MOVX @DPTR,A ;显示数据

LCALL Delay DJNZ R7,DLOOP

RET

Delay: PUSH R7

MOV R7,#200

DelayLoop:

NOP

DJNZ R7,DelayLoop

POP R7

RET

LEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH ;0,1,2,3,4,5

DB 7DH,07H,7FH,6FH,77H,7CH ;6,7,8,9,A,B

DB 39H,5EH,79H,71H,00H,40H ;C,D,E,F, ,-

END

七、实验现象及结果分析

实验现象:点击相应按键,数码管显示相应的键号0~F。

结果分析:利用4*4矩阵键盘和一个LED数码管简单构成的按键输入显示系统,实现对键盘的扫描并用LED数码管显示键盘按下键的键号,16个按键的键号分别对应1个16进制数字:0~F。

八、实验心得

通过实验掌握了键盘输入和显示的方法,键盘显示可以用8255来实现,也可以用专门的键盘输入显示芯片来实现,比如单片机专用键盘显示器芯片HD7279。实验中采用8255的方法来实现,让我掌握了8255的使用方法,并且掌握了键盘按键识别的方法。在分析实验的时候我们发现,本实验虽然采用行扫描法,我们还可以采用反转法实现。实验中提到的数码管的动态显示方法和他的编程过程,看起来很复杂,但是仔细读下去发现还是可以大致弄懂的。希望以后实验可以增加一些自主变成的内容,让我们更好地分析实验原理,自己得出结论。

实验七 D/A转换实验

一、实验目的

1、了解D/A转换与单片机的接口方法。

2、了解D/A转换芯片0832的性能及编程方法。

3、了解单片机系统中扩展D/A转换芯片的基本方法。

二、实验内容

利用0832输出一个从-5V开始逐渐升到0V再逐渐升至5V;然后从5V逐渐降至0V,再降至-5V的锯齿波电压。

三、预备知识

1、 DAC0832结构

DAC0832是用先进的CMOS/Si-Cr工艺制成的双列直插式单片8位D/A转换器。它可以直接和8088CPU相接口。它采用二次缓冲方式(有两个写信号/WR1、/WR2),这样可以在输出的同时,采集下一个数字量,以提高转换速度。而更重要的是能够在多个转换器同时工作时,有可能同时输出模拟量。它的主要技术参数如下:分辨率为8 位,电流建立时间1us,单一电源5V-15V直流供电,可双缓冲、单缓冲或直接数据输入。DAC0832 内部结构见图7-1 ,图中 * /LE=“1”,Q输出跟随D输入,/LE=“0”,D端输入数据被锁存。

2、DAC0832引脚功能

*DI0~DI7:数据输入线,TTL电平,有效时间应大于90ns(否则锁存的数据会出错); *ILE:数据锁存允许控制信号输入线,高电平有效;

*/CS:选片信号输入线,低电平有效;

*/WR1:输入锁存器写选通输入线,负脉冲有效(脉宽应大于500ns)。当/CS为“0”、

图7-1 DAC0832内部功能

ILE 为“1”、/WR1为“0”时,DI0~DI7状态被锁存到输入锁存器。 */XFER : 数据传输控制信号输入线,低电平有效;

*/WR2: DAC 寄存器写选通输入线,负脉冲(宽于500ns)有效.当/XFER 为“0”且/WR2有效时,输入锁存器的状态被传送到DAC 寄存器中; *Iout1:电流输出线,当输入为全1时Iout1最大; *Iout2:电流输出线,其值和Iout1值之和为一常数;

*Rfb : 反馈信号输入线,改变Rfb 端外接电容器值可调整转换满量程精度; *Vcc : 电源电压线,Vcc 范围为+5V~+15V ;

*VREF : 基准电压输入线,VREF 范围为-10V~+10V ; *AGND : 模拟地; *DGND : 数字地。

3、DAC0832工作方式

根据对DAC0832的输入锁存器和DAC 寄存器的不同的控制方法,DAC0832 有如下三种工作方式:

(1) 单缓冲方式

此方式适用于只有一路模拟量输出或几路模拟量非同步输出的情形。

方法是控制输入锁存器和DAC 寄存器同时接数,或者只用输入锁存器而把DAC 寄存器接成直通方式。

(2) 双缓冲方式

此方式适用于多个DAC0832同时输出的情形

方法是先分别使这些DAC0832的输入锁存器接数,再控制这些DAC0832同时传递数据到DAC 寄存器以实现多个D/A 转换同步输出。 (3) 直通方式

此方式宜于连续反馈控制线路中。

方法是使所有控制信号(/CS 、/WR1、/WR2、ILE 、XFER)均有效。

4、电流输出转换成电压输出

DAC0832的输出是电流,有两个电流输出端(Iout1和Iout2),它们的和为一常数。使用运算放大器,可以将DAC0832的电流输出线性地转换成电压输出。根据运放和DAC0832的连接方法,运放的电压输出可以分为单极型和双极型两种。图7-2是一种单极型电压输出

CS

D7 Q7 D7 Q7

8 bit 8 bit input DAC reqister reqister

D0 Q0

D0 Q0

8 bit D/A converter

WR1

WR2 ILE 19 1

2

18

17

1 3 14 15 16 4 5

6

7 (MSB) D I 7

D I 0 (LSB) 8 11 12 10

9

3 VERF

I out2

AGND Vcc

DGND

20 LE *

LE *

电路。

图7-3中,DAC0832的Iout2被接地,Iout1接运放LM324的反相输入端,LM324的正相输入端接地。运放的输出电压Vout 之值等于Iout1与Rfb 之积,Vout 的极性与DAC0832的基准电压VREF 极性相反。Vout =-VREF ×(输入数字量的十进制数)〕/256, 如果在单极型输出的线路中再加一个放大器,便构成双极型输出线路。

图7-2 0832单极型电压输出电路 四 、 实验软件编程提示

实验要求在DOUT 端输出方波信号,方波信号的周期由延时时间常数确定。 根据原理图和DOUT1 =-〔VREF ×(输入数字量的十进制数)〕/256,DAOUT=2VREF ×(输入数字量的十进制数)〕/256-5。当数字量的十进制数为256( FFH )时,由于VREF =+5V ,DOUT1= -5V,DAOUT=5V ;当数字量的十进制数为128(80H) 时, 由于VREF = +5V ,DOUT1 = -2.5V ,DAOUT=0V ;当数字量的十进制数为0(00H) 时, 由于VREF = +5V ,DOUT1 = 0V ,DAOUT=-5V 。因此,只要你将上述数字量写入DAC0832端口地址时,模拟电压就从DAOUT 端输出 。 六、实验程序框图

如图7-3

0832

+12V

7

6 5

1 10K

-12V

2 3

12

11 9

4

DOUT1

I out1 I out2 Rfb

Y

N Y

N 开 始 设置数字量初值 数字量初值送0832启动D/A

数字量加1

数字量是否为“FF”?

数字量送0832启动D/A

数字量减1

数字量是否为“0”? 数字量送0832启动D/A 数字量送0832启动D/A 图(7-3)

七、实验步骤

1、把D/A区0832片选CS_0832信号线接至译码输出插孔Y0。

2、调试、运行程序test6中DA0832.ASM。

3、用万用表或示波器测D/A输出端DAOUT,应能测出不断增大/ 减小的电压值。

八、实验参考程序

ORG 0000H

AJMP HA6S

ORG 0030H

HA6S: MOV SP,#53H

HA6S1: MOV R6,#00H

HA6S2: MOV DPTR,#8000H

MOV A,R6

MOVX @DPTR,A

MOV R2,#0BH

LCALL DELAY

INC R6

CJNE R6,#0FFH,HA6S2

HA6S3: MOV DPTR,#8000H

DEC R6

MOV A,R6

MOVX @DPTR,A

MOV R2,#0BH

LCALL DELAY

CJNE R6,#00H,HA6S3

SJMP HA6S1

DELAY: PUSH 02H

DELAY1: PUSH 02H

DELAY2: PUSH 02H

DELAY3: DJNZ R2,DELAY3

POP 02H

DJNZ R2,DELAY2

POP 02H

DJNZ R2,DELAY1

POP 02H

DJNZ R2,DELAY

RET

END

九、实验现象及结果分析

实验现象:示波器显示一个锯齿波。

实验截图:

单片机实验报告

院系:计算机科学学院专业:智能科学与技术年级: 2012 学号:2012213865 姓名:冉靖 指导教师:王文涛 2014年 6月1日

一. 以下是端口的各个寄存器的使用方式: 1.方向寄存器:PxDIR:Bit=1,输出模式;Bit=0,输入模式。 2.输入寄存器:PxIN,Bit=1,输入高电平;Bit=0,输入低电平。 3.输出寄存器:PxOUT,Bit=1,输出高电平;Bit=0,输出低电平。 4.上下拉电阻使能寄存器:PxREN,Bit=1,使能;Bit=0,禁用。 5.功能选择寄存器:PxSEL,Bit=0,选择为I/O端口;Bit=1,选择为外设功能。6.驱动强度寄存器:PxDS,Bit=0,低驱动强度;Bit=1,高驱动强度。 7.中断使能寄存器:PxIE,Bit=1,允许中断;Bit=0,禁止中断。 8.中断触发沿寄存器:PxIES,Bit=1,下降沿置位,Bit=0:上升沿置位。 9.中断标志寄存器:PxIFG,Bit=0:没有中断请求;Bit=1:有中断请求。 二.实验相关电路图: 1 MSP430F6638 P4 口功能框图: 主板上右下角S1~S5按键与MSP430F6638 P4.0~P4.4口连接: 2按键模块原理图: 我们需要设置两个相关的寄存器:P4OUT和P4DIR。其中P4DIR为方向寄存器,P4OUT 为数据输出寄存器。 主板上右下角LED1~LED5指示灯与MSP430F6638 P4.5~P4.7、P5.7、P8.0连接:

3 LED指示灯模块原理图: P4IN和P4OUT分别是输入数据和输出数据寄存器,PDIR为方向寄存器,P4REN 为使能寄存器: #define P4IN (PBIN_H) /* Port 4 Input */ #define P4OUT (PBOUT_H) /* Port 4 Output */ #define P4DIR(PBDIR_H) /* Port 4 Direction */ #define P4REN (PBREN_H) /* Port 4 Resistor Enable */ 三实验分析 1 编程思路: 关闭看门狗定时器后,对P4.0 的输出方式、输出模式和使能方式初始化,然后进行查询判断,最后对P4.0 的电平高低分别作处理来控制LED 灯。 程序流程图: 2 关键代码分析: #include void main(void) { WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 P4DIR |= BIT5; // 设置4.5口为输出模式 P4OUT |= BIT0; // 选中P4.0为输出方式 P4REN |= BIT0; // P4.0使能 while (1) // Test P1.4 { if (P4IN & BIT0) //如果P4.0为1则执行,这是查询方式按下去后是低,否则为高

单片机实验报告

实验报告 专业:计算机科学与技术班级:C093 姓名:孙丽君 学号:098677

实验一:数据传送实验 1.实验内容: 将8031内部RAM 40H—4FH单元置初值A0H—A FH,然后将片内RAM 40H—4FH单元中的数据传送到片内RAM 50H—5FH单元。将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。 2. 源程序清单: ORG 0000H RESET:AJMP MAIN ORG 003FH MAIN:MOV R0,#40H MOV R2,#10H MOV A,#0A0H A1:MOV@R0,A INC R0 INC A DJNZ R2, A1 MOV R1,#40H MOV R0, #50H

MOV R2, #10H A3: MOV A, @R1 MOV @R0, A INC R0 INC R1 DJNZ R2, A3 LJMP 0000H 3.实验结果: 4. CPU 对8031内部RAM存储器有哪些寻址方式? 答:直接寻址,寄存器寻址,寄存器间接寻址,位寻址。

5. 执行程序后下列各单元的内容是什么? 内部RAM 40H~4FH内容:A0~AF 内部RAM 50H~5FH内容:A0~AF 实验二多字节十进制加法实验 1.实验内容: 多字节十进制加法。加数首地址由R0 指出,被加数和结果的存储单元首地址由R1指出,字节数由R2 指出。将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。 2. 源程序清单: ORG0000H RESET: AJMP MAIN ORG0100H MAIN: MOV SP, #60H MOV R0, #31H MOV@R0, #22H DEC R0 MOV@R0, #33H

单片机实验报告

单片机实验报告 班级:信科09-3 姓名:王艳辉 学号:08093581 指导老师:陈岱 完成时间:2012年1月8日

实验一 I/O接口P1、P3口实验 一,实验题目 1,用P1口做输出,接八只发光二极管,编写程序,使发光二极管循环点亮。 2,用P3口做输入口,接八个扭子开关,通过P1口在实验箱上LED 灯上输出,编写程序读取开关状态,将此状态,在发光二极管上显示出来。 二,实验目的 1.熟悉使用CPLD实验箱进行单片机实验的方法。 2.设计出符合实验要求的CPLD硬件电路。 3.学习单片机仿真开发软件Keil 51的使用方法。 4.学习MCS-51汇编语言编程方法。 5.学习Pl口的使用方法。 6.学习延时子程序的编写和使用。 三,实验准备 P1和P3口为准双向口,Pl、P3的每一位都能独立地定义为输出线或输入线,作为输入时,必须向锁存器相应位写入“l”,该位才能作为输入。803l中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写入过“0”,在需要时应写入一个“l”使它再成为一个输入。再来看一下延时程序的实现。现常用的有两种方法:一是用定时器中断来实现,一是用指令循环来实现。在系统时间允许的情况下可以采用后一种方法。根据实验系统的工作主频,计算出延时0.1s的

时间常量,编制延时程序: MOV R7, #200 (1) DEl:MOy R6,#X (2) DE2:DJNZ R6,DE2 (3) DJNZ R7,DEl (4) 上面MOV、DJNZ指令均需两个机器周期,所以每执行一条指令需1÷0.256us现求出X值: (X*1/0.256+1/0.256+l/0.256)*200+l/0.256=0.1*10^6。解出X=l26。代入上式可知实际延时约0.100O04s,近似符合要求。 四,实验步骤 (1)打开MAX+PLUSⅡ CPLD实验开发系统。 (2)点击File菜单Project子菜单之Name项,出现Project Name 对话框。为当前的实验选择恰当的路径并创建项目名称”E:\AT8031”。(3)点击File菜单之New项,出现对话框,为选择输入方式,选择Graphic Editor File。出现图形编辑窗口。 (4)双击空白编辑区,出现Enter Symbol 对话框。 (5)从Symbol Libraries项中选择mf子目录(双击),在prim子目录中选择输入脚input 和输出引脚output。 (6)在图形编辑窗口中的左侧点击连线按钮,并完成对电路的连线。(7)在引脚的PIN_NAME处左键双击使之变黑,键入引脚名称。

实验报告(单片机实验报告)

1 双字节无符号数加法 例1: 双字节无符号数加法(R0 R1)+(R2 R3) → (R4 R5), R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放低字节。已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h) 假设其和不超过16位。请编程。 org 0000h Ljmp start org 0050h start: mov R0,#93h mov R1, #79h mov R2,#25h mov R3, #0a4h mov A,R1 ADD A,R3 mov R5,A mov A,R0 ADDC A,R2 mov R4,A ss: jmp ss end 2双字节无符号数减法

例2: 双字节无符号数相减(R0 R1)-(R2 R3) → (R4 R5)。R0、 R2、R4存放16位数的高字节, R1、 R3、 R5存放低字节,已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h);请编程。同学自己可以设置被减数与减数数值 org 0000h Ljmp start org 0050h start: mov R0,#93h mov R1,#79h mov R2,#25h mov R3,#0a4h mov A,R1 CLR C SUBB A,R3 mov R5,A mov A,R0 SUBB A,R2 mov R4,A ss: jmp ss end 3双字节数乘以单字节数

例3: 利用单字节乘法指令,进行双字节数乘以单字节数运算。若被乘数为16位无符号数, 地址为M1(30H) 和M1+1(31H)(低位先、高位后), 乘数为8位无符号数, 地址为M2(32H), 积由高位到低位存入R2、 R3和R4三个寄存器中。 30H,31H,32H内容 12H,34H,56H ; org 0000h Ljmp start org 0050h start: mov 30h,#12h mov 31h,#34h mov 32h,#56h mov a,(30h) mov b,(32h) mul ab mov R3,b mov R4,a mov a,(31h) mov b,(32h) mul ab add A,R3 mov R3,A

单片机实验报告 计算器

单片机原理及其应用实验报告基于51单片机的简易计算器的设计 班级:12电子1班 姓名:金腾达 学号:1200401123 2015年1月6日

摘要 一个学期的51单片机的课程已经随着期末的到来落下了帷幕。“学以致用”不仅仅是一句口号更应该是践行。本设计秉承精简实用的原则,采用AT89C51单片机为控制核心,4X4矩阵键盘作为输入,LCD1602液晶作为输出组成实现了基于51单片机的简易计算器。计算器操作方式尽量模拟现实计算器的操作方式,带有基本的运算功能和连续运算能力。并提供了良好的显示方式,与传统的计算器相比,它能够实时显示当前运算过程和上一次的结果,更加方便用户记忆使用。本系统制作简单,经测试能达到题目要求。 关键词:简易计算器、单片机、AT89C51、LCD1602、矩阵键盘

目录 一、系统模块设计......................................................................................... 错误!未定义书签。 1.1 单片机最小系统 (1) 1.2 LCD1602液晶显示模块 (1) 1.3 矩阵按键模块 (2) 1.4 串口连接模块 (1) 二、C51程序设计 (2) 2.1 程序功能描述及设计思路 (2) 2.1.1按键服务函数 (2) 2.1.2 LCD驱动函数 (2) 2.1.3 结果显示函数 (2) 2.1.4状态机控制函数 (2) 2.1.5串口服务函数 (2) 2.2 程序流程图 (3) 2.2.1系统总框图 (3) 2.2.2计算器状态机流程转换图 (3) 三、测试方案与测试结果 (4) 3.1测试方案 (4) 3.3 测试结果及分析 (7) 4.3.1测试结果(仿真截图) (7) 4.3.2测试分析与结论 (7) 四、总结心得 (7) 五、思考题 (8) 附录1:整体电路原理图 (9) 附录2:部分程序源代码 (10)

51单片机实验报告94890

《单片机与接口技术》实验报告 信息工程学院 2016年9月

辽东学院信息技术学院 《单片机与接口技术》实验报告 姓名:王瑛 学号: 0913140319 班级: B1403 专业:网络工程 层次:本科 2016年9月

目录 实验题目:实验环境的初识、使用及调试方法(第一章) 实验题目:单片机工程初步实验(第二章) 实验题目:基本指令实验(第三章)4 实验题目:定时器/计数器实验(第五章)4 实验题目:中断实验(第六章)4 实验题目:输入接口实验(第八章)4 实验题目:I/O口扩展实验(第九章)4 实验题目:串行通信实验(第十一章)4 实验题目:A/D,D/A转换实验(第十七章)4

实验题目:实验环境的初识、使用及调试方法实验 实验类型:验证性实验课时: 1 时间:2016年10月24日 一、实验内容和要求 了解单片机的基础知识 了解51单片机的组成和工作方法 掌握项目工程的建立、编辑、编译和下载的过程方法 熟练单片机开发调试工具和方法 二、实验结果及分析 单片机最小系统的构成: Keil集成开发环境:

STC-ISP:

实验题目:单片机工程初步实验 实验类型:验证性实验课时: 1 时间:2016 年10 月24 日一、实验内容和要求 点亮一个LED小灯 程序下载到单片机中 二、实验结果及分析 1、点亮一个LED小灯 点亮LED小灯的程序: #include //包含特殊功能寄存器定义的头文件 sbit LED = P0^0; sbit ADDR0 = P1^0; //sbit必须小写,P必须大写 sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; void main() { ENLED = 0; ADDR3 = 1; ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; LED = 0; //点亮小灯 while (1); //程序停止 } 2、程序下载 首先,我们要把硬件连接好,把板子插到我们的电脑上,打开设备管理器查看所使用的COM 口,如图所示:

单片机实训心得体会

单片机实训心得体会 篇一: 通过今次单片机实训,使我对单片机的认识有了更深刻的理解。系统以51单片机为核心部件,利用汇编软件编程,通过键盘控制和数码管显示实现了基本时钟显示功能、时间调节功能,能实现本设计题目的基本要求和发挥部分。 由于时间有限和本身知识水平的限制,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。例如:不能实现只用两个按键来控制时钟时间,还不能实现闹钟等扩展功能。 踉踉跄跄地忙碌了两周,我的时钟程序终于编译成功。当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。我相信其中的酸甜苦辣最终都会化为甜美的甘泉。 但在这次实训中同时使我对汇编语言有了更深的认识。当我第一次接触汇编语言就感觉很难,特别是今次实训要用到汇编语言,尽管困难重重,可我们还是克服了。这次的实训使培养了我们严肃认真的做事作风,增强了我们之间的团队合作能力,使我们认识到了团队合作精神的重要性。 这次实训的经历也会使我终身受益,我感受到这次实训是要真真正正用心去做的一件事情,是真正的自己学习的过

程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破。希望这次的经历能让我在以后学习中激励我继续进步。 篇二:单片机实验心得 通过这次单片机实习,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。 作为一名自动化专业的快大三学生,我觉得做单片机实习是十分必要的。在已度过的大学时间里,我们大多数接触的是专业课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力,如何把我们所学的专业基础课理论知识运用到实践中去,我想做类似实习就为我们提供了良好的实践平台 学习单片机没有捷径,不能指望两三天就学会,要坚持不懈,重在积累单片机是一门应用性和实践性很强的学科,要多动手,多做实验。 (4)要学会参考别人的程序,减少自己琢磨的时间,迅速提高自己的编程能力。 (5)碰到问题可以借助网络来搜寻答案和对自己有帮助的问题,一定会有所收获。

单片机实验报告一

单片机实验报告 1 姓名 陈奋裕 时间 2014/10/30 地点 机电实验大楼B526 实验题目 软件开发环境和简单程序设计 一、实验目的 1. 熟悉WAVE 软件使用 2. 学习简单程序的调试方法 二、实验主要仪器及环境 PC 机、WA VE 软件、仿真器+仿真头、实验板、电源等。 三、实验内容及步骤 1.启动PC 机,打开WAVE 软件,软件设置为模拟调试状态。在所建的项目文件中输入源程序,进行编译,编译无误后,执行程序,点击全速执行快捷按钮,点击暂停按钮,观察存储块数据变化情况,点击复位按钮,可再次运行程序。 2.打开CPU 窗口,选择单步或跟踪执行方式运行程序,观察CPU 窗口各寄存器的变化,可以看到程序执行的过程,加深对实验的了解。 四、流程图及参考程序 实验1 1)参考程序 2)流程图 ORG 0000H START EQU 30H MOV R0, #START MOV R2, #10 mov a,#01h Loop: MOV @R0,A NOP LJMP $ END

五、实验及程序的分析和讨论 (1)第一个程序是将地址为30H到39H的寄存器的内容全部置1。先在R0中存放内部存储器的起始地址30H,R2中存放内部存储器的长度10个,累加器置1,然后利用循环控制指令DJNZ R2,Loop控制10次循环给上述10个单元赋值1.最后,使单片机自身跳转。 (2)实验得到全速执行后相应的测试结果: (3)实验得到30H到39H寄存器执行后的内容: 从该表中也可以看出该程序的功能,即将30H到39H的寄存器内容置1,说明自己的分析是对的。 六、实验小结 1、汇编语言的结果在软件里面全部都是黑色字体,无法编译,在老师的 提醒下,知道了WAVE软件只能执行ASM文件,所以实验前要先将文件 的类型改为.ASM。 2、程序中的逗号要在英文的状态下面编写;若提示有空余符号,则是分 号后面直接写注释,不要添加空格 七、思考题 1、软件开发环境提供了哪些调试手段?各有何特点? 答: 1.伟福仿真器为我们的调试提供了多种方法,它可以编译,以便查 找语法错误; 2.单步执行,来检查每句程序的功能; 3.全速执行程序,来检查整段程序要完成的功能; 4.还可以设置断点进行调试,以便分段执行程序。 2、如何将存储器块的内容移动到另一位置? 答:借助指针和寄存器,利用转移类指令即可将存储器块的内容移动到 另一位置。

51单片机实验报告

51单片机实验报告

实验一 点亮流水灯 实验现象 Led灯交替亮,间隔大约10ms。实验代码 #include void Delay10ms(unsigned int c); void main() { while(1) { P0 = 0x00; Delay10ms(50); P0 = 0xff; Delay10ms(50); } }

void Delay10ms(unsigned int c) { unsigned char a, b; for (;c>0;c--) { for (b=38;b>0;b--) { for (a=130;a>0;a--); } } } 实验原理 While(1)表示一直循环。 循环体首先将P0的所有位都置于零,然后延时约50*10=500ms,接着P0位全置于1,于是LED全亮了。接着循环,直至关掉电源。延迟函数是通过多个for循环实现的。 实验2 流水灯(不运用库函数) 实验现象 起初led只有最右面的那一个不亮,半秒之后从右数第二个led

也不亮了,直到最后一个也熄灭,然后led除最后一个都亮,接着上述过程 #include #include void Delay10ms(unsigned int c); main() { unsigned char LED; LED = 0xfe; while (1) { P0 = LED; Delay10ms(50); LED = LED << 1; if (P0 == 0x00) { LED = 0xfe; } } } void Delay10ms(unsigned int c)

工作报告之大学单片机实验报告

大学单片机实验报告 【篇一:单片机实验报告】 单片机实验报告 姓名:班级:学号:任课教师:上课地点: 实验一流水灯实验 一、实验目的及要求 1、闪烁的led; 2、从左到右的流水灯; 3、8只led左右来回点亮; 4、led模拟交通灯。 要求1:led按设定的时间间隔闪烁 要求2:接在p0口的8个led从左到右循环依次点亮,产生走马灯效果要求3:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果; 二、实验原理电路图1、 电路图2、 三、源程序 要求1: #includereg51.h #define uchar unsigned char #define uint unsigned int sbit led=p1^0; //延时 void delayms(uint x) { uchar i; while(x--) {for(i=0;i120;i++); } } //主程序 void main() { while(1) {led=~led;delayms(150); } } 要求2: #include reg51.h #include intrins.h //包含程序中的_cror_(p0,y) #define uchar unsigned char #define uint unsigned int uchar led; void delay(unsigned int i) { uint j; uchar k; for(j=i;j0;j-- )for(k=125;k0;k--); } void main() { led=0x7f;//只亮第一个 delay(1000); while(1) { p0=led; delay(500); led=_cror_(led,1);//p0逐步右移一位。} } 要求3: #include reg51.h

单片机实验报告

南京晓庄学院电子工程学院 实验报告 课程名称:单片机系统设计与应用 姓名:森 专业:电子信息科学与技术 年级:14级 学号:05 2016年12 月1 日

实验项目列表 序号实验项目名称成绩指导教师 1 单片机仿真软件的使用 2 单片机I/O接口应用实验——流水灯 3 外部中断实验——工业顺序控制模拟 4 定时/计数器实验——矩形波 5 定时/计数器实验——计数器 6 综合实验 7 8 9 10 注: 1、实验箱端口为com6。 2、芯片选择切换到51 3、停止运行使用实验箱上的复位按钮

实验室号:___ 实验时间:成绩: 实验一仿真软件的使用 1.实验目的和要求 1)熟悉Keil C51软件界面,以及编辑、编译、运行程序的步骤; 2)掌握单片机仿真软件使用和调试的方法。 2.实验原理 Keil C51软件使用 在Keil C51集成开发环境下,建立一个工程并编辑源程序,熟悉Keil C51集成开发环境下各种菜单、命令的使用。 3.主要仪器设备(实验用的软硬件环境) 安装有Keil C51软件的PC机1台 4.操作方法与实验步骤 Keil C51软件使用 (1)建立用户文件夹 (2)建立工程 (3)建立文件并编码。输入以下源程序,并保存在项目所在的目录中 (4)把文件加入工程中 (5)编译工程。编译时观察在界面下方的“Build”页中的到编译错误信息和使用的系统资源情况等。 (6)调试。利用常用调试命令,如复位、运行、暂停、单步、单步跳过、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮等命令进行调试,观察并分析调试结果。 (7)目标代码文件的生成。运行生成相应的.HEX文件。 5.实验内容及程序 1)从DATA区地址起始地址为40H的连续10个内存单元的内容传送到XDATA区起始地址为2000H的10个内存单元中。 注意:DATA区地址起始地址为40H的连续10个内存单元必须先赋初值。 P83-5源程序 #include #define uchar unsigned char xdata unsigned char buffer1[10]_at_ 0x2000; //在xdata区定义数组变量BUF1,首地址为2000H data unsigned char buffer2[10]_at_ 0x40; //在data区定义数组变量BUF2,首地址为40H void main(void)

单片机原理及应用实验报告

单片机原理实验报告 专业:计算机科学与技术 学号: :

实验1 计数显示器 【实验目的】 熟悉Proteus仿真软件,掌握单片机原理图的绘图方法 【实验容】 (1)熟悉Proteus仿真软件,了解软件的结构组成与功能 (2)学习ISIS模块的使用方法,学会设置图纸、选元件、画导线、修改属性等基本操作 (3)学会可执行文件加载及程序仿真运行方法 (4)理解Proteus在单片机开发中的作用,完成单片机电路原理图的绘制【实验步骤】 (1)观察Proteus软件的菜单、工具栏、对话框等基本结构 (2)在Proteus中绘制电路原理图,按照表A.1将元件添加到编辑环境中(3)在Proteus中加载程序,观察仿真结果,检测电路图绘制的正确性 表A.1

Switches&Relays BUT BUTTON 【实验原理图】 【实验源程序】 #include sbit P3_7=P3^7; unsigned char x1=0;x2=0 ; unsigned char count=0; unsigned char idata buf[10]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay(int time) { int k,j;

for(;time<0;time--) for(k=200;k>0;k--) for(j=500;j<0;j--); } void init() { P0=buf[x1]; delay(10); P2=buf[x2]; delay(10); } void main() { init(); while(1) { x1=count/10; x2=count%10; P0=buf[x1]; delay(10);

单片机实验报告

实 验 报 告 实验课程:单片机原理及应用 班级: 12自动化2班 学号: 姓名: 教师:张玲 成绩: 实验日期:年月日 实验名称:实验1——计数显示器 一、实验目的: 学习Proteus 软件的使用,掌握单片机原理图的绘图方法。 二、实验内容: 1、绘制“计数显示器”电路原理图; 2、利用提供的hex文件验证此电路的运行效果。 三、实验要求: 提交的实验报告中应包括:1、绘图方法简述,要求说明元件与电源的选取、摆放及属性编辑,总线与标签的画法等内容;2、电路原理图; 3、仿真运行效果展示,要求就仿真文件加载方法及3~4幅运行截图进行简要说明;4、实验小结,说明遇到的主要问题或实验

1体会等。 参考电路原理图如下: 元件类别电路符号元件名称 Microproces sor ICs “U1”80C51 Miscellaneo us “X1”/12MHz CRYSTAL Capacitors“C1”~“C2” /1nF CAP Capacitors“C3”/22μF CAP-ELEC Resistors Packs “RP1”/7-100ΩRESPACK-7 Resistors“R1”/100ΩRES Optoelectro nics “LED1”~ “LED2” 7SEG-COM-CAT-G RN Switches & Relays “BUT”BUTTON 1、编程思路及C51源程序:

2、电路原理图: 3、仿真运行效果展示:

4、实验小结: 熟悉Proteus软件,了解软件的结构组成与功能;学习ISIS模块的使用方法, 学会设置图纸、选元件、线画总线、修改属性等基本操作;学会可执行文件 加载及程序仿法;理解Proteus在单片机开发中的作用,完成单片机电路原 理图的绘制。

哈尔滨工业大学单片机实验报告

H a r b i n I n s t i t u t e o f T e c h n o l o g y 单片机原理与应用 实验报告 学生姓名: 学号: 班级: 通信工程 专业: 任课教师: 所在单位: 电子与信息工程学院 月5年2013. 软件实验 在软件实验部分,通过实验程序的调试,使学生熟悉MCS-51的指令系统,了解程序设计过程,掌握汇编语言设计方法以及如何使用实验系统提供的调试手段来排除程序错误。 实验一清零程序 一、实验目的 掌握汇编语言设计和调试方法,熟悉键盘操作。 二、实验内容 把2000~20FFh的内容清零。 三、程序框图

四、实验过程 1、LED环境 ⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。 ⑵在“P.”状态下键入0640,然后按“STEP”或“EXEC”进入实验项目的调试与运行。. 2、PC环境 在与PC联机状态下,编译、连接、下载PH51\se01.asm,用连续或单步方式运行程序。 3、运行结果检查 ⑴在单步运行时,每走一步可观察其运行结果。 ⑵在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键观察与检查2000~20FFH 中执行程序前后的内容变化。 五、实验结果及分析 实验前截图: 实验后截图:

: 实验源程序ORG 0640H SE01: MOV R0,#00H DPTR MOV DPTR,#2000H ;(2000H送(DPTR 送LOO1: MOVX @DPTR,A ;0INC DPTR ;DPTR+1 1 INC R0 ;字节数加个字节再清FF不到CJNE R0,#00H,LOO1 ; SJMP $ END 实验问题:2000H~20FFh中的内容是什么? 解答:实验运行之前,2000H~20FFh中的内容是随机分配的;在执行完清零程序之后, 2000H~20FFh中的内容都变为0. 实验二拆字程序 一、实验目的 掌握汇编语言设计和调试方法。 二、实验内容 把2000h的内容拆开,高位送2001h低位,低位送2002h低位,2001h、2002h高位清零,一般本程序用于把数据送显示缓冲区时用。 三、程序流程

51单片机实验报告

实验一数据传送实验 实验内容: 将8031内部RAM 40H—4FH单元置初值A0H—AFH,然后将片内RAM 40H—4FH单元中的数据传送到片内RAM 50H—5FH单元。将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。 源程序清单: ORG 0000H RESET:AJMP MAIN ORG 003FH MAIN:MOV R0,#40H MOV R2,#10H MOV A,#0A0H A1:MOV @R0,A INC R0 INC A DJNZ R2, A1 MOV R1,#40H MOV R0, #50H MOV R2, #10H A3: MOV A, @R1 MOV @R0, A INC R0 INC R1 DJNZ R2, A3 LJMP 0000H 思考题: 1. 按照实验内容补全程序。 2. CPU 对8031内部RAM存储器有哪些寻址方式? 直接寻址,立即寻址,寄存器寻址,寄存器间接寻址。 3. 执行程序后下列各单元的内容是什么? 内部RAM 40H~4FH ___0A0H~0AFH______________________ 内部RAM 50H~5FH___0A0H~0AFH_______________________ 实验二多字节十进制加法实验

实验内容: 多字节十进制加法。加数首地址由R0 指出,被加数和结果的存储单元首地址由R1指出,字节数由R2 指出。将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。源程序清单:ORG 0000H RESET: AJMP MAIN ORG 0100H MAIN: MOV SP, #60H MOV R0, #31H MOV @R0, #22H DEC R0 MOV @R0, #33H MOV R1, #21H MOV @R1, #44H DEC R1 MOV @R1, #55H MOV R2, #02H ACALL DACN HERE: AJMP HERE DACN: CLR C DAL: MOV A, @R0 ADDC A, @R1 DA A MOV @R1, A INC R0 INC R1 DJNZ R2,DAL CLR A MOV ACC.0 , C RET 思考题: 1. 按照实验内容补全程序。 2. 加数单元、被加数单元和结果单元的地址和内容为? 3130H,2120H,6688H 3. 如何检查双字节相加的最高位溢出? 看psw.3 的溢出标志位ov=1 则溢出 4. 改变加数和被加数,测试程序的执行结果。 实验三数据排序实验

单片机串行通信实验报告(实验要求、原理、仿真图及例程)

《嵌入式系统原理与实验》实验指导 实验三调度器设计基础 一、实验目的和要求 1.熟练使用Keil C51 IDE集成开发环境,熟练使用Proteus软件。 2.掌握Keil与Proteus的联调技巧。 3.掌握串行通信在单片机系统中的使用。 4.掌握调度器设计的基础知识:函数指针。 二、实验设备 1.PC机一套 2.Keil C51开发系统一套 3.Proteus 仿真系统一套 三、实验内容 1.甲机通过串口控制乙机LED闪烁 (1)要求 a.甲单片机的K1按键可通过串口分别控制乙单片机的LED1闪烁,LED2闪烁,LED1和LED2同时 闪烁,关闭所有的LED。 b.两片8051的串口都工作在模式1,甲机对乙机完成以下4项控制。 i.甲机发送“A”,控制乙机LED1闪烁。 ii.甲机发送“B”,控制乙机LED2闪烁。 iii.甲机发送“C”,控制乙机LED1,LED2闪烁。 iv.甲机发送“C”,控制乙机LED1,LED2停止闪烁。 c.甲机负责发送和停止控制命令,乙机负责接收控制命令并完成控制LED的动作。两机的程序要 分别编写。 d.两个单片机都工作在串口模式1下,程序要先进行初始化,具体步骤如下: i.设置串口模式(SCON) ii.设置定时器1的工作模式(TMOD) iii.计算定时器1的初值 iv.启动定时器 v.如果串口工作在中断方式,还必须设置IE和ES,并编写中断服务程序。

(2)电路原理图 Figure 1 甲机通过串口控制乙机LED闪烁的原理图 (3)程序设计提示 a.模式1下波特率由定时器控制,波特率计算公式参考: b.可以不用使用中断方式,使用查询方式实现发送与接收,通过查询TI和RI标志位完成。 2.单片机与PC串口通讯及函数指针的使用 (1)要求: a.编写用单片机求取整数平方的函数。 b.单片机把计算结果向PC机发送字符串。 c.PC机接收计算结果并显示出来。 d.可以调用Keil C51 中的printf来实现字符串的发送。 e.单片机的数码港显示发送的次数,每9次清零。

单片机实验报告

本科生实验报告 实验课程单片机原理及应用 学院名称核技术与自动化工程学院 专业名称电气工程及其自动化 学生姓名 学生学号 指导教师任家富 实验地点6C902 实验成绩 二〇一五年三月二〇一五年六月 单片机最小系统设计及应用 摘要 目前,单片机以其高可靠性,在工业控制系统、数据采集系统、智能化仪器仪表等领域得到极其广泛的应用。因此对于在校的大学生熟练的掌握和使用单片机是具有深远的意义。通过本次课程设计掌握单片机硬件和软件方面的知识,更深入的了解单片机的实际应用,本次设计课程采用STC89C52单片机和ADC0804,LED显示,键盘,RS232等设计一个单片机开发板系统。进行了LED显示程序设计,键盘程序设计,RS232通信程序设计等。实现了单片机的各个程序的各个功能。对仿真软件keil的应用提升了一个新的高度。单片机体积小、成本低、使用方便,所以被广

泛地应用于仪器仪表、现场数据的采集和控制。通过本实验的学习,可以让学生掌握单片机原理、接口技术及自动控制技术,并能设计一些小型的、综合性的控制系统,以达到真正对单片机应用的理解。 关键词:单片机;智能;最小系统;ADC;RS232;显示;STC89C52 第1章概述 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。单片机采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。 它最早是被用在工业控制领域,由于单片机在工业控制领域的广泛应用,单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。 现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。 第2章实验内容 2.1单片机集成开发环境应用

单片机实验报告(学期全部实验)

单片机程序设计 实 验 报 告 姓名: 学号: 专业班级:

第二节课: 实验一:1357,2468位置的灯交替闪烁 一实验要求 1357,2468位置的灯交替闪烁。 二硬件连接图与结果 三原理简述 程序直接控制LED各位置的灯亮灭,时间间隔简单的用了一个延时的语句。四程序 #include main () { int i; P0=0XAA; //1357四个灯亮 for (i=0;i<=25000;i++); //延时程序 P0=0X55; //2468四个灯亮 for (i=0;i<=25000;i++); //延时程序 }

五所遇问题与解决方式 程序比较简单,没有遇到问题。 实验二:流水灯 一实验要求 流水灯,一个接一个的灯亮,亮到最后一个后,全部的灯亮,然后重头开始。二硬件连接图与结果 三原理简述 程序定义第一个位置的灯亮,通过一个时间间隔,运用一个循环移位程序转

移到下一个灯,移位7次后全部的灯亮,最后定义整个循环。时间间隔简单的用了一个延时的语句。 因为移位时是直接补0,发送低电平不亮,所以直接移位达到要求。 四程序 //流水灯 #include main () { int i,j; while(1) { P0=0X01; //第1个灯亮 for (i=0;i<=30000;i++); //延时程序 for(j=0;j<=7;j++) //移位循环程序 { P0=P0<<1; //移位 for (i=0;i<=30000;i++); //延时程序 } P0=0xff; //全亮 for (i=0;i<=30000;i++); //延时程序 } }

单片机实验报告

哈尔滨师范大学计算机科学与信息工程学院 实验报告手册 课程名称:嵌入式系统原理与应用指导教师:王洪侠 专业:计算机科学与技术20 18 年—20 19 年第 1 学期姓名:吴晗学号:2016040860 年级:2016级班级: 2 班

实验报告内容 实验题目:P1口输出实验 实验目的:通过实验了解P1口做为输入输出方式使用时,CPU对P1口的操作方式 实验要求:控制8个LED灯,完成从左到右然后从右到左再从左到右依次的循序流水实验器材:计算机和普中科技STC89C52单片机电路板 实验步骤/程序流程分析: 1.单片机由P2口控制流水灯 2.根据题目要求实现每点亮一盏灯就熄灭前一盏 3.套用循环实现从左到右的动态流水式亮灯 4.完成从左到右再从右到左再从左刀右流水亮灯 程序源代码: #include "reg52.h" #include typedef unsigned int u16; typedef unsigned char u8; #define led P2 void delay(u16 i) { while(i--); } void main() { u8 i; led=0xfe; delay(50000); // while(1) { /* for(i=0;i<8;i++) { P2=~(0x01<

单片机实验报告(1)培训课件.doc

实验二、中断实验――中断优先级控制及中断保护 一、实验目的 1、掌握单片机中断机制。 2、熟悉中断的应用和编程。 二、实验设备 1、仿真器; 2、单片机最小系统; 3、发光二极管阵列显示模块; 4、独立式键盘模块。 三、实验要求 连接单片机最小系统和发光二极管阵列的电路并编写程序,学习单片机中断机制,及中断优先级和中断保护的方法: 使用独立式按键 1 连接INT 0(P3.2),按键 2 连接INT 1(P3.3),在平时状态下,发 光二极管行以200ms 的时间间隔,依次点亮。 1 键按下时INT 0中断处理程序点亮P0.0 对 应的发光管 2 秒钟,其他发光管熄灭; 2 键按下时P0.1 对应发光管点亮 2 秒,其他发光管熄灭。 四、实验原理 通常一个微处理器读取外围设备(如键盘等)的输入信息的方法有轮询(Polling) 及中断(Interrupt) 两种。轮询的方法是CPU 依照某种既定法则,依序询问每一外围设备I/O 是否需要服务,此种方法CPU 需花费一些时间来做询问服务,当I/O 设备增加时,询问服务时间也相对增加,势必浪费许多CPU 时间,降低整体运行的效率。使用中断是一个较好的解 决方法。使用中断使系统对外部设备的请求响应更加灵敏,并且不需要占用CPU 的时间进行轮询。但是,当使用中断,特别是有多个中断嵌套时要特别注意内存单元的保护。 180C51中断结构 当中断发生后,程序将跳至对应中断入口地址去执行中断子程序,或称中断服务程序(Interrupt Service Routine) ,这些特殊的地址称为中断向量,例如当80C51 外部中断INTl 发生时,会暂停主程序的执行,跳至地址0013H 去执行中断服务程序,直到RETI 指令后,才返回主程序继续执行。MCS-51 系列的程序内存中有7 个矢量地址,叙述如下: (1)00H 复位 当第9 脚RESET 为高电平,CPU 会跳至地址00H 处开始执行程序,亦即程序一定要从

相关主题