




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章MSP430单片机的通用IO接口,I/O口是单片机控制系统对外沟通的最基本部件,从基本的键盘、LED显示到复杂的外设芯片等,都是通过I/O口的输入、输出操作来进行读取或控制的。为满足单片机系统对外部设备控制的需要,MSP430提供了许多功能强大、使用方便灵活的输入/输出接口。为了减少芯片引脚的数量以降低芯片的成本,又提供更多功能的I/O口,现在许多单片机都采用了I/O口复用技术,即端口可作为通用的I/O口使用,也可作为某个特殊功能的端口使用,用户可根据系统的实际需要来定义使用。这样就为设计开发提供了方便,简化了单片机系统的硬件设计工作。,MSP430F249单片机的每组I/O口都有4个控制寄存器,分别为方向控制寄存器PxDIR、输入寄存器PxIN、输出寄存器PxOUT和功能选择寄存器PxSEL,此处,小写字母“x”表示6组I/O口的数字序号,x=16,即P1口的方向控制寄存器为P1DIR,P6口的方向控制寄存器为P6DIR。另外,P1和P2口还具有3个中断寄存器,分别为中断允许寄存器PxIE、中断沿选择寄存器PxIES和中断标志寄存器PxIFG,此处,x=12。,Px口的每个引脚都可以单独配置成输入或者输出方向的控制。需要注意的是:MSP430系列单片机端口输出电流最大为6mA,当需要驱动比较大的负载的时候,需要利用三极管或者缓冲器来提高端口的驱动能力。MSP430单片机的I/O口为双向I/O口,因此在使用I/O口前首先要用方向选择寄存器来设置每个I/O口的方向,在程序运行中还可以动态改变I/O口的方向。例如P1.0、P1.1、P1.2接有按键,P1.4、P1.5、P1.6接有LED,通用I/O接口应用示例如图3.1所示。P1DIR|=BIT4+BIT5+BIT6;/P1.4、P1.5、P1.6设为输出P1DIR/P1.0、P1.1、P1.2设为输入(可省略),图3.1通用I/O接口应用示例图,P1OUT=BIT4+BIT5+BIT6;/P1.4P1.6输出高电平/二极管阳极接高电平,二极管不发光if(P1IN/P1.4输出低电平点亮LED,实例3.1彩灯控制,任务要求:利用MSP430F249单片机的P1口控制8个发光二极管LED1LED8,P1口接入三个开关K1K3,当K1闭合时,LED1和LED4闪烁,闪烁时间1s;当K2闭合时,LED2和LED5闪烁,闪烁时间2s;当K3闭合时,LED1LED8循环闪烁,闪烁时间1s。,分析说明:发光二极管LED是一种半导体器件,当两端压降大于1V时,通过5mA左右的导通电流时即可发光。导通电流越大,亮度越高,但若电流过大,会烧毁二极管,一般我们控制在320mA。在这里,给发光二极管串联一个电阻的目的就是为了限制通过发光二极管的电流不要太大,因此这个电阻又称为“限流电阻”,通常取3001000。MSP430F249单片机的I/O口输出电流最大为6mA,所有电流之和不超过48mA。且当其I/O口输出“0”时,可以吸收最大40mA的电流。因此采用单片机I/O口控制发光二极管负极的设计。,图3.2实例3-1彩灯控制硬件电路图,#include#defineucharunsignedchar#defineuintunsignedint/*软件延迟ms子程序*/voiddelayus(uintt)uinti;while(t-)for(i=1300;i0;i-);voidmain(void)uintmask=0 x01;WDTCTL=WDTPW+WDTHOLD;/关闭看门狗P1DIR=0 xFF;/设置方向为输出P1SEL=0 x00;/设置为普通I/O口P1OUT=0 xFF;/LED输出全部关闭while(1)if(P2IN/LED0,LED4闪烁,delayus(100);/延迟0.1selseif(P2IN/无键按下,关闭全部LED,在output选file项中,勾选Overridedefault选项,输入文件名和类型,选择other单选按钮,在Output选项中可以有很多种不同的输出格式选择。我们可以选择其中三种格式,一种是即intelstandard(intel公司标准),此时文件名应该为flash.hex,这个输出格式可以供proteus进行仿真,但是不能源码调试,或者作为单片机下载的二进制文件;一种是即TI公司对MSP430系列单片机利用BSL方式进行烧写的一种格式,此时文件名应该为flash.txt;还有一种是这是proteus对MSP430系列单片机实现源码级调试一种文件格式,此时文件名应该为flash.d90,为以后程序调试方便,可以选择最后一种。其他的输出文件格式就不一一介绍了。,实例3-2花样彩灯控制任务要求:利用MSP430F249单片机的P1口控制8个发光二极管LED1LED8,点亮顺序如表3-9所示,每个发光二极管点亮时间为0.5s。,#include#defineucharunsignedchar#defineuintunsignedint#defineSHIFT_NUM8/移位循环次数8enumLED_MODELEFT_SHIFT_ON,/单个LED左移模式RIGHT_SHIFT_ON,/单个LED右移模式LEFT_SHIFT_OFF,/多个LED左移模式RIGHT_SHIFT_OFF,/多个LED右移模式;enumLED_MODEmode;/*软件延迟ms子程序*/voiddelayus(uintt)uinti;while(t-)for(i=1300;i0;i-);,voidmain(void)uintmask=0 x01;uchari;ucharmode=LEFT_SHIFT_ON;WDTCTL=WDTPW+WDTHOLD;/关闭看门狗P1DIR=0 xFF;/设置方向为输出P1SEL=0 x00;/设置为普通I/O口P1OUT=0 xFF;/LED输出全部关闭while(1)for(i=0;i=1;if(mask=0 x00)/下一个状态的初始值mask=0 x01;break;,caseLEFT_SHIFT_OFF:/多个LED左移模式mask=1;mask,实例3-3带按键选择的花样灯任务要求:利用MSP430F249单片机的P1口控制8个发光二极管LED1LED8,发光二极管根据P0口的接入的开关K1K5完成不同的显示花样变换。当K1闭合时,LED1和LED2点亮,延迟0.1s之后LED2和LED3点亮,最后是LED7和LED8点亮后重新开始;当K2闭合时,LED1LED8相当于8位二进制数,延迟0.1s之后加一并点亮对应的LED;当K3闭合时,先LED1LED4点亮,延迟0.1s后LED5LED8点亮;随后LED1LED2、和LED5LED6点亮,延迟0.1s后LED3LED4、LED7LED8逐次点亮,最后LED1、LED3、LED4、LED6点亮,延迟0.1s后LED2、LED4、LED6、LED8点亮后重新开始;当K4闭合时,显示如图3.xxxx,图中0部分为发光的LED。即先点亮P1.0P1.3引脚连接的4个LED,然后让LED从右向左移动,当P1.7引脚连接的LED点亮后,下一步重新点亮P1.0,依次循环。,图3.14实例3-3硬件电路图,#include#defineucharunsignedchar#defineuintunsignedint/*软件延迟ms子程序*/voiddelayus(uintt)uinti;while(t-)for(i=1300;i0;i-);voidmain(void)uchari;ucharval=0;ucharmask1=0 x80;ucharmask2=0 x01;ucharmode=4;staticunsignedcharLEDs=0 x0f;/静态变量用于存储LEDs发光状态,WDTCTL=WDTPW+WDTHOLD;/关闭看门狗P1DIR=0 xFF;/设置方向为输出P1SEL=0 x00;/设置为普通I/O口P1OUT=0 xFF;/LED输出全部关闭while(1)if(P2INelseif(P2IN/LED按照二进制数据累加显示delayus(1000);elseif(P2IN,case1:/每一个LED间隔显示P1OUT=0 x55;delayus(1000);P1OUT=0 xAA;delayus(1000);break;mode/=2;if(mode=0)mode=4;elseif(P2INif(mask1|mask2)=0 x00),mask1=0 x80;mask2=0 x01;elseif(P2IN/关闭全部LED,实例3-416个花样灯控制任务要求:利用MSP430F249单片机的P1和P4口控制16个发光二极管LED1LED16,发光二极管有8种花样显示,显示速度可调,由P2口三个按键K1K3控制,分别是模式按键、加速和减速按键。这三个按键和前面所用的开关不同,按键在按下后会在内部弹性元件的作用下自动弹起。模式按键按下一次,花样显示模式变换一次,按下8次后循环到第一种模式,加速和减速按键可以控制LED的闪烁速度。,图3.1616个LED花样灯硬件电路图,3.3LED数码管显示,实例3-5单个数码管显示任务要求:使用MSP430F249单片机实现单个8段共阴极数码管的显示,依次循环显示015的十六进制数,即“0F”。,#includeunsignedcharconstled_tab=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,/共阴数码管编码表0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;voiddelayus(unsignedintt)unsignedinti;while(t-)for(i=1330;i0;i-);voidmain(void)unsignedchari;WDTCTL=WDTPW+WDTHOLD;/关闭看门狗P1DIR=0 xFF;/设置方向为输出P1OUT=0 x00;while(1)for(i=0;i10;i+)P1OUT=tablei;delayus(100);,实例3-6两位数码管加减计数任务要求:两位数码管显示099,带加减计数功能,利用两个按键分别做加法和减法功能,每按一次,数字增加或者减小1,当增加到99或者减小到0是不变。,多位数码管的显示方式,一个LED数码管只能显示一位数字,在很多单片机系统中经常要使用多个LED数码管,如要显示时间、温度、压力等等。在实例3-5中,一个数码管使用了单片机的8个I/O口线输出段码(公共端接GND)。显然,当使用多个数码管时,采用此控制方式会存在问题,如要使用6个数码管,则需要48个通用I/O口,系统就无法连接其它的外围设备和电路。另外,采用此方式显示字符时,每个LED都要消耗一定的电流,在极端情况下最多有8个LED工作,如果有多个数码管工作,则消耗的电流非常可观,因此多个数码管的显示驱动系统的实现,有多种不同的方式可以采用,而且在硬件和软件的设计上也是不同的。,所谓静态显示,就是把多个数码管的每一段(adp)与一个8位并行口连接起来,而公共端则根据数码管的种类连接到“VCC”或“GND”端。图3.24所示为一个四位LED的静态显示电路。这种连接方式的每一个数码管都需占用一个单独的具有锁存功能的I/O端口,单片机只需把要显示的段码发送到接口电路即可,直到要显示新的数据时,再发送新的段码。,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省诸暨市荣怀小学2024-2025学年六年级上学期期末考试语文试题
- 汉字对话课件
- 网红经济现状与未来趋势分析
- 2025年农村土地转让协议模板
- 2024年秋新北师大版数学一年级上册教学课件 第二单元 5以内数加与减 第5课时 可爱的小猫
- 水表井安全知识培训课件记录
- 燃气设备紧急故障应急方案
- 混凝土施工过程中的温差控制技术方案
- 建筑工程项目施工现场物流与仓储方案
- 消防疏散指示标志设置方案
- 2025届高考日语二轮复习 阅读理解“主旨题”解题技巧 课件
- 社区卫生服务中心护理管理工作制度
- 安徽省A10联盟2024-2025学年高二上学期9月初开学摸底考数学(B卷)试题2
- 干部廉政档案登记表
- 吊篮施工安全技术交底
- 第七单元 专题突破9 聚焦变异热点题型-2025年高中生物大一轮复习
- 2023年海南省社区网格员真题九十天冲刺打卡单选题+多选题+填空题+判断题+客观题A卷
- 《初中数学变式题》课件
- 个人替公司代付协议
- XF-T 3004-2020 汽车加油加气站消防安全管理
- 2.2算法的概念及其描述课件人教中图版高中信息技术必修1
评论
0/150
提交评论