logo
 
首页-> 应用方案
8位单片机应用方案
16位单片机应用方案
凌阳8位单片机SPMC65P2404A 做A/D键盘扫描
文章来源:凌阳单片机推广中心  发布时间:2006-1-4 17:53:13

摘  要:本系统应用于凌阳SPMC65系列单片机上, 利用ADC功能扫描16个按键的动作与规格说明,提供的程序的硬件部分是以SPMC65P2404 A *28P为开发对象。
1.1   引言
  本应用采用芯片SPMC65P2404A*28P,利用其AD转换功能,扫描16个按键,并通过发光二极管将键值显示出来。
  本应用只响应单个按键,若同时按下两个或两个以上的按键,则AD会采到错误的电压值,程序或者不响应,或者给出错误的键值。
1.2   芯片简介
  SPMC65P2404A属于8位通用单片机系列,为针对家用电器、工业控制应用设计的工业级芯片;并为其应用领域作了具有针对性的增强设计;如:抗干扰能力,增强的复位系统,该系列单片机最突出的优点在于抗干扰能力,广泛应用于家用电器、工业控制、仪器仪表、安防报警、计算机外围等领域。
芯片简介:
■SPMC65 CPU
-支持182条指令
-支持11种寻址方式
-系统时钟频率最高可达8MHz
-支持位操作指令(置1、清零、取反、测试)

■存储空间
-4K字节的程序空间(OTP),并且可设置保密功能。
-192字节的RAM(含堆栈空间)

■I/O端口
-23(28 Pin)/15(20 Pin)个具有复用功能的双向I/O端口
-可编程设置为带上拉/下拉电阻输入或者悬浮输入
-其中2个I/O 端口能提供20mA 的吸入电流

■中断管理
-外部中断选项:非屏蔽中断NMI或可屏蔽中断IRQ
-支持4个外部中断,其中的一个可设置为非屏蔽中断NMI
-12个内部中断

■复位管理
-上电复位(POR)
-低电压复位(LVR)
-看门狗复位(WDR)
-外部复位(ERST)
-非法地址复位(IAR)

■时钟管理
-3种时钟源:晶体/陶瓷振荡器、RC振荡器、外部时钟输入
-在RC振荡模式下,能够输出时钟信号

■电源管理
-2种省电模式:STOP模式、HALT模式

■2个外围模拟电路
-8通道10位精度的A/D转换器(100KHz)
-低电压复位(2.5V/4V)

■2通道8位定时/计数器(Timer0,Timer2)
-定时、计数功能
-捕获功能(8位脉宽测量)
-8位比较输出功能

■2通道16位定时/计数器(Timer1,Timer3)
-定时、计数功能
-捕获功能(8位脉宽/周期测量,或16位脉宽测量)
-16位比较输出功能
-12位PWM输出功能

■时基定时器
-频率选择:1KHz ~ 62.5KHz @8MHz

■蜂鸣器输出
-频率选择:1KHz ~ 2MHz @8MHz

■可编程看门狗定时器
-频率选择:1.5Hz ~ 195Hz @25KHz

1.3   设计原理
  原理图如图1-1所示,PA0为模拟电压输入口,初始化为悬浮状态。PC3~PC0初始化为输出低电平,分别接4个发光二极管,它输出的16种状态1111~0000分别表示按键S15~S0被按下。
  当不同的按键被按下时,AD转换的电压不同,通过AD转换值便可以判断出是哪个按键被按下。AD转换出来的结果共有10位,在程序中取其高8位作为有效位,便可以分辨出16个按键。按键、输入电压和AD转换值(高8位)的对应关系如表1所示。

图1-1 键盘显示原理图

 

按键

S0
S1
S2
S3
S4
S5
S6
S7
S8
S9
S10
S11
S12
S13
S14
S15

  转换电压(V)
0
0.156
0.469
0.781
1.094
1.406
1.719
2.031
2.344
2.656
2.969
3.281
3.594
3.906
4.219
4.531
4.844

 AD转换值(理论)
$00
$08
$18
$28
$38
$48
$58
$68
$78
$88
$98
$A8
$B8
$C8
$D8
$E8
$F8

  但是,在实际中不可能得到很准确的AD转换值,这是由于存在以下几种误差:
  ◆ 对于同一个电压值,AD多次转换的结果不可能完全相同。
  ◆电阻的误差。电阻值由于制作以及温度的原因,误差较大,所以不可能得到很准确的分压。本例采用的电阻精度为±5%。
  ◆其它干扰。
  在本例中,允许AD转换值的误差范围为:±4。将该误差换算为:
  每个按键的输入电压的允许误差:±(4 /256)*5.0v= ±0.078v
  每个按键的分压电阻的允许误差:±(4 /256)*16000欧= ±250欧
  误差示意图如图1-2所示,若按键S5被按下,经过AD转换,若实际转换值在允许误差之内,即: (理论值 -4)≤实际转换值(高8位)<(理论值+4),则认为S5被按下,否则程序不响应。其它按键处理方法与此相同。
  在电阻的选用时,应该非常注意电阻的累计误差。例如在图1-1中,如果电阻R0~R9均比实际值高出25欧,则累加到电阻R10时,电阻值的累计误差为250欧,则电阻值会超出允许范围,从而采到错误的电压值。
  如果选用精度为±1%电阻,则可以分辨出32个按键。


图1-2  AD转换值的允许误差
  消抖方法:在按键闭合和打开的瞬间会产生许多尖脉冲,持续时间约几毫秒到几十毫秒。因而在程序中,当检测到按键被按下后,便开始读取键值,每隔8ms读一次键值,直到连续4次读取的键值完全相同,则认为抖动已经消除。消抖时间为8ms X 4=32ms。

1.4   软件设计
  主程序每隔8ms扫描一次键盘,并刷新一次显示。主程序流程如图1-3所示。

图1-3主流程图

1.5   结语
  利用A/D做键盘扫描,可以大大节省单片机的 IO口资源。

                            
 相关文章                                                      [top]
 ·SPMC65P2404A做红外接收 [2006-02-08]
版权所有:北京凌阳爱普科技有限公司 京ICP备05061966号 未经许可网站内容严禁复制、转载,任何人不得擅自使用
友情链接:凌阳爱普 嵌入式培训 安卓培训 凌阳大学计划 北京嵌入式培训 深圳嵌入式培训 成都嵌入式培训