




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电子大赛MSP430培训资料2014-07根据学生基础较差情况和培训时间较短的情况综合考虑,采用实用主义的做法,用多少,讲多少,以下的资料,贯穿这个思想。实验材料,选用MSP430LaunchPad板,软件选用CCSv5(软件的使用:自学)。一、I/O口MSP430LaunchPad板上所用的CPU为MSP430G2553,20引脚,如下图:有P1和P2两个8脚的口(P2.6和P2.7与晶振合用),为双向I/O口。对这些口的使用,实际是对这些口的寄存器的使用,故必须知道管理这些口的寄存器有哪些?从上表可看出,实际上还有上拉电阻的寄存器(PxREN)以及P1SEL2。开始学习阶段,先涉及3个寄存器,即PxDIR、PxOUT和PxIN。实例1:(选用软件自带的例程MSP430G2xx3_1.c)实验目的:掌握I/O口输出的方法。实验现象:通电后P1.0口所接的红色LED灯闪亮。/*/ MSP430G2xx3 Demo - Software Toggle P1.0/ Description; Toggle P1.0 by xoring P1.0 inside of a software loop./ ACLK = n/a, MCLK = SMCLK = default DCO/ MSP430G2xx3/ -/ /| XIN|-/ | | |/ -|RST XOUT|-/ | |/ | P1.0|-LED/ D. Dang/ Texas Instruments, Inc/ December 2010/ Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10/*#include int main(void) WDTCTL = WDTPW + WDTHOLD; / Stop watchdog timer P1DIR |= 0x01; / Set P1.0 to output direction for (;) volatile unsigned int i; P1OUT = 0x01; / Toggle P1.0 using exclusive-OR i = 50000; / Delay do (i-); while (i != 0); /*思考题:修改程序,使之实现P1.0和P1.6所接的两个LED灯交替闪亮,并修改时间常数。实例2:(按键与指示灯)实验目的:掌握I/O口输入和输出结合的方法。实验现象:按下P1.3脚所接的按键后,LED灯亮,松开按键后,LED灯灭。/*#include int main(void) WDTCTL = WDTPW + WDTHOLD; / Stop watchdog timer P1DIR = 0x41; / Set P1.0、P1.6 to output direction P1OUT = 0x00; / Set P1.0=0、P1.6=0, 即LED灯灭 for (;) if(0x08 & P1IN)=0) P1OUT=0x41; / 如果 P1.3按键按下,灯亮; else P1OUT=0; / 如果 P1.3按键松开,灯灭; /*注意:由于该CPU的I/O口为CMOS口,在输入时为悬浮态(即使启用上拉电阻寄存器上拉,也很微弱),故可接一只10K电阻,在P1.3脚和Vcc间。实例3:(矩阵按键与指示灯)实验目的:掌握I/O口输入和输出结合的方法,理解和掌握按键具有的问题和处理按键所需的步骤和技巧。实验现象:按下矩阵键盘的某一按键,当松开按键后,LED灯以闪亮的次数代表键值数。/*#include #define CPU_F (double)1000000)#define delay_us(x) _delay_cycles(long)(CPU_F*(double)x/1000000.0) / 调用delay_us(x); 延时 X us#define delay_ms(x) _delay_cycles(long)(CPU_F*(double)x/1000.0) / 调用delay_ms(2000);延时2000MSunsigned char Key_Value;void Key_Scan(void)P1DIR = 0xf0; /Set P1.0P1.3 to input;P1.4P1.7 to outputP1OUT = 0x0; /P1.4P1.7 output 0;Key_Value = (P1IN) & 0x0f;/if Key_Value=0, not Key was pressed.P1DIR = 0xff;void Key_DealWith(void)unsigned char i;/Key_Scan(void);switch(Key_Value) /该switch语句根据Key_Value值转化成首键值 case 1: Key_Value = 0;break; case 2: Key_Value = 4;break; case 4: Key_Value = 8;break; case 8: Key_Value = 12;break; default :Key_Value = 99;break; /获取行首键值 P1DIR = 0x0f; /Set P1.0P1.3 to output;P1.4P1.7 to inputP1OUT = 0x00; /P1.0P1.3 output 0;i = (P1IN) & 0xf0; /保留高4位结果switch(i) /该switch语句根据i值转化成列号值,并和首键值相加 case 0x10: Key_Value += 0;break; case 0x20: Key_Value += 1;break; case 0x40: Key_Value += 2;break; case 0x80: Key_Value += 3;break; default :Key_Value = 99;break;P1DIR = 0x0f; /Set P1.0P1.3 to output;P1.4P1.7 to inputP1OUT = 0x00; /P1.0P1.3 output 0;while(P1IN) & 0xf0); /等候按键释放。 P1DIR = 0xff;/*void delay_ms(unsigned int z)unsigned int x,y;for(x=z;x0;x-)for(y=110;y0;y-);*/int main(void)unsigned int i; WDTCTL = WDTPW + WDTHOLD; / Stop watchdog timer DCOCTL=0; BCSCTL1=CALBC1_1MHZ;DCOCTL=CALDCO_1MHZ; /将DCO校准至精准的1MHz P1DIR = 0xff; P1OUT = 0xbe; delay_ms(500); P1OUT = 0xff;delay_ms(500); /P1.0接的LED灯闪亮一次,指示程序开始 while(1) do Key_Scan(); while(Key_Value = 0); /检查是否有按键按下?没有按键按下,等待! delay_ms(20); /有按键按下延时20ms,抗抖动 Key_Scan(); /再次扫描按键,确认按键是否按下? if(Key_Value) /有按键按下,进入键值判断和处理 Key_DealWith(); /得到键值 if(Key_Value != 99) /设定99为错误键值代码 for(i=0;i=Key_Value;i+)/用LED灯闪亮的次数表示按键的键值。 P1OUT = 0xff; delay_ms(500); P1OUT = 0xfe; delay_ms(500); /P1.0所接的LED灯闪烁相应的次数 P1OUT = 0xff; delay_ms(500); /关闭LED灯,返回 /*提示:也可以将键值直接送P1口,通过8只发光管的亮灭情况,读出键值(需适当延时)。实例4:(矩阵按键与1602液晶显示)实验目的:掌握1602液晶的使用技巧。实验现象:按下按键后,键值送液晶的某一位置显示在上一实验的基础上,增加液晶显示部分的程序。/*/#include #define CPU_F (double)1000000)#define delay_us(x) _delay_cycles(long)(CPU_F*(double)x/1000000.0) / 调用delay_us(x); 延时 X us#define delay_ms(x) _delay_cycles(long)(CPU_F*(double)x/1000.0) / 调用delay_ms(2000);延时2000MS/*/unsigned char disp08=Welcome!;unsigned char disp116=0123456789ABCDEF;/*/unsigned char Key_Value;#define lcdrs0 (P2OUT &=0xFE) /设置RS=0#define lcdrs1 (P2OUT |=0x01) /设置RS=1#define lcdrw0 (P2OUT &=0xFD) /设置R/W=0#define lcdrw1 (P2OUT |=0x02) /设置R/W=1#define lcden0 (P2OUT &=0xFB) /设置EN=0#define lcden1 (P2OUT |=0x04) /设置EN=1/整个p1为数据并口传输/*按键扫描函数:void Key_Scan(void)功能:判断矩阵键盘有无按键按下;入口参数:无出口参数:全局变量Key_Value,为0,则没有按键按下。*/void Key_Scan(void)P1DIR = 0xf0; /Set P1.0P1.3 to input;P1.4P1.7 to outputP1OUT = 0x0; /P1.4P1.7 output 0;Key_Value = (P1IN) & 0x0f;/if Key_Value=0, not Key was pressed.P1DIR = 0xff;/*键值处理函数:void Key_DealWith(void)功能:判断按下按键的键值;入口参数:无出口参数:按下按键的ASCII码,在全局变量Key_Value里*/void Key_DealWith(void)unsigned char i;/Key_Scan(void);switch(Key_Value) /该switch语句根据Key_Value值转化成首键值 case 1: Key_Value = 0;break; case 2: Key_Value = 4;break; case 4: Key_Value = 8;break; case 8: Key_Value = 12;break; default :Key_Value = 99;break; /获取行首键值 P1DIR = 0x0f; /Set P1.0P1.3 to output;P1.4P1.7 to inputP1OUT = 0x00; /P1.0P1.3 output 0;i = (P1IN) & 0xf0; /保留高4位结果switch(i) /该switch语句根据i值转化成列号值,并和首键值相加 case 0x10: Key_Value += 0;break; case 0x20: Key_Value += 1;break; case 0x40: Key_Value += 2;break; case 0x80: Key_Value += 3;break; default :Key_Value = 99;break;if(Key_Value !=99) if(Key_Value 0;i-)Lcd1Char(x+,y,ptrn-i); if (x = 0x10) x = 0; y = 1; /按位异或/*主函数:int main(void)功能:扫描按键,将按下的按键键值送液晶,在某一位置显示;入口参数:无出口参数:无*/int main(void)unsigned int i; WDTCTL = WDTPW + WDTHOLD; / Stop watchdog timer DCOCTL=0; BCSCTL1=CALBC1_1MHZ; DCOCTL=CALDCO_1MHZ; /将DCO校准至精准的1MHz P1DIR |= 0xFF; / Set P1 port to output direction P2DIR |= 0xFF; / Set P2 port to output direction LcdReset();/液晶初始化 for(i=0;i8;i+) Lcd1Char(i+4,0,disp0i); LcdN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 提高围手术期护理质量
- 《联想与想象》课件
- 肝性脑病护理指导
- 集体土地搬迁补偿合同8篇
- 生产品质部年终总结
- 液压机理论讲解
- 《祝福》公开课课件
- 三方购房协议书7篇
- 广东省梅州市兴宁市2023-2024学年高一上学期第二次月考化学试题及答案
- 酒店会员卡制度培训大纲
- 作风建设永远在路上教学课件
- (2025)中小学爱国知识竞赛试题附答案
- 小学教材知识点系统复习大纲
- 新媒体文案写作教程(第二版)课件 项目五 微博文案写作 课件
- 《水力学》课件-第4章 水动力学基础(二)
- 生活垃圾填埋场环境污染的排查与治理方案
- 人教版(2024)七年级上册生物第一单元第一、二章综合测试卷(含答案)
- (新教材)人教版二年级上册小学数学教学计划+教学进度表
- 2025年版浙江省劳动合同模板
- 2025年广东中考道德与法治试题解读及答案讲评课件
- 2.2社会主义制度在中国的确立 高中政治必修一人教统编版教学课件
评论
0/150
提交评论