1初级cc253x基础教程实验17adc五向按键_第1页
1初级cc253x基础教程实验17adc五向按键_第2页
1初级cc253x基础教程实验17adc五向按键_第3页
1初级cc253x基础教程实验17adc五向按键_第4页
1初级cc253x基础教程实验17adc五向按键_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、无锡谷雨电子实验十七ADC 实验:五向按键实验2014/1/27在此处键入文档的摘要。摘要通常是对文档内容的简短总结。在此处键入文档的摘要。摘要通常是对文档内容的简短总结。目录前言2必要条件2原理图2编程参考4源码分析96 编译调试147 使用 Flash Programmer程序171 前言在实验 16 基础,增加了对五向按键的实验。在实验中五向按键不像平时见过到了按键处理。本实验中采用这种方法节省了大部分的引脚端口。详细的硬件分析见原理图部分。2 必要条件A 硬件1、 SmartRF 系列开发板,CC2530 或者 CC25312、 CC-Debugger 仿真器B1、 IAR for 8

2、051 开发环境,版本:8.102、 Flash Programmer 固件烧写。3 原理图五向按键工作方式如下:当按键按向 UP 方向,五向按键的 COM 就会与 Up 的引脚相连。其化引脚与上述的 UP 引脚工作方式一样。1.2.3.原理图(见图 3)中使用的 SN74HC32D 是一个四个或门。当有按键按下时,P2.0端口就会变为。原理是这样的,当有按键按下时,五向按键的COM,即 VCC与相应的引脚相连,也就是将接入 SN74HC32D,即相应引脚变为 1。没有按键按下时,PUSH 通过 100K 下拉电阻与参考电平相连,即相应引脚为 0。而其它的引脚是通过集成运放引入负反馈具有虚短的

3、功能使相应引脚具有低电平电压,而这些低电平正好在 SN74HC32D 的 0 电平范围内。这里以 up 引脚为例,来计算一下它具有的电平电压。其计算的公式如下 3225= up31 + 3230 + 255带入 R32,R31,R25,R30 的数值,即可知= ,而电路的工作电压是 Vcc = 3.3V,up32所以 Vup = 0.512(V)。其他的引脚默认电平的计算方法如上述一样。经计算相应引脚的电平分别为 = 0.340(v), = 0.203(v), = 0.134(V)。再来分析一下,当有按键按时 P0.6 引脚上的电平电压为变化情况。默认情况下电路的等效为两级同相比例运算电路。如

4、下图图 1 所示。根据同相比例运算电路的理论4.知0.6= 2.3263(V)。所以当 push 按键按下时,ADC到的电压就是 2.3 左右,能得到小数点几位跟 ADC 的分辨率有关。如果此时按下的不是 push 按键,那么等效电路就会有变化。前级会变成加减法电路,后级还是同相比例运算电路。见图 2 所示。根据集成运放的模拟电路知识可以得动0.6 = 0.3417(V),其他按键有同样的方法得到按下时在 P0.6 引脚产生的电压,具体的计算交由用户自行完成。所以这里有不同按键按下产生不压的方式,来区别不同的按键是可行。图 1 默认等效电路图 2 等效电路 2图 3 key 原理图4 编程参考

5、和一般的单片机一样,为了能使 ADC 外设能正常的工作,需要对其进行配置。配置的基础也是对其相应的寄存器进行操作。寄存器的操作要参考其的。完整册,请参:CC254xEK CC2530 的中文手册。目录下的 CC253x4x User Guide. (Rev. C).pdf,对应的中文手册:ADCCON3 (0Xb6) ADC 控制 3按键中断的配置可以参考如下的步骤。EA = 0;PICTL &= BV(3);/设置 PORT2 上升沿中断/清除 Port2 端口中断标志寄存器/清除 Port2 端口总中断标志P2IFG = 0X00;P2IF = 0;IP0 &= BV(1);/p2 端口中

