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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于msp430的数据传输程序.docx

1、基于msp430的数据传输程序基于msp430的数据传输程序发送#include #include #include /*dht11*/unsigned char FLAG; unsigned char temp,TEMP;unsigned char T_data_H,T_data_L,RH_data_H,RH_data_L,checkdata; unsigned char T_data_H_temp,T_data_L_temp,RH_data_H_temp,RH_data_L_temp,checkdata_temp; unsigned char comdata; /*/unsigned ch

2、ar a,time;unsigned char RH_DATA,TH_DATA,ADD,a,data;unsigned char table=H: % T: c ;unsigned char table1=Light: add:01 ;void delay(int xms) /i=xms即延时约xms毫秒 int i,j; for(i=xms;i0;i-) for(j=110;j0;j-);void delay_10us() unsigned char i; for(i=0;i40;i+);void write_com(unsigned char com)/写液晶命令函数 P3DIR = 0x

3、03; P3OUT &= BIT0; /rs=0 P3OUT &= BIT1; /lcden=0 P2DIR = 0xff; P2OUT = com; /P0=com delay(10); P3OUT |= BIT1;/lcden=1 delay(10); P3OUT &= BIT1; /lcden=0void write_date(unsigned char date)/写液晶数据函数 P3DIR = 0x03; P3OUT |= BIT0; /rs=1 P3OUT &= BIT1; /lcden=0 P2DIR = 0xff; P2OUT = date; /P0=date delay(10

4、); P3OUT |= BIT1;/lcden=1 delay(10); P3OUT &= BIT1;/lcden=0void init_1602()/初始化函数 unsigned char num; P3DIR = 0x03; P3OUT &= BIT1; /lcden=0 P3OUT &= BIT0; /rs=0 write_com(0x38);/1602液晶初始化 write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); for(num=0;num15;num+)/写入液晶固定部分显示 write_date(t

5、ablenum); delay(10); write_com(0x80+0x40); for(num=0;num15;num+) write_date(table1num); delay(10); void write_shuzi(unsigned char add,char date) char shi,ge; shi=date/10; ge=date%10; write_com(0x80+add); write_date(0x30+shi); write_date(0x30+ge);void write_shuzi1(unsigned char add,char date) char sh

6、i,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge);void int_clk() unsigned char i; BCSCTL1 &= XT2OFF; /打开xt振荡器 BCSCTL2 |= SELM1+SELS; /MCLK为8MHZ,SMCLK为1MHZ do IFG1 &= OFIFG; /清除震荡错误标志 for(i = 0;i 100;i+) _NOP(); /延时 while(IFG1 & OFIFG) != 0);/如果标志为1,则继

7、续循环等待 IFG1 &= OFIFG;void int_usart() U0CTL |= SWRST;/复位串口 U0CTL |= CHAR;/8位数据 U0TCTL |= SSEL1; /时钟设置 U0BR0 = 0x00; U0BR1 = 0x0d; UMCTL0 = 0x00;/波特率2400 ME1 |= UTXE0+URXE0;/使能接收和发送 U0CTL &= SWRST;/清除串口复位信号 P3SEL |= BIT4; P3SEL |= BIT5;/使用扩展功能 P3DIR |= BIT4; sent_byte(unsigned char data) while(IFG1 &

8、UTXIFG0)=0);/判断发送缓存区是否结束 U0TXBUF = data;void int_pwm() P1SEL |= BIT2;/P1.2作为pwm输出 P1DIR |= BIT2; TACCR0 = 26; /pwm频率为10k.8000k/800=10k TACCR1 = 13; /占空比1:1 TACCTL1 = OUTMOD0+OUTMOD1+OUTMOD2;/输出模式选择 TACTL |= TASSEL1+MC0;void COM(void) /数据0 1确认 unsigned char i; for(i=0;i8;i+) FLAG=2; while(!(P1IN & BI

9、T7)&FLAG+); /1bit是否结束 delay_10us(); temp=0;/ 26us28us 表示为0 if(P1IN & BIT7) temp=1; / 超过28us依然为高电平 表示为1 FLAG=2; while(P1IN & BIT7)&FLAG+); if(FLAG=1) break;/FLAG溢出超时则跳出for循环 /判断数据位是0还是1 / 如果高电平高过预定0高电平值则数据位为 1 comdata=1; comdata|=temp; void init_DHT11() P1DIR |= BIT7; P1OUT |= BIT7; delay(400); void

10、RH(void) /-湿温度读取子程序 - P1DIR |= BIT7; P1OUT &= BIT7; delay(300); /主机拉低高于18ms P1OUT |= BIT7;/总线由上拉电阻拉高 主机延时20us delay_10us(); P1DIR &= BIT7;/主机设为输入 判断从机响应信号 if(!(P1IN & BIT7)/判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行 FLAG=2; while(!(P1IN & BIT7)&FLAG+);/判断从机是否发出 80us 的低电平响应信号是否结束 FLAG=2; while(P1IN & BIT7)&FLAG+

11、);/判断从机是否发出 80us 的高电平, 如发出则进入数据接收状态 COM();/数据接收状态 RH_data_H_temp=comdata; /湿度整数8位 COM(); RH_data_L_temp=comdata; /湿度小数8位 COM(); T_data_H_temp=comdata; /温度整数8位 COM(); T_data_L_temp=comdata; /温度小数8位 COM(); checkdata_temp=comdata; /校验位 P1DIR |= BIT7; P1OUT |= BIT7; P1DIR &= BIT7; temp=(T_data_H_temp+T_

12、data_L_temp+RH_data_H_temp+RH_data_L_temp); if(temp=checkdata_temp)/数据校验 正确执行 RH_data_H=RH_data_H_temp; RH_data_L=RH_data_L_temp; T_data_H=T_data_H_temp; T_data_L=T_data_L_temp; checkdata=checkdata_temp; void main( void ) WDTCTL = WDTPW + WDTHOLD;/关看门狗 int_clk(); /初始化时钟 init_1602(); int_usart(); ini

13、t_DHT11(); int_pwm(); P4DIR &= BIT0; while(1) RH(); delay(1500); write_shuzi(2,RH_data_H); delay(50); write_shuzi(11,T_data_H); delay(50); if(P4IN&BIT0)=0) a=0; if(P4IN&BIT0)=1) a=1; write_shuzi1(6,a); RH_DATA = (RH_data_H2)|0);/湿度 TH_DATA = (T_data_H2)|1);/温度 ADD = (a2)|2);/地址 sent_byte( RH_DATA );

14、 delay(1000); sent_byte( TH_DATA ); delay(1000); sent_byte( ADD ); delay(1000); /data = U0RXBUF; /write_shuzi1(8,data); 接收:#include #include #include unsigned int m1,m2,data,data1,data2,data3,add;unsigned char table=H: % T: c ;unsigned char table1=Light: Add: ;/*dht11*/*/void delay(int xms) /i=xms即延

15、时约xms毫秒 int i,j; for(i=xms;i0;i-) for(j=110;j0;j-);void delay1ms() unsigned int k; for(k=0;k0;h-) delay1ms();void write_com(unsigned char com)/写液晶命令函数 P6DIR = 0x03; P6OUT &= BIT0; /rs=0 P6OUT &= BIT1; /lcden=0 P2DIR = 0xff; P2OUT = com; /P0=com delay(15); P6OUT |= BIT1;/lcden=1 delay(15); P6OUT &= B

16、IT1; /lcden=0void write_date(unsigned char date)/写液晶数据函数 P6DIR = 0x03; P6OUT |= BIT0; /rs=1 P6OUT &= BIT1; /lcden=0 P2DIR = 0xff; P2OUT = date; /P0=date delay(15); P6OUT |= BIT1;/lcden=1 delay(15); P6OUT &= BIT1;/lcden=0void init_1602()/初始化函数 unsigned char num; P4DIR = 0x03; P4OUT &= BIT1; /lcden=0

17、P4OUT &= BIT0; /rs=0 write_com(0x38);/1602液晶初始化 write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); for(num=0;num15;num+)/写入液晶固定部分显示 write_date(tablenum); delay(15); write_com(0x80+0x40); for(num=0;num15;num+) write_date(table1num); delay(15); void write_shuzi(unsigned char add,char

18、date) char shi,ge; shi=date/10; ge=date%10; write_com(0x80+add); write_date(0x30+shi); write_date(0x30+ge);void write_shuzi1(unsigned char add,char date) char shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge);void int_clk() unsigned char i; BCSCTL1

19、&= XT2OFF; /打开xt振荡器 BCSCTL2 |= SELM1+SELS; /MCLK为8MHZ,SMCLK为1MHZ do IFG1 &= OFIFG; /清除震荡错误标志 for(i = 0;i 0) P3DIR |= BIT1; P3OUT |= BIT1;/SCK=1; delayms(1); P3OUT &= BIT1;/SCK=0; delayms(1); z-; void init_yuyin() P3DIR |= BIT0; P3OUT |= BIT0;/NOW=1; P3DIR |= BIT2; P3OUT &= BIT2;/RST=0; P3DIR |= BIT1

20、; P3OUT &= BIT1;/SCK=0; P3OUT |= BIT2;/RST=1; delayms(2); P3OUT &= BIT2;/RST=0;void add_yuyin(unsigned char a) Music(a); delayms(50); P3DIR &= BIT0; while(P3IN&BIT0)=0); delay(1000); /P6DIR |= BIT3; void yuyin_wendu(unsigned char tem) unsigned char ge,shi; shi=tem/10; ge=tem%10; add_yuyin(0); add_yu

21、yin(23); add_yuyin(shi+1); add_yuyin(11); add_yuyin(ge+1); add_yuyin(20); void yuyin_shidu(unsigned char shidu) unsigned char ge,shi; shi=shidu/10; ge=shidu%10; add_yuyin(0); add_yuyin(24); add_yuyin(21); add_yuyin(shi+1); add_yuyin(11); add_yuyin(ge+1); void main( void ) WDTCTL = WDTPW + WDTHOLD;/关

22、看门狗 int_clk(); /初始化时钟 init_1602(); int_usart(); init_yuyin(); write_shuzi1(13,1); while(1) data = U0RXBUF;/读取接收到的数据 while(IFG1 & URXIFG0)=0); add = data&0x03; delay(50); switch(add) case 0: data1=(data2)&0x3f); write_shuzi(2,data1); m1+; if(m1=100) yuyin_shidu(data1); m1=0; break; case 1: data2=(data2)&0x3f); write_shuzi(11,data2); m2+; if(m2=100) yuyin_wendu(data2); m2=0; break; case 2:data3=(data2)&0x3f); write_shuzi1(6,data3); break;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1