单片机综合实验LED灯控制器讲解学习文档格式.docx
《单片机综合实验LED灯控制器讲解学习文档格式.docx》由会员分享,可在线阅读,更多相关《单片机综合实验LED灯控制器讲解学习文档格式.docx(9页珍藏版)》请在冰豆网上搜索。
4.在LED灯开始和停止闪烁时蜂鸣器分别鸣响1次。
5.利用单片机内部定时器定时,要求采用中断方式。
提高要求:
1)使用按键(KINT)切换LED灯闪烁频率。
2)在LED显示器上显示当前模式和频率值。
3)其它个性化设计。
2、设计思路
利用定时器T0实现0.1s,0.5s和1s的定时,分别对应5Hz,1Hz和0.5Hz三种闪烁方式的半周期,用T0的中断服务程序实现LED信号灯的闪烁和LED显示器显示当前模式,并重新开始计时。
这三种定时时间的定时器计数初值存于工作寄存器中,赋计数初值时取出,一种频率的闪烁结束后通过改变寄存器内的值来改变半周期,接着再赋值取出。
利用另一个工作寄存器来控制闪烁次数,是当前模式运行时间为20s。
3、资源分配
R0、R1:
当前模式下定时器计数初值
R2:
循环次数,即闪烁次数
4、流程图
5、源代码
$include(C8051F310.inc)
LEDBITP0.0
BEEPBITP3.1
KINTBITP0.1
ORG0000H
LJMPMAIN
ORG0003H
LJMPT_KINT
ORG001BH
LJMPTIME1
MAIN:
LCALLInit_Device
MOVR0,#00H
CLRLED
CLRBEEP
CLRPSW.1
CLRPSW.5
SETBEA
SETBEX0
SETBIT0
MOVTMOD,#10H
SETBET1
CHOO:
CJNER0,#02H,LOOP
LJMPCASE2
LOOP:
JCCASE1
LJMPCASE3
CASE1:
MOVR1,#0D7H
MOVR2,#14H
MOVR7,#0C8H
MOVP1,#0
SETBP1.6
SETBP1.5
LJMPSTART
CASE2:
MOVR1,#83H
MOVR2,#63H
MOVR7,#28H
SETBP1.7
SETBP1.4
SETBP1.3
SETBP1.1
LJMPSTART
CASE3:
MOVR1,#06H
MOVR2,#0C6H
MOVR7,#14H
LJMPSTART
START:
LCALLVOICE
MOVTH1,R1
MOVTL1,R2
MOVA,R7
BACK:
SETBTR1
LOOP1:
MOVC,PSW.5
JNCLOOP1
CLRPSW.5
DJNZR7,BACK
MOVC,PSW.1
JCTHERE
CJNEA,#28H,LOOP2
LJMPCASE3
LOOP2:
JCTHERE
LJMPCASE2
THERE:
SJMP$
VOICE:
SETBBEEP
MOVTH1,#06H
MOVTL1,#0C6H
LOOP3:
JNCLOOP3
RET
T_KINT:
SETBPSW.1
INCR0
CJNER0,#04H,K_RET
CLRPSW.1
MOVR0,#00H
K_RET:
CLRTR1
POPSP
POPSP
MOVDPTR,#0036H
PUSHDPL
PUSHDPH
RETI
TIME1:
SETBPSW.5
CLRTR1
CPLLED
RETI
PCA_Init:
anlPCA0MD,#0BFh
movPCA0MD,#000h
ret
Timer_Init:
movTMOD,#010h
movCKCON,#002h
Port_IO_Init:
movXBR1,#040h
Interrupts_Init:
movIE,#009h
Init_Device:
lcallPCA_Init
lcallTimer_Init
lcallPort_IO_Init
lcallInterrupts_Init
END
6、程序测试方法与结果
思考题
1.若想实现3种闪烁方式的持续时间在5s-60s范围内可调,且每种方式的持续时间各不相同,应如何设计程序?
答:
只需将R2的值改成相应的即可。
本人承诺:
本报告内容真实,无伪造数据,无抄袭他人成果。
本人完全了解学校相关规定,如若违反,愿意承担其后果。
签字:
年月日
其它说明:
1.标题:
黑体,小四号
2.正文:
宋体,五号,1.5倍行距
3.流程图使用SmartDraw7或Visio软件绘制
4.不要加封面