"初学者单片机实验详解:闪烁灯实验详解,值得学习!延时程序设计方法揭秘!"
需积分: 0 67 浏览量
更新于2024-04-16
收藏 618KB DOC 举报
R4
START: MOV R7, #50
LOOP1: MOV R5, #255
LOOP2: DJNZ R5, LOOP2
DJNZ R7, LOOP1
DJNZ R6, START
RET
在这段程序中,通过嵌套的循环来实现延时程序,使LED灯在不停地闪烁,达到实验的要求。
(2). 闪烁灯程序代码编写
通过上面的延时程序,我们可以编写出完整的闪烁灯程序代码:
ORG 0000H
MOV P1, #00H ;初始化 P1 端口为低电平
LOOP: MOV P1, #FFH ;点亮发光二极管
CALL DELAY ;调用延时程序
MOV P1, #00H ;熄灭发光二极管
CALL DELAY ;调用延时程序
SJMP LOOP ;循环
DELAY: MOV R7, #50
D1: MOV R6, #255
D2: DJNZ R6, D2
DJNZ R7, D1
RET
通过这段代码,我们可以实现LED灯的不停闪烁,从而完成闪烁灯的实验任务。
2. 数码管的显示
数码管是一种常用的数字显示元件,能够显示0-9的数字。在单片机实验中,我们可以通过控制数码管的发光二极管,来显示指定的数字。接下来我们将介绍数码管的显示实验。
实验任务
如图 4.2.1所示:通过按键开关 S4、S5 分别增加和减小一个 4 位的二进制数的值,并在数码管上显示相应的十进制数。
电路原理图
图 4.2.1
系统板上硬件连线
将“8 位按键”区域中的 S4 和 S5 两个按键与 P3.2、P3.3 两个端口相连接,同时将四位数码管和光栅管分别与 P0 和 P2 两组端口相连接。
程序设计内容
(1). 按键扫描程序设计
在实现按键功能之前,我们需要设计一个按键扫描程序,用来检测按键是否被按下。下面是一个简单的按键扫描程序设计:
ORG 0000H
MOV P3, #0FH ;设置 P3.0-P3.3 为输入端口
MOV R0, #00H
MOV R1, #00H
LOOP: MOV A, P3 ;将 P3 的输入状态移动到累加器
ANL A, #0FH ;只保留低四位
CJNE A, #0FH, ADD ;判断是否有按键按下
SJMP LOOP
ADD: MOV R2, #00H
INC R0
CJNE R0, #09H, NEXT ;判断是否递增到 9
MOV R0, #00H
NEXT: MOV R3, #00H
MOV A, #00H
MOV A, R0
SWAP A
MOV R4, A
MOV P0, R4 ;设置数码管显示的值
CALL DELAY ;调用延时程序
SJMP LOOP
DELAY: MOV R7, #50
D1: MOV R6, #255
D2: DJNZ R6, D2
DJNZ R7, D1
RET
在这段按键扫描程序中,我们通过循环检测 P3.0-P3.3 端口的输入状态,判断是否有按键被按下,并根据按键的情况来递增或递减一个二进制数,并将其转换为显示在数码管上的十进制数。
(2). 数码管显示程序代码编写
通过上面的按键扫描程序,我们可以编写出完整的数码管显示程序代码:
ORG 0000H
MOV A, #00H
MOV R4, A
MOV P0, R4 ;数码管显示初始值为 0
L1: CALL SCAN ;调用按键扫描程序
SJMP L1
SCAN: MOV P3, #0FH ;设置 P3.0-P3.3 为输入端口
MOV R0, #00H
MOV R1, #00H
LOOP: MOV A, P3 ;将 P3 的输入状态移动到累加器
ANL A, #0FH ;只保留低四位
CJNE A, #0FH, ADD ;判断是否有按键按下
SJMP LOOP
ADD: MOV R2, #00H
INC R0
CJNE R0, #09H, NEXT ;判断是否递增到 9
MOV R0, #00H
NEXT: MOV R3, #00H
MOV A, #00H
MOV A, R0
SWAP A
MOV R4, A
MOV P0, R4 ;数码管显示的值
CALL DELAY ;调用延时程序
RET
通过这段代码,我们可以实现通过按键控制数码管显示的功能,实现了数码管的显示实验。
综上所述,通过对闪烁灯和数码管的实验讲解,我们可以看到单片机实验对于初学者来说具有很好的学习意义和实践价值。通过实际操作和程序设计,初学者可以深入理解单片机的工作原理和编程方法,为今后的学习和应用打下坚实的基础。希望初学者能够认真学习和实践,不断提高自己的单片机技能,实现更多有趣的实验和项目。
2022-12-20 上传
2010-11-19 上传
2011-11-08 上传
2013-12-10 上传
点击了解资源详情
点击了解资源详情
mayan212001
- 粉丝: 1
- 资源: 7
最新资源
- MATLAB新功能:Multi-frame ViewRGB制作彩色图阴影
- XKCD Substitutions 3-crx插件:创新的网页文字替换工具
- Python实现8位等离子效果开源项目plasma.py解读
- 维护商店移动应用:基于PhoneGap的移动API应用
- Laravel-Admin的Redis Manager扩展使用教程
- Jekyll代理主题使用指南及文件结构解析
- cPanel中PHP多版本插件的安装与配置指南
- 深入探讨React和Typescript在Alias kopio游戏中的应用
- node.js OSC服务器实现:Gibber消息转换技术解析
- 体验最新升级版的mdbootstrap pro 6.1.0组件库
- 超市盘点过机系统实现与delphi应用
- Boogle: 探索 Python 编程的 Boggle 仿制品
- C++实现的Physics2D简易2D物理模拟
- 傅里叶级数在分数阶微分积分计算中的应用与实现
- Windows Phone与PhoneGap应用隔离存储文件访问方法
- iso8601-interval-recurrence:掌握ISO8601日期范围与重复间隔检查