单片机LED灯控制器报告.docx

上传人:b****8 文档编号:11020362 上传时间:2023-02-24 格式:DOCX 页数:13 大小:135.40KB
下载 相关 举报
单片机LED灯控制器报告.docx_第1页
第1页 / 共13页
单片机LED灯控制器报告.docx_第2页
第2页 / 共13页
单片机LED灯控制器报告.docx_第3页
第3页 / 共13页
单片机LED灯控制器报告.docx_第4页
第4页 / 共13页
单片机LED灯控制器报告.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

单片机LED灯控制器报告.docx

《单片机LED灯控制器报告.docx》由会员分享,可在线阅读,更多相关《单片机LED灯控制器报告.docx(13页珍藏版)》请在冰豆网上搜索。

单片机LED灯控制器报告.docx

单片机LED灯控制器报告

实验名称LED灯控制器

指导教师

专业班级学号

联系

 

本人承诺:

本报告内容真实,无伪造数据,无抄袭他人成果。

本人完全了解学校相关规定,如若违反,愿意承担其后果。

签字:

年月日

 

一、任务要求

实验容:

利用C8051F310单片机设计一个LED灯控制器

实验要求:

1.LED灯外接于P0.0端。

2.LED灯分别按2Hz,1Hz和0.2Hz三种不同频率闪动,各持续10s。

3.在LED灯开始和停止闪烁时蜂鸣器分别鸣响1次。

4.利用单片机部定时器定时,要求采用中断方式。

二、设计思路

C8051F310单片机片上晶振频率为24.5MHz,采用8分频后为3.0625MHz,输入时钟信号为48个机器周期,T1定时器采用定时方式1。

2Hz,1Hz频率闪动均可以通过部定时器单次计时直接达到效果,而0.2Hz单次闪动时间过长,无法达到,故通过中断设置定时器技术的方式达到延长计时时间的效果。

 

三、资源分配

P0.0:

为LED灯控制端口,高电平触发。

P3.1:

为蜂鸣器控制端口,高电平触发。

P0.1:

为KINT键控制端口,下降沿触发。

R1、R2:

用于存放计时器计时数据,R1赋给TH1、R2赋给TL1。

R3:

0.2Hz下的中断程序部循环计数器

R7:

存放三种模式的循环次数。

R0:

在外部中断程序中赋值,用于判断采用何种模式。

PSW.1:

为标志位,用于等待定时器中断,中断执行完清零,并在中断处向下继续执行程序。

 

四、流程图

1、主程序流程图(含提高部分)

 

2、T_KINT中断部分

 

3、ITOP中断部分

4、IT1P部分

五、源代码(含文件头说明、语句行注释)

包含基础部分和提高部分

;------------------------------------

;-GeneratedInitializationFile--

;------------------------------------

$include(C8051F310.inc)

LEDBITP0.0;LED灯控制端口

BEEPBITP3.1;蜂鸣器控制端口

KINTBITP0.1;KINT按钮端口

 

ORG0000H

LJMPMAIN

ORG0003H;外部中断0入口

LJMPT_KINT

ORG000BH;定时器T0中断入口

LJMPIT0P

ORG001BH

LJMPIT1P

ORG1000H

MAIN:

LCALLInit_Device;设备初始化

MOVSP,#40H;置堆栈指针

MOVTMOD,#11H;定时器T0、T1均为工作方式1

MOVR0,#00H

CLRLED;关led灯

CLRBEEP;关蜂鸣器

CLRPSW.1;标志位1清零

CLRPSW.5;标志位2清零

SETBEX0;外部中断0允许

SETBIT0;下降沿触发

SETBEA;中断总允许

SETBET0;定时器T0中断源允许

SETBET1;定时器T1中断源允许

CHOO:

CJNER0,#02H,LOOP;选择模式

LJMPMODEL2;R0等于02H,跳转到1Hz

LOOP:

JCMODEL1;R0小于02H,跳转到2Hz

LJMPMODEL3;R0大于02H,跳转到0.2Hz

MODEL1:

MOVR1,#0C1H;设定2Hz闪烁方式定时器T0计数初值

MOVR2,#0B1H

MOVR7,#28H;置2Hz闪烁方式闪烁次数

ACALLL1;取定时器T0计数初值

SETBP3.1;蜂鸣器鸣响一次

SETBTR0;启动定时器T0

CLRP0.0;开LED灯

HERE1:

CJNER7,#00H,HERE1;等待中断

CLRTR0;2Hz闪烁方式结束,关闭定时器

MODEL2:

MOVR1,#83H;设定1Hz闪烁方式定时器T0计数初值

MOVR2,#63H

MOV7,#14H;置1Hz闪烁方式闪烁次数

ACALLL1;取定时器T0计数初值

SETBP3.1;蜂鸣器鸣响一次

SETBTR0;启动定时器T0

CLRP0.0;开LED灯

HERE2:

