標(biāo)題: 簡易電壓表測量設(shè)備的制作 [打印本頁]

作者: 木一小哥    時(shí)間: 2020-2-6 10:07
標(biāo)題: 簡易電壓表測量設(shè)備的制作
簡易電壓表測量設(shè)備的制作proteus仿真及其C語言程序,供參考

#include <reg52.h>
#define TIMEFRQ 480 //定義定時(shí)器定時(shí)頻率
#define CLOCK 22118400   //系統(tǒng)時(shí)鐘
#define LED_SEG P0  //定義數(shù)碼管接口
#define LED_BIT P2
#define num 100          //50次測量求平均值

sbit key0 = P3^4;
sbit key1 = P3^5;
sbit wr = P3^6;
sbit rd = P3^7;
unsigned char segcode[]=
{
  0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,
  0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0
};//共陰極
unsigned char led_buf[]={0,0,0,0,0,0,0}; //緩沖數(shù)組

delay(unsigned int t)
{
        while(--t);
}

//定時(shí)器初始化
void Init_T1(void)
{
  TMOD = (TMOD & 0X0F) | 0X10; //定時(shí)器1工作在模式1,16Bit定時(shí)器模式
  TH1 = 255-CLOCK/TIMEFRQ/12/256;
  TL1 = 255-CLOCK/TIMEFRQ/12%256;
  EA = 1;  //開總中斷
  ET1 = 1;
  TR1 = 1;//開啟定時(shí)器和中斷
}

//讀取ADC0804結(jié)果函數(shù)
unsigned char get_8bit()
{
   unsigned        int temp = 0;
          wr=1;
        rd=0;//ADC數(shù)據(jù)一直輸出
        wr=0;
        wr=1;//啟動ADC
        delay(1000);//延時(shí)等待ADC結(jié)束
        temp = P1;
        return(temp);
}

main()
{
        unsigned long int SUM = 0;
        unsigned int counter;
        unsigned char j;
        j = num        ;        //num=50
        Init_T1();         //定時(shí)器初始化
           while(1)
        {
                /***更新顯示緩沖區(qū)***/
                led_buf[2] = counter%10;
                led_buf[3] = counter/10%10;
                led_buf[4] = (counter/100)%10;
                led_buf[5] = (counter/1000)%10+10;//+10就是加小數(shù)點(diǎn)               
                led_buf[0] = 20;//熄滅
                led_buf[1] = 20;//熄滅
                /*************************************/

                SUM += get_8bit()*2; //從P1口讀二進(jìn)制數(shù)據(jù)
                j--;
                if(j==0)                  //采集50次數(shù)據(jù)之后取平均值
                {
                   counter = SUM/num;
                   counter = counter*2.50*1000/255;
                   SUM = 0;
                   j = num        ;
                }       
        }
}


/*定時(shí)器中斷,完成數(shù)碼管顯示刷新*/
void time() interrupt 3
{
   static unsigned char i=0;
   TH1 = 255-CLOCK/TIMEFRQ/12/256;
   TL1 = 255-CLOCK/TIMEFRQ/12%256;   
   i=++i%6;   
   LED_BIT = 0x0;  //關(guān)所有數(shù)碼管
   LED_SEG = segcode[led_buf[i]];
   LED_BIT = (1<<i);   
}


51hei截圖20200206100505.png (87.82 KB, 下載次數(shù): 59)

51hei截圖20200206100505.png





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1