找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1604|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

簡易電壓表測量設(shè)備的制作

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:111893 發(fā)表于 2020-2-6 10:07 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
簡易電壓表測量設(shè)備的制作proteus仿真及其C語言程序,供參考

#include <reg52.h>
#define TIMEFRQ 480 //定義定時器定時頻率
#define CLOCK 22118400   //系統(tǒng)時鐘
#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);
}

//定時器初始化
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結(jié)果函數(shù)
unsigned char get_8bit()
{
   unsigned        int temp = 0;
          wr=1;
        rd=0;//ADC數(shù)據(jù)一直輸出
        wr=0;
        wr=1;//啟動ADC
        delay(1000);//延時等待ADC結(jié)束
        temp = P1;
        return(temp);
}

main()
{
        unsigned long int SUM = 0;
        unsigned int counter;
        unsigned char j;
        j = num        ;        //num=50
        Init_T1();         //定時器初始化
           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ù)點               
                led_buf[0] = 20;//熄滅
                led_buf[1] = 20;//熄滅
                /*************************************/

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


/*定時器中斷,完成數(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
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表