微处理器原理与系统设计实验手册1 实验平台概述自从TI推出超低功耗MSP430单片机以来,MSP430凭借其优越的性能,丰富的外设,易于上手的特性备受业内工程师的欢迎。
单片机MSP430G2553集成的片内外设相当丰富,包括ADC、Timer、Comparator、Touch Key、SPI、I2C、UART等,MSP-EXP430G2 LaunchPad 是TI公司推出的1款MSP430开发板,它提供了具有集成仿真功能14/20引脚DIP插座目标板,可通过Spy Bi-Wire(2线JTAG)协议对系统内置的MSP430超值系列(G系列)进行快速编程和调试。
实验平台包含MSP-EXP430G2中配套的MSP430G2553单片机片内外设实验以及2个综合性实验。
2 实验平台硬件口袋实验平台硬件原理框图如图1所示,主要有以下部分:图1 口袋实验平台硬件原理框图(1)显示和输入单元:口袋实验平台利用I2C接口的TCA6416A扩展出16个低速双向IO(IO00~IO07,IO10~IO17)。
4个扩展IO用于控制LCD驱动器HT1621,4个用于机械按键输入,8个用于LED灯柱。
(2)触摸按键单元:两个触摸按键占用P2.0和P2.5两个GPIO,MSP430G2系列单片机的P1口和P2口全部具备振荡功能。
(3)模拟输出单元:外部扩展了12位串行数模转换器DAC7311,使用P1.0/P1.3/P2.2三个普通GPIO控制。
这三个IO同时被其他单元复用,但是由于DAC7311都是高阻输入口,所以无需跳线复用。
音频功放TPA301可以将DAC输出进行电流放大,以便驱动喇叭/蜂鸣器负载。
(4)扩展存储部分:由SPI协议控制TF卡,使用P1.1/SPI SOMI、P1.2/SPI SIMO、P1.4/SPI CLK三个USCI功能IO和1个普通P2.4控制。
(5)SLOPE ADC单元:使用拨盘电位器作为待测电阻。
P1.5/Comarator_A+、P1.3、P2.2三个IO进行控制。
P1.3、P2.2复用,但同样无需跳线。
(6)PWM单元:P2.1/TA1.1负责输出SPWM;轨至轨运放TLV2372负责将SPWM滤波为双极性模拟信号;TPS60400提供运放所需负电源;三电阻网络负责将双极性信号转变为单极性信号;P1.0/ADC10负责将单极性信号采样,P1.0功能复用,同样无需跳线。
表1 口袋实验平台硬件功能单元实验首次开设时间:2015年4月28日3 实验内容实验一系统时钟的使用实验目的:学会MSP430单片机时钟系统的使用。
掌握并熟练使用单片机时钟系统。
实验内容:设定DCO频率并观察DCO频率变化。
图2 观测DCO频率变化实验原理图实验仪器:计算机、信号源、示波器等。
实验原理:(1)MSP430G2553单片机的CPU时钟来源于数控振荡器DCO。
(2)CPU通过长延时控制P1.6的LED闪烁亮灭。
(3)单片机识别P1.3机械按键以后,改变DCO参数,一次设置为1M,8M,12M和16MHz,可观察到闪烁频率增加。
注意事项:不使用扩展板进行试验,图2所示跳线帽需插上实验。
工程名:4_KEY_LED_Change_DCO.本例程主要学习单片机时钟的配置方法和前后台的编程思想:1)主函数main()中,只调用初始化函数GPIO_Init()和执行后台程序,本例中后台程序就是长延时改变LED(P1.6)的亮灭。
2)前后台程序结构中,前台程序就是各种中断中执行的程序。
中断服务程序子函数PORT1_ISR()中不要去写“实质性”代码,只调用事件检测函数,这样能提高程序可读性。
3)事件检测函数P1_IODect(),在GPIO中断服务子函数中调用,检测按键是否“一定”被按下,然后调用事件处理函数。
4)事件处理函数P13_Onclick(),一旦被调用,就循环改写DCOCTL和BCSCTL1寄存器,从而改变DCO(也就是CPU)频率。
5)前后台程序中,前台程序的编写是难点。
但只要坚持用“事件检测”“事件处理”的方法处理,就能变得井井有条。
实验结果:对应的LED灯闪烁作业:ACLK,SMCLK通过设置输出到I/O口,编程实现不同频率(自选3个频率点)的输出,并且用示波器观测波形是否满足程序的要求。
实验二 MSP430单片机定时器的使用实验目的:学会MSP430单片机定时器的使用。
实验内容:基于PWM的LED调光控制,即通过按键控制LED亮度。
图3 LED调光控制实验原理图实验仪器:计算机、信号源、示波器等。
实验原理:1)TA(Timer_A定时器)可用于自动输出PWM而无需CPU干预。
2)编写PWM初始化、设定频率、改写占空比的库函数文件TA_PWM.c。
3)主函数调用库函数TA0_PWM_Init()完成TA_PWM初始化,然后休眠。
4)P1.3事件处理函数中,循环递增静态局部变量Bright的值,并调用库函数TA0_PWM_SetPeriod()改写占空比参数。
注意事项:不使用扩展板进行实验,图3所示跳线帽需插上实验。
工程名:6_PWM_LED.本实验主要学习TA自动生成PWM的原理,外部库函数文件的使用,静态局部变量的使用。
TA生成PWM波形的本质就是通过改写定时器的TACCR0寄存器改变PWM频率,改写TACCR1/2寄存器改变占空比。
编写库函数文件方便在各种程序中都能调用。
作业:1.在MSP430G2553单片机中,P1.0口和P1.6口通过晶体管控制两只灯泡的亮度。
要求从P1.0引脚输出占空比75%的PWM调制波形,从P1.6引脚输出占空比50%的PWM调制波形。
频率约为100Hz。
要求编写调试,并在LaunchPad实验板上调试通过。
2.用MSP430G2553单片机设计一个可编程的分频器,要求分频过程无需CPU干预,且可通过软件随时更改分频比。
从P1.0引脚(TACLK引脚)输入,从P2.0(TA1.0)输出。
要求在LaunchPad实验板上调试通过。
实验三定时扫描非阻塞按键实验目的:学会MSP430单片机定时器的使用,掌握消除阻塞的编程方法。
实验内容:通过WDT定时周期性读取IO状态,准确识别按键按下和弹起。
图4 定时扫描按键实验原理图实验仪器:计算机等。
实验原理:1)WDT定时器设置为16ms中断。
2)在WDT中断中,记录下最近两次的IO状态存在KEY_Now和KEY_Past中。
根据前高后低可判断按键按下,前低后高可判断按键松开。
3)事件处理函数P13_Onclick()根据按键状态切换LED亮灭。
注意事项:不使用扩展板进行实验,图4所示跳线帽需插上实验。
工程名:7_2_Timer_Key_LED本实验主要学习定时扫描在消除CPU阻塞中的作用,以及消抖的原理。
CPU“无遗漏”地查询时间发生是产生阻塞代码的重要原因。
定时扫描消抖原理如图5所示。
定时扫描的精髓在于扫描的间隔足够短,保证不会遗漏“事件”。
图5 定时扫描消抖原理图作业:编写一个按键检测函数,自行决定P1.3按键按下和按键松开手,两个LED做出何反应。
实验四长短键识别图6 长短按键实验原理图实验目的:掌握状态机建模的设计方法。
实验内容:通过WDT定时周期性读取IO状态,识别按键按下和弹起,以及按下的时间。
判断为短按键则切换LED1亮灭,判断为长按键则切换LED2亮灭。
实验仪器:计算机、示波器、万能板、按键3只、导线等。
实验原理:1)WDT定时器设置为16ms中断。
在WDT中断中,记录下最近两次的IO状态存在KEY_Now 和KEY_Past中。
根据前高后低可判断按键按下,前低后高可判断按键松开,存入标志位Key_Dect中。
2)Key_Dect作为输入量,利用状态机函数Key_SM(),判断出短按键事件。
分别调用各自事件处理函数进行处理。
注意事项:不使用扩展板进行实验,图6 所示跳线帽需插上实验。
工程名:7_3_Key_Long_Short_Mealy;7_4_Key_Long_Short_Moore本实验主要学习状态机建模的方法。
1)当事件检测函数不能仅根据当前发生的事就做出最终事件判断,就需要启用状态机建模的方法了。
图7 长短按键的状态机2)状态机的核心,状态转移图如图7所示。
只有当前“状态”加上当前“事件”(输入)才能决定下一步要干什么(下一状态和当前事件处理)。
3)任何状态机都有两种“公式化”无需动脑的代码描述方法。
米利状态机是先switch(状态),然后再看发生了什么事件。
摩尔状态机是先if(事件),然后switch(状态);两者没有本质区别。
本实验的两个工程分别用米利状态机和摩尔状态机编写,它们之间只有Key_SM()函数不一样。
图7 所示状态转换图适用于任何类型的长短键识别,只要“告诉”状态机按键按下和按键松开两个事件就可以。
作业:1.编写一个长短按键检测函数,自行决定长短按键后,两个LED做出何反应。
2.通过万能板扩展3个按键(S1、S2、S3),按下为低电平。
编写一个键盘程序。
要求能够识别长、短按键并返回不同键值,而且通过LED发光二极管以及蜂鸣器来反应出不同的按键。
当按键时间小于2s时,认为是一次短按键,按键时间大于2s时,认为是一次短按键,按键时间大于2s后返回一次长键(0Xc0+键值),之后每隔0.25s返回一次连续长按键(0x80+键值),发光二极管LED和蜂鸣器的动作自行决定。
且要求键盘程序不阻塞CPU运行。
3.某电子表具有两个按键A和B用于操作和设置,按键功能和操作方法如下。
为该电子表的按键操作程序画出状态转移图,并写出代码进行调试。
在显示时间时按A键,屏幕显示编程日期在显示日期时按A键,屏幕显示变成秒钟在显示秒钟时按A键,屏幕显示变成时间在显示秒钟时按B键,秒钟归0在时间或日期显示时按B键,屏幕“时”闪烁在“时”闪烁时按A键,屏幕“时”加1,超过23回0在“时”闪烁时按B键,屏幕“分”闪烁在“分”闪烁时按A键,屏幕“分”加1,超过59回0在“分”闪烁是按B键,屏幕“月”闪烁在“月”闪烁时按A键,屏幕“月”加1,超过12回0在“月”闪烁时按B键,屏幕“日”闪烁在“日”闪烁时按A键,屏幕“日”加1,超过31回0在“日”闪烁时按B键,屏幕回到时间显示实验五电容触摸按键图8 电容触摸按键实验原理图实验目的:掌握电容触摸按键的工作原理、设计方法和使用。
实验内容:振荡测频法识别触摸按键,根据键值改写P1.0口LED亮灭。
实验仪器:计算机、示波器等。
实验原理:1)初始化GPIO的振荡功能,并将振荡信号作为TA的时钟源。
2)设置WDT中断16ms,16ms中TA定时器的TAR计数值即是电容触摸振荡的“频率”,这就是测频原理。
频率高于门限,则判断手指接近,记为1;低于门限,手指离开,记为0。