ImageVerifierCode 换一换
格式:DOCX , 页数:123 ,大小:42.24KB ,
资源ID:15144738      下载积分:5 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-15144738.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MSP430x14x系列单片机程序实例.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

MSP430x14x系列单片机程序实例.docx

1、MSP430x14x系列单片机程序实例目录1、4KEY-独立按键测试程序 22、4X4KEY-矩阵键盘测试程序 53、ADC-IN0-ADC0显示数字量测试程序 94、ADC-IN0-Continue-ADC连续转换模式测试程序 135、ADC-IN0-Voltage-数码管显示ADC电压大小测试程序 176、DAC5615-DAC直接控制测试程序 207、DAC5615-SPI-DAC通过SPI接口控制测试程序 228、DISPLAY-LED-数码管显示测试程序 259、DS18B20-DS18B20采集温度测试程序 2710、DS1302-12864在12864液晶中显示测试程序 3211

2、、DS1302-DS1302实时时钟在1602液晶中显示测试程序 4012、INFRARED-遥控器红外一体化解码测试程序 4713、INTKEY-中断键盘测试程序 5214、LCD1602-1602液晶显示测试程序 5515、LCD12864-12864液晶显示字符汉字测试程序 5916、LED8-LED发光二极管闪烁测试程序 6317、LED-turn-LED流水显示测试程序 6318、MADA-步进电机驱动测试程序 6519、RS485-RS485通信测试程序 6620、SOUND-蜂鸣器发声测试程序 6921、SOUND-无源蜂鸣器发声测试程序 7022、TIMERA-99S-定时器9

3、9秒计时测试程序 7123、TIMERA-CONTINUE-定时器连续计数模式测试程序 7424、TIMERA-PWM1-定时器PWM输出测试程序 761、4KEY-独立按键测试程序/*/DM430-A型开发板独立键盘控制程序,通过数码管显示按键值,采用逐键扫描/独立键盘接在P14P17口,键值定义为14,初始默认显示0*/#include #include Config.h /开发板配置头文件,主要配置IO端口信息/*/ MSP430IO口初始化/*void Port_Init() LED8SEL = 0x00; /设置IO口为普通I/O模式,此句可省 LED8DIR = 0xFF; /设置

4、IO口方向为输出 LED8PORT = 0xFF; /P2口初始设置为FF DATASEL = 0x00; /设置IO口为普通I/O模式,此句可省 DATADIR = 0xFF; /设置IO口方向为输出 DATAPORT = 0xFF; /P4口初始设置为FF CTRSEL = 0x00; /设置IO口为普通I/O模式,此句可省 CTRDIR |= BIT3 + BIT4; /设置IO口方向为输出,控制口在P63,P64 CTRPORT = 0xFF; /P6口初始设置为FF KEYSEL = 0x00; /设置IO口为普通I/O模式,此句可省 KEYDIR = 0x0F; /高四位输入模式,

5、低四位输出模式,外部上拉电阻 KEYPORT= 0xF0; /初始值0xF0/*/ 74HC573控制数码管动态扫描键值显示函数/*void Display_Key(uchar num)uchar i,j; j=0x01; /此数据用来控制位选for(i=0;i8;i+) DCTR1; /控制数码管段数据的74HC573的LE管脚置高 WCTR1; /控制数码管位的74HC573的LE管脚置高 DATAPORT=j; /设置要显示的位,也就是哪一个数码管亮 WCTR0; /锁存位数据,下面送上段数据以后,就显示出来了 DATAPORT=tablenum; /送要显示的数据,这里是键值 DCTR

6、0; /锁存段数据,数码管亮一个时间片刻 j=j1; /移位,准备进行下一位的显示 delay_us(500); /显示一个时间片刻,会影响亮度和闪烁性 Close_LED(); /显示完8个数码管后关闭数码管显示,否则可能导致各个数码管亮度不一致/*/ 键盘扫描子程序,采用逐键扫描的方式/*uchar Key_Scan(void) uchar key_check;uchar key_checkin; key_checkin=KEYIN; /读取IO口状态,判断是否有键按下 key_checkin&= 0xF0; /屏蔽掉低四位的不确定值if(key_checkin!=0xF0) /IO口值发

7、生变化则表示有键按下 delay_ms(20); /键盘消抖,延时20MS key_checkin=KEYIN; /再次读取IO口状态if(key_checkin!=0xF0) /确定是否真正的有键按下 key_check=KEYIN; /有键按下,读取端口值 switch (key_check & 0xF0) /判断是哪个键按下 case 0xE0:key=1;break;case 0xD0:key=2;break;case 0xB0:key=3;break;case 0x70:key=4;break; else key=0xFF; /无键按下,返回FF return key;/*/ 主程序

8、/*void main(void) uint key_store=0x00; /没有按键按下时,默认显示1 WDT_Init(); /看门狗初始化 Clock_Init(); /时钟初始化 Port_Init(); /端口初始化,用于控制IO口输入或输出 Close_LED(); delay_ms(100); /延时100mswhile(1) Key_Scan(); /键盘扫描,看是否有按键按下if(key!=0xff) /如果有按键按下,则显示该按键键值14 switch(key) case 1: Display_Key(0x01);key_store=0x01;break; /根据键值显示

9、到数码管上case 2: Display_Key(0x02);key_store=0x02;break; case 3: Display_Key(0x03);key_store=0x03;break;case 4: Display_Key(0x04);key_store=0x04;break; else Display_Key(key_store); /没有按键的时候显示上次的键值 2、4X4KEY-矩阵键盘测试程序/*/DM430-A型开发板矩阵键盘控制程序,通过数码管显示按键值,采用逐行扫描/4X4键盘接在P1口,通过控制IO口状态变化,逐行扫描按键是否按下*/#include #incl

10、ude Config.h /开发板配置头文件,主要配置IO端口信息/*/ MSP430IO口初始化/*void Port_Init() LED8SEL = 0x00; /设置IO口为普通I/O模式,此句可省 LED8DIR = 0xFF; /设置IO口方向为输出 LED8PORT = 0xFF; /P2口初始设置为FF DATASEL = 0x00; /设置IO口为普通I/O模式,此句可省 DATADIR = 0xFF; /设置IO口方向为输出 DATAPORT = 0xFF; /P4口初始设置为FF CTRSEL = 0x00; /设置IO口为普通I/O模式,此句可省 CTRDIR |= B

11、IT3 + BIT4; /设置IO口方向为输出,控制口在P63,P64 CTRPORT = 0xFF; /P6口初始设置为FF KEYSEL = 0x00; /设置IO口为普通I/O模式,此句可省 KEYDIR = 0x0F; /高四位输入模式,低四位输出模式,外部上拉电阻 KEYPORT= 0xF0; /初始值0xF0/*/ 74HC573控制数码管动态扫描键值显示函数/*void Display_Key(uchar num)uchar i,j; j=0x01; /此数据用来控制位选for(i=0;i8;i+) DCTR1; /控制数码管段数据的74HC573的LE管脚置高 WCTR1; /

12、控制数码管位的74HC573的LE管脚置高 DATAPORT=j; /设置要显示的位,也就是哪一个数码管亮 WCTR0; /锁存位数据,下面送上段数据以后,就显示出来了 DATAPORT=tablenum; /送要显示的数据,这里是键值 DCTR0; /锁存段数据,数码管亮一个时间片刻 j=j1; /移位,准备进行下一位的显示 delay_us(500); /显示一个时间片刻,会影响亮度和闪烁性 Close_LED(); /显示完8个数码管后关闭数码管显示,否则可能导致各个数码管亮度不一致/*/ 键盘扫描子程序,采用逐行(列)扫描的方式/*uchar Key_Scan(void) uchar

13、statevalue,key_checkin,key_check; KEYPORT=0xf0; /在IO口由输出方式变为输入方式时要延迟一个周期 KEYPORT=0xf0; /采取写两次的方法延时 key_checkin=KEYIN; /读取IO口状态,判断是否有键按下if(key_checkin!=0xf0) /IO口值发生变化则表示有键按下 delay_ms(20); /键盘消抖,延时20MS key_checkin=KEYIN;if(key_checkin!=0xf0) KEYPORT=0xfe; /逐行扫描开始 KEYPORT=0xfe; /写两次延时,下同 key_check=KEY

14、IN; switch (key_check) /根据读到的IO口值判断按键的按下情况 case 0xee:key=15;break;case 0xde:key=11;break;case 0xbe:key=8;break;case 0x7e:key=4;break; KEYPORT=0xfd; KEYPORT=0xfd; key_check=KEYIN;switch (key_check) case 0xed:key=14;break;case 0xdd:key=10;break;case 0xbd:key=7;break;case 0x7d:key=3;break; KEYPORT=0xfb

15、; KEYPORT=0xfb; key_check=KEYIN;switch (key_check) case 0xeb:key=13;break;case 0xdb:key=0;break;case 0xbb:key=6;break;case 0x7b:key=2;break; KEYPORT=0xf7; KEYPORT=0xf7; key_check=KEYIN;switch (key_check) case 0xe7:key=12;break;case 0xd7:key=9;break;case 0xb7:key=5;break;case 0x77:key=1;break; else s

16、tatevalue=0xff; /无按键时返回值key=statevalue;return(key); return(key);/*/ 主程序/*void main(void) uint key_store=0x01; /没有按键按下时,默认显示1 WDT_Init(); /看门狗初始化 Clock_Init(); /时钟初始化 Port_Init(); /端口初始化,用于控制IO口输入或输出 Close_LED();while(1) Key_Scan(); /键盘扫描,看是否有按键按下if(key!=0xff) /如果有按键按下,则显示该按键键值015 switch(key) case 1:

17、 Display_Key(0x01);key_store=0x01;break; /根据键值显示到数码管上case 2: Display_Key(0x02);key_store=0x02;break; case 3: Display_Key(0x03);key_store=0x03;break;case 4: Display_Key(0x04);key_store=0x04;break; case 5: Display_Key(0x05);key_store=0x05;break;case 6: Display_Key(0x06);key_store=0x06;break;case 7: Di

18、splay_Key(0x07);key_store=0x07;break;case 8: Display_Key(0x08);key_store=0x08;break;case 9: Display_Key(0x09);key_store=0x09;break; case 0: Display_Key(0x00);key_store=0x00;break;case 10: Display_Key(0x0a);key_store=0x0a;break; case 11: Display_Key(0x0b);key_store=0x0b;break; case 12: Display_Key(0x

19、0c);key_store=0x0c;break; case 13: Display_Key(0x0d);key_store=0x0d;break; case 14: Display_Key(0x0e);key_store=0x0e;break;case 15: Display_Key(0x0f);key_store=0x0f;break; else Display_Key(key_store); /没有按键的时候显示上次的键值 3、ADC-IN0-ADC0显示数字量测试程序/*/DM430-A型开发板数码管显示ADC转换结果程序,显示输入到ADC的电压转换后的数字量/MSP430单片机内部1

20、2位ADC,采用内部2.5V基准,单通道单次转换,中断模式/通过调节ADC_IN0电位器,可以更改输入电压,最大显示量4095/数码管控制采用74HC573锁存器控制,采用动态显示机制,采用后四位数码管显示*/#include #include Config.h /开发板配置头文件,主要配置IO端口信息static uchar Flag=0; /标志变量uint TEMP=0; /ADC值暂存变量/*/ MSP430IO口初始化/*void Port_Init() LED8SEL = 0x00; /设置IO口为普通I/O模式,此句可省 LED8DIR = 0xFF; /设置IO口方向为输出 L

21、ED8PORT = 0xFF; /P2口初始设置为FF DATASEL = 0x00; /设置IO口为普通I/O模式,此句可省 DATADIR = 0xFF; /设置IO口方向为输出 DATAPORT = 0xFF; /P4口初始设置为FF CTRSEL = 0x00; /设置IO口为普通I/O模式,此句可省 CTRDIR |= BIT3 + BIT4; /设置IO口方向为输出,控制口在P63,P64 CTRPORT = 0xFF; /P6口初始设置为FF /*/ 74HC573控制数码管动态扫描显示函数,显示采集到的温度/*void Display(uint data_q,uint data

22、_b,uint data_s,uint data_g)uchar i,j; j=0x01; /此数据用来控制位选 for(i=0;i4;i+) /用后4位数码管来显示 DCTR1; WCTR1; DATAPORT=j; WCTR0; j=(j1); DATAPORT=0x00; /前4位都不显示,送数据00即可 DCTR0; delay_ms(2); DCTR1; /开始显示千位 WCTR1; DATAPORT=j; WCTR0; j=(j1); DATAPORT=tableA1; DCTR0; delay_ms(1); DCTR1; /开始显示百位 WCTR1; DATAPORT=j; WC

23、TR0; j=(j1); DATAPORT=tableA2; DCTR0; delay_ms(1); DCTR1; /开始显示十位 WCTR1; DATAPORT=j; WCTR0; j=(j1); DATAPORT=tableA3; DCTR0; delay_ms(1); DCTR1; /开始显示个位 WCTR1; DATAPORT=j; WCTR0; j=(j1); DATAPORT=tableA4; DCTR0; delay_ms(1); DCTR1; WCTR1; DATAPORT=0xff; WCTR0; /*/ 电压数据处理函数/*void Data_do(uint temp_d)uint

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2