当前位置:文档之家› 基于msp430单片机的数字时钟

基于msp430单片机的数字时钟

摘要:日期时间显示器可以说是各种各样,随处可见,这里我们着重设计一款超低功耗的,显示内容较为丰富的日期时间显示器。

该日期时间显示器是基于MSP430单片机和LCD1602液晶显示器。

MSP430单片机最显著的特点是能够超低功耗运行,正是由于这一特点,用MSP430来做日期时间显示器,可以很有效地降低功耗,节约电能。

同时LCD1602是微功耗的液晶显示器,显示内容丰富。

目录摘要 (1)一、MSP430单片机最小系统 (3)二、LCD1602液晶显示器 (3)三、按键和闹铃 (6)四、主程序框图 (7)五、MSP430单片机的内部设置 (8)1、时钟系统与低功耗模式 (8)2、I/O口 (9)3、Basic Timer基础定时器 (10)一、MSP430单片机最小系统在传统的微处理器系统中,要让系统运行,至少要提供电源、时钟和复位信号,而在MSP430单片机中,内部就带有复位电路(BOR)、片内数控时钟源(DCO),因此只需外加电源即可构成可运行的最小系统。

由于内部DCO误差很大(20%),且受温度影响严重。

只适合为CPU运算提供时钟,或在对时间误图1差要求极其宽松的场合。

但是在这里我们要做日期时间显示器,就必须通过外部晶体作为时钟源。

MSP430单片机通常使用32.768kHz的手表晶振作为外部时钟。

MSP430最小系统设计如图1所示。

二、LCD1602液晶显示器LCD1602是工业字符型液晶,能够同时显示16×02即32个字符。

市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此表1HD44780写的控制程序可以很方便地应用于市场上大部分的字符型液晶。

字符型LCD通常有14个引脚线或16个引脚线,多出来的两条线是背光电源线VCC (15脚)和地线GND(16脚),其控制原理与14脚的LCD完全相同。

管脚具体定义如表1所示。

HD44780内置了DDRAM、CGROM和CGRAM。

DDRAM就显示数据RAM,用来寄存待显示的字符代码。

共80个字节,其地址和屏幕的对应关系如表2所示。

但是,在LCD1602中我们只用到每行的前16个,即如表3所示。

也就是说我们想在LCD1602第一行第一列显示一个“A”字,就要向DDRAM的00H地址写入“A”字的代码就行了。

HD44780内置了192个常用字符的字模,存于字模产生器CGROM (Character Generator ROM ),另外还有8个允许用户自定义的字符产生RAM ,称为CGRAM (Character Generator RAM )。

HD44780一共有11条指令,通过这些指令来对DDRAM 的内容和地址进行具体的操作,实现丰富的显示功能。

这11条指令这里就不作说明了。

LCD1602与MSP430的连接如图2所示。

表2表3图2三、按键和闹铃按键和闹铃与MSP430连接如图3所示。

其中,闹钟时刻到时,P2.0输出低电平,蜂鸣器开始工作,发出蜂鸣声。

图3四、主程序框图否与闹铃时间相等是发送闹铃音乐定时中断秒钟计数器计数刷新显示退出图4:主程序框图五、MSP430单片机的内部设置1、时钟系统与低功耗模式时钟系统是MSP430单片机中最为关键的部件。

通过时钟系统可以在功耗和性能之间寻求最佳的平衡点,为单芯片系统与超低功耗系统设计提供灵活的实现手段。

在MSP430单片机中,通过时钟系统的配置最终产生3种时钟:MCLK:主时钟(Master Clock)。

MCLK是专为CPU运行提供的时钟。

MCLK 配置得越高,CPU执行速度就越快。

MCLK一般都设在1MHz以上一发挥CPU 性能;一旦关闭MCLK,CPU也随之停止工作。

CPU是系统中耗电较大的部件之一,但大部分应用中都只有少数时间需要CPU运算。

因此在超低功耗系统中都通过间歇开启MCLK(唤醒CPU)的方式来降低功耗。

SMCLK:子系统时钟(Subsystem Master Clock),也称辅助时钟。

单片机内部某些设备需要高速时钟(如定时器、ADC等),SMCLK为这些需要高速工作的设备提供时钟源,并且SMCLK是独立于MCLK的:当关闭主时钟MCLK让CPU停止工作时,子系统时钟SMCLK仍然可以开启,从而让外设继续工作。

ACLK:活动时钟(Active Clock)。

ACLK一般是由32.768kHz晶体直接产生的低频时钟,在单片机运行过程中一般不关闭,用于产生节拍时基,或和定时器配合间歇唤醒CPU。

时钟系统中对3种时钟不同程度的关闭,实际上就是不同的休眠模式。

关闭的时钟越多,休眠越深。

当全部的时钟,包括活动时钟ACLK 也被关闭的时候,功耗降到最低(0.1uA)。

超低功耗是MSP430单片机的一大特色。

MSP430系列单片机具有5种不同深度的低功耗休眠模式。

在空闲时,通过不同程度的休眠,将内部各个模块尽可能地被关闭,从而降低功耗。

关闭模块最简单的途径是关闭时钟,因此低功耗模式的管理是通过时钟系统来完成的。

共有4个控制位参与:CPUPFF、SCG0、SCG1、OSCOFF。

通过这4个位的不同组合,构成了5种低功耗休眠模式(见表4)。

从表中可以看出规律:随着休眠深度依次加深,时钟系统中被关闭的部件数目依次增加,而功耗也依次降低。

当系统暂时空闲时,应尽可能进入低功耗模式。

而且要根据系统中可以被关闭的模块和时钟决定低进入何种功耗模式,使休眠最深且仍能被唤醒(见表5)表5:MSP430单片机低功耗模式与时钟的关系2、I/O 口I/O 口是处理器系统对外沟通的最基本部件,在这里我们着重讨论I/O 口中断,因为在这个设计中所有的键盘输入都是通过中断来实现的,这样可以使系统尽可能地工作在低功耗模式,实现MSP430的低功耗运用。

在MSP430所有的单片机中,P1口、P2口总共16个I/O 口均能作引发中断。

在MSP430x42x 系列中,14个I/O 都属于P1或P2口,因此每个I/O 都能作为中断源使用。

通过下列两个寄存器配置I/O 口作为中断使用:PxIE 寄存器用于设置每一位I/O 的中断允许: 0=不允许 1=允许 PxIES 寄存器用于选择每一位I/O 的中断触发沿:0=上升沿 1=下降沿 在使用I/O 中断之前,需要先将I/O 设为输入状态,并允许该位I/O 的中断,再通过PxIES 寄存器选择触发方式为上升沿触发或者下降沿触发。

PxIFG 寄存器是I/O 中断标志寄存器: 0=不成立 1=成立 无论中断是否被允许,也不论是否正在执行中断服务程序,只要对应I/O 满足了中断条件,PxIFG 中的相应位都会立即置1并保持,只能通过软件人工清除。

这种机制的目的在于最大可能的保证不会漏掉每一次中断。

不过注意,在退出中表4:MSP430单片机低功耗模式断前一定要人工清除中断标志,否则该中断会不停被执行。

3、Basic Timer 基础定时器MSP430F4xx 单片机内部专门提供了一个产生周期节拍的定时器,叫做基础定时器(Basic Timer )。

它能在无需CPU 干预的情况下产生2N个时钟周期的定时中断,供间歇唤醒系统用。

当Basic Timer 时钟选择32.768kHz 时,定时周期恰好12Ns ,可以为秒表等计时程序提供精确时基。

与此同时,Basic Timer 定时器还为LCD 的刷新提供时钟。

通过Basic Timer 的设置可以改变LCD 的刷新频率。

Basic Timer 结构与原理如结构图(图5)所示。

从结构图上看,Basic Timer 基础定时器更像是一个二进制分频器。

该分频器由两级分频器级联而成,每级256分频。

第一级分频器(BTCNT1)的时钟只能是ACLK ,它的输出为LCD 刷新提供时钟。

而第二级分频器的时钟源可以是ACLK 、SMCLK 或是ACLK 经过第一级256分频后的输出(级联)。

从第二级分频过程中可以选择输出抽头作为中断源,从而通过改变分频系数来改变中断间隔时间。

两级分频器级联后最多构成65536分频(162分频)采用32.768kHz 时钟时,最图5:Basic Timer 机构图长定时周期为2s。

Basic Timer基础定时器总共有5个控制位:BTDIV、BTHOLD、BTSSEL、BTFREQx、BTIPx。

都位于BTCTL寄存器。

特别注意,该寄存器在复位后保持不变,没有默认值,因此上电后一定要对该寄存器进行设置。

在Basic Timer第二级分频器的8个输出抽头中,被选中的抽头每次由0到1的跳变(计数进位)会产生中断标志。

若Basic Timer中断被允许,则会引发中断。

相关标志位有:BTIE:Basic Timer中断允许位0=禁止1=允许(位于IE2寄存器)该控制位决定是否允许Basic Timer中断。

当不需要使用Basic Timer中断时,关闭该控制位。

但注意关闭Basic Timer中断并不停止Basic Timer的运行。

若不使用Basic Timer应该将BTHOLD位置1,以节省电能。

BTIFG:Basic Timer中断标志位0=无中断发生1=中断发生(位于IFG2寄存器)每次计数器溢出,都会将BTIFG自动置1.。

此时若总中断和BTIE被允许,则会引发中断。

Basic Timer独占一个中断源,在中断内无需再判断标志位。

因此发生中断后BTIFG会被硬件自动清除。

10。

相关主题