摩尔芯闻 > 行业新闻 > 半导体 > MSP430单片机制作智能数字万用表

MSP430单片机制作智能数字万用表

51hei ·2020-07-24 00:00·电子工程世界
阅读:740

电路原理图如下:

单片机源程序如下:

/*

* 简易低功耗万用表

*/

#include

#include "LCD12864P.h"


unsigned int ADC_flag,ADC_flag1,shua_xin;

unsigned int ADC_data[8],ADC_result[8],mser,song,liang_cheng = 0,s,wen_pt,pt100 = 0,zu_zhi = 0;


unsigned int data0,data1,data2,data3,data4,data5,data6,data7;


//double data0,data1,data2,data3,data4,data5,data6,data7;

unsigned int table[]={0x00,0x02,0x01,0x04,0x08,0xEF,0xdf,0xcf,0x80};//量程选择 【1】直流10v   【2】直流1v  【3】电阻值10k


/*

*初始化

*/

void int_t()

{


WDTCTL = WDT_MDLY_8;    //看门狗定时器的初始化设置

IE1 |= WDTIE;

Ini_Lcd();                                 //lcd初始化

BCSCTL1 = CALBC1_8MHZ;

DCOCTL  = CALDCO_8MHZ;

/*

P1DIR &= BIT3+BIT4;/////////将按键口设置为输入

P1REN |= BIT3+BIT4;////////打开上拉电阻,目的为产生触发沿高电平往低电平

P1IE  |= 0X18;//////////设置按键口中断

P1IES |= 0X18;///////////下降沿中断。只有在松手时触发中断的产生

*/

P1DIR &= BIT3;/////////将按键口设置为输入

P1REN |= BIT3;////////打开上拉电阻,目的为产生触发沿高电平往低电平

P1IE  |= 0X08;//////////设置按键口中断

P1IES |= 0X08;///////////下降沿中断。只有在松手时触发中断的产生


P2DIR &= ~(BIT2+BIT3+BIT4+BIT5);/////////将功能选择按键口设置为输入        1.直流电压   2.交流电压   3.电阻量程    4.电容测量


P1DIR |= BIT5 + BIT6 + BIT7 ;                        //        将扩展口为输出


_EINT();                                          //使能中断,这是一个C编译器支持的内部过程。


}

/*

* 按键延时程序

*/

void delay(unsigned int n)//带参数有返回值的函数

{

unsigned int i;

unsigned int j;

for(i=n;i>0;i--)

for(j=100;j>0;j--)

_nop();

}

/**************************************************************

*名称:ADC()

*功能:AD设置转换  中断

****************************************************************/


void  ADC()

{

P1SEL |= BIT0 + BIT1 + BIT2 + BIT4;//+ BIT3;//+ BIT4 + BIT5 + BIT6 + BIT7;                  //设置为模拟输入

ADC10AE0  |= BIT0 + BIT1 + BIT2+ BIT4;// + BIT3;//+ BIT4 + BIT5 + BIT6 + BIT7;   //开启通道A1/A2/A4/A5/A6/A7

ADC10CTL0|=ADC10ON+MSC+ADC10SHT_2+ADC10IE;                        //打开ADC转换  ,ADC10使能 ,设置采用频率16个周期,允许中断

ADC10CTL0 |=SREF_1 + REFON + REF2_5V;                           //开内部参考电压为2.5V,允许中断

ADC10CTL1|=CONSEQ_3+INCH_7;                                                 //使用双(4)通道、循环采集模式

ADC10DTC1|=0x08;                                                                      //每一通道连续采样1次

_BIS_SR(GIE);

}

/*

*功能:AD数据处理

*/

void ADC_DATA()

{

unsigned char i;

ADC10CTL0&=~ENC;

while(ADC10CTL1&ADC10BUSY);                                                //检测AD是否繁忙

ADC10CTL0|=ENC+ADC10SC;                                                  //启动ADC

ADC10SA=(unsigned int)ADC_result;                                //获取ADC_result[]的首地址。首先对A1、A0采样,放入ADC_result[0]和ADC_result[1]中,如此循环下去。

for(i=0;i<8;i++)

{

ADC_data[i]=0;

ADC_data[i]=ADC_result[i];

//        ADC_data[i]=(ADC_data[i]*25)/1023;                     //将ADC转换成实际的电压值

}

}

/*

* 扩展芯片595写入程序

*/

void kuo_zhan(unsigned int dat)

{

unsigned int i;

for(i=0;i<8;i++)

{

if((dat<

P1OUT|=BIT5;

else

P1OUT &= ~BIT5;

P1OUT &= ~BIT7;

_NOP();

P1OUT |= BIT7;

_NOP();

}

P1OUT &= ~BIT6;

_NOP();

P1OUT |= BIT6;

_NOP();

}

/*

* 直流电压检测

*/

void zhi_liu()

{

unsigned int song_chao;


lcd_pos(1,0);

Disp_HZ("★低功耗万用表★",8);


lcd_pos(2,0);

Disp_HZ("直流电压",4);


lcd_pos(3,0);

Disp_HZ("测量量程",4);


lcd_pos(4,0);

Disp_HZ("测量电压",4);


if(liang_cheng == 1)                                                //量程为10v的时候数据处理

{

kuo_zhan(table[1]);                                                //打开10v通道

song_chao = data0*5.8585*0.002443*100;                                        //

if(ADC_flag1 == 1)

{

ADC_flag1 = 0;

lcd_pos(3,5);

Disp_SZ(10/10);

Disp_SZ(10%10);

lcd_pos(3,6);

Disp_HZ("V",1);


lcd_pos(4,5);

Disp_SZ(song_chao/1000);

Disp_SZ(song_chao%1000/100);

Disp_SZ(song_chao%100/10);

Disp_SZ(song_chao%10);


lcd_pos(4,7);

Disp_HZ("V",1);

}

}

else if(liang_cheng == 2)                                                //量程为10v的时候数据处理

{

kuo_zhan(table[2]);

关键字: MSP430 单片机 智能数字万用表 编辑:什么鱼 引用地址: http://news.eeworld.com.cn/mcu/ic504353.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

分享到:
微信 新浪微博 QQ空间 LinkedIn

上一篇:基于msp430f169的蓝牙风扇可调速程序

下一篇:推动半导体人才培养,瑞萨杯信息科技前沿专题邀请赛开赛

打开摩尔直播,更多新闻内容
半导体大咖直播分享高清观看
立即下载