实验报告内容:
一、设计功能描述,指明基本要求及提高要求的实现内容;
二、实验材料清单(包括:软件工具名称、仪器设备名称、元器件等);
三、实验实施过程描述,要点包括:
(1)设计功能描述;(2)描述原理图设计思路,并画出电路图;(3)描述程序设计思路,并画出程序流程图;(4)写出源程序及其必要注释;(5)片内RAM的地址及I/O端口分配表;(6)子程序列表(名称、功能描述、出入口);(7)调试结果描述;(8)出现问题及其解决办法。
学习情境1
一 实验目的:点亮LED灯
二 实验任务:从P1.0到P1.7依次点亮八个LED灯
三 实验材料及器件
四 设计功能描述
利用单片机的P1口,依次循环点亮1个灯,使人们感觉到亮灯的位置在依次顺序移动,可产生一种动态显示的效果。
四 实验原理图
五 程序设计思路及程序流程图
要依次点亮八盏灯,根据点亮的位置及从哪一个开始点亮,向P1口传递如下数据
11111110(FEH)——点亮P1.0连接的LED, MOV P1,#0FEH
11111101(FDH)——点亮P1.1连接的LED, MOV P1,#0FDH
……….
01111111(7FH)——点亮P1.7连接的LED, MOV P1,#07FH
分析如上数据可以发现,他们它们后面穿送的数据依次是前面数据左移一位的结果,因此我们可以利用循环程序来实现这个功能,程序流程图如下所示
N
Y
六 实验源程序
org 0000h
start: mov r2,#08h ;设置循环次数
mov a,#0feh ;送显示模式字
next: mov p1,a ;点亮连接P1.0的发光二极管
acall delay
rr a ;左移一位,改变显示模式字
djnz r2,next ;循环次数减1不为0,继续点亮下面一个LED
sjmp start ;重复上述过程
delay: mov r3,#0efh
del2: mov r4,#0ffh
del1: nop
djnz r4,del1
djnz r3,del2
retend
七 子程序列表(名称、功能描述、出入口);
delay: mov r3,#0efh
del2: mov r4,#0ffh
del1: nop
djnz r4,del1
djnz r3,del2
ret
该程序为典型的双重循环的延时子程序,他通过子程序入口delay: mov r3,#0efh进入程序,当程序运行至djnz r4,del1时进入第一重循环,当第一重循环结束时,进入djnz r3,del2第二重循环,最后经过ret退出子程序
七 调试结果描述
程序下载成功后,LED灯从左到右来回一个一个亮灭亮灭
八 出现问题及其解决办法
前面把送显示模式写成07fh,后面载入系统板的时候才发现原来十六进制排列方法为P1.7-P1.0,要写成0feh然后依次循环左移,才能实现led从左到右的流水。
本文来源:https://www.2haoxitong.net/k/doc/332ccf21aaea998fcc220ef6.html
文档为doc格式