📄 main.c
字号:
#include<MSP430x14x.h>
#include"adc12.h"
#include"wendu.h"
#include"disp.h"
void InitSys();
void Delay_Ms(unsigned long nValue);
int main( void )
{
//定义LED段码
unsigned char seg[16]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
unsigned int ad_mem[16],wen_h,iq1;
unsigned char q0,shishu[3],iq2;
int *pmem=ADC12MEM;//指针pmem指向ADC12MEM
WDTCTL=WDTPW+WDTHOLD; //关闭看门狗
InitSys();
//初始化寄存器
for(q0=0;q0<16;q0++)
{
ad_mem[q0]=0x00;
*pmem=0x00;
pmem++;
}
while(1)
{
//单通道单次转换
AdcDo(0,0);//转换首地址为0,单通道单次转换,转换模式0
SetTongDao(10,0,0,1,1);//模拟输入通道为10,转换存储寄存器0,参考电压1,测温度,本次转换结束后触发中断
Adc12Open(0);//打开ADC12模块
Adc12Go();//转换开始
Adc12Open(100);//关闭ADC12模块
AdcGet(ad_mem);//读转换值
wen_h=(unsigned char)SuanHuaShi(ad_mem[0]);//计算华氏温度
shishu[2]=wen_h/100;
shishu[1]=wen_h/10;
shishu[0]=wen_h%10;
for(iq1=0;iq1<3;iq1++)
{
iq2=seg[shishu[iq1]];
Disp_Led(iq2,iq1);
Delay_Ms(5);
}
}
}
/******************************************************************************
系统初始化
******************************************************************************/
void InitSys()
{
unsigned int iq0; //iq0为在函数内部声明局部变量
//使用XT2振荡器
BCSCTL1 &=~XT2OFF; //打开XT2振荡器
do
{
IFG1 &=~OFIFG; //清除振荡器失效标志
for(iq0=0xFF;iq0>0;iq0--); //延时,等待XT2起振
}
while((IFG1 & OFIFG)!=0); //判断XT2是否起振
BCSCTL2=SELM_2+SELS; //选择MCLK,SMCLK为XT2
void Init_Port(void);//显示端口初始化
Adc12Init();
_EINT();//开全局中断
}
/******************************************************************************
延时函数,毫秒量级
******************************************************************************/
void Delay_Ms(unsigned long nValue)
{
unsigned long nCount;
//int i;
unsigned long j;
nCount=60000;
//for(i=nValue;i>0;i--)
// {
for(j=nCount;j>0;j--);
// }
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -