- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LED灯闪烁实验讲述
课程名称:Zigbee技术及应用 实验项目: LED灯闪烁实验 指导教师:
专业班级: 姓名: 学号: 成绩:
实验目的
学习单片机IO口配置与驱动,实现指示灯LED1闪烁,频率为1Hz;
通过模块化编程,养成良好编程习惯。
实验设备
CC2530核心板一块;
传感器底板一个;
仿真器一个;
方口USB线一根;
实验原理
硬件设计原理
本实验的原理如图1-1所示。其中,LED1和LED3都串联一个R273和R275限流电阻,然后连接到CC2530的P1口的P1_1和P1_0管脚上。当P1_1为低电平时,LED1上有电流流过,LED1被点亮,反之熄灭。
图 1-1 LED灯原理图
限流电阻R的计算:图中R273和R275限流电阻,其计算公式如下:
R=(U-UF)/ID (1-1)
式中,U为电路供电电压,UF为LED正向压降,ID为LED的工作电流。对于普通LED发光二极管,其正向压降:黄色为1.4V、红色为1.6V、蓝/白色为2.5V;点亮工作电流为3-20mA。
由图1-1可知,电路供电电压为U=3.3V,LED1选择为黄色发光二极管(压降是1.4V),带入(1-1)式可得R的取值范围是95-633Ω,电阻只要在此范围内即可,一般选择了470Ω的常用电阻。
从图1-1可以看出,如果要让LED1发光,需要设置CC2530对应的I/O口将LED电平拉低。本实验我们只点亮LED1指示灯,所以只要设置LED1为低电平即可,所以只要我们知道LED1与CC2530哪个管脚相连就可以进行编程。随着这个思路我们在原理图中找到LED1与CC2530芯片的P1_1管脚连接,将P1_1管脚拉低LED1即被点亮。
程序设计原理
(1)主程序分析
本实验的程序流程如图1-2所示,其重点IO口的配置。如果以1Hz的频率点亮LED1闪烁,则需要配置P1_1为输出,然后在P1_1输出1Hz的脉冲信号。
图1-2 程序逻辑流程图
(2)IO端口配置
P1口通过特殊功能寄存器P1SEL(P1口功能选择寄存器)和P1DIR(P1口方向寄存器)进行配置,其定义如下。
P1SEL(P1功能选择寄存器,P0SEL同理):
位号码名称复位R/W描述7:0SELP1_[7:0]0x00R/WP1.7 到P0.0功能选择
0: 通用I / O
1: 外设功能P1DIR(P1方向寄存器,P0DIR同理):
位号码名称复位R/W描述7:0SELP1_[7:0]0x00R/WP1.7到P1.0的I/O方向
0: 输入
1: 输出特殊功能寄存器的配置方法:通过位操作实现对特殊功能寄存器的配置。【例如,如果需要对P1SEL的第3位设置为1,则可用P1SEL |= 0x08 (二进制表示为:0000 1000 )来实现;如果需要对P1SEL的第3位设置为0,则可用P1SEL = 0xF7来实现。】
(3)延时子程序设计
延时函数原型如下,在16M Hz主时钟频率下,参数time 的值表示延时了多少ms。(本例使用的cc2530单片机上电默认使用内部RC振荡器产生系统主时钟,内部主时钟RC振荡器频率为16M Hz)
void Delay_ms(unsigned int time)
{
unsigned int i, j;
for(i=0; itime; i++)
for(j=0; j500; j++);
}
以上C语言代码由IAR编译生成的汇编代码如图1-3所示。
结合C语言的延时函数和从汇编指令我们可以看到寄存器R0/R1保存变量j的值,R2/R3保存参数time的值,R4/R5保存变量i的值。
根据cc2530数据手册和用户指南上对8051内核的介绍,cc2530内核为兼容标准8051的单周期内核,大多数单字节指令在一个机器周期内都能执行完成。
下面我们结合图1-3中的汇编指令详细分析一下延时时间的具体计算方法。此处我们忽略入栈代码段的时间消耗。
地址00006B-00006F:将参与比较计算的寄存器R4/R5清零,然后跳转至00008A执行。
地址00008A-00008F:R4/R5(变量i)与R2/R3(参数time)进行减法运算,如果两次都没没有产生借位,即CY=0。则说明R4/R5累加到了time指定的次数,程序执行到“JNC 0x0097”PC指针将调转到地址000097跳出延时循环,否则循序向下执行。
地址000091-000095:对R0/R1清零,将PC指针跳转到地址000079执行。
地址00079-000080:清除
您可能关注的文档
最近下载
- 安全管理人员初复训考核试卷含答案.doc
- 多模态大模型在金融行业的实践和展望-2024年全球人工智能与大模型开发与应用.pdf
- 电子商务测试题+参考答案.docx VIP
- 2024年江苏省南京市中考历史试题卷(含答案).docx
- 数独的社交互动:与朋友一起挑战数独.pptx VIP
- 大理州经济技术开发区“2.16”建筑施工生产安全事故调查报告警示学习教育.pptx
- 2017年高考全国2卷理综试题(Word版含答案).pdf
- 医疗服务公司医疗旅游服务合作协议.docx
- 人工智能技术在高中语文教学中的实践与应用研究教学研究课题报告.docx
- 山西大学《生物化学》内部题库练习期末真题汇编及答案.docx
文档评论(0)