好文档 - 专业文书写作范文服务资料分享网站

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

天下 分享 时间: 加入收藏 我要投稿 点赞

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

一、实验目的

1、了解单片机汇编语言程序的基本结构

2、了解单片机汇编语言程序的设计和调试方法 3、掌握顺序控制程序的简单编程

二、实验仪器

单片机开发板、万利仿真机、稳压电源、计算机

三、实验原理

1、流水灯硬件电路 如图4-1所示,流水灯硬件电路由移位寄存器74LS164、功能选择开关J502、二极管、三极管、单片机并口(P0)、限流电阻等组成。发光二极管连接成共阳极结构。发光二极管点亮的条件是:阳极接高电平、各阴极接低电平。因此,通过程序控制74LS164的Q0端。Q0端输出0,公共端阳极就接成高电平,然后再按一定规则从P0口输出数据,发光二极管就会点亮。

图4-1 流水灯电路图

2、单片机流水灯程序设计 由上图可知,发光二极管要点亮,需要先把J502的2、3脚相连,三极管Q500导通,然后从P0口输出数据。

(1)控制三极管导通程序

控制三极管有两种方法,第一种:在74LS164的第8脚产生一个正脉冲,此时1脚为0,三极管就导通;为1,三极管就截止。

第二种:在单片机IO模拟74LS164时序,一次输出一个字节,只要Q0=0即可控制三极管开通。为1,三极管截止。

两种方法的程序流程如图4-2所示。

三极管导

三极管导

DIN=0,CLK=0,输出8位 DIN=0 输出数据=07FH(最高位为 CLK=0

输出数据左移一位,把移

CLK=1 出的位送到DIN,CLK产生

CLK=0 输出数据位数减1

返回 输出完

三极管导

图4-2 流水灯位选信号控制

(2)产生流水灯效果程序

三极管导通后,就可以从P0口输出数据控制发光二极管。P0口输出数据既可以编写程序逐个输出,也可以将输出数据序列定义在存储器中,然后用读程序存储器指令逐个取出并输出到P0口。

程序流程图如图4-3所示。 流水灯 流水灯 偏移位置为8 P0口输出 从程序存储器中取出 延时0.2秒 偏移位置的数据 P0口输出延时0.2秒,偏移位 置计数减1 延时0.2秒 N 取数完 。。。 Y 返回 返回 图4-3 流水灯程序流程图

四、实验内容

1、直接输出法输出数据序列

五、实验步骤及调试信息

1、新建实验项目hua

2、输入实验程序并补充完整 程序如下:

#include

#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}; void delay(uint z) {

uint i,j;

for(i=z;i>0;i--)

for(j=100;j>0;j--); }

void main() {

DIN=0;

CLK=0; /* */ delay(5);/*在74LS164的第8脚,产生一个正脉冲*/ CLK=1; /*此时1脚为0,三极管就导通 */ delay(5);/* */ CLK=0; /* */ while(1) {

for(num=0;num<8;num++) {P0=table[num--]; delay(500);} } }

3、编译下载实验程序,全速运行

实验现象:全速运行程序,指示灯从第一个开始亮,8个指示灯依次亮了以后。指示灯就没有规律的几盏一起亮,原因是 for(num=0;num<8;num++) {P0=table[num--];

程序运行到num=0时,递减以后就为0FFH,此时程序的取值是任意的,修改如下:

for(num=0;num<8;num++) {P0=table[num];

实验现象:全速运行程序,指示灯从第一个开始亮,8个指示灯依次亮起。 4、整理实验设备

六、实验现象

指示灯从左到右逐一变亮。

七、实验心得

通过本次的实验,我对单片机的基本使用和程序的编写有了初步的了解,但是在实验过程中对程序的编写还不够熟练,仍然需要继续学习。

八、思考题

1、请把学号后两位数进转换成二进制数,然后依次点亮其中为1对应的二极管,写出输出序列。例如,60号转换成二进制后是0011 1100B,依次点亮四个1对应的二极管,输出序列是0DFH, 0EFH, 0F7H, 0FCH.(从低位到高位也可以)

答:

31号(0001 1111B)

输出序列是0EFH, 0F7H, 0FCH.OFBH,0FAH.

2、参考实验内容2,编写程序把输出序列增加到30个。 答:

LCALL LEDSequence

SJMP START LEDCLK bit P3.4 LEDDIN bit P2.3

LedSequence:

LCALL LedLight

MOV R6,#30

MOV DPTR,#LedSequenceTab-1

LedSequence1:

MOV A,R6

MOVC A,@A+DPTR CPL A MOV P0,A MOV R7,#200 LCALL DelayNms

DJNZ R6,LedSequence1 RET

LedSequenceTab: DB

70H,30H,20H,10H,70H,04H,02H,60H,01H,60H,90H,40H,01H,60H,02H,

40H,30H,10H,70H,04H,02H,01H,30H,30H,08H,02H,01H,04H,10H,5

0H

DelayNms:

LCALL Delay1ms DJNZ R7, $-3 RET Delay1ms: PUSH 07 MOV R7,#250 ;1ms NOP NOP

DJNZ R7, $-2 POP 07 RET LedLight: MOV B,#8 MOV A,#0FEH CLR LEDCLK CLR LEDDIN LedLight1: RLC A MOV LEDDIN,C

SETB LEDCLK NOP CLR LEDCLK

DJNZ B,LedLight1 RET

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

实验一单片机并口简单应用(流水灯)一、实验目的1、了解单片机汇编语言程序的基本结构2、了解单片机汇编语言程序的设计和调试方法3、掌握顺序控制程序的简单编程二、实验仪器单片机开发板、万利仿真机、稳压电源、计算机三、实验原理1、流水灯硬件电路如图4-1所示,流水灯
推荐度:
点击下载文档文档为doc格式
5m2h00hvu06m3qp9y5nv
领取福利

微信扫码领取福利

微信扫码分享