6、端在优先级组的 1,在这里置成最低优先级 IP1 &= BV(1);P2IEN |= BV(HAL_KEY_JOY_MOVE_PIN);IEN2 |= BV(1); /设置 PORT2 中断使能EA = 1;ADC 的配置如实始化可以参考如下的步骤。/设置参考电压,这里为选择 AVDD5/设置分辨率为 8 位ADCCON3 |= 0 x80;ADCCON3 &= (0 x30);P0SEL |= BV(HAL_KEY_JOY_CHN);/选择 p0.6 为外设引脚APCFG |= BV(HAL_KEY_JOY_CHN);/使能 AIN6 通道ADCCON3 = (ADCCON3 & 0 xF0

7、 ) | 0X06;/select ainx as input/设置 ADC 启动方式,这里为启动,当 st 为 1 时开始ADCCON1 |= 0 x30;ADC 转换ADC的结果可以参考如下的步骤。u16 read = 0;ADCCON3 = (ADCCON3 & 0 xF0 ) | 0X06;/select ainx as input asm(NOP);/启动转换ADCCON1 |= BV(6);while(!(ADCCON1 & 0 x80); /等待转换结束readread read= ADCL;+= (u= 8;16)ADCH)8;/8 为分辨率,得到的值右移 8 位,即除以 25

8、6return read;TIPS:在协议栈中,用到了非常多的宏定义函数,宏定义不但能保持代码简介,而且代码更容易,建议大家在编码过程中多使用效率高的宏定义。5 源码分析打开实验 17 五向按键实验ADC 工程(双击 Led.eww 打开)由于本实验的主是讲五向按键的,所以下面的源分板就主要讲 ADC 的五向按键。而 LCD的部分不是本节的主要内容,在这里不做/*。* File : main.cCC2530ZIGBEE CHIP 8KRAM 256K FLASH(c) Copyright 2014,无锡谷雨电子shttp/* By: qierjinNew SmartRF 开发板* Platfo

9、rm : Ghostyu*/*说明:五向按键实验,五向按键使用 adc 采样,当 5 个按键中的一个按下时会在P2_0 引脚产生一个中断,然后ADC 通道 6 的电压值,通过不同的电压值来区分是哪个按键*/#include #includeCommon.h#includeHal_lcd.h/*五向按键仅使用两个 GPIO 引脚P2_0 中断P0_6 ad 转换*/* Joy stick move at P2.0 */#define HAL_KEY_JOY_MOVE_PORT #define HAL_KEY_JOY_MOVE_PINP20/5 向按键 采样通道为 ad-6#define HAL_

10、KEY_JOY_CHN6u16 JOYSTICK_Value = 0;u8 flag=0;/*名称:JOYSTICK_Init*功能:设置 JOYSTICk参数:无*出口参数:无*返回值 :无*/void JOYSTICK_Init()P2SEL &= BV(HAL_KEY_JOY_MOVE_PIN);/P2_0 设为普通 GPIOP2DIR &= BV(HAL_KEY_JOY_MOVE_PIN);/P2_0 设为输入/*名称:JOYSTICK_Enable*功能:使能五向按键的GPIO 中断参数:无*出口参数:无*返回值 :无*/void JOYSTICK_Enable()EA = 0;PI

11、CTL &= BV(3);/设置 PORT2 上升沿中断/清除 Port2 端口中断标志寄存器/清除 Port2 端口总中断标志P2IFG = 0X00;P2IF = 0;IP0 &= BV(1);/p2 端口中端在优先级组的 1,在这里置成最低优先级 IP1 &= BV(1);P2IEN |= BV(HAL_KEY_JOY_MOVE_PIN);IEN2 |= BV(1); /设置 PORT2 中断使能EA = 1;/*名*功称:JOYSTICK_ADC_Init能:初始化 ADC 通道 6*参数:无*出口参数:无*返回值 :无*/ void JOYSTICK_ADC_Init()/设置参考电

12、压,这里为选择 AVDD5/设置分辨率为 8 位ADCCON3 |= 0 x80;ADCCON3 &= (0 x30);P0SEL |= BV(HAL_KEY_JOY_CHN);/选择 p0.6 为外设引脚APCFG |= BV(HAL_KEY_JOY_CHN);/使能 AIN6 通道ADCCON3 = (ADCCON3 & 0 xF0 ) | 0X06;/select ainx as input/设置 ADC 启动方式,这里为启动,当 st 为 1 时 开始 ADCADCCON1 |= 0 x30;转换/*名称:JOYSTICK_ADC_READ*功能:启动 ADC 转换,并返回 ADC*参

13、数:无*出口参数:无的数据*返回值 :返回 ADC 通道 6数据*/u16 JOYSTICK_ADC_READ(void)u16 read = 0;ADCCON3 = (ADCCON3 & 0 xF0 ) | 0X06;/select ainx as input asm(NOP);/启动转换ADCCON1 |= BV(6);while(!(ADCCON1 & 0 x80); /等待转换结束readread read= ADCL;+= (u16)ADCH)= 8;return read;main()HAL_BOARD_INIT();HalLcd_HW_Init();JOYSTICK_Init()

