中科因仑“3+1”工程特种兵精英论坛

标题: AD-DA转换电压表 [打印本页]

作者: 张衍波    时间: 2015-4-8 13:11
标题: AD-DA转换电压表
#define ENABLE_BIT_DEFINITIONS

#include "includes.h"



//#define Vref 50000
void init_adc(void);
void WDR(void);
void WDT_init(void);

//unsigned char adc_mux = 0x01;  //通道选择

unsigned char RSend;
unsigned char RS_buf[10];
unsigned char RS_flag;
void main(void)
{      
    float j;  
    int count;
    unsigned char *test = "The Voltage is: ";
    unsigned char *value = "0.000 V";       
    unsigned char *RS;
    RS = RS_buf;
    RS_flag = 0;
    delay_nms(1);   
    //dataport=0xff;
    OSCCAL=0Xab;//系统时钟校准,不同的芯片和不的频率,
    init_adc();       
    InitSerial();   
    //init_time1();
    Init_LCD();  
   // WDT_init();

    LCD_DisplayString(1,1,test);   
    LCD_DisplayString(2,1,value);   
    put_string(value);  
    put_char(0x0d);
    put_char(0x0a);     
    while(1)
    {        
       // j = (float)(((float)((Vref/1023)))*(ADCH*256+ADCL))/1000.00;
        j = (float)(((float)((Vref/1023)))*( ADC&0X3FF))/1000.00;
        count = j*100;                                       
        value[0] = count /1000+0x30;
        count = count %1000;
        value[2] = count /100+0x30;
        count = count %100;
        value[3] = count  /10 + 0x30;                         
        value[4] = count  %10 + 0x30;                         

        LCD_Cursor(0,1);
        LCD_DisplayString(2,1,value);  
        put_string(value);
        put_char(0x0d);
        put_char(0x0a);        
        delay_nms(1000);      
         if(RS_flag)
        {
            LCD_DisplayString(2,10,RS);
            RS_flag = 0;
        }
    }
       
}

#pragma vector = USART_RXC_vect
    __interrupt void usart_isr( void )
{
    SREG &= !(1<<7);
    RS_flag = 1;
    RSend++;
    RS_buf[RSend] = UDR;
    put_char(RS_buf[RSend]);
    if(RSend>=10)
    {
        RSend = 0;
    }
    SREG |= (1<<7);   
}

[attach]2119[/attach]







欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4