微处理器原理与系统设计实验_第1页
微处理器原理与系统设计实验_第2页
微处理器原理与系统设计实验_第3页
微处理器原理与系统设计实验_第4页
微处理器原理与系统设计实验_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、微处理器原理与系统设计实验手册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

2、中配套的MSP430G2553单片机片内外设实验以及2个综合性实验。2 实验平台硬件口袋实验平台硬件原理框图如图1所示,主要有以下部分:图1 口袋实验平台硬件原理框图 (1)显示和输入单元:口袋实验平台利用I2C接口的TCA6416A扩展出16个低速双向IO(IO00IO07,IO10IO17)。4个扩展IO用于控制LCD驱动器HT1621,4个用于机械按键输入,8个用于LED灯柱。(2)触摸按键单元:两个触摸按键占用P2.0和P2.5两个GPIO,MSP430G2系列单片机的P1口和P2口全部具备振荡功能。(3)模拟输出单元:外部扩展了12位串行数模转换器DAC7311,使用P1.0/P1.

3、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;轨至轨

4、运放TLV2372负责将SPWM滤波为双极性模拟信号;TPS60400提供运放所需负电源;三电阻网络负责将双极性信号转变为单极性信号;P1.0/ADC10负责将单极性信号采样,P1.0功能复用,同样无需跳线。表1 口袋实验平台硬件功能单元名称元件IO功能IO扩展TCA6416AP1.6/I2C SDAP1.7/I2C SCL利用I2C协议控制TCA6416A获得16个低速IOIO00IO07IO10IO17显示HT1621128段LCDIO14/扩展IO;IO15/扩展IOIO16/扩展IO;IO17/扩展IO4个I2C扩展IO控制HT1621HT1621控制段式液晶机械按键微动开关*4IO1

5、0/扩展IO;IO11/扩展IOIO12/扩展IO;IO13/扩展IO4个I2C扩展IO识别机械按键LED灯柱0603LED*8IO00/扩展IO;IO01/扩展IOIO02/扩展IO;IO03/扩展IOIO04/扩展IO;IO05/扩展IOIO06/扩展IO;IO07/扩展IO8个I2C扩展IO控制8个LED触摸按键覆铜P2.0、P2.5电容触摸按键模拟输出DAC7311TPA301、蜂鸣器P1.0/复用、P1.3/复用、P2.2/复用12位串行DAC7311、BTL乙类功率放大器扩展存储TF卡槽P1.1/SPI SOMI、P1.2/SPI SIMO、P1.4/SPI CLK、P2.4基于S

6、PI的TF卡读写SLOPE ADC拨盘电位器P1.5/Comparator_A+、P1.3/复用、P2.2复用利用比较器实现积分型ADCPWMTLV2372TPS60400三电阻网络P2.1/TA1.1、P1.0/ADC10/复用PWM波形合成双极性信号的ADC采样 实验首次开设时间:2015年4月28日3 实验内容实验一 系统时钟的使用实验目的:学会MSP430单片机时钟系统的使用。掌握并熟练使用单片机时钟系统。实验内容:设定DCO频率并观察DCO频率变化。图2 观测DCO频率变化实验原理图实验仪器:计算机、信号源、示波器等。实验原理:(1)MSP430G2553单片机的CPU时钟来源于数控

7、振荡器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()中不要去写“实质性”

8、代码,只调用事件检测函数,这样能提高程序可读性。3)事件检测函数P1_IODect(),在GPIO中断服务子函数中调用,检测按键是否“一定”被按下,然后调用事件处理函数。4)事件处理函数P13_Onclick(),一旦被调用,就循环改写DCOCTL和BCSCTL1寄存器,从而改变DCO(也就是CPU)频率。5)前后台程序中,前台程序的编写是难点。但只要坚持用“事件检测”“事件处理”的方法处理,就能变得井井有条。实验结果:对应的LED灯闪烁作业: ACLK,SMCLK通过设置输出到I/O口,编程实现不同频率(自选3个频率点)的输出,并且用示波器观测波形是否满足程序的要求。实验二 MSP430单片