14、;JOYSTICK_Enable();JOYSTICK_ADC_Init();HalLcd_HW_WriHalLcd_HW_Wriine(HAL_LCD_LINE_1, JOYSTICK_TEST);ine(HAL_LCD_LINE_3, You Push:);for(;)if(flag =1)JOYSTICK_Value = JOYSTICK_ADC_READ();/*不同的采样电压对应不同的按键*/if (JOYSTICK_Value = 2) & (JOYSTICK_Value = 74) & (JOYSTICK_Value = 60) & (JOYSTICK_Value = 39) &

15、 (JOYSTICK_Value = 89) & (JOYSTICK_Value = 100)HalLcd_HW_Wriine(HAL_LCD_LINE_5,CENTER);flag = 0;/*GPIO 中断函数*/#pragma vector = P2_VECTOR errupt void P2_ISR(void)if( P2IFG & BV(HAL_KEY_JOY_MOVE_PIN) /判断是否是 P2.0 引脚引起的中断P2IFG &= BV(HAL_KEY_JOY_MOVE_PIN); /清除中断标志/采样结果/JOYSTICK_Value = JOYSTICK_ADC_READ()

16、; 此语句不可放在这。原因将在实验资料中分析flag = 1;6 编译调试注意,如果编译出现如下错误:Error:Copy protection check,No valid license found for this product24表明 IAR 未成功。如果编译成功,就可以到开发板中运行了。如下截图,如果中途出现了错误,多数是仿真器未成功连接开发板(连接后按仿真器复位,CC-Debugger 指示灯会变成绿色,表示已识别开发板),或者是仿真器驱动没有安装好(到设备管理器了更新驱动)TIPS:如果 CC-Debugger 指示灯已经变绿,但还程序出错,这多数是由于仿真器固件受损,需要重新

17、恢复一下固件,参考 CC-Debugger 手册。在调试的过程中,大家可以设置断点,然后观察某个变量或者寄存器的值,都比较方便。如何设置断点?将光标停留在想要的语句处,然后点击如下图红圈:,或者在语句的左边的灰域双击。全速运行到断点处停止运行,这时就可以查看当前的运行状态,例如变量值,寄存器状态等。如何观察变量?如下图,右击选中的变量。Add to Watch 即可。全速运行后,可以看到开发板 LED13 轮流点亮的现象。以上就是跑马灯工程的简单调试。在 机程序的开发过程中,单步调试是非常有效的排,但是在后面的协议栈开发过程中,大多数情况下就不能单步调试了,一旦中断运行,错就会断开无线连接。7

18、 使用 Flash Programmer程序在之前,快速的将程序均使用 IAR 来编写调试程序,但很多情况下,不需要调试,需要到开发板中,然后观察现象,这时,就需要 Flash Programmer 烧写工具。使用 Flash Programmer 烧写,需要 IAR 工程设置产生HEX 文件。那么如何配置 IAR 产生 HEX 文件呢?打开工程 Options1、 如下图:框。两种方式打开2、 如下图:打开 Options框如下图,在左边选择 Linker,然后右边选择 ExtraOutput 选项卡,输入对应的名称.hex 即可。在使用 Flash Programmer 之前,需要安装。在的 Software/TI/SmartRF_Flash_Programmer 目录有该程序的安装文件,大家也可以到 TI 官网,为:/tool/flash-programmer安装之后,会在桌面生成一个快捷,或者在开始菜单里找到它,打开。如下图步骤设置,注意步骤 3 中,IAR 工程产生的 HEX 文件位于 IAR 的工程目录内,一般如下述结构:LedDebugExeLED 是 IAR 工程名。Debug,是 IAR 工程的配置名称,一个 IAR 工程可以包括多个配置,例如 Debug 和Release。或者其他用户自定的配置。 Exe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论