基于ARM7 TDMI-S CPU的LPC2103的多功能电子钟
1)时钟显示功能,采用数码管的动态扫描工作方式,可通过键盘分别选择显示年或者月/日或者时/分或者分/秒,
2)在键盘电路中,第一次中断判断有无键按下,若有按下则实行定时一次,下一次中断开始扫描。
3)具有校准年、月、日、时、分的功能。
4)闹钟功能,可按设定的时间闹时,随时开启或关闭闹钟。
二、元器件的介绍
我在这次的课程设计中使用的主芯片是LPC2103,下面对其进行简要的介绍。
LPC2103是一个基于支持实时仿真的16/32位ARM7 TDMI-S CPU的微控制器,并带有32kB的嵌入高速Flash存储器,128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。
较小的封装和极低的功耗使LPC2103适用于访问控制器和POS机等小型应用系统中;由于内置了宽范围的串行通信接口(2个UART、SPI、SSP和2个I2C)和8KB的片内SRAM,LPC2103也适合用在通信网关和协议转换器中。32/16位定时器、增强型10位ADC、定时器输出匹配PWM特性、多达13个边沿、电平触发的外部中断、32条高速GPIO,使得LPC2103微控制器特别适用于工业控制和医疗系统中。
器件信息:
管脚信息:(LQFP48管脚配置 )
三、设计方案
硬件电路设计介绍:
1、键盘模块
整个硬件上总共使用了10个独立键盘,4个是开发板上原有的按键,6个是我利用多余的IO引脚焊接的按键。按键在没有被按下时,10个按键(P0.16 P0.14 P0.15 P0.18 P0.2 P0.3 P0.4 P0.5 P0.27 P0.6 P0.7)通过10K的电阻连接到3.3V的高电平,当按键被按下时,和GND相连接,被置为低电平。
2、数码管显示模块
使用串行输入/并行输出的8位移位寄存器74HC164,该移位寄存器是上升沿有效,将8位笔段码送给共阳数码管。(注:DATA为数据输入端,接P0.26;CLK为时钟输入端,接P0.13),与三极管相连的是数码管的位选端,选择哪位数码管被点亮,用于数码管的动态显示。
3、蜂鸣器模块
该蜂鸣器是一个无源蜂鸣器,要使用PWM驱动。其连接的是芯片的P0.5端。
4、LED模块
LED的连接如图所示,当管脚置为低电平时,可以将LED点亮,6个LED分别与LPC2103的P0.25 P0.12 P0.11 P0.10 P0.24 P0.23相连。
5、UART接口电路模块
由于开发板是3.3V供电系统,需要使用电平转换芯片SP3232E来进行RS-232电平转换。SP3232E的工作电压为3.3V,电平转换电路如图所示。当使用ISP功能下载程序时,需要将PC机的串口与开发板的串口相连,按下与P0.14相连的按键,短接P0.14,在系统复位时,进入ISP状态,用于下载HEX文件。这个开发板有两个串口,一个用于下载程序进主芯片,另外一个用于串口在上位机上输出显示各个变量的值,可用于调试程序。
按键功能介绍:(用户使用说明书)
Key1(P0.16):对显示的数码管进行年月日时分秒的显示切换
Key2(P0.14):在时间设置或者闹钟设置按键有效的情况下,进行自加1的向上调节,对时间或者闹钟进行设置,其余情况下该按键是无效状态
Key3(P0.15):在时间设置或者闹钟设置按键有效的情况下,进行自减1的向下调节,对时间或者闹钟进行设置,其余情况下该按键是无效状态
Key4(P0.18):时间设置按键,按下表示开始进行时间设置或跳出时间设置
Key5(P0.2 ):闹钟设置按键,按下表示开始进行闹钟设置
Key6(P0.3 ):闹钟设置移位按键,按下表示进行闹钟时和分的切换设置
Key7(P0.4 ):闹钟设置结束按键,按下表示跳出闹钟设置模式;另外可以关闭蜂鸣器
Key8(P0.27):闹钟开启按键,在Key5按下的情况下按下此键表示开启该组闹钟
Key9(P0.6 ):闹钟关闭按键,在Key5按下的情况下按下此键表示关闭该组闹钟
Key10(P0.7):用于串口输出信息,可以输出当前的时间和显示开启的闹钟设置时间
当Key10按下时,会在串口中输出信息如图所示:(RTC为输出当前时间,接下来是闹钟)
程序设计及流程图:
主程序流程图:
时间和闹钟设置程序流程图:
IO口的初始化模块:
LPC2103控制器的引脚都具有多种功能,但是每个引脚在某一时刻只能选择一种功能。当使用一个功能外设时,如果需要相应的引脚参与(如GPIO等),则必须在实现这一功能之前先设置好引脚的功能,否则无法实现该外设功能。LPC2103具有两个PINSEL寄存器,PINSEL0和PINSEL1,PINSEL0和PINSEL1寄存器中的每两个位控制着一个引脚的功能,所以一个引脚最多可以有4种不同的功能选择。当引脚选择GPIO功能时,使用寄存器IODIR可以控制引脚的方向,另外IOCLR、IOSET两个寄存器分别可以将引脚初始化设置为低电平或者高电平。所以,在主程序开始是时的GPIO初始化中包含如下几个子函数:
void
ARM7TDMI-SLPC2103多功能电子 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)