资源描述:
《基于msp430温度数码管显示.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、./*************************************************程序功能:用DS18B20测量室温并在数码管上显示。-------------------------------------------------测试说明:观察显示温度数值。*************************************************/#include#include"DS18B20.h"#include"DS18B20.c"#definewei_hP5O
2、UT
3、=BIT5#definewei_lP5OUT&=~BIT5#defineduan_lP6OUT&=~BIT6#defineduan_hP6OUT
4、=BIT6//要显示的6位温度数字uchardN[6];//数码管七段码;0--fucharscandata[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//数码管位选变量ucharcnt=0;voidDisp_Numb(uinttemper);/*
5、***************主函数****************/voidmain(void){/*下面六行程序关闭所有的IO口*/P5DIR=0xff;P5OUT=0xff;P1DIR=0XFF;P1OUT=0XFF;P2DIR=0XFF;P2OUT=0XFF;P3DIR=0XFF;P3OUT=0XFF;P4DIR=0XFF;P4OUT=0XFF;P5DIR=0XFF;P5OUT=0XFF;P6DIR=0XFF;P6OUT=0XFF;uchari;WDTCTL=WDTPW+WDTHOLD;/*------选择系统主时钟
6、为8MHz-------*/BCSCTL1&=~XT2OFF;//打开XT2高频晶体振荡器do{IFG1&=~OFIFG;//清除晶振失败标志..for(i=0xFF;i>0;i--);//等待8MHz晶体起振}while((IFG1&OFIFG));//晶振失效标志仍然存在?BCSCTL2
7、=SELM_2+SELS;//MCLK和SMCLK选择高频晶振P6DIR
8、=BIT6;P6OUT
9、=BIT6;//关闭电平转换P5DIR
10、=BIT5;P5OUT
11、=BIT5;//关闭电平转换P6DIR
12、=BIT7;P6OUT
13、=BIT7
14、;//关闭蜂鸣器//设置看门狗定时器,初始化控制数码管的IOWDTCTL=WDT_ADLY_1_9;IE1
15、=WDTIE;//P4DIR=0xff;//P5DIR=0xFF;//P5OUT=0xff;//P4OUT=0xff;//P6DIR=0xff;//P6OUT=0xFF;//计数时钟选择SMLK=8MHz,1/8分频后为1MHzTACTL
16、=TASSEL_2+ID_3;//打开全局中断_EINT();//循环读数显示while(1){Disp_Numb(Do1Convert());//不停地转换显示}}/*******
17、************************************函数名称:watchdog_timer功能:看门狗定时器中断服务函数,进行数码管动态扫描参数:无返回值:无********************************************/#pragmavector=WDT_VECTOR__interruptvoidwatchdog_timer(void){//P4OUT=0xFF;//wei_h;//wei_l;P4OUT=scandata[dN[5-cnt]];..if(cnt==1)P4OU
18、T
19、=BIT7;//在第二位显示小数点duan_h;duan_l;P4OUT=~(1<20、nttemper){uchari;for(i=0;i<6;i++)dN[i]=0;//初始化显示变量//数值转换if(temper&BIT0){dN[0]=5;dN[1]=2;dN[2]=6;}if(temper&BIT1){dN[1]+=5;dN[2]+=2;dN[3]+=1;}if(t