单片机并口简单应用(流水灯)实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
40H,30H,10H,70H,04H,02H,01H,30H,30H,08H,02H,01H,04H,10H,50H
DelayNms:
LCALLDelay1ms
DJNZR7, $-3
RET
Delay1ms:
PUSH07
MOVR7,#250;1ms
NOP
NOP
DJNZR7, $-2
POP07
RET
LedLight:
六、实验现象
指示灯从左到右逐一变亮。
七、实验心得
通过本次的实验,我对单片机的基本使用和程序的编写有了初步的了解,但是在实验过程中对程序的编写还不够熟练,仍然需要继续学习。
八、思考题
1、请把学号后两位数进转换成二进制数,然后依次点亮其中为1对应的二极管,写出输出序列。例如,60号转换成二进制后是0011 1100B,依次点亮四个1对应的二极管,输出序列是0DFH, 0EFH,0F7H, 0FCH.(从低位到高位也可以)
两种方法的程序流程如图4-2所示。
图4-2 流水灯位选信号控制
(2)产生流水灯效果程序
三极管导通后,就可以从P0口输出数据控制发光二极管。P0口输出数据既可以编写程序逐个输出,也可以将输出数据序列定义在存储器中,然后用读程序存储器指令逐个取出并输出到P0口。
程序流程图如图4-3所示。
图4-3 流水灯程序流程图
void delay(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=100;j>0;j--);
}
void main()
{
DINFra Baidu bibliotek0;
CLK=0; /* */
delay(5);/*在74LS164的第8脚,产生一个正脉冲*/
CLK=1; /*此时1脚为0,三极管就导通 */
答:
31号(0001 1111B)
输出序列是0EFH,0F7H, 0FCH.OFBH,0FAH.
2、参考实验内容2,编写程序把输出序列增加到30个。
答:
LCALL LEDSequence
SJMP START
LEDCLKbitP3.4
LEDDINbitP2.3
LedSequence:
LCALLLedLight
for(num=0;num<8;num++)
{P0=table[num--];
程序运行到num=0时,递减以后就为0FFH,此时程序的取值是任意的,修改如下:
for(num=0;num<8;num++)
{P0=table[num];
实验现象:全速运行程序,指示灯从第一个开始亮,8个指示灯依次亮起。
4、整理实验设备
MOVR6,#30
MOVDPTR,#LedSequenceTab-1
LedSequence1:
MOVA,R6
MOVCA,@A+DPTR
CPLA
MOVP0,A
MOVR7,#200
LCALLDelayNms
DJNZR6,LedSequence1
RET
LedSequenceTab:
DB70H,30H,20H,10H,70H,04H,02H,60H,01H,60H,90H,40H,01H,60H,02H,
delay(5);/* */
CLK=0; /* */
while(1)
{
for(num=0;num<8;num++)
{P0=table[num--];
delay(500);}
}
}
3、编译下载实验程序,全速运行
实验现象:全速运行程序,指示灯从第一个开始亮,8个指示灯依次亮了以后。指示灯就没有规律的几盏一起亮,原因是
实验一
一、实验目的
1、了解单片机汇编语言程序的基本结构
2、了解单片机汇编语言程序的设计和调试方法
3、掌握顺序控制程序的简单编程
二、实验仪器
单片机开发板、万利仿真机、稳压电源、计算机
三、实验原理
1、流水灯硬件电路
如图4-1所示,流水灯硬件电路由移位寄存器74LS164、功能选择开关J502、二极管、三极管、单片机并口(P0)、限流电阻等组成。发光二极管连接成共阳极结构。发光二极管点亮的条件是:阳极接高电平、各阴极接低电平。因此,通过程序控制74LS164的Q0端。Q0端输出0,公共端阳极就接成高电平,然后再按一定规则从P0口输出数据,发光二极管就会点亮。
四、实验内容
1、直接输出法输出数据序列
五、实验步骤及调试信息
1、新建实验项目hua
2、输入实验程序并补充完整
程序如下:
#include<reg51.h>
#define uint unsigned int
sbit CLK=P3^4;
sbit DIN=P2^3;
uint num;
uint code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
MOVB,#8
MOVA,#0FEH
CLRLEDCLK
CLRLEDDIN
LedLight1:
RLCA
MOVLEDDIN,C
SETBLEDCLK
NOP
CLRLEDCLK
DJNZB,LedLight1
RET
图4-1 流水灯电路图
2、单片机流水灯程序设计
由上图可知,发光二极管要点亮,需要先把J502的2、3脚相连,三极管Q500导通,然后从P0口输出数据。
(1)控制三极管导通程序
控制三极管有两种方法,第一种:在74LS164的第8脚产生一个正脉冲,此时1脚为0,三极管就导通;为1,三极管就截止。
第二种:在单片机IO模拟74LS164时序,一次输出一个字节,只要Q0=0即可控制三极管开通。为1,三极管截止。
相关文档
最新文档