9、机定时器的使用实验目的:学会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所示跳线

10、帽需插上实验。工程名: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单片机设计一个可编程

11、的分频器,要求分频过程无需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_On

12、click()根据按键状态切换LED亮灭。注意事项:不使用扩展板进行实验,图4所示跳线帽需插上实验。工程名:7_2_Timer_Key_LED本实验主要学习定时扫描在消除CPU阻塞中的作用,以及消抖的原理。CPU“无遗漏”地查询时间发生是产生阻塞代码的重要原因。 定时扫描消抖原理如图5所示。定时扫描的精髓在于扫描的间隔足够短,保证不会遗漏“事件”。图5 定时扫描消抖原理图作业:编写一个按键检测函数,自行决定P1.3按键按下和按键松开手,两个LED做出何反应。 实验四 长短键识别图6 长短按键实验原理图实验目的:掌握状态机建模的设计方法。实验内容:通过WDT定时周期性读取IO状态,识别按键按下和

13、弹起,以及按下的时间。判断为短按键则切换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_Lo

14、ng_Short_Moore本实验主要学习状态机建模的方法。1)当事件检测函数不能仅根据当前发生的事就做出最终事件判断,就需要启用状态机建模的方法了。图7 长短按键的状态机2)状态机的核心,状态转移图如图7所示。只有当前“状态”加上当前“事件”(输入)才能决定下一步要干什么(下一状态和当前事件处理)。3)任何状态机都有两种“公式化”无需动脑的代码描述方法。米利状态机是先switch(状态),然后再看发生了什么事件。摩尔状态机是先if(事件),然后switch(状态);两者没有本质区别。本实验的两个工程分别用米利状态机和摩尔状态机编写,它们之间只有Key_SM()函数不一样。图7 所示状态转换图

15、适用于任何类型的长短键识别,只要“告诉”状态机按键按下和按键松开两个事件就可以。作业:1. 编写一个长短按键检测函数,自行决定长短按键后,两个LED做出何反应。2.通过万能板扩展3个按键(S1、S2、S3),按下为低电平。编写一个键盘程序。要求能够识别长、短按键并返回不同键值,而且通过LED发光二极管以及蜂鸣器来反应出不同的按键。当按键时间小于2s时,认为是一次短按键,按键时间大于2s时,认为是一次短按键,按键时间大于2s后返回一次长键(0Xc0+键值),之后每隔0.25s返回一次连续长按键(0x80+键值),发光二极管LED和蜂鸣器的动作自行决定。且要求键盘程序不阻塞CPU运行。3.某电子表

16、具有两个按键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回

17、0在“日”闪烁时按B键,屏幕回到时间显示实验五 电容触摸按键图8 电容触摸按键实验原理图实验目的:掌握电容触摸按键的工作原理、设计方法和使用。实验内容:振荡测频法识别触摸按键,根据键值改写P1.0口LED亮灭。实验仪器:计算机、示波器等。实验原理: 1)初始化GPIO的振荡功能,并将振荡信号作为TA的时钟源。2)设置WDT中断16ms,16ms中TA定时器的TAR计数值即是电容触摸振荡的“频率”,这就是测频原理。频率高于门限,则判断手指接近,记为1;低于门限,手指离开,记为0。3)测频结果存入二维数组Key_BufferKey_Num0/1/2/3中。Key_Num用于区分多个触摸按键的序号,

18、0-3则是最近4次的测量结果(FIFO思想)。4)调用判据函数Key_Judge(),只有连续4次测频结果为1,才算“电容触摸”按键真按下,只有连续4次测频结果均为0,才算按键松开。5)将最终按键的判断结果存入全局变量TouchIN中。6)按需查询TouchIN,即可作相应事件处理。注意事项:测频的“家伙”只有一套,所以多个触摸按键需要轮流测频,通过静态局部变量Key_Num区分触摸按键编号。中间的“home”按键相当于手指同时触摸到两块铜皮,TouchIN中2位为1的情况。工程名:8_1_TouchPad_LED.本实验主要学习振荡IO的测频方法,FIFO原理,全局变量的作用。对于带振荡功能

