《南航430课程.ppt》由会员分享,可在线阅读,更多相关《南航430课程.ppt(72页珍藏版)》请在三一办公上搜索。
1、,MSP430专题,主讲人:魏小龙2005年11月,本讲稿可以在电子中心网站或www.open-课件栏目下载,9月1日作业,1、求数组a20的和2、求数组a20的最大值、最小值3、看iar 430开发环境使用手册4、看iar 430 c编译器手册,什么是单片机,单片机也叫微控制器单片机就是单片计算机一个芯片就是一台计算机,计算机CPU两大营:INTEL AMD,单片机五花八门,按总线宽度分:4位机;8位机;16位机;32位机;运行速度可以调整:32K12M266M等,有很多国际大公司参与设计生产:51系列 几十个公司生产PIC系列 美国微芯摩托罗拉台湾大陆苏州飞利浦的系列8位51系列以及32位
2、ARM系列德州仪器的系列430十六位单片机南京东大可以生产ARM,单片机应用举例,我们周围的单片机应用有:空调洗衣机电视机微波炉电子手表手机食堂消费机计算机外围:鼠标、键盘、硬盘、光碟一辆汽车有40片左右单片机等等 以上列举都是单片机应用。,空调机控制系统框图,CPU单元,温度采集单元,压缩机风机,键盘,显 示,学习MSP430单片机推荐参考书,MSP430系列超低功耗16位单片机接口技术及系统设计实例 北航出版社 魏小龙 编著MSP430系列单片机C语言程序设计与开发 北航出版社 胡大可 编著,MSP430单片机学习方法,强化理论知识大量做实验勤于思考多动手已经与MSP430厂家TI(德州仪
3、器)建立了联合实验室,拥有60套实验设备。地点:3410。其中40套为赠送,20套购买,MSP430单片机分类,MSP430F449单片机结构,MSP430F449片内资源,16-Bit RISC 结构,12-Bit A/D16-Bit Timer_B 16-Bit Timer_A6*8 I/O比较器USART160 Segments LCD60KB+256B Flash Memory,2KB RAM看门狗基本定时器,MSP430F449内部有什么?,上页内容MSP430F449全有在仿真环境内,我们可以清楚地看到他们打开仿真环境的对应窗口即可。,MSP430开发流程,编写源代码,修改程序,硬
4、件准备,结束,仿真调试,满意?,修改硬件,软件不满意,硬件不满意,满意,MSP430开发调试过程,1、建立工程项目2、编写源代码3、将源代码添加到项目文件4、选择器件5、选择仿真方式6、编译下载代码到芯片7、仿真调试(演示),MSP430开发环境介绍,(举例说明:演示)具体的 实验再讲,MSP430 C语言,可以使用的数据类型(见下页),表达式语句(结构),条件语句 开关语句 循环语句 返回语句,条件语句,语句表达形式有3种(a、b、c):a if(条件表达式)语句bif(条件表达式)语句1else 语句2cif(条件表达式)语句1else if(条件表达式)语句2else if(条件表达式)
5、语句3,开关语句,switch(表达式)case 常量表达式1:语句1break;case 常量表达式2:语句2break;case 常量表达式3:语句3break;default:语句d,循环语句,while(条件表达式)语句;当条件满足时,就反复执行后面的语句,一直执行到条件不满足时。以软件延时程序为例说明该语句是如何执行的。void delay(long v)while(v!=0)v-;,do 语句 while(条件表达式)先执行一次循环体的语句,再判断条件是否满足,以决定是否再执行循环体。下面的程序将数组BUFF20中的全部数据相加。Int x=0;Char I=0;Dox=BUFFI
6、+x;I=I+1;while(I20);,for(初值设定表达式;循环条件表达式;条件更新表达式)语句for语句常用于需固定循环次数的循环。下面的程序段同样实现将数组BUFF20中的全部数据相加的功能。Int x=0;Char I=0;for(I=0;I20;I+)x=BUFFI+x;,goto 语句标号goto语句常用于跳转到一个固定的地址标号。其中固定的地址标号是一个带“:”的标志符。比如:MM:goto MMM,函数的定义与调用,函数类型 函数名(形式参数表)形式参数说明局部变量定义函数体语句存储变量类型 interrupt 中断矢量变量 函数类型 函数名(形式参数表)形式参数说明局部变
7、量定义函数体语句,经常使用的延时函数,void delay(long v)while(v!=0)v-;delay(100)究竟延时多久呢?就是这句话执行需要的时间。时间等于:机器周期需要的机器周期数(在仿真环境中可以测试出来),MSP430单片机的输入输出,P1P2P3P4P5P6,引脚控制寄存器,PnDIR方向寄存器 1为输出、0为输入PnOUT输出寄存器1输出高、0为低PnIN输入寄存器读出口线的状态PnSEL第二功能寄存器n=1,2,3,4,5,6,引脚使用举例,控制连接在P5.1口线的发光二极管的亮与熄:首先、P51为输出 P5DIR=2;亮输出1P5OUT=2;熄灭输出0P5OUT=
8、0;,如何让发光二级管闪烁?,1、亮2、延时1秒钟3、熄灭4、延时1秒钟5、跳转到 步骤1(演示),如何改变发光二级管闪烁的速度?,改变延时的时间参数1、亮2、延时1秒钟3、熄灭4、延时1秒钟5、跳转到 步骤1(演示),如何让一只发光管闪快、另一只慢?,增加一个变量xxxx为模5计数器只有当xx为1的时候第一发光管亮只有当xx小于4的时候第二发光管亮其余时间两个都熄灭(5分钟时间学生自己编写程序),第三个按钮控制前两个按钮,Char key_en=0;If(key=2)key_en=key_en;If(key=0)&(key_en=0)If(key=1)&(key_en=0),串行密码锁设计,
9、按照顺序:KEY0-KEY1-KEY2;KEY1-KEY0-KEY2;K0-K0-K0-K1-K2-K0-K2;K2-K2-K0-K1-K2;错误状态的清除 很重要!,如何让单片机发声?,声音是什么?声音是震动产生的;扬声器发声的原理:处在磁场中的有电流的线圈产生震动,继而发声。不同的频率产生不同的声音;MSP430的端口可以输出不同的频率;继而可以推动扬声器产生不同的声音。下页的程序将发出什么声音呢?,第一段程序,void gun(void)for(ff=40;ff200;ff+)P6OUT=BIT0;/对输出置反 for(tmp=0;tmpff;tmp+);/延时,第二段程序,void s
10、1(void)for(ff=30;ff500;ff+)P6OUT=BIT0;/对输出置反 for(tmp=0;tmpff;tmp+);/延时,第三段程序,void s2(void)for(ff=50;ff100;ff+)P6OUT=BIT0;/对输出置反 for(tmp=0;tmpff;tmp+);/延时,总结,以上三段程序的结构完全一样,但是效果完全不一样!主要为:频率不一样;各频率段的延时不一样。第三段频率高,延时短。,数码管的显示,C,B,E,G,A,F,D,E,G,A,F,D,以上为数码管的原理,实质为8只发光二级管,地端连接在一起,当给ADEG高电平时将显示数字“2”。,C,A,E,
11、D,B,F,GND,H,G,0111 1101,如何显示,实验系统有6只数码管连接在端口上。程序举例(演示),液晶显示器的使用,液晶显示器的控制寄存器LCDCTLLCDMEM I常用:LCDCTL=0XDF;,液晶显示原理与显示码表,C,B,E,G,A,F,D,C,B,E,G,A,F,D,如果红色显示 将显示数字“2”如果HGFEDCBA对应一个字节的高到低位则显示码为:HGFEDCBA0 10 11 0 1 1 0 x5b,常用数字的液晶段码,H G F E D C B A0123456789,液晶码表,什么是码表?就是一个数组,用于查找对应数字的显示码LCD_TAB10=0 x3f,0 x
12、06,0 x5b.;当要 显示“1”的时候,使用语句:LCDMEMN=LCD_TAB1;为什么?,在液晶屏上显示数据,依次显示06:char I;For(I=0;I7;I+)LCDMEMI=LCD_TABI;,如何在液晶上循环显示,作为思考题自己编写程序 为上机内容,如何在液晶上显示闪动的数字,作为思考题上机内容,定时器 TA,TA的原理:,TA的工作方式,4种工作模式:连续增减停,定时器TA的寄存器,控制寄存器 TACTL捕获/比较寄存器,定时器应用举例,产生1秒的定时信号:首先、选择输入信号来源其次、选择工作模式最后、设定比较值开启中断、启动定时器等待时间的到达。,时钟的设计,作为上机内容
13、,请同学们自己编写完整程序要点:1、定时器 设置为1秒中断一次2、写时间程序 两个60进制,一个24进制,7进制3、时间送液晶显示4、显示:星期 时 分 秒 5、每秒发光二极管闪烁,设计闹钟,要点:1、基于前面的时钟程序 2、增加时间控制 3、到达规定的时间点,发光二极管亮5秒,扫描键盘键盘原理,扫描键盘为行列扫描扫描键盘的完整程序为:1、判断是否有按键按下;2、判断是哪个按键按下;3、判断是否按键松开。,按键原理图,电路原理图 行线P11、P12、P13 列线P14、P15、P16、P17全上拉,P13,P14,P16,P17,P15,P12,P11,如何判断是否有按键按下,首先、设置端口:
14、行线为输出、列线为输入。然后、行线输出为低电平最后判断:如果有按键按下,则列线不全为高电平,如果没有键按下,则列线全部为高电平。char Keyj(void)P1DIR=0 x0E;/set p1.1p1.3 设置为输出模式P1OUT=0 x00;/p1.1p1.3 输出值清零return(P1IN 如果返回值为0 xf0 则 有按键按下吗?以后直接调用这个函数,即可判断有否按键按下。,注意:有键按下后,需要消抖动,使用延时再判断的方法即可消除抖动If(Keyj()!=0 xf0)delay(200);/延时消除抖动 If(Keyj()=0 xf0)exit;/没有按键 为抖动 else/确实
15、有键按下/处理,检查程序正确性,测试方法:如果有按键按下则发光管亮If(Keyj()!=0 xf0)delay(200);/延时消除抖动 If(Keyj()=0 xf0)exit;/没有按键 为抖动 else/确实有键按下 P1OUT=1;/处理DELAY(10000);P1OUT=0;,如何查找哪个按键按下,方法为:一个一个地查找。先第一行输出0,检查列线是否非全高否则第二行输出0,检查列线是否非全高否则第三行输出0,检查列线是否非全高如果某行输出0时,查到列线非全高,则该行有按键按下。根据第几行线输出0与第几列线读入为0,即可判断在具体什么位置的按键按下。下页具体程序。,void chec
16、k_Key(void)unsigned char row,col,tmp1,tmp2;/tmp1用来设置P1OUT的值,使P1.1P1.3中有一个为0 tmp1=0 x08;for(row=0;row3;row+)P1OUT|=0 x0E;/p1.1P1.3=1 P1OUT-=tmp1;/P1.1p1.3中有一个为0 tmp1=tmp1/2;/tmp1 右移一位 if(P1IN/tmp2右移,完整的键盘程序,键盘程序过程:判断按键消除抖动判断位置等待松开,void key(void)If(Keyj()!=0 xf0)delay(200);/延时消抖 If(Keyj()!=0 xf0)/确实按下
17、 check_Key();Wait:if(Keyj()=0 xf0)goto wait;/等待松开,将键盘的键码液晶显示,设计时间控制器,要求:(2、3同学讨论设计)时间可以调整控制点5个可以键盘输入控制时间到,发光管亮可以输入每个控制点的发光管亮的时间520秒,计算器设计,要求:(键盘与液晶)(2、3同学讨论设计)被操作数2位,结果4位运算:/操作规则:1、输入两个数字为第一操作数2、输入运算:1、2、3、4/3、输入两个数字为第二操作数4、为取消5、为回车运算(等号),ADC12的使用,MSP430内含12路12位200KPS的ADC:模拟输入端为P6,将P6设置为第二功能则为ADC12;
18、A10为内部温度传感器;,ADC12框图,ADC12使用举例,首先设置ADC12:ADC12CTL0=ADC12ON+REFON+REF2_5V+SHT0_6;/设置ADC12 的内部参考电压2.5伏 然后可以转换:ADC12CTL0|=ENC;/使能转换 启动转换:ADC12CTL0|=ADC12SC;读取结果:result=ADC12MEM0;,温度控制系统设计,使用片内温度传感器使用LED作为控制输出的模拟设置4个温度值:大火加热停止温度点T1、中加热停止温度点T2、小火加热停止温度点T3 温度:T1 T2 T3 大火 中火 小火 停止加热加热器使用LED的亮度表示。,后续430综合实验,1、可编程时间控制器2、复杂计算器设计3、环境温度监测4、小规模LED点阵显示屏(4、5汉字)5、温度控制系统6、数据采集系统7、汉字液晶显示8、数字万用表9、数字稳压直流电源10、数字信号发生器11、机械臂控制12、无线数据采集与无线控制13、电子称设计,WDTCTL=WDTPW+WDTHOLD;/Stop watchdog timer P5DIR|=0 x02;/Set P5.1 to output direction P5DIR,