好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

LED灯闪烁实验模板.docx

7页
  • 卖家[上传人]:桔****
  • 文档编号:456994166
  • 上传时间:2022-12-18
  • 文档格式:DOCX
  • 文档大小:64.63KB
  • / 7 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 课程名称:Ziqbee技术及应用实验项目:LED灯闪烁实验指导教师:专业班级:姓名:学号:成绩:(1) 1-实验目的学习单片机10口配置与驱动,实现指示灯LED闪烁,频率为1HZ;通过模块化编程,养成良好编程习惯实验设备(1)CC2530核心板一块;(2)传感器底板一个;(3)仿真器一个;(4)方口US线一根;实验原理3.1硬件设计原理本实验的原理如图所示其中,LED和LED3TE串联一个R273和R275限流电阻,然后连接到CC2530勺P1口的P1_1和P1_(管脚上当P1_1为低电平时,LED上有电流流过,LED1被点亮,反之熄灭3.3VT.ED1470RLED3gPIO11470R图1-1LED灯原理图限流电阻R的计算:图中R273和R275限流电阻,其计算公式如下:R二(U—UF)/ID(1-1)式中,U为电路供电电压,UF为LEDE向压降,ID为LED勺工作电流对于普通LED发光二极管,其正向压降:黄色为1.4V、红色为1.6V、蓝/白色为2.5V;点亮工作电流为3-20mA由图可知,电路供电电压为U=3.3V,LED选择为黄色发光二极管(压降是1.4V),带入)式可得R的取值范围是95-633Q,电阻只要在此范围内即可,一般选择了470Q的常用电阻。

      从图可以看出,如果要让LED发光,需要设置CC253对应的I/O口将LED电平拉低本实验我们只点亮LED指示灯,所以只要设置LED伪低电平即可,所以只要我们知道LED1与CC253哪个管脚相连就可以进行编程随着这个思路我们在原理图中找到LED与CC253芯片的P1_1管脚连接,将P1_1管脚拉低LED即被点亮3.2程序设计原理(1)主程序分析本实验的程序流程如图仁2所示,其重点10口的配置如果以1Hz的频率点亮LED1闪烁,贝嚅要配置P1_1为输出,然后在P1_1输出1Hz的脉冲信号「开始、V图1程序逻辑流程图(2)I0端口配置P1口通过特殊功能寄存器P1SEUP1口功能选择寄存器)和P1DIR(P1口方向寄存器)进行配置,其定义如下P1SEL(P1功能选择寄存器,P0SEL同理):位号码名称复位R/W描述7:0SELP1」7:0]0x00R/WP1.7到P0.0功能选择0:通用1/01:外设功能P1DIR(P1方向寄存器,P0DIR同理)位号码名称复位R/W描述7:0SELP1」7:0]0x00R/WP1.7到P1.0的I/O方向0:输入1:输出特殊功能寄存器的配置方法:通过位操作实现对特殊功能寄存器的配置。

      例如,如果需要对P1SEL的第3位设置为1,则可用P1SEL|=0x08(二进制表示为:00001000)来实现;如果需要对P1SE的第3位设置为0则可用P1SEL&=OxF袜实现2) 延时子程序设计延时函数原型如下,在16MHz主时钟频率下,参数time的值表示延时了多少ms(本例使用的CC2530单片机上电默认使用内部RC8荡器产生系统主时钟,内部主时钟RC8荡器频率为16MHz)voidDelay_ms(unsignedinttime){unsignedinti,j;for(i=0;i

      地址00008A-00008F:R4/R5(变量i)与R2/R3(参数time)进行减法运算,如果两次都没没有产生借位,即CY=0则说明R4/R5累加到了time指定的次数,程序执行到“JNC0x0097”PC旨针将调转到地址000097跳出延时循环,否则循序向下执行地址000091-000095:对R0/R1清零,将PC旨针跳转到地址000079执行地址00079-000080:清除借位寄存器值后将R0/R1与字面量500进行减法运算,然后判断借位寄存器CY勺值,如果CY=(则循序执行地址000082处指令,否则PC旨针跳转到地址000071处执行地址000071-000078:将R0/R1中保存的变量做自加1操作地址000082-000089:将R4/R5中保存的变量做自加1操作DisassemblyGotoD曲斑耐iblyLogicalCodeSA•01100-D・0-1=0-2=0■3=0-4=a5=0&•01・7-0EJB=0x00-BRO=0-BRI=0-BR2=a-BR3=0-BR4-0-BR5•D-BR6•0LBR7=0EJPSV=0K00-p=0-u=a-ov=0R5D-0-RSI-0-FD=0-AC=01-CY=0R0=0x00R1=0x01R2R3-0K0IR4-0x00R5=0x00R6=OKOOR7=OkOOSP=OhCSSPPSPI■DPTROxOOSD7CBAHK=0M00PC=OsOOGBRegisterRegisters00006B7C00MOVR4#OKOO00006D7DQ0MOVR5#0x0000006FSO19SJMPOxOOSAfor(j-0;j<500;J++)000071E9MOVA,RO0000722401ADDA,#01101000074F9MOVRO,A000075E9MOV0000763400ADDCa,#okoo000078F9MOVRl,Afor(j=0;j<500::++)000079C3CLKc00007AE8MOVA,RO00007B94F4SUBBA,#0HF400007DE9MOVArRl00007E9401SUBBA,#0xDI00003040EFJC0s0071for(i=0;i

      每次循环,地址00091-000095段指令执行1次,地址000071-000080段指令执行500次查询80C51汇编指令集得到一次for(j=0;j<500;j++)循环CC253需要执行(6+13*500)个指令周期在上文中我们查询CC253数据手册和用户手册得知CC253处理大多数单字节指令只需要一个机器周期假设所有指令都在一个机器周期内执行完成CC253执行一次for(j=0;j<500;j++)循环最少需要(6+13*500)个机器周期单片机一个机器周期等于一个时钟周期,CC253-个时钟周期为1/16M,所以该次循环最少用时约400us假设双字节指令需要的机器周期与标准8051相同CC253执行一次for(j=0;j<500;j++)循环最多需要6*12+9*500+3*12*500个机器周期同理该次循环最多用时约1400us由于TI没有开源CC253对汇编的取址和译码操作所以这里我们不能明确CC2530旨令每一个汇编指令的用时只能粗略估算上述代码中循环的500次是一个经验值,也可以借助示波器将1m啲延时次数计算出来实验步骤步骤一:编写LED丁闪烁程序,编译无误步骤二:将CC253模块(CC253核心板与传感器底板,以后简称CC253模块)与仿真器连接,仿真器用US连接线与电脑进行连接。

      步骤三:点击IAR软件中的DownloadandDebug按钮进行编译下载步骤四:然后单击调试工具栏中的GO按钮步骤五:此时LED指示灯闪烁,贝U成功;否则返回步骤一,直至调试成功5・实验部分参考代码main函数文件:/******************************************************************* @fnmain* @briefThemainfunction.* @paramNone* @returnNone**********************************Ivoidmain(void)/*LED1初始化*/Led1」nit();while(1){/*开LED1*/LED1ON();/*延时约500ms7Delayms(500);Delay_ms(500);}led头文件:#ifndef_LED_H#define_LED_H#inelude#defineLED1P1_1/*宏定义开LED1*/#defineLED1_0N()LED1==0/*宏定义尖LED1*/#defineLED1_0FF()LED1=1广函数声明部分*/externvoidLed1_lnit(void);externvoidDelay(unsignedinttime);#endif//LEDHLed灯控。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.