19、的IO,电容触摸按键识别本质就是测频。测频的方法也很简单,就是在16ms的WDT中断中数TA的计数值。难点在于多个触摸按键怎么处理,触摸判别的可靠性,以及如何“方便”地使用触摸按键,不能总是把它当特别麻烦的特殊案件来看待。1)所有的工作都在16ms的WDT中断中进行,用TouchIN_Dect()函数完成触摸按键的识别,并将结果更新在局部变量TouchIN中。也就是说,只要每16ms调用一次TouchIN_Dect(),就能保证全局变量TouchIN中存的是按键键值。 2)无论多少个触摸按键,轮流测频,并记录数据。 3)引入FIFO的概念,依靠最近4次的测频结果,判断按键是否按下。4) Tou

20、chIN这个全局变量的地位等同于单片机IO状态寄存器PxIN。作业:写一个按键检测函数,自行决定触摸按键按下和松开后,两个LED做出何反应。实验六 电容触摸长短键图9 电容触摸长短按键实验原理图实验目的:掌握电容触摸按键的工作原理、设计方法和使用。实验内容:调用电容触摸库函数,使用状态机识别出长短触摸按键,短按键控制P1.0口LED亮灭,长按键控制P1.6口LED亮灭。实验仪器:计算机、示波器等。实验原理:1)在16ms的WDT中断中,调用TouchIN_Dect()库函数,即时保持TouchIN数据准确。2)把TouchIN当作机械按键消抖后的按键结果“Key_Dect”来使用,套入Key_

21、SM()状态机函数,实现长短按键识别。3)根据长短按键,调用事件处理函数。注意事项:按键按下和按键松开的判据为TouchIN前0后1和前1后0,这与机械按键的电平正好是相反的。工程名:8_2_TouchPad_Long_Short_Mealy本实验主要学习状态机代码的移植,和硬件无关的编程思想。WDT定时调用TouchIN.c中的外部函数TouchIN_Dect()库函数就可以保证全局变量TouchIN存的就是最新的触摸按键键值,该键值是无需再消抖处理的。机械按键的长短键状态与触摸按键的状态机没有任何区别。参考前面的图8 ,状态都是3个,按键按下和按键松开的判据替换成判断TouchIN前0后1

22、和前1后0即可。作业:通过触摸按键来控制发光二极管的亮灭以及发光的亮度。实验七 超级终端人机交互图10 超级终端实验原理图实验目的:学习使用UART串口通信。实验内容:利用计算机超级终端控制G2板上的两个LED亮灭。实验仪器:计算机、信号源、示波器等。实验原理:1)G2 LaunchPad支持直接通过USB下载口以UART方式连接计算机。2)UART设为波特率9600,8位数据,无校验,1位停止位,可使用Grace配置后再移植。3)引入软件FIFO,分别实现Tx和Rx数据无阻塞收发。4)CPU对Rx数据进行各种判别,控制相应LED亮灭,并Tx数据回计算机以实现回显和提示。注意事项:要实现UAR

23、T连接,必须将图10中的RXD/TXD两个跳线横着插。工程名:10_UART_KeyBoard.本实验主要学习UART的配置软件FIFO的使用,文件管理。 1)UART的初始化较为复杂,可以使用Grace帮助配置寄存器,并单独建一个初始化文件。 2)由于CPU读写UART缓存的速度极快,而UART与计算机通信的速度极慢,所以CPU等待过程中容易发生阻塞。 3)FIFO专为解决高低速设备兼容而生。后台程序中CPU读写FIFO,而不是直接读写UART缓存。UART收发中断中,再完成FIFO与UART缓存间的数据交换。4)特别注意只要缓存中有数据,UART是可以“自动连发”的,但是一旦缓存中无数据,

24、下次再要发送是需要手动触发的。图11 UART工程的文件系统作业:设计上位机和单片机的通信协议,完成单片机和上位机的交互式通信,结合实验4,通过按键控制单片机向上位机发送控制命令,接收上位机的控制命令,同时作出相应的动作。实验八 I2C扩展I/O口图12 I2C扩展IO实验原理图实验目的:掌握学习I2C总线,掌握扩展的IO口的使用。实验内容:通过I2C协议扩展出的I/O口识别机械按键和控制LED。实验仪器:计算机、信号源、示波器等。实验原理:1)配置DCO频率调用库函数TCA6416A_Init()实现TCA6416A初始化,在TCA6416A_Init()中包含了调用I2C的初始化函数I2C

25、_Init()。2)调用控制I2C_IO输出的函数PinOUT(),将8个LED设置为间隔亮灭。3)看门狗定时器设为16ms唤醒CPU一次,然后执行1次PinIN(),在事件检测函数中,包含有按键事件处理函数。4)事件处理函数的最终效果是1个按键切换2个LED的亮灭。注意事项:G2单片机的I2C口是P1.6和P1.7,一定要把G2板上P1.6的LED跳线拔掉,否则I2C将无法通信。两个工程的区别在于有无软件I2C条件编译。工程名:10_UART_KeyBoard.本实验主要学习USCI_I2C通信模块的配置和使用、软件I2C原理、TCA6416A操作时序。1)IC协议收发有关的库函数位于I2C

26、.c中,如果是初次学习I2C协议,建议在I2C中条件编译,实用软件I2C,这样比较清楚的知道协议内容。2)TCA6416A有关的操作函数位于TCA6416A.c文件中,最核心的内容可以看TCA6416A.h中所列出的3个库函数PinIN()、PinOUT()、TCA6416A_Init()和一个全局变量TCA6316A_InputBuffer。3)调用一次PinIN()函数,就意味着将TCA6416A的输入IO值写入全局变量TCA6416_InputBuffer中。4)调用负责PinOUT()函数则可控制任意扩展IO的输出。作业: 通过扩展的IO口控制发光二极管LED和蜂鸣器的鸣响,具体格式自

27、定。实验九 LCD显示自检图13 LCD自检实验原理图图14 HT1621驱动器芯片实验目的:掌握学习USCI_I2C的工作原理和应用,掌握学习LCD的工作原理。实验内容:通过I2C协议扩展出的IO控制HT1621驱动LCD做自检显示。实验仪器:计算机、信号源、示波器等。实验原理:1)配置DCO频率调用库函数TCA6416A_Init()实现TCA6416A初始化,在TCA6416A_Init()中包含了调用I2C的初始化函数I2C_Init()。2)分别调用LCD_DisplaySeg()、LCD_DisplayDigit()、LCD_DisplayNum()三种改写LCD显示缓存LCD_B

28、uffer的程序,改写想要实现的显示效果。3)调用HT1621_Reflash()函数更新显存至HT1621中,LCD显示做相应变化。4)LCD先逐段显示,再逐段消隐,然后8字段显示0-9数字,最后显示PASS。图15为LCD显示自检的效果图。注意事项:G2单片机的I2C口是P1.6和P1.7,一定要把G2板上P1.6的LED跳线拔掉,否则I2C将无法通信。图15 LCD自检实验效果图工程名:14_LCD_SelfScan_Hard_or_Soft_I2C.本实验主要学习HT1621驱动器的控制方法、显存隔离以及利用宏定义进行硬件隔离的编程思想。(1)要想使用MSP-EXP430G2扩展板上这块128段式液晶很难。如图 所示,单片机必须用I2C协议去控制TCA6416A输出4个控制信号CS、WR、RD、DATA,哪怕只是改变一次CS的电平,实际工作

温馨提示

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

最新文档

评论

0/150

提交评论