欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1928|回復: 0
收起左側

簡易電壓表測量設備的制作

[復制鏈接]
ID:111893 發表于 2020-2-6 10:07 | 顯示全部樓層 |閱讀模式
簡易電壓表測量設備的制作proteus仿真及其C語言程序,供參考

#include <reg52.h>
#define TIMEFRQ 480 //定義定時器定時頻率
#define CLOCK 22118400   //系統時鐘
#define LED_SEG P0  //定義數碼管接口
#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}; //緩沖數組

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

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

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

main()
{
        unsigned long int SUM = 0;
        unsigned int counter;
        unsigned char j;
        j = num        ;        //num=50
        Init_T1();         //定時器初始化
           while(1)
        {
                /***更新顯示緩沖區***/
                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就是加小數點               
                led_buf[0] = 20;//熄滅
                led_buf[1] = 20;//熄滅
                /*************************************/

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


/*定時器中斷,完成數碼管顯示刷新*/
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;  //關所有數碼管
   LED_SEG = segcode[led_buf[i]];
   LED_BIT = (1<<i);   
}


51hei截圖20200206100505.png
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表