微处理器原理及系统设计实验.docx
- 文档编号:18597430
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:21
- 大小:851.17KB
微处理器原理及系统设计实验.docx
《微处理器原理及系统设计实验.docx》由会员分享,可在线阅读,更多相关《微处理器原理及系统设计实验.docx(21页珍藏版)》请在冰点文库上搜索。
微处理器原理及系统设计实验
微处理器原理与系统设计实验手册
1实验平台概述
自从TI推出超低功耗MSP430单片机以来,MSP430凭借其优越的性能,丰富的外设,易于上手的特性备受业工程师的欢送。
单片机MSP430G2553集成的片外设相当丰富,包括ADC、Timer、parator、TouchKey、SPI、I2C、UART等,MSP-EXP430G2LaunchPad是TI公司推出的1款MSP430开发板,它提供了具有集成仿真功能14/20引脚DIP插座目标板,可通过SpyBi-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/SPISOMI、P1.2/SPISIMO、P1.4/SPICLK三个USCI功能IO和1个普通P2.4控制。
〔5〕SLOPEADC单元:
使用拨盘电位器作为待测电阻。
P1.5/arator_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口袋实验平台硬件功能单元
名称
元件
IO
功能
IO扩展
TCA6416A
P1.6/I2CSDA
P1.7/I2CSCL
利用I2C协议控制TCA6416A
获得16个低速IO
IO00~IO07
IO10~IO17
显示
HT1621
128段LCD
IO14/扩展IO;IO15/扩展IO
IO16/扩展IO;IO17/扩展IO
4个I2C扩展IO控制HT1621
HT1621控制段式液晶
机械按键
微动开关*4
IO10/扩展IO;IO11/扩展IO
IO12/扩展IO;IO13/扩展IO
4个I2C扩展IO识别机械按键
LED灯柱
0603LED*8
IO00/扩展IO;IO01/扩展IO
IO02/扩展IO;IO03/扩展IO
IO04/扩展IO;IO05/扩展IO
IO06/扩展IO;IO07/扩展IO
8个I2C扩展IO控制8个LED
触摸按键
覆铜
P2.0、P2.5
电容触摸按键
模拟输出
DAC7311
TPA301、蜂鸣器
P1.0/复用、P1.3/复用、P2.2/复用
12位串行DAC7311、BTL乙类功率放大器
扩展存储
TF卡槽
P1.1/SPISOMI、P1.2/SPISIMO、P1.4/SPICLK、P2.4
基于SPI的TF卡读写
SLOPEADC
拨盘电位器
P1.5/parator_A+、P1.3/复用、P2.2复用
利用比拟器实现积分型ADC
PWM
TLV2372
TPS60400
三电阻网络
P2.1/TA1.1、P1.0/ADC10/复用
PWM波形合成双极性信号的ADC采样
实验首次开设时间:
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亮度。
图3LED调光控制实验原理图
实验仪器:
计算机、信号源、示波器等。
实验原理:
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。
3〕测频结果存入二维数组Key_Buffer[Key_Num][0/1/2/3]中。
Key_Num用于区分多个触摸按键的序号,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原理,全局变量的作用。
对于带振荡功能的IO,电容触摸按键识别本质就是测频。
测频的方法也很简单,就是在16ms的WDT中断中数TA的计数值。
难点在于多个触摸按键怎么处理,触摸判别的可靠性,以及如何“方便〞地使用触摸按键,不能总是把它当特别麻烦的特殊案件来对待。
1〕所有的工作都在16ms的WDT中断中进展,用TouchIN_Dect()函数完成触摸按键的识别,并将结果更新在局部变量TouchIN中。
也就是说,只要每16ms调用一次TouchIN_Dect(),就能保证全局变量TouchIN中存的是按键键值。
2〕无论多少个触摸按键,轮流测频,并记录数据。
3〕引入FIFO的概念,依靠最近4次的测频结果,判断按键是否按下。
4)TouchIN这个全局变量的地位等同于单片机IO状态存放器PxIN。
作业:
写一个按键检测函数,自行决定触摸按键按下和松开后,两个LED做出何反响。
实验六电容触摸长短键
图9电容触摸长短按键实验原理图
实验目的:
掌握电容触摸按键的工作原理、设计方法和使用。
实验容:
调用电容触摸库函数,使用状态机识别出长短触摸按键,短按键控制P1.0口LED亮灭,长按键控制P1.6口LED亮灭。
实验仪器:
计算机、示波器等。
实验原理:
1〕在16ms的WDT中断中,调用TouchIN_Dect()库函数,即时保持TouchIN数据准确。
2〕把TouchIN当作机械按键消抖后的按键结果“Key_Dect〞来使用,套入Key_SM()状态机函数,实现长短按键识别。
3〕根据长短按键,调用事件处理函数。
考前须知:
按键按下和按键松开的判据为TouchIN前0后1和前1后0,这与机械按键的电平正好是相反的。
工程名:
8_2_TouchPad_Long_Short_Mealy
本实验主要学习状态机代码的移植,和硬件无关的编程思想。
WDT定时调用TouchIN.c中的外部函数TouchIN_Dect()库函数就可以保证全局变量TouchIN存的就是最新的触摸按键键值,该键值是无需再消抖处理的。
机械按键的长短键状态与触摸按键的状态机没有任何区别。
参考前面的图8,状态都是3个,按键按下和按键松开的判据替换成判断TouchIN前0后1和前1后0即可。
作业:
通过触摸按键来控制发光二极管的亮灭以及发光的亮度。
实验七超级终端人机交互
图10超级终端实验原理图
实验目的:
学习使用UART串口通信。
实验容:
利用计算机超级终端控制G2板上的两个LED亮灭。
实验仪器:
计算机、信号源、示波器等。
实验原理:
1〕G2LaunchPad支持直接通过USB下载口以UART方式连接计算机。
2〕UART设为波特率9600,8位数据,无校验,1位停顿位,可使用Grace配置后再移植。
3〕引入软件FIFO,分别实现Tx和Rx数据无阻塞收发。
4〕CPU对Rx数据进展各种判别,控制相应LED亮灭,并Tx数据回计算机以实现回显和提示。
考前须知:
要实现UART连接,必须将图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是可以“自动连发〞的,但是一旦缓存中无数据,下次再要发送是需要手动触发的。
图11UART工程的文件系统
作业:
设计上位机和单片机的通信协议,完成单片机和上位机的交互式通信,结合实验4,通过按键控制单片机向上位机发送控制命令,接收上位机的控制命令,同时作出相应的动作。
实验八I2C扩展I/O口
图12I2C扩展IO实验原理图
实验目的:
掌握学习I2C总线,掌握扩展的IO口的使用。
实验容:
通过I2C协议扩展出的I/O口识别机械按键和控制LED。
实验仪器:
计算机、信号源、示波器等。
实验原理:
1〕配置DCO频率→调用库函数TCA6416A_Init()实现TCA6416A初始化,在TCA6416A_Init()中包含了调用I2C的初始化函数I2C_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.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和蜂鸣器的鸣响,具体格式自定。
实验九LCD显示自检
图13LCD自检实验原理图
图14HT1621驱动器芯片
实验目的:
掌握学习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_Buffer[]的程序,改写想要实现的显示效果。
3〕调用HT1621_Reflash()函数更新显存至HT1621中,LCD显示做相应变化。
4〕LCD先逐段显示,再逐段消隐,然后8字段显示0-9数字,最后显示PASS。
图15为LCD显示自检的效果图。
考前须知:
G2单片机的I2C口是P1.6和P1.7,一定要把G2板上P1.6的LED跳线拔掉,否那么I2C将无法通信。
图15LCD自检实验效果图
工程名:
14_LCD_SelfScan_Hard_or_Soft_I2C.
本实验主要学习HT1621驱动器的控制方法、显存隔离以及利用宏定义进展硬件隔离的编程思想。
〔1〕要想使用MSP-EXP430G2扩展板上这块128段式液晶很难。
如下图,单片机必须用I2C协议去控制TCA6416A输出4个控制信号CS、WR、RD、DATA,哪怕只是改变一次CS的电平,实际工作量就是完整的I2C通信了一次。
图16LCD控制的信号控制图
〔2〕如图16所示,将HT1621的控制信号线宏定义之后,无论用的是何种IO,HT1621的库函数都是一样的。
这就是利用宏定义进展硬件隔离的思想。
图17利用宏定义进展硬件隔离
〔3〕对于显示类的应用,显存隔离也是一种常用的编程思想。
在RAM中建立显存数组LCD_Buffer[],CPU想显示什么容就调用函数改写显存数组,这是顶层程序要干的事情。
〔4〕至于显存数组中的数据怎么写到HT1621硬件中,那么是HT1621_Relash()函数要实现的事,这属于硬件相关的底层程序。
作业:
编写程序,完成LCD的自检,自检完成之后,显示自己的XX〔拼音〕以及学号,显示格式自定。
实验十温度传感器采样及显示
图18温度传感器采样及显例如程原理图
实验目的:
掌握学习A/D转换器的工作原理和应用,继续掌握USCI_I2C的使用。
实验容:
通过移植CCSExample中的测温代码,将温度值显示到LCD屏幕上。
实验仪器:
计算机、信号源、示波器、万能板、10kΩ可调电阻、10kΩ电阻等。
实验原理:
CCS的Example有一个ADC10TempSensConvert的例程,将测温代码进展移植,ADC10采样值存入long型全局变量temp,并换算为摄氏度,存入long型全局变量IntDeg。
对IntDeg进展数字拆分,并显示在LCD屏幕上。
考前须知:
G2单片机的I2C口是P1.6和P1.7,一定要把G2板上的P1.6的LED跳线拔掉,否那么I2C将无法通信。
工程名:
19_ADC10_Temperature.
本实验主要学习如何借助CCS的Example加快程序开发进程。
1〕对于大多数外设,CCS的Example中都给出了参考例程,如图18所示,移植例程中的代码可以显著加快学习和使用该外设的速度。
2〕ADC10TempSensConvert例程功能是对G2单片机片温度传感器进展采样。
我们直接读取采样结果,然后显示在LCD上。
3〕不要忘记添加
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微处理器 原理 系统 设计 实验