模块一ccsv使用指南msp430g2553指导书_第1页
模块一ccsv使用指南msp430g2553指导书_第2页
模块一ccsv使用指南msp430g2553指导书_第3页
模块一ccsv使用指南msp430g2553指导书_第4页
模块一ccsv使用指南msp430g2553指导书_第5页
已阅读5页,还剩210页未读 继续免费阅读

下载本文档

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

文档简介

目模块目模块 CCSV5.4使用指 1.1概述 CCSV5.4的安 新建工 程序编 程序调 菜单栏其它常用功 模块二 项目一点亮LED 2.1.1概 实验任 硬件电 实验设 实验相关寄存 程序设 程序调试及结 小结与思 附本实验所用的相关知 2.1.10程序清 项目二按键控制红灯和绿灯交替亮 实验任 硬件电 实验设 实验涉及寄存器简 相关知识补 实验调试及结 小结与思 程序清 项目三按键控制红灯和绿灯交替亮灭(中断 2.3.1概 实验任 硬件电 实验设 实验涉及寄存器简 相关知识补 实验调试及结 小结与思 程序清 项目四依次点亮数码管的每一 2.4.1概 实验任 硬件电 1实验设 数实验设 数码管相关知 程序设 小结与思 附本实验所用的相关知 程序清 项目五四位一体数码管依次显示0至 2.5.1概 实验任 硬件电 实验设 程序设 小结与思 附本实验所用的相关知 程序清 项目六按键控制数码管从0加到 实验任 硬件电 实验涉及寄存器简 相关知识补 实验调试及结 小结与思 程序清 项目七矩阵键盘控制数码管显示从0到 2.7.1概 实验任 硬件电 实验设 实验涉及寄存器简 相关知识补 实验调试及结 小结与思 程序清 项目八矩阵键盘控制数码管扩 2.8.1概 实验任 硬件电 实验设 实验涉及寄存器简 相关知识补 实验调试及结 小结与思 程序清 模块基础时钟与低功耗模块实 2项目一项目一CPU运行在VOL时钟 3.1.0时钟基本知 3.1.1概 实验任 硬件电 实验设 实验涉及时钟源、寄存器简 实验调试及结 小结与思 程序清 项目二低功耗模 低功耗结 实验任 3.1.4实验设 模块四比较器 项目一比较器实 4.1.1概 实验任 实验设 实验涉及寄存器简 实验调试及结 小结与思 附本实验所用的相关知 程序清 项目二低压报警实 4.2.1概 实验任 实验设 实验涉及寄存器简 实验调试及结 小结与思 程序清 模块五定时/计数模块实 项目一定时信号产生实 5.1.1概 实验任 硬件电 实验设 实验涉及寄存器简 实验调试及结 小结与思 本实验所用的相关知 程序清 项目二Timer_A实现定时功能35.2.1概 实验任 5.2.1概 实验任 硬件电 实验设 实验涉及寄存器简 实验调试及结 小结与思 本实验所用的相关知 程序清 项目三看门狗作为计时器功能试 概 实验任 硬件电 实验设 实验涉及寄存器简 实验调试及结 小结与思 程序清 项目四定时器Timer_A捕获模块实 概 实验任 硬件电 实验设 实验涉及寄存器简 实验调试及结 小结与思 本实验所用的相关知 程序清 项目五PWM波形输出实 5.5.1概 实验任 硬件电 实验设 实验涉及寄存器简 项目实验调试及结 小结与思 程序清 PWM脉冲宽度调 5.6.1概 实验任 实验设 实验涉及寄存器简 实验调试及结 小结与思 4本实验所用的相关知 程本实验所用的相关知 程序清 模块六 6.1概 ADC10结构及原理简 6.2.1ADC10结 ADC10操作原 ADC10通道采样模 实验涉及寄存器简介 项目一用ADC10实现内部温度采 实验任 硬件电 实验设 实验涉及寄存器简 相关知识补 实验调试及结 小节与思 程序清 项目二用ADC10实现外部单通道单次采 实验任 硬件电 实验设 实验涉及寄存器简 相关知识补 实验调试及结 小节与思 程序清 项目三用ADC10实现外部序列通道单次采 实验任 硬件电 实验设 实验涉及寄存器简 实验调试及结 小节与思 程序清 项目四用ADC10实现外部单通道重复采 实验任 硬件电 实验设 实验涉及寄存器简 实验调试及结 小节与思 程序清 项目二用ADC10实现外部通道序列重复采 5实验任 硬件电 实验任 硬件电 实验设 实验涉及寄存器简 实验调试及结 小节与思 程序清 模块七LCD液晶模块显 LCD1602模块动态显 7.1.1概 实验任 硬件电 实验设 实验相关寄存 程序设 小结与思 附本实验所用的相关知 程序清 项目二LCD显示ADC内部通道采样温 实验任 硬件电 实验设 实验相关寄存 程序设 程序调试及结 小节与思 程序清 模块八串口通 8.1概 实验任 硬件电 实验设 实验相关寄存 USCI相关寄存 USART相关寄存 程序设 程序调试及结 附本实验所用的相关知 MSP430G2553单片机串行口模块介 波特率、波特率因子、位周 8.3.3MSP430的异步通信数据格式-----串行操作自动错误检 8.8.4COM的硬件参数查 小结与思 8.10程序清 6模块九中断模块实模块九中断模块实 项目一IO口中断应 9.1概 实验任 硬件电 实验设 实验涉及寄存器简 实验调试及结 小结与思 程序清 模块十综合实 项目一PID温度调节实 10.1概 实验任 硬件原理 实验设计说 软件编写说 实验结 程序清 7模块CCSV5.4进行嵌入式开发,一个好调试平台是必须的。CCS(CodeComposerStudio)美国德州仪器公司出品的代码开发和调试套件,供用户开发和调试DSP和模块CCSV5.4进行嵌入式开发,一个好调试平台是必须的。CCS(CodeComposerStudio)美国德州仪器公司出品的代码开发和调试套件,供用户开发和调试DSP和1运行下载的安装程序ccs_setup_0091.exe,当运行到如图1.2.1I图8223CompleteFeature94Next1.2.454Next1.2.451.2.5,6图6图 安装进行7在弹出以下窗口后,如图1.2.8DesktopShortcutCreateStartMenu7在弹出以下窗口后,如图1.2.8DesktopShortcutCreateStartMenuShortcut1.31.CCSV5.42.Project2.Projectname“lesson24”3.Outputtype即输出类型中有两个选项:Executable和4Location中选择存储路径,在此选择默认路径F:\workspace_v5_45.Device部分选择器件的型号:在此Family选择MSP430;VariantMSP430GXXXFamily系列,芯片选择MSP430G2553;Connection6.选择Emptymain.c)即带主函数的空工程,点击完成新工程创建.点击View->ProjectExplorer,新工程将显示于图1.4程MSP430GXXXFamily系列,芯片选择MSP430G2553;Connection6.选择Emptymain.c)即带主函数的空工程,点击完成新工程创建.点击View->ProjectExplorer,新工程将显示于图1.4程序图(注:如果编译按钮没出来,点击右上方的CCSEdit,如图图1.4.2查看Problems图1.5程序(注:如果编译按钮没出来,点击右上方的CCSEdit,如图图1.4.2查看Problems图1.5程序1.5.1(注:如果调试窗口没有出来,点击View-图ResumeSuspendTerminate4.Stepinto行过最后一句后是无法跳出的,这时可以点击AssemblelyStepinto5.StepOverResumeSuspendTerminate4.Stepinto行过最后一句后是无法跳出的,这时可以点击AssemblelyStepinto5.StepOver6.Step7.SoftReset点。1.5.3View->MemoryBrowser会弹出存储器窗口,如图1.5.2,为8-Hex-View->MemoryBrowser会弹出存储器窗口,如图1.5.2,为8-Hex-Style图图1.5.4图1.5.4图图将图3.P1OUT将图3.P1OUT图观察P1OUT4.ViewMemoryatAddress,图图1.View->Expressions打开观察器窗口,如图1.5.10图图1.View->Expressions打开观察器窗口,如图1.5.10图1.5.10观察器窗口2.点击newexpression可以添加变量,在此我们添加整型变量图添加整型变量3.i上,右键选择ViewMemory2.点击newexpression可以添加变量,在此我们添加整型变量图添加整型变量3.i上,右键选择ViewMemoryatAddress,察变量i的值在存储器中的变化情况如图图1.5.6点击菜单View->Disassembly,可以得到汇编程序观察窗口,该窗口显示的是C言程序对应的汇编程序,如图1.5.13所示图1.5.7点击1.FileFile->openFile-图1.5.7点击1.FileFile->openFile-File-File-2.EditUndoRedo3.View(1)点击View->TIResourceExplorer可进入TI资源管理器,如图Package右侧的下拉窗口中可以观察目前CCS中安装的所有附加软件。在3.View(1)点击View->TIResourceExplorer可进入TI资源管理器,如图Package右侧的下拉窗口中可以观察目前CCS中安装的所有附加软件。在装430Ware,在430Ware中可以容易地找到MSP430所有系列型号的User’sguide以及参考例程(以msp430g2553为例,见图1.6.2,图1.6.3,1.6.4),此外430Ware还提供了大多数TI(持续更新中)里面包含MSP430所有的系列型号;DevelopmentTools,里面包括TIMSP430图 Ti资源管理图图图图图Ti(2)View->Project4.Navigate在程序中选中寄存器或特殊功能位,点击OpenDeclaration寄存器或特殊功能位在头文件中的定义,以寄存器P1OUT为例,如图1.6.5图图Ti(2)View->Project4.Navigate在程序中选中寄存器或特殊功能位,点击OpenDeclaration寄存器或特殊功能位在头文件中的定义,以寄存器P1OUT为例,如图1.6.5图5.RunRun->Clock-6.Window6.Window模块项目LED2.1.1概模块项目LED2.1.1概2.1.2实验任2.1.3硬件电2.1.2可知,红色LED灯接的是P1.0LED灯接的是Pmsp430部上述端口,这些端口都可以直接用于输入/输出。MSP430转换等.转换等.1(2能可以通过它们7个控制存器来实现。InputTInputTOutput例i,例P1.1P1IFGporFlag例P1.1InterruptEdgeSelect,例Enable例Enable例P1.1ResisterEnable,程序首先要关闭看门狗定时器。看门狗定时器(WDT,WatchDogTimer)MSP4302.1.91.while({};2.接赋值操作后,P1OUT=11001110,若采用位或操作即2.1.10程序清**程序员:王龙*s接赋值操作后,P1OUT=11001110,若采用位或操作即2.1.10程序清**程序员:王龙*s/******************头文件//头文件中包含了g2553中的寄存器定义和常用位定 {//关闭看门狗定//设置方向寄存器将P1.0P1.6设置为//初始化,将P1口所有引脚设为低电平,熄灭LED灯{//P1.0P1.6两个引脚设为高电平点LED}}项目按键控制红灯和绿灯交替亮硬件电2.2.1实验设硬件电2.2.1实验设2.2.4实验涉及寄存器简2.2.5相关知识补(2“|(3”^(4“~(5(2“|(3”^(4“~(5 P1DIR|=P1OUT|=6.P1OUT&= P1OUT&=~0x40,2.2.8程序2.2.8程序清**程序员:汪*s/******************头文件#includevoid{WDTCTL=WDTPW|//P1DIR|=//P1.0和P1.6方向设置为输出(此时和P1.6管脚的输出状态随机P1DIR&=//P1.3方向设置P1OUT|=//P1.0设为高电平,点亮红灯,同时P1.3设为上P1OUT&=//P1OUT|=//P1.0设为高电平,点亮红灯,同时P1.3设为上P1OUT&=//P1.6输出低电平,熄灭绿P1REN|=//P1.3上拉电阻{//{////{;判断按键是否松开,若没松开,程序一直执行P1OUT//如果松开,P1.0和P1.6}}}}项目按键控制红灯和绿灯交替亮灭(中断2.3.1概2.3.2实验任2.3.3硬件电2.3.4实验设2.3.4实验设2.3.5实验涉及寄存器简PxIE:IOPxIFG:IO0=中断标志不成立,1=中断条件曾经成立IOPxIFG:IO0=中断标志不成立,1=中断条件曾经成立IO2.3.6相关知识补1.2.3.例如其中“0x01”,“0x02”可分别换成即P1OUT&=~BIT1;POUT|=4.#pragmavector=PORT1_VECTOR:#pragma2.3.7实验调试及结4.#pragmavector=PORT1_VECTOR:#pragma2.3.7实验调试及结2.3.8小结与思2.3.9程序清**程序员:汪*s/******************头文件#includevoid{WDTCTL=WDTPW|//P1DIR|= P1.0/******************头文件#includevoid{WDTCTL=WDTPW|//P1DIR|= P1.0和P1.6方向设置为输出,P1.3方向设置为输P1OUT|=BIT0+ P1.0输出高电平,点亮红灯,同时P1.3设置为上拉输P1OUT&=//P1.6输出低电平,熄灭绿P1REN|=//P1.3上拉电阻P1IE|=P1IES|=//P1.3中断下降P1IFG&=//清除P1.3//使能全局中}#pragma预处理指令,指明引起中断的中断向量类interruptvoid//中断处理函{P1OUT^= P1.0和P1.6电平翻转,LED灯交替点亮P1IFG&=//清除P1OUT^= P1.0和P1.6电平翻转,LED灯交替点亮P1IFG&=//清除P1.3}项目依次点亮数码管的每一2.4.1概特定的段就会发亮,所以就会形成我们眼睛看到的字样了。如:显示一个abgedfcdp8、9、A、B、C、D、E、F图.3硬件电.3硬件电2.4.2图2.4.4和图2.4.5DDgfGNDaedGNDc.6程序设2.4.7小结与思10987 dp1234DDgfGNDaedGNDc.6程序设2.4.7小结与思10987 dp1234agd2.4.82.A&=B<=>A=A&BC语言里的位与操作,0&0=0;0&1=01&1=12.4.82.A&=B<=>A=A&BC语言里的位与操作,0&0=0;0&1=01&1=1ba为正数则高位补01后**程序员:王龙*s/******************头文件int{//关闭看门狗定//P1口所有引脚设置为输出//把P1口所有引脚设置为输出高电平//把P2.0引脚设置为输出,其余为输入//P2.0引脚设置为输出低电{ //点亮数码aLED{//P2.0引脚设置为输出低电{ //点亮数码aLED{//调用延时函数//0各二进制数右移一位,高}}}项目四位一体数码管依次显示0至2.5.1概动态扫描方式采用分时片选的方法,是用接口电路将所有数码管显示器的0动态扫描方式采用分时片选的方法,是用接口电路将所有数码管显示器的0a.71.for{}数组类型数组名[]={元素1,元素2,元素 例a[2.5.8程序清**程序员:王龙*s/******************头文件int{//关闭看门狗定//通过方向寄存器把P1口所有引脚设//P1口所有引脚设为输出高电平//通过方向寄存P2P2.0P2.3引脚//P1口所有引脚设为输出高电平//通过方向寄存P2P2.0P2.3引脚设为输出//P2口的P2.0P2.3引脚设为输出高电平unsignedchar//定义无符号字符型变量i,junsignedchartable[]=//定义无符号字符型数组table[10]unsignedcharselect[]=//定义无符号字符型数组select[4]{//for循环实现位选控制{//将数组select中的第i个元素附给P2//for循环实现段选控制{//将数组table中的第j个元素附给P1口作输出电平//调用编译器里延时函数进}}}}项目按键控制数码管从0加到2.6.1项目按键控制数码管从0加到2.6.1实验任硬件电2.6.1实验设2.6.4实验涉及寄存器简2.6.4实验涉及寄存器简2.6.5相关知识补P1OUT=2.6.6实验调试及结2.6.7小结与思2.6.8程序清**2.6.7小结与思2.6.8程序清**程序员:汪*s/******************头文件#includeunsignedcharunsignedcharvoid{//关闭P2DIR|=//P2.0方向设置P2REN|=//P2.1上拉电阻P2OUT|=//P2.1设置为上P1DIR|=//P1口设置为输{//判断P2.1模拟按键是否按{//延时//再次判断P2.1模拟按键是否{//判断P2.1模拟按键是否按{//延时//再次判断P2.1模拟按键是否{//判断P2.1模拟按键是否松P1OUT=//P1口输出对应数码管的P2OUT&=//为数码管提供位选低电if(i>//判断是否显示到i=//i变量赋值为1,开始下一次}}}}项目矩阵键盘控制数码管显示02.7.1概.2实验任硬件电.4实验设.22.7.4实验设2.7.5实验涉及寄存器简2.7.6相关知识补P2.0、P2.1(行线)2.7.7实验调试及结2.7.8小结与思.7实验调试及结2.7.8小结与思2.7.9程序清**程序员:汪*s/******************头文件 unsignedcharvoidvoid{//设置P2.0和P2.1为输//设置P2.2、P2.3和P2.4均为输//设置P2.0和P2.1为上拉电P2REN|=//P2.0和P2.1上拉电阻使P1DIR|=//P1端口//设置P2.0和P2.1为上拉电P2REN|=//P2.0和P2.1上拉电阻使P1DIR|=//P1端口设置为}/**********************键盘扫描程序unsignedchar{unsignedchar//定义无符号变量key,并赋值为P2OUT&=//P2.2和P2.3(列线)设置为低if//判断P2.0(第一行)是否有按键按{P2OUT|=//P2.2和P2.3(列线)设置为高P2OUT&=//仅P2.2列线输出低电if//判断P2.2(第一列)是否有按键按 确定按键位置{P2OUT&=//仅P2.3//判断P2.3(第二列)是否有按键按//确定按键位置}}if//仅P2.3//判断P2.3(第二列)是否有按键按//确定按键位置}}if//判断P2.1(第二行)是否有按键按{P2OUT|=//P2.2和P2.3(列线)设置为高P2OUT&=//仅P2.2列线输出低电if//判断P2.2(第一列)是否有按键按 确定按键位置{P2OUT&=//仅P2.3//判断P2.3(第二列)是否有按键按确定按键位置}}//将取得的键值返回}/***********************数码管显示void{unsignedcharunsigned//将取得的键值返回}/***********************数码管显示void{unsignedcharunsignedcharnum=//根据键值确定要显示的数{P1OUT=//设置P1口引脚P2OUT|=//P2.4设置为高P2OUT&=//P2.4输出设置低电平,点}}项目矩阵键盘控制数码管扩2.8.1概图2.8.2数码管接线原理2.8.4图2.8.2数码管接线原理2.8.4实验设2.8.5实验涉及寄存器简2.8.6相关知识补2.8.6相关知识补已有详细的介绍。可知,对于一组数码管动态扫描显示需要由两组信号来控下返回;2、如果有键按下,找出具体的按键值(顺序码2.8.7实验调试及结2.8.8小结与思2.8.8小结与思2.8.9程序清**程序员#include<msp430g2553.h>unsignedcharvoiddisplay();//定义显示函void{WDTCTL{WDTCTL=WDTPW|P2DIR&=~(BIT0+BIT1+BIT2);P2DIR|=BIT2+BIT3+BIT5;P2OUT|=BIT0+BIT1+BIT4;//上P2REN|=P1DIR|=0xff;//循环执行显示函}unsignedcharkeyboard(){unsignedcharP2OUT&=0xd3;、//判断P2.0(第一行)是否有按键按/*{P2OUT|=/*列线输出高电平P2OUT&=~BIT2;/*列线循环输出低电平{P2OUT&={P2OUT&=//确定按键位}}/*{P2OUT|=/*列线输出高电平P2OUT&=~BIT2;{P2OUT&=~BIT3;{P2OUT&=~BIT5;}}{P2OUT|=/*列线输出高电平P2OUTP2OUT&={P2OUT&=~BIT3;{P2OUT&=~BIT5;}}}}voiddisplay(){unsignedcharunsignedchara[]={0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};num=keyboard();{P1OUT=//P1.0输出设置低电平,点}}模块基础时钟与低功耗模块实项目CPUVOL时钟模块基础时钟与低功耗模块实项目CPUVOL时钟ClockClock上述三个时钟信号,是提供给CPULFXT1CLK、XT2CLK、DCOCLK、VLOCLK。LFXT1CLK、XT2CLK、DCOCLK、VLOCLKCPU、外设之间的“中间机构”,这个“中间机构”决定给哪个“晶振”给BasicClockModule+BasicClockModule+CPU是处理器的核心部分,它使用的时钟始终是MCLKVLOCLK或者外接的晶振XT1产生的LFXT1CLK的XT2CLK或者DCOCLKVLOCLK或者外接的晶振XT1产生的LFXT1CLK的XT2CLK或者DCOCLK框图中间红色那里有一段标注:ConnectedonlywhenXT2not不可用时3.1.1概3.1.23.1.3硬3.1.23.1.3硬件电3.1.4实验设使用任何ACLK外设时钟。3.1.51、基础时钟模块包括四个时钟源 1、基础时钟模块包括四个时钟源 DCO2~DCO0:DCO频率选择,这些位可以在由RSELx决定的八个离散的DCO DIVA1~DIVA0:选择ACLKXT5V:BCSCTL2,地址为58H,初始值为BCSCTL3XT2S1000.4-011- DIVA1~DIVA0:选择ACLKXT5V:BCSCTL2,地址为58H,初始值为BCSCTL3XT2S1000.4选择LFXT1CLK124801LFXT1OF:LFXT101IE101765432101600011011000101LFXT1OF:LFXT101IE10176543210160001101100011011102-11Bits7-2这些位被其他模块使用。OFIFG振荡器失效中断标志位。011LFXT1:LFXT1LFXT1SMCLKMCLKBits7-2这些位被其他模块使用。OFIFG振荡器失效中断标志位。011LFXT1:LFXT1LFXT1SMCLKMCLK2XT2:XT2XT2CLKXT2CLK信号没有用作时钟3、DCO振荡器:振荡器失效时,DCO振荡器会自动被选做MCLK的时钟(2)再次检查OFIFG,如果仍置位,则重复(1)-(4)步,直到OFIFG=0常用时钟模块配置VLO=12kHZ(大约LFXT132.768kHZ(大约BCSCTL3|=BCSCTL3|=76543210Void{WDTCTL=WDTPW+//LFXT1VLO=12khz(////LFXT132.768khzIE1&=IFG1&=//ClearOSCFault时钟源为//BCSCTL2|=SELM_0+SELS;时钟源为Void{WDTCTL=WDTPW+//LFXT1VLO=12khz(////LFXT132.768khzIE1&=IFG1&=//ClearOSCFault时钟源为//BCSCTL2|=SELM_0+SELS;时钟源为{P1OUT^=}}ControlRegisterBCSCTL2|=SELM_3+附1、bis_SR_register(SCG1SCG0)DCOSR低功耗模式下运行。寄存器在工程头文件中的设置如下*文件名:/******************头文件#includevoid{//关闭看门狗P1.0/******************头文件#includevoid{//关闭看门狗P1.0关闭VLO=12kHZ(大约清除OSCFaultstopWDTCTL=+BCSCTL3|=IFG1&=+MCLK时钟源为BCSCTL2|=SELM_3+{P1OUT|=}开启}MSP430通过软件控制其时钟系统可以工作在多种工作模式,包括1种活动模式和低功耗。图314是MSP430F13x/F14x可以看出,在工作模式4(LPM4),单片机电流仅为0.1μA图MSP430系列单片机是通过CPU中状态寄存器SR中的SCG1、SCG2、OscOffSCG1:当SCG1复位时,使能SMCLK;SCG1置位,则禁止SMCLKSCG0:当SCG0复位时,直流发生器被激活,只有在SCG0置位且DCOCLKOscOff:当OscOff复位时,LFXTOscOffMCLK或SMCLK,LFXTCPUOff:当CPUOff复位,用于CPU的时钟信号MCLK被激活,当CPU置位时,MCLK要实现整个MSP430单片机系统的低功耗运行,不仅要使CPU等都可以在主CPUCPU图MSP430系列单片机是通过CPU中状态寄存器SR中的SCG1、SCG2、OscOffSCG1:当SCG1复位时,使能SMCLK;SCG1置位,则禁止SMCLKSCG0:当SCG0复位时,直流发生器被激活,只有在SCG0置位且DCOCLKOscOff:当OscOff复位时,LFXTOscOffMCLK或SMCLK,LFXTCPUOff:当CPUOff复位,用于CPU的时钟信号MCLK被激活,当CPU置位时,MCLK要实现整个MSP430单片机系统的低功耗运行,不仅要使CPU等都可以在主CPUCPU876543210保到某一低功耗工作模式下,在需要时使用中断将CPU3.2.23.1.4实验设序响应期间,软件设定系统工作在低功耗模式4下,以实现系统的节能。3.1.5程序设计及说明#include<msp430g2553.h>voidmain(void){//到某一低功耗工作模式下,在需要时使用中断将CPU3.2.23.1.4实验设序响应期间,软件设定系统工作在低功耗模式4下,以实现系统的节能。3.1.5程序设计及说明#include<msp430g2553.h>voidmain(void){//停止看门狗定P1.3可高/P1.3IFG//进入LPM4中WDTCTL=+P1IE|=}+routine端口1中断服务//Port1interrupt#pragmainterruptvoid{if{P1OUT^=P1IFG}&P1.0P1.3IFG}SR;SR模块比较器项目一比较器实4.1.1比较器A+(Comparator_A+)是一个模拟电压比较器,支持精度的斜坡模块比较器项目一比较器实4.1.1比较器A+(Comparator_A+)是一个模拟电压比较器,支持精度的斜坡CAOUT为高电平,否则输出分辨率。选择输出滤波器可以减小由比较器振荡产生的误差。(3)Timer_A..34.1.400011011000110110001101100011011比较器A1比较器A20.5VCC0.5VCCCASHORT:(BIT7)01通过对CASHORT76543210单的比较器的采样和保持电路,其原理如下图P2CA1(bit单的比较器的采样和保持电路,其原理如下图P2CA1(bitCAEX=1,NoP2CA0BIT6,BINoCAF(BIT0Comparator_A+outputisnotfiltered(比较器A+输出没有滤波NoCAF(BIT0Comparator_A+outputisnotfiltered(比较器A+输出没有滤波1Comparator_A+outputisfiltered(比较器A+输出有滤波CACTL2寄存器相应位在头文件中的定义如下图CAPDx7-0CAPDx7-076543210:CA0在P1.0,CAPDxP1.xCAPD0P1.0,CAPD1P1.1 使能输入缓冲 :CA0在P1.0,CAPDxP1.xCAPD0P1.0,CAPD1P1.1 使能输入缓冲 ,用杜邦线连接输入口P1.6,通过改变P1.6电压,观察灯亮灭状态。实验结果为当P1.6为高电平时P1.0红灯亮,P1.6器当输入信号Ui=UREF时,输出信号就要产生突变。门限电压UT=UREF,特性如下图器当输入信号Ui=UREF时,输出信号就要产生突变。门限电压UT=UREF,特性如下图4.1.8*文件名:4.1.8*文件名:/******************头文件#includevoid{ //打开比较器,选择为参考电压,内 //打开比较器,选择为参考电压,内部参考电源接比较器//CA2作为输入,输出作滤波处理P1DIR&=~BIT2;//P1.2作为输入口//P1.2作为第二功能即作为比较器输入口使{{P1OUT&=~BIT0;//CAOUT=1,置位}P1OUT|=BIT0;//P1.0置为高}}作为比较器的输入端并作滤波处理有两种配置方1、CACTL2=P2CA4+P2CA0+CAF;2、*文件名:#includevoid{ //打开比较void{ //打开比较器,选择为参考电压,内部参考电源接比较器负端,允许中//P1.2作为第二功能即作为比较器输入口使_EINT();//打开总中}#pragmavector//比较器中断声明的固定格interruptvoidCOMPARE{P1OUT&=~BIT0;//p1.0取}.2验4.2.3验4.2.4.6小结与思4.2.7序.6小结与思4.2.7序*文件名:/******************头文件#includevoid{if(CACTL2&//如果满足P1.0P1.0|=&=~}intmain{WDTCTL=WDTPW+WDTHOLD;CA3{WDTCTL=WDTPW+WDTHOLD;CA3while{}//调用}模块定时/计数模块实模块定时/计数模块实项目一定时信号产生5.1.1重要的应用。MSP430G2553A(Timer_A)和定时器B(Timer_B)等模块。在MSP430系列单片机中,都带有一个16位定时/计数器Timer_A,用以精确定时器A能支持多个时序控制、多个捕获/比较功能和多个PWMA..44CCRXTAXP1.11.1KHZP1.08HZP1.2550HZP1.1和P1.2端口方该寄存器主要是控制Px端口的I/O管脚作为一般I/O端口还是外围模块的该寄存器的相应比特设置为0I/O管脚。PEL0(ff快捷宏定义快捷宏定义Eg:TACTLTACLR计数器清零Eg:TACTL= 快捷宏定义快捷宏定义Eg:TACTLTACLR计数器清零Eg:TACTL= 该寄存器为定时器A模块的中断向量寄存器。CCR1的CCIFG中断标志、CCR25-15为TAIVx(3比特0—捕获/比较CCR1的捕获/比较CCR2的————0010快捷宏定义0111(2)CCIS1- 00选择10选择快捷宏定义01选择11选择SCS00010快捷宏定义0111(2)CCIS1- 00选择10选择快捷宏定义01选择11选择SCS0SSCIxEQUxCAP101寄存器在工程头文件中的设置如图5.1.7:行,用示波器测取P1.1和P1.2的频率。并观察P1.0引脚的LED寄存器在工程头文件中的设置如图5.1.7:行,用示波器测取P1.1和P1.2的频率。并观察P1.0引脚的LED本实验所用的相关知{反}Timer0_A0;Timer0_A1;TimerB的中断向量:2.TimerA}Timer0_A0;Timer0_A1;TimerB的中断向量:2.TimerA的中断向量:断中判断是来自哪个的中断。3._BIS_SR(LPM3_bits+_BIS_SR(GIE);等价于_EINT();_bis_SR_register(x)可以理解为是直接对SR状态寄存器进行位操寄存器在工程头文件中的设置如图5.1.8、图5.1.9:3图5.1.9P1.1CCR0~1.1MHz/(2*500)=1100HzCCR1~1.1MHz/(2*1000)overflow~1.1MHz/(2*65536)==5.1.9序*文件名:#include<msp430g2553.h>int5.1.9序*文件名:#include<msp430g2553.h>int{WDTCTL=WDTPW+WDTHOLD;P1SEL|=0x06;P1DIR|=//P1.0P1.1、P1.2=OUTMOD_4=OUTMOD_4CCR14,CCTL1使能中断TACTL=TASSEL_2+MC_2+TAIE;//时钟源选择_BIS_SR(LPM0_bits+0,}#pragmainterruptvoidTimer_A0{CCR0+=}CCR0#pragmainterruptvoid{switch(TA0IV{case2:CCR1+=case4:CCR1,P1.0case10:P1OUT^=0x01;}}项目Timer_A实现定时,P1.0case10:P1OUT^=0x01;}}项目Timer_A实现定时功能试.2通过本实验的学习了解MSP430G2553Timer_A定时器的相关知识以及各个寄存.4定时时间t=TACCR0/ACLK。5.2.5行5.2.8本实验所用的式下,5.2.8本实验所用的式下,每个时钟周TAR1.在TAR值超TACCR0寄存器(捕获比较模块0模式值)Timer_ATAIFG1.TA5.2.9序*文件名:/******************头文件#includeint{WDTCTL=WDTPW+P1DIR|=0x01;P1.0TACCR0TACCTL0=CCIE;TACCR0=65536-1;TACTL=TASSEL_1+_BIS_SR(LPM3_bits+3,}//Timer_A0interruptserviceroutine#pragmavector=TIMER0_A0_VECTORinterruptvoidTimer_A{P1OUT^=}项目看门狗}项目看门狗作为计时器功能5.3.1执行。5.3.2验5.3.3件看门狗模块结构如图5.3.4验实验涉及寄存器简5.3.4验实验涉及寄存器简(WDTCNT它们在头文件中的定义如图(011)WDTIE定定断许制(NonCPU。0禁止非屏蔽中断7654321001101011(WDTCNT它们在头文件中的定义如图(011)WDTIE定定断许制(NonCPU。0禁止非屏蔽中断765432100110101110018110000101100定时时间0001101113.IFG11)WDTIFG:(01:蔽断标非(1)无屏13.IFG11)WDTIFG:(01:蔽断标非(1)无屏01IFG1&=~WDTIFG;//_EINT();#pragmavectorWDT_VECTOR//#pragmainterruptvoid{}//看门狗定时时间为8ms(选择SMCLK时钟源5.3.8序*文件名:76543210#include<msp430g2553.h>voidmain{#include<msp430g2553.h>voidmain{BCSCTL1=CALBC1_1MHZ;DCO为1MHZDCOCTL=CALDCO_1MHZ;P1DIR|=BIT6;//P1.6方向为输出IE1|=WDTIE;//允许看门狗中断IFG1&=~WDTIFG;//_EINT();_BIS_SR(LPM3_bits);;//进入低功耗}#pragmavector=interruptvoid{P1OUT^=BIT6;//P1.6IFG1&=~WDTIFG;//}Timer_A.2验5.4.3件实验5.4.3件实验设行主计数器(TACCR0)计满后复位,TAIFG1.中断发生在计数值从TACCR0跳至0时刻。,TACCTL0主计数器(TACCR0)计满后复位,TAIFG1.中断发生在计数值从TACCR0跳至0时刻。,TACCTL0,TACCTL12TARTACCR2(,TACCTL2(TACCR00发生捕获事件)独占一个中断源TIMERA0_VECTOR,其余3种事件共用另一个中断源TIMERA1_VECTOR。对于需要紧急处理的捕获事件建议使用通道0,因为它独占一个TAIFG:Timer_A计数器计满复位标志(位于TACTL寄存器)TAIE:Timer_A主计数器计满中断允许位(位于TACTL寄存器)CCIFG:Timer_A(TACCTL0/1/2)CCR1CCR1、CCR2、定时器溢出共用,在中断函数中为10时为定时器溢出触发的。TAR1,0xFFFF后溢出,TAR0,TAIFG1,或TAR重新赋值,也可以产生不同周期的定时中断。连续模{语表块一达合一)码)码)码…句}//符代i\表{语句块二合达式执行代符{…句块三合达执行代语句。行<语句。行< 块二>,然后结束语句。)2false,再继续往下判断其他表达式的5.4.9序*文件名:/******************头文件intoverflow;//定义一个无符号字符型变量overflowvoid{WDTCTL=WDTPW+//P1.3设置为上拉输入}#pragmainterruptvoidTimer_A1(void)//{{case{}elseif{}//溢出计数加}}5.5.1PWM(PulseWidthModulation)控制——脉冲宽度调制技术,通过对一系.35.5.4本实验运用3定时器AA计至0时,AM0的值即可改变M的周期,改变x的值即可改变从x管脚输出信号的占空比,x越大,占空比越大。本实验设置M波形输出管脚,设置3为5.5.5行5.5.5行本实验主要运用Timer_A比较模块的模式7(OUTMOD_7)输出PWM5.5.8序*文件名:#include<msp430g2553.h>void{}voidmain{WDTCTLWDTPW|WDTHOLD;P1DIR|=BIT0+BIT2;P1OUT|=BIT0;//P1.0P1IEP1.3P1OUT|=BIT0;//P1.0P1IEP1.3&=Timer_A0_init();//调用void}#pragmainterruptvoidPORT1(void{P1IFG&=~0x08;//}项目六PWM冲宽5.6.1GND,控制所产生的方波信号,减小它的正占空比,从而达PWM加减调节的作用。5.6.2通过按键改变占空比,P1.3P1.4加它的正占空比,P1.2P1.6灯的变化情况。5.6.3本实验主要运用Timer_A比较模块功能实现PWM置,实现按键改变占空比,从而改变PWM波形,改变PWM波输出电压,本实验通LEDPWM5.6.45.6.6小结与思本实验主要运用Timer_A比较模块的模式7(OUTMOD_7)输出PWM波,通过按键5.6.6小结与思本实验主要运用Timer_A比较模块的模式7(OUTMOD_7)输出PWM波,通过按键5.6.7出电压的大小,也可改变输出频率。∏/n据冲量相等效果相同的原理,PWM波形和正弦半波是等效的。对于正弦的负半PWM的通断,就可以得到所需要的PWM波形。PWM调整负载功率的过程中,负载断开时晶体管无电流通过,不发热。负载PWM控制负载时,开关器件的总发热量很小。相比于串联耗散式的调整方法,PWM的缺点是负载功率高(1)POR(POR(Power-On-Reset)(2)RST/NMINMI(NMINonMaskableInterrupt)——不可屏蔽中断CPU不能屏蔽)无论状态寄存器中IF位的状态如何,CPUNMI必须进行响应;NMI)RST/NMIFLASH3.P序*文件名:#include"msp430g2553.h"void{}voidmain(void{WDTCTL=WDTPW+{if{if//判断P1.3{if(CCR1>=8000)elseCCR1+=1000;//否则{if(CCR1>=8000)elseCCR1+=1000;//否则}//判断P1.3按键是否按}if{if{ifelseCCR1-//否则,CCR1=CCR1-}}}}模块6.1单片机内部通常集成的是10位ADC6.2ADC10ADC10(Analog-to-DigitalConverter10)是MSP单片机的模数转换器,单片机内部通常集成的是10位ADC6.2ADC10ADC10(Analog-to-DigitalConverter10)是MSP单片机的模数转换器,可选择内部或者外部电压参考源。并且内部电压参考源有2.5V6.2.1ADC10图6.2.1ADC10的结构图,由图可以看到ADC108个外部采样通道(A0~A7(A10(A12~A15图ADC10图ADC10详见数据手册。ADC10CLK需要作为转换时钟和产生采样周期的时钟,所以例:ADC10CTL1|=ADC10SSEL_2+ADC10DIV_8;//时钟源选择MCLK,83.3V1.5或者2.5V,即内电压部参考。它是可以向外输出的,也可以向内提供供,一个是AVSS(接地参考电压,另一个是VREF-/VeREF-。和参考源电压选择。ADC10的核将输入模拟量转换成10位数字量并储存在(03FF源分成2^N份,10位转换位数则分成2^10-1=1023份,每一份的电压相当于参考102模拟信号和数字信号的主要区别是,数字信号在时间和幅值上是离散的,转换器即A/D转化为数字信号。模拟信号--数字信号转换器的采样部分可以形象图图VIAxVS=RS=RI路选择导通输入电阻CI=输入电容VC=电容充电电压图VIAxVS=RS=RI路选择导通输入电阻CI=输入电容VC=电容充电电压ADC10SR=ADC10SR=用上面给出的R1C1例如,如果RS为10kΩ,在ADC10SR=0时,tsample必须大于2.63μs;ADC10SR=0时,tsample必须大于4.33μsADC10通道采样模1.1.ADC10将转换后的结果存入寄存器ADC10MEM,ADC10的中断标志位单通道单次采样状态转换图如图图图序列通道采样状态转移图如图图图单通道重复采样状态转移图如图图图序列通道重复采样状态转移图如图图 序列通道重复采样状态转移6.3图 序列通道重复采样状态转移6.31、转换控制寄存器0,全称ADC10Register0VR+VREF+VR+VREF+VR-VR-=VERF-/VeREF-+01Reference010SHI(转换都需要触发1SHI采样输入信号的第一个上升沿触发采样定时器,但是后续的采01+01参考源电压01转换都需要触发1SHI采样输入信号的第一个上升沿触发采样定时器,但是后续的采01+01参考源电压0101允许ADC10使用前提:总中断被置位(GIE=1),又有中断请求采样转换完成后,ADC10IFG被置为1单片机响应ADC10中断以后,ADC10IFG自动被置位0,也可软件置00101012、转换控制寄存器,全称ADC10ControlRegister1VREF-(Vcc-VREF-(Vcc-ADC10SC,ADC10011013、 输入使能寄存器ADC10AE0,全称Analog(Input)ControlRegister10013、 输入使能寄存器ADC10AE0,全称Analog(Input)ControlRegister10014、二进制格式如图转换结果为10位,以左对齐二进制补码格式储存,位15为最高位,位5-0为5、6、ADC10DTC1数据传递控制寄存器该寄存器设置了所有通道转换数值转换结果为10位,以左对齐二进制补码格式储存,位15为最高位,位5-0为5、6、ADC10DTC1数据传递控制寄存器该寄存器设置了所有通道转换数值的总次0例如:ADC10DTC1=//通道的转换数值传递总数为36.4.1用ADC10实现内部温度采.3本实验利用ADC10t,由数码管显示输出。其中设置了按键检测功能,当按键按下不6.4.4其内部温度输出电压与温度的线性关系如图ADC10ADC10内部温度传感器实际就是一个输出电压和温度成理想的线性关系的零度校准公式:TEMP=(VTEMP-室温校准公式:TEMP=(VTEMPV0为室温下传感器的输出电压,单位mV;T0为室温,单位摄氏度。TEMP=(Nadc-TEMP_Result=(ADC10_Result-TEMP_Result=(ADC10_Result-TEMP_Result=(ADC10_Result-.7小节与思6.4.8**程序员:汪*svoiddisplay();unsignedchartable_1[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};voidmain(){{WDTCTL=WDTPW+WDTHOLP2OUT|=0x10;P1DIRP2REN|=0x10;ADC10CTL0|=REFON+SREF_1;ADC10CTL0|=ADC10SHT_3+MSC;//采样保持时间设为64个ADC10CTLK周ADC10CTL1|=ADC10SSEL_3+SHS_0;ADC10时钟源选择MCLK,采样保持源选择ADC10SCADC10CTL1|=INCH_10;ADC10CTL0|=ADC10ON;{ADC10CTL0//获得采样转换TEMP_Result=(ADC10_Result-//检测按键P2.4是否按{//判断是否到达警示温度{//添加循环,起到延时效display();//熄灭数码管,整体达到闪烁效}//没有达到警示温度,数码{display();//调用数码管动}}//没有按下检测按键,数码管不闪烁(即使超过警示温度{display();//调用数码管动}}}voiddisplay()//定义声明动态扫描函{//P2.1为个位数码管提供位//P1端控制显示十位数}ADC10项目实验任6.5.2件6.5.3验ADC106.5.4实验涉及寄存器简介相关知识_nop_();NOPADC10SAunsigned 3.采样输入信号源3.采样输入信号源6.5.7小节与思6.5.8/*****************程序一**程序员:汪*sdoubledoubleADC10_A0;voidADC10(){ADC10CTL0|=SREF_1+ADC10SHT_3+REFON+REF2_5V+MSC+**+6410K25D10ADC10CTL1|=INCH_0+ADC10CTL1|=ADC10SSEL_3+SHS_0;ADC10时钟源选择SMCLK,采样保持源选ADC10SCADC10AE0|=0x01;//开启A0通}void{WDTCTL=WDTPW+WDTHO//设置ADC10CTL0//开始转while((ADC10CTL0//经过计算得出}/*****************程序二**程序员:汪*s/******************头文件unsignedintm[1];doublevoid{void{//ADC10CTL1|=INCH_0+SHS_1+选择转换通道A0,选择定时器A触发采样转换,选择单通道ADC10AE0=//采样转换通道A0ADC10DTC1|=TACCTL0=CCIE;//使能定时器ATACCTL1=OUTMOD_3;TACCR1=2;////选择TA时钟源为ACLK, bis_SR_register//使能中}#pragmavector=ADC10_VECTORinterruptvoid{ADC10_A0=//经过计算得出//产生一条NOP}#pragmavector=TIMER0_A0_VECTORinterruptvoid{ADC10CTL0=SREF_1+ADC10SHT_2+REF2_5V+REFON+MSC+ADC10ON+/***********************基准源选取内部参考源VREF+,设置采样保持时间为16个AD10K25D10D10*************************/AD10T0=//ADC10转换使ADC10SA=(unsignedint)m;//将转换数据存入数组变量}ADC10实现项目实验任6.6.2}ADC10实现项目实验任6.6.2件6.6.3验A0~A26.6.4实验涉及寄存器简介6.6.5分别接2.5V、0V、2.5V)6.6.7小节与思6.6.8**程序员:汪*sintdoublevoidADC10()//对ADC10模块进行初始化设{ADC10CTL0|=SREF_1+ADC10SHT_3+REFON+REF2_5V+MSC+**+6410K25D10模ADC10CTL1|=INCH_2ADC10CTL1|=INCH_2+ADC10DTC1=0x03;ADC10AE0|=0x07;//开启A2、A1、A0三个通}voidmain(void{ADC10CTL0//开始采/****************************获得各通道的采样值ADC10_A2=m[0];ADC10_A1=m[1];ADC10_A0=ADC10_A2=ADC10_A2*2.5/1023;ADC10_A0=}ADC10实现外部单通道重复项目实验任6.7.2件6.7.3验6.7.4实验涉及寄存器简介6.7.3验6.7.4实验涉及寄存器简介6.7.5A0图6.7.6小节与思.7**程序员:汪*sdoubleADC10_A0;voidADC10(){ADC10CTL0|=SREF_1+ADC10SHT_3+REFON+REF2_5V+MSC+**+6410K25D10ADC10CTL1|=INCH_0+ADC10CTL1|=ADC10SSEL_3+SHS_0;ADC10时钟源选择SMCLK,采样保持源选择ADC10SCADC10AE0|=0x01;//开启A0通}void{WDTCTL=WDTPW+WDTHO{ADC10CTL0//开始转while((ADC10CTL0//读取采样结果并累加,以便求平均//经过计算得出//此延时,以便暂停查看ADC10_A0计算得出的//此延时,以便暂停查看ADC10_A0计算得出的电压采}ADC10实现项目实验任6.8.2件6.8.3验本实验选择对A0~A2通道进行重复采样,将A0~A2通道分别接入相应的电6.8.4实验涉及寄存器简介6.8.5钮,待程序运行一段时间后,点击暂停按钮。查看数组m[]、a[]、b[]、c[]中由图可以看出,a[0]=1023,a[1]=834,a[2]=0A23.3V2.5V,因此对应的采样值达到最大1023(转换位数为10位)。6.8.6小节与思6.8.7**程序员:汪*sintintdoublevoidADC10()//对ADC10模块进行初始化设{ADC10CTL0|=SREF_1+ADC10SHT_3+REFON+REF2_5V+MSC+**+6410K25D10ADC10CTL1|=INCH_2+ADC10DTC1=0x0f;ADC10AE0|=0x07;//开启A2、A1、A0三个通}voidmain(void{{ADC10_A2=ADC10CTL0{a[i]=ADC10_A2=ADC10_A2+b[i]=ADC10_A1=ADC10_A1+c[i]=ADC10_A0=ADC10_A0+}/*********************************通过for循环将m[0]、m[3]、m[6]、m[9]、m[12]的a0a1a0a1、a2、a3a4,b]c]510_2A10_1、D10_0****************************/AD10_2=(A10_25251023;ADC10_A0=}}模块LCD液晶模块显模块动态显7.1.1概LCD(LiquidCrystalDisplay)大家详细介绍目前常用的液晶显示模块1602的使用方法。7.1.2实验任7.1.3硬件电1602对应引脚相连,然后1602对应引脚相连,然后数的模块化,移植性较好。最后将程序放在CCSV5.4中运行,观察液晶模块16027.1.5实验相关寄存7.1.7小结与思7.1.81.160212864LCDLCD液晶显示模块分为图形128X644/8238×4(32)16×16点阵的汉字.也可完成12864液晶种类繁多,常用的控制器(接受来自微处理器的显示信号转化为LCD模块能够理解的命令)就有4种,每一种都有自己的特点。当然指令也各不相同。学习者不搞明白液晶类型,肯定是无从下手。1.12864液晶的型号通C,-1,-2,-312864(1)ST79206884。PSB是ST7920(2)KS0108688CS1CS2KS0108(3)T6963C类这种控制器功能强大,带西文字库。有文本和图形两种显示方式。有文本和808FS是T6963C(4COGS6B0724ST7565,688,808COG之间也有间隔,起到了字符间距和行间距的作用。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。2.1602第1脚:VSS为电源地3.1602测的需要,RS,RW,E同时变化也不行;另外E=1要持续一定的时间。4.写指令写数据LCDLCD在进行内部操作,此时模块不接受外部指令和数据。D7=0LCD随时可接5.1602写指令000001NSS=1显示左移(N=1)或右移S=06.显示如图7.1.3RAM说明:1602216个字符位。第一行字符位对应地址映射是00至0F;第二行字符位对应地址映射是40至4F。若将地址映射设为其他0001SDxx6.显示如图7.1.3RAM说明:1602216个字符位。第一行字符位对应地址映射是00至0F;第二行字符位对应地址映射是40至4F。若将地址映射设为其他0001SDxx7.7.例:显示大写字母方式一:lcd_w_dat(8.标识 字符例:#defineunsigned9指针类型名*指针变量名int*s,如果指针是指向一个整型变量的,那么“使指针值加一”意味着使地址值加4着把字符串首字符的地址赋给指针,例如char*s=”welcome”,如果指针是指向一个整型变量的,那么“使指针值加一”意味着使地址值加4着把字符串首字符的地址赋给指针,例如char*s=”welcome”,把字符‘ws。s=s+1;即把字符’es。由于指针是C语言一个非常重要的章节,在这里不能详细地介绍,如果想要有一个更加深入的了解,可以参考相关C语言书籍。*文件名:*s#include#defineuintunsigned#defineucharunsigned#definers_1rs_1表示寄存数#definers_0rs_0表示寄存指#definerw_1//宏定义rw_1#definerw_0//宏定义rw_0#defineen_1//宏定义en_1#defineen_0//宏定义en_0voidlcd_w_cmd(uchar{////将指令数据赋给P1}{//将显示数据赋给P1}void{}voidlcd_w_string(ucharx,uchary,//写字符串子函数,x,y及指向无符号字符型变量的指针变量s是该子函数的{//由于字符串是以’\0‘结束的,当字符串输出结束时,while循环{}}voidlcd_w_string1(ucharx,uchary,写字符串子函数1,x,y及指向无符号字符型变量的指针变量s1是该子函数的参{//如果y恒等于0//地址设为1602第一行的第x//地址设为1602第二行的第x//于字符串是以’\0‘结束的,当字符串输出结束时,while{//}}void{//地址设为第一行的第0个字节处,输出字符串welcomelcd_w_string1(2,1,"science//地址设为第二行的第2个字节处,输出字符串science}}项目LCD显示ADC内部通道采样7.2.1实验任模块1602显示出来,并在超出设定温度时闪烁报警。7.2.2硬件电1602对应引脚相连,然后1602对应引脚相连,然后接调用,最后将程序放在CCSV5.41602显示情况二步:编写液晶显示所用的相关子函数,ADC温度采样函数和按键检测报警函7.2.7小节与思7.2.7小节与思7.2.8程序清*文件名:*s#include<msp430g2553.h>#defineuintunsigned#defineucharunsignedchar#definers_1P2OUT|=BIT0rs_1表示寄存数#definers_0rs_0表示寄存指#definerw_1//宏定义rw_1表示读操作//rw_0表示写操作#defineen_1//宏定义en_1#defineen_0//宏定义en_0int//uchartable[]={"TheTemp//uchar//int//voidlcd_w_cmd(uchar{//将指令数据赋给P1}voidlcd_w_dat(uchar{//将显示数据赋给P1}void{}void//ADC温度采集子//ADC工作模式选择位单通ADC10CTL0|=ADC10SHT_3+MSC;ADC10CTL0|=ADC10SHT_3+MSC;ADC10CTL0|=ADC10ON;//打开ADC10模ADC10CTL0TEMP_Result=(ADC10_Result-}void{{}}void{{}}void{ADC10({{}}{}{}}}模块通异步串行通信(serialportasynchronousserialcommunication;serialasynchronismcommunication)SCI(SerialCommunicationInterface)通信是计算机与人对话最传统、最基Rate11位。所谓异步通信,是指数据传送以字符为单位,字符与字符间的传送是完全实验任实验任(2)实现功串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线UniversalSerialBusUSB混淆RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232IEEE488定义并行通行状态202接收数据。其他线用于握手(RS-232-C(EIARS-232-C)是目前最常用的一种串行通讯接口。1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算RS-23225针的接口来定义的,对连接器的每个引脚的信号-515V;逻辑“0”+5+15V2V至+3V的信号作为逻辑“0”,高到-3V的信号作为逻辑“1”-515V;逻辑“0”+5+15V2V至+3V的信号作为逻辑“0”,高到-3V的信号作为逻辑“1”RS-232-C接口连接器一般使用型号为DB-25的25芯插头座,通常插头在端,插座在DTEPC机连接的RS-232-C的9芯插头座,传输线采用屏蔽双绞线。与2、33直接相连;口上面表格是对微机标准串行口而言的,还有许多非标准设备,如接收GPS主程序开将引脚连接串口初始下位机采集数据/显串口发送数上位机显示/控主程序结实验相关上面表格是对微机标准串行口而言的,还有许多非标准设备,如接收GPS主程序开将引脚连接串口初始下位机采集数据/显串口发送数上位机显示/控主程序结实验相关寄存8.5.1USCI相关寄存233222322333557757USCI_A0USCI_A11.USCI_A0USCI_A11.UCAxCTL1,USCI_Ax01(2)UCPAR:60101(4)UC7BIT:47位或801(5)UCSPB:30101(4)UC7BIT:47位或801(5)UCSPB:301UART(7)UCSYNC:0012.UCAxCTL1,USCI_Ax(1)UCSSELx:7-6USCI时钟源选择,这些位选取BRCLK(2)UCRXEIE:501(3)UCBRKIE:40101不休眠,所有接收字节都置位特率检测的UART模式下只有同步场和间断的组合才能置位UCAxRXIFG01在带自动波特率检测的UART模式下必须向UCAxTXBUF写055h/同步区域。其他情况则要向发送缓冲写0h01(7)UCSWRST:001USCI复位释放来允许操作;USCI3.UCAxBR0,4.UCAxBR1,256)165.UCAxMCTL,1(7)UCSWRST:001USCI复位释放来允许操作;USCI3.UCAxBR0,4.UCAxBR1,256)165.UCAxMCTL,USCI_AxUCBRFx:7-4UCOS16=1BITCLK16的调制模式。当UCOS16=0UCOS16:0016.UCAxSTAT,USCI_Ax(1)UCLISTEN:7,UCLISTEN01允许,UCAxTXD(2)UCFE:601(3)UCOE:第5位覆盖错误标志.,当UCAxRXBUF中前一帧数据还未读出新01(4)UCPE:第4位奇偶校验错误标志.当UCPEN=0,UCPE被读为01(5)UCB

温馨提示

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

评论

0/150

提交评论