CJNER7,#00H,HERE2;等待中断

CLRTR0;1Hz闪烁方式结束,关闭定时器

MODEL3:

MOVR1,#0C1H;设定0.2Hz闪烁方式定时器T1计数初值

MOVR2,#0B1H

MOVR7,#28H;置0.2Hz闪烁方式闪烁次数

ACALLL3;取定时器T1计数初值

MOVR3,#00H;定时中断循环初值

SETBP3.1;关蜂鸣器

SETBTR1;启动定时器T1

CLRP0.0;关LED灯

HERE3:

CJNER7,#00H,HERE3;等待中断

CLRTR1;0.5Hz闪烁方式结束,关闭定时器

LJMPMODEL1;重新开始下一轮的闪烁

L1:

MOVA,R1;定时器0计数初值赋值子程序

MOVTH0,A

MOVA,R2

MOVTL0,A

RET

L3:

MOVA,R1;定时器1计数初值赋值子程序

MOVTH1,A

MOVA,R2

MOVTL1,A

RET

ORG1200H

IT0P:

DECR7;定时器T0中断服务程序

MOVA,R1;计数初值重新赋值

MOVTH0,A

MOVA,R2

MOVTL0,A

CLRP3.1;蜂鸣器停止鸣响

CPLP0.0;LED灯亮灭切换

RETI

ORG1400H

IT1P:

DECR7;定时器T1中断服务程序

MOVA,R1;计数初值重新赋值

MOVTH1,A

MOVA,R2

MOVTL1,A

INCR3;循环初值加1

MOVA,R3

ANLA,#0FH

CJNEA,#0AH,BACK

MOVR3,#00H

CLRP3.1

CPLP0.0

BACK:

RETI

T_KINT:

SETBPSW.1;标志位1置一,用于判断是否顺序执行三种模式

INCR0;R0加一,用于判断何种模式

CJNER0,#04H,K_RET

CLRPSW.1;R0到04H时清零标志位和R0

MOVR0,#00H

K_RET:

CLRTR1;关定时器1

POPSP

POPSP;出栈两次

MOVDPTR,#0036H

PUSHDPL;DPL压入栈顶

PUSHDPH;DPH压入栈顶

RETI

 

;Peripheralspecificinitializationfunctions,

;CalledfromtheInit_Devicelabel

PCA_Init:

anlPCA0MD,#0BFh

movPCA0MD,#000h

ret

Timer_Init:

movTMOD,#011h

movCKCON,#002h

ret

Port_IO_Init:

;P0.0-Unassigned,Open-Drain,Digital

;P0.1-Unassigned,Open-Drain,Digital

;P0.2-Unassigned,Open-Drain,Digital

;P0.3-Unassigned,Open-Drain,Digital

;P0.4-Unassigned,Open-Drain,Digital

;P0.5-Unassigned,Open-Drain,Digital

;P0.6-Unassigned,Open-Drain,Digital

;P0.7-Unassigned,Open-Drain,Digital

;P1.0-Unassigned,Open-Drain,Digital

;P1.1-Unassigned,Open-Drain,Digital

;P1.2-Unassigned,Open-Drain,Digital

;P1.3-Unassigned,Open-Drain,Digital

;P1.4-Unassigned,Open-Drain,Digital

;P1.5-Unassigned,Open-Drain,Digital

;P1.6-Unassigned,Open-Drain,Digital

;P1.7-Unassigned,Open-Drain,Digital

;P2.0-Unassigned,Open-Drain,Digital

;P2.1-Unassigned,Open-Drain,Digital

;P2.2-Unassigned,Open-Drain,Digital

;P2.3-Unassigned,Open-Drain,Digital

movXBR1,#040h

ret

Interrupts_Init:

movIE,#08Bh

ret

;Initializationfunctionfordevice,

;CallInit_Devicefromyourmainprogram

Init_Device:

lcallPCA_Init

lcallTimer_Init

lcallPort_IO_Init

lcallInterrupts_Init

ret

end

六、程序测试方法与结果

如预期,三种波形的频率都有显示,而且没有错误。

提高部分:

在C8051F310单片机开发板烧录代码:

不按KINT键时,LED灯以2Hz,1Hz和0.2Hz三种不同频率闪动,各持续10s,在开始、结束和切换模式时,蜂鸣器都响1s,

按一次,LED灯以2Hz闪烁10s后结束;按两次,LED灯以1Hz闪烁10s后结束;

按三次,LED灯以0.2Hz闪烁10s后结束;按四次,切换回顺序执行三种模式。

Ps:

运行过程中,偶尔会出现蜂鸣器响时间超过一秒。

不知道如何调整,但模式切换正常。

七、思考题

1.若想实现3种闪烁方式的持续时间在5s-20s围可调,且每种方式的持续时间各不相同,应如何设计程序?

答:

通过设置中断的循环次数来控制持续时间,所以只要改变循环次数,就能改变持续时间

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1