单片机实验报告
姓名: 王 文 龙 学院: 机 电 工 程 院 班级: 机 械 1102 班 学号: 0806110402 日期: 2014.10.30
实验一 定时器实验
一、实验目的
1.学习89C51内部计数器的使用和编程方法 2.进一步掌握中断处理程序的编写方法 二、实验说明
关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。内部计数器在单片机中主要有定时器和计数器两个功能。本实验使用的是定时器,定时为一秒钟。CPU运用定时中断方式,实现每一秒钟输出状态发生一次反转,即发光管每隔一秒钟亮一次。
定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。
内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振荡器周期。因为实验系统的晶振是12MHZ,本程序工作于方式2,即8位自动重装方式定时器, 定时器100uS中断一次, 所以定时常数的设置可按以下方法计算:
机器周期=12÷12MHz=1uS (256-定时常数)×1uS=100uS
定时常数=156。然后对100uS中断次数计数10000次,就是1秒钟。
在本实验的中断处理程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。 三、实验内容及步骤
本实验需要用到单片机最小应用系统模块(F1区)和十六位逻辑电平显示模块(I4区)。 1.使用单片机最小应用系统模块,用导线将P1.0接到十六位逻辑电平显示的任意一只发光二极管上。
2.用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,插上仿真器电源插头(USB线)。
3.打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加“TH10_定时器.ASM”源程序,编译无误后。
4.全速运行程序,发光二极管隔一秒点亮一次,点亮时间为一秒。
5.也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中运行。(ISP烧录器的使用查看附录二)
四、实验框图以及源程序
1.流程图 2.源程序
Tick equ 5000 ; 10000 x 100us = 1s
主程序框图
定时中断子程序框图
中断允许 输出状态位 状态位取反 设置秒计数值 设置初始状态位 是否到一秒 是 重新设置秒计数值 设置定时常数 秒计数值减1 否 置T1中断工作方式 保护现场 开始 定时中断入恢复现场 等待中断 中断返回 T100us equ 20 ; 100us时间常数(6M) C100us equ 5h ; 100us记数单元 LEDBuf BIT 00H LED BIT P1.0 org 0000H ljmp Start
org 000BH LJMP T0Int ORG 0100H 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, #HIGH(TICK);#high(Tick) mov C100us+1, #LOW(TICK);#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, #high(Tick) mov C100us+1, #low(Tick) Loop:
mov c, LEDBuf mov P1.0, c ljmp Loop
end
五、电路图
XTAL1A11.0592MHzR2F100RESETVCCLED1510VCCP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7123456789P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.71011121314151617181920U1FP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RSTP3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RDXTAL2XTAL1VSS89C51VCCP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7EAALE/PROGPSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0VCC4039P0.038P0.137P0.236P0.335P0.434P0.533P0.632P0.73130292827262524232221EAALEPSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0C3F10uFR1F1KC3A22pFC2A22pF
实验二 串行静态显示实验
一、实验目的
1.掌握数字、字符转换成显示段码的软件译码方法 2.静态显示的原理和相关程序的编写 二、实验电路
显示器由8个共阴极LED数码管组成。输入只有两个信号,它们是串行数据线DIN和移位信号CLK。8个串/并移位寄存器芯片74LS164首尾相连。每片的并行输出作为LED数码管的段码。
74LS164的引脚图如图所示;
74LS164为8位串入并出移位寄存器,1、2为 串行输入端,QA~QH为并行输出端,CLK为移位时钟脉冲,上升沿移入一位;CLR为清零端,低电平时并行三、实验内容及步骤
单片机的P3.0作数据串行输出,P3.1作移位脉冲输出。要用到单片机最小应用系统(F1区)和串行静态显示模块(I3 1.使用单片机最小应用系统模块,用导线将连接P3.0P3.1(TXD)连接到串行静态显示模块的DIN、CLK端。
2.用串行数据通信线连接计算机与仿真器,把仿真头插单片机锁紧插座中,打开模块电源,插上仿真器电源插头
3.打开Keil uVision2仿真软件,首先建立本实验的项着添加 “TH31_8位串行静态显示.ASM”源程序,编译无误
9812CLRCLKABQAQBQCQDQEQFQGQHVCC14345610111213输出为零。 本实验需区)。 (RXD)、到模块的(USB线)。 目文件,接后,全速运
7GND74LS164行程序。8LED显示“89C52”。程序停止运行时,显示不变,说明静态显示模块具有数据锁存功能。
4.可把源程序编译成可执行文件,烧录到89S51/89S52芯片中。(ISP烧录见附录二) 四、实验参考程序
DBUF0 EQU 30H
TEMP EQU 40H
DIN BIT P3.0 CLK BIT P3.1 ORG 0000H LJMP START ORG 0100H
START : MOV 30H,#10h MOV 31H,#10H MOV 32H,#10h MOV 33H,#8 MOV 34H,#9 MOV 35H,#0cH MOV 36H,#5 MOV 37H,#2
DISP:MOV R0, #DBUF0 MOV R1, #TEMP MOV R2, #8
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库单片机实验报告在线全文阅读。
相关推荐: