基于msp430温度数码管显示_第1页
基于msp430温度数码管显示_第2页
基于msp430温度数码管显示_第3页
基于msp430温度数码管显示_第4页
基于msp430温度数码管显示_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、/* 程序功能:用 DS18B20 测量室温并在数码管上显示。 测试说明:观察显示温度数值。 */ #include #include DS18B20.h #include DS18B20.c #define wei_h P5OUT|= BIT5 #define wei_l P5OUT /数码管七段码; 0-f uchar scandata16 = 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; /数码管位选变量 uchar cnt = 0; vo

2、id Disp_Numb(uint temper); /* 主函数 */ void main(void) /* 下面六行程序关闭所有的 IO 口*/ P5DIR = 0 xff; P5OUT = 0 xff;P1DIR = 0XFF;P1OUT = 0XFF; P2DIR = 0XFF;P2OUT = 0XFF; P3DIR = 0XFF;P3OUT = 0XFF; P4DIR = 0XFF;P4OUT = 0XFF; P5DIR = 0XFF;P5OUT = 0XFF; P6DIR = 0XFF;P6OUT = 0XFF; uchar i; WDTCTL=WDTPW+WDTHOLD; /*

3、选择系统主时钟为 8MHz*/ / 打开 XT2 高频晶体振荡器 BCSCTL1 do IFG1 /清除晶振失败标志 for (i = 0 xFF; i 0; i-); /等待 8MHz 晶体起振 /晶振失效标志仍然存在? /MCLK 和 SMCLK 选择高频晶振 /关闭电平转换 /关闭电平转换 关闭蜂鸣器 while (IFG1 BCSCTL2 |= SELM_2 + SELS; P6DIR |= BIT6;P6OUT |= BIT6; P5DIR |= BIT5;P5OUT |= BIT5; P6DIR |= BIT7;P6OUT |= BIT7; / / 设置看门狗定时器,初始化控制数码

4、管的 IO WDTCTL = WDT_ADL Y_1_9; IE1 |= WDTIE; / P4DIR = 0 xff; / P5DIR = 0 xFF; / P5OUT = 0 xff; /P4OUT = 0 xff; /P6DIR = 0 xff; /P6OUT = 0 xFF; /计数时钟选择 SMLK=8MHz , 1/8 分频后为 1MHz TACTL |= TASSEL_2 + ID_3; /打开全局中断 _EINT(); /循环读数显示 while(1) Disp_Numb(Do1Convert();/ 不停地转换显示 /* 函数名称: watchdog_timer 功 能:看门

5、狗定时器中断服务函数,进行数码 管动态扫描 参 数:无 返回值 :无 */ #pragma vector = WDT_VECTOR _interrupt void watchdog_timer(void) / P4OUT = 0 xFF; / wei_h; / wei_l; P4OUT = scandatadN5-cnt; if(cnt=1) P4OUT |= BIT7;/ 在第二位显示小数点 duan_h; duan_l; P4OUT = (1cnt); wei_h; wei_l; cnt+; if(cnt = 6) cnt = 0; /* 函数名称: Disp_Numb 功 能:将从 DS

6、18B20 读取的 11bit 温度数据转换 成数码管显示的温度数字 参数: temper-11bit 温度数据 返回值 :无 */ void Disp_Numb(uint temper) uchar i; for(i = 0;i = 10) dN2 -= 10; dN3 += 1; if(temper if(temper if(temper if(temper if(temper if(dN4 = 10) dN4 -= 10; dN5 += 1; if(temper dN5 += 1; if(dN4 = 10) dN4 -= 10; dN5 += 1; if(temper dN5 += 3;

7、 if(dN4 = 10) dN4 -= 10; dN5 += 1; if(temper dN5 += 6; if(dN4 = 10) dN4 -= 10; dN5 += 1; if(dN5 = 10) dN5 -= 10; / /*18b20.C*/ #include typedef unsigned char uchar; typedef unsigned int uint; #define DQ1 P1OUT |= BIT6 #define DQ0 P1OUT / 增计数到 CCR0 /等待 /停止计数 /清除中断标志 TACTL |= MC_1; while(!(TACTL TACTL

8、 TACTL /* 函数名称: Init_18B20 功 能:对 DS18B20 进行复位操作 参 数:无 返回值 :初始化状态标志: 1- 失败, 0-成功 */ uchar Init_18B20(void) uchar Error; DQ_out; /拉高 _DINT(); /关闭中断 DQ0; /拉低 DelayNus(500); DQ1; /拉高 DelayNus(55); DQ_in; /方向设置输入 _NOP(); if(DQ_val) /输入值为 1 Error = 1; /初始化失败 else /输入值为 0 Error = 0; /初始化成功 DQ_out; /设为输出 DQ

9、1; /拉高 _EINT(); /中断使能 DelayNus(400); return Error; /* 函数名称: Write_18B20 功 能:向 DS18B20 写入一个字节的数据 参数: wdata- 写入的数据 返回值 :无 void Write_18B20(uchar wdata) uchar i; _DINT(); for(i = 0; i = 1; DelayNus(50);/ 延时 50us DQ1; DelayNus(10);/ 延时 10us _EINT(); /* 函数名称: Read_18B20 功 能:从 DS18B20 读取一个字节的数据 返回值 :读出的一个

10、字节数据 */ uchar Read_18B20(void) uchar i; uchar temp = 0; _DINT(); for(i = 0;i = 1; DQ0; DelayNus(6);/ 延时 6us DQ1; DelayNus(8);/ 延时 9us DQ_in; _NOP(); if(DQ_val) temp |= 0 x80; DelayNus(45);/ 延时 45us DQ_out; DQ1; DelayNus(10); / 延时 10us /读到的一个字节 _EINT(); return temp; /* 函数名称: Skip 功 能:发送跳过读取产品 ID 号命令

11、参 数:无 返回值 :无 */ void Skip(void) Write_18B20(0 xcc); /* 函数名称: Convert 功 能:发送温度转换命令 参 数:无 返回值 :无 */ void Convert(void) Write_18B20(0 x44); /* 函数名称: Read_SP 功 能:发送读 ScratchPad 命令 参 数:无 返回值 :无 */ void Read_SP(void) Write_18B20(0 xbe); /* 函数名称: ReadTemp 功 能:从 DS18B20 的 ScratchPad 读取温度转换结果 参 数:无 返回值 :读取的温

12、度数值 uint ReadTemp(void)uchar temp_low; uint temp; temp_low = Read_18B20();/ 读低位 temp = Read_18B20();/ 读高位 temp = (temp 0;i-) DelayNus(60000); / 延时 800ms 以上 do /发送读 ScratchPad 命令 /读取的温度数值 i = Init_18B20(); while(i); Skip(); Read_SP(); return ReadTemp(); /* / * 18b20.h * void DelayNus(unsigned int n); unsigned char Init_18B20(voi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论