资源简介

很好用,实时更新显示,lcd1602的程序可以用51单片机的移植

资源截图

代码片段和文件信息

/*********************************************************
程序功能:MCU的片内ADC对P6.0端口的电压进行转换
          将模拟电压值显示在1602液晶上。
----------------------------------------------------------
测试说明:调节电位器R7的旋钮观察液晶显示数字变化。
*********************************************************/
#include  

#include  “LCD1602.h“

#define   Num_of_Results  32

typedef unsigned char uchar;
typedef unsigned int  uint;

uchar shuzi[] = {“0123456789.“};
uchar tishi[] = {“Voltage Is:“};

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

/************************主函数****************************/
void main(void)
{
  WDTCTL = WDTPW+WDTHOLD;                   //关闭看门狗
  LcdReset();                               //复位1602液晶
  DispNChar(2011tishi);                  //显示提示信息
  Disp1Char(121‘V‘);                      //显示电压单位
  P6SEL |= 0x01;                            // 使能ADC通道
  ADC12CTL0 = ADC12ON+SHT0_8+MSC;           // 打开ADC,设置采样时间
  ADC12CTL1 = SHP+CONSEQ_2;                 // 使用采样定时器
  ADC12IE = 0x01;                           // 使能ADC中断
  ADC12CTL0 |= ENC;                         // 使能转换
  ADC12CTL0 |= ADC12SC;                     // 开始转换 
  _EINT();   
  LPM0;  
  while(1);   
  
}

/*******************************************
函数名称: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];            
        }
        su

评论

共有 条评论