实验二 单片机并口简单应用.doc
文本预览下载声明
实验二 单片机并口简单应用(流水灯)
实验目的
1、了解单片机汇编语言程序的基本结构
2、了解单片机汇编语言程序的设计和调试方法
3、掌握顺序控制程序的简单编程
实验仪器
单片机开发板、万利仿真机、稳压电源、计算机
实验电路图
流水灯硬件电路
如图4-1所示,流水灯硬件电路由移位寄存器74LS164、功能选择开关J502、二极管、三极管、单片机并口(P0)、限流电阻等组成。发光二极管连接成共阳极结构。发光二极管点亮的条件是:阳极接高电平、各阴极接低电平。因此,通过程序控制74LS164的Q0端。Q0端输出0,公共端阳极就接成高电平,然后再按一定规则从P0口输出数据,发光二极管就会点亮。
图4-1 流水灯电路图
三极管导通
DIN=0,CLK=0,输出8位
输出数据=07FH(最高位为0)
输出数据左移一位,把移出的位送到DIN,CLK产生正脉冲
CLK产生一个正脉冲
输出数据位数减1
输出完成?
三极管导通
两种方法的程序流程如图4-2所示。
三极管导通
DIN=0
CLK=0
CLK=1
CLK=0
返回
图4-2 流水灯位选信号控制
(2)产生流水灯效果程序
三极管导通后,就可以从P0口输出数据控制发光二极管。P0口输出数据既可以编写程序逐个输出,也可以将输出数据序列定义在存储器中,然后用读程序存储器指令逐个取出并输出到P0口。
程序流程图如图4-3所示。
流水灯
返回
P0口输出0FEH
延时0.2秒
P0口输出0FDH
延时0.2秒
。。。
流水灯
返回
偏移位置为8
从程序存储器中取出偏移位置的数据
延时0.2秒,偏移位置计数减1
取数完成?
Y
N
图4-3 流水灯程序流程图
实验内容
直接法输出数据序列
LEDCLK bit P3.4
LEDDIN bit P2.3
LedSequence:
CLR LEDCLK
CLR LEDDIN
NOP
SETB LEDCLK
NOP
CLR LEDCLK
MOV P0,#0FEH
MOV R7,#200
LCALL DelayNms
MOV P0,#0FDH
MOV R7,#200
LCALL DelayNms
MOV P0,#0FBH
MOV R7,#200
LCALL DelayNms
MOV P0,#0F7H
MOV R7,#200
LCALL DelayNms
MOV P0,#0EFH
MOV R7,#200
LCALL DelayNms
MOV P0,#0DFH
MOV R7,#200
LCALL DelayNms
MOV P0,#0BFH
MOV R7,#200
LCALL DelayNms
MOV P0,#07FH
MOV R7,#200
LCALL DelayNms
RET
DelayNms:
LCALL Delay1ms
DJNZ R7, $-3
RET
Delay1ms:
PUSH 07
MOV R7,#250 ;1ms
NOP
NOP
DJNZ R7, $-2
POP 07
RET
2、查表法输出数据序列
;--------------------------------------------------------------------------------
;输入: 无
;输出:无
;----------------------------------------------------------------------------------
LEDCLK bit P3.4
LEDDIN bit P2.3
LedSequence:
LCALL LedLight
MOV R6,#8
MOV DPTR,#LedSequenceTab
LedSequence1:
MOV A,R6
MOVC A,@A+DPTR
CPL A
MOV P0,A
MOV R7,#200
LCALL DelayNms
DJNZ R6,LedSequence1
RET
LedSequenceTab:
DB 80H,40H,20H,10H,08H,04H,02H,01H,00H
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 LE
显示全部