msp430F149测电压显示在12864上外接一个led

2020-07-29来源: 51hei关键字:msp430F149  测电压  12864  led

注释接口那边不准确,自己判断吧


单片机源程序如下:

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

程序功能:MCU的片内ADC对P6.0端口的电压进行转换

          将模拟电压值显示在1602液晶上。

----------------------------------------------------------

测试说明:调节电位器W1的旋钮观察液晶显示数字变化。

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

#include 

#include  "cry12864.h"

#include  "cry12864.c"

#include  "LED.c"

//typedef unsigned char uchar;

//typedef unsigned int  uint;


#define   Num_of_Results   32


uchar shuzi[] = {"0123456789."};

uchar tishi[] = {"voltage:"};


static uint results[Num_of_Results];    //保存ADC转换结果的数组                                                     // is not used for anything.

void Trans_val(uint Hex_Val);           


/************************主函数****************************/

void main(void)

{

  WDTCTL = WDTPW+WDTHOLD;                   //关闭看门狗

  

  

  /*下面六行程序关闭所有的IO口*/

    P1DIR = 0XFF;P1OUT = 0XFF;

    P2DIR = 0XFF;P2OUT = 0XFF;

    P3DIR = 0XFF;P3OUT = 0XFF;

    P4DIR = 0XFF;P4OUT = 0XFF;

    P5DIR = 0XFF;P5OUT = 0XFF;

    P6DIR = 0XFF;P6OUT = 0XFF;

  

  P6DIR |= BIT2;P6OUT |= BIT2;              //关闭电平转换

  P5DIR|=BIT5;P5OUT&=~BIT5;               //关闭数码管显示

  P6DIR|=BIT6;P6OUT&=~BIT6;                 //半闭数码管显示

  P6DIR|=BIT5;P6OUT&=~BIT5;                 //半闭数码管显示

  LcdReset();                               //复位1602液晶

  DispNChar(0,0,7,tishi);                  //显示提示信息

  Disp1Char(12,1,'V');                      //显示电压单位

  P6SEL |= 0x01;                            // 使能ADC通道

  ADC12CTL0 = ADC12ON+SHT0_8+MSC;           // 打开ADC,设置采样时间

  ADC12CTL1 = SHP+CONSEQ_2;                 // 使用采样定时器

  ADC12IE = 0x01;                           // 使能ADC中断

  ADC12CTL0 |= ENC;                         // 使能转换

  ADC12CTL0 |= ADC12SC;                     // 开始转换

  

  _EINT();

  LPM0;


}


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

函数名称:ADC12ISR

功    能:ADC中断服务函数,在这里用多次平均的

          计算P6.0口的模拟电压数值

参    数:无      

返回值  :无

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

#pragma vector=ADC_VECTOR

__interrupt void ADC12ISR (void)

{

  static uint index = 0;


  results[index++] = ADC12MEM0;               // Move results

  if(index == Num_of_Results)

  {

        uchar i;

        unsigned long sum = 0;


        index = 0;

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

        {

            sum += results[i];

        }

        sum >>= 5;                            //除以32

        

        Trans_val(sum);

  }

}


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

函数名称:Trans_val

功    能:将16进制ADC转换数据变换成三位10进制

          真实的模拟电压数据,并在液晶上显示

参    数:Hex_Val--16进制数据

          n--变换时的分母等于2的n次方      

返回值  :无

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

void Trans_val(uint Hex_Val)

{   

    unsigned long caltmp;

    uint Curr_Volt;

    uchar t1,i;

    uchar ptr[4];

   

    caltmp = Hex_Val;

    caltmp = (caltmp << 5)+(caltmp << 4)+(caltmp << 1);           //caltmp = Hex_Val * 33

    caltmp = (caltmp <<3) + (caltmp << 1);     //caltmp = caltmp * 10

   

    Curr_Volt = caltmp >> 12;  

    if(Curr_Volt>300)

             {   

               P6OUT = ~(P6OUT&BIT1);      

             }

             //Curr_Volt = caltmp / 2^n

    ptr[0] = Curr_Volt / 100;                   //Hex->Dec变换

    t1 = Curr_Volt - (ptr[0] * 100);

    ptr[2] = t1 / 10;

    ptr[3] = t1 - (ptr[2] * 10);

    ptr[1] = 10;                                //shuzi表中第10位对应符号"."

    //在液晶上显示变换后的结果

   

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

     Disp1Char((8+ i),1,shuzi[ptr[i]]);

   

           

   

}


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

上一篇:mpu6050六轴传感器msp430驱动程序
下一篇:msp430f5529捕获加串口源码

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

msp430f149单片机+4*4键盘+1602程序
调试好的msp430f149接4*4键盘代码单片机源程序如下:#include "msp430x14x.h"#include "1602.h"#define  uchar unsigned char#define  uint unsigned int#define  key_DIR P5DIR#define  key_OUT P5OUT#define  key_IN  P5INuchar keymap[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};uchar i,j;uchar checkkey
发表于 2020-07-29
MSP430F149单片机实现公交卡/饭卡充值功能模块
实验目的1.   最基础实现刷卡后显示冲值/扣款说明2.   实现芯片内部寄存器的读写,实现可记忆性。设计思路根据M1射频卡与读写器的通讯过程,程序设计基本流程如下:主函数架构:void main(void){  WDTCTL = WDTPW + WDTHOLD; // 关看门狗  int i = 0;  unsigned char status;  BoardConfig(0xf0);  Init_Port();  InitUART();  Port_init();   //系统初始化,设置IO口属性&
发表于 2020-07-24
<font color='red'>MSP430F149</font>单片机实现公交卡/饭卡充值功能模块
MSP430F149控制ADF4360-7程序
单片机源程序如下:/***********************************************************************************************文件:ADF4370.H作者:沨用途:集成锁相环ADF4360-7控制程序MCU: MSP430F149 晶振:8MHz编译器:IAR Ror MSP430 5.10硬  件:2011_10_06***********************************************************************************************/#define uchar
发表于 2020-07-23
MSP430F149学习之路——按键与LED
代码 1 /*********************************** 2 程序功能:用按键控制LED状态 3 缺点:按键按下后无法改变LED灯的状态,可以利用板上的复位键^~^ 4 *************************************/ 5 #include <msp430x14x.h> 6  7 int k,i=0; 8 void int_clk(); 9 void led(int n);10 void main()11 {12   WDTCTL = WDTPW
发表于 2020-06-30
MSP430F149学习之路——LED
 1 #include <msp430x14x.h> 2  3 void int_clk(); 4 void delay(int i); 5 void main() 6 { 7   WDTCTL = WDTPW + WDTHOLD; 8   int_clk(); 9   P6DIR = 0XFF;10   P6OUT = 0Xff;11   while(1)12   {13   
发表于 2020-06-20
高压耐压测试仪的特点及应用
高压耐压测试仪,又称耐压测试仪 、超高压耐压测试仪 、便携式交直流高压耐压测试仪、 交直流超高压耐压测试仪 交直流高压耐压测试仪。根据其作用可称为电气绝缘强度试验仪、介质强度测试仪等。其工作原理是:把一个高于正常工作的电压加在被测设备的绝缘体上,持续一段规定的时间,加在上面的电压就只会产生很小的漏电流,则绝缘性较好。程控电源模块、信号采集调理模块和计算机控制系统三个模块组成测试系统。选择耐压仪的2个指标:最大输出电压值及最大报警电流值的数值。特点:1、采用轴对称不等边八角形外壳独特结构方式;可输出双高压。2、油箱内油面低于油箱沿,避免了漏油现象。3、接线柱在箱盖上,避免了碰撞,提高了机械和电气性能。4、产品具有结构紧凑、电气性能
发表于 2020-01-09
高压耐压测试仪的特点及应用
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved