久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2620|回復: 0
打印 上一主題 下一主題
收起左側

基于51單片機的數字電壓表(分享文件)

[復制鏈接]
跳轉到指定樓層
樓主
大家好:
          希望我的資料能幫助你

1,實物圖片


2,原理圖及PCB


3,手工制作PCB

4,程序
#include<reg52.h>//頭文件
#include<intrins.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int//宏定義
uchar code table[]=
{
   0xc0,0xf9,0xa4,0xb0,0x99,
   0x92,0x82,0xf8,0x80,0x90,
}; //共陽數碼管段碼表 沒有小數點 0~9
uchar code table1[]=
{
0x40,0x79,0x24,0x30,0x19,
0x12,0x02,0x78,0x00,0x10
};//帶小數點的編碼     0~9
sbit ADCCLK=P1^0;//ADC0832時鐘端
sbit DI=P1^1;//ADC0832數據輸入
sbit DO=P1^1;//ADC0832數據輸出,輸入輸出共用P1.1
sbit ADCCS=P1^2;//ADC0832片選端
uchar dat=0;//AD值
uchar count=0;//定時器計數
uchar CH=0;//通道變量
uint num,ge,xiao1,xiao2,shi,shi1,ge1,xiao3,xiao4;
uint dy=0;
/**********************************************************/
/***********************************************************
初始化函數
***********************************************************/
void init()
{
TMOD=0x01;//定時器0工作方式1
TH0=0;//賦初值
TL0=0;
EA=1;//開總中斷
TR0=1;//啟動定時器0
ET0=1;//開定時器0中斷
}
/*********************************************************
延時函數
**********************************************************/
void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
     for(b=110;b>0;b--);
}
/**************************************************
AD轉換函數
***************************************************/
uint ADC0832()
{
uint i,test,adval;
adval=0;
test=0;
ADCCS=0; //選通ADC0832,CS使能端保持低電平并保持低電平直到轉化完全結束
_nop_(); //延時
ADCCLK=1;//第一個脈沖的上升沿
_nop_(); //延時
DI=1;   //第一個脈沖下降沿之前DI必須是高電平,ADC0832轉換啟動信號
ADCCLK=0;//第一個脈沖的下降沿
_nop_(); //延時
ADCCLK=1;//第二個脈沖的上升沿
_nop_(); //延時
  if(CH==0)//DI輸入先后輸入1,0。選通CH0通道
    {
     DI=1;//第二個脈沖下降之前送人通道選擇第二位
     ADCCLK=0;//第二個下降沿
     _nop_();
     ADCCLK=1;//第三個脈沖上升沿
      _nop_();
     DI=0;   //第三個脈沖下降沿之前送入通道選擇第3位
     ADCCLK=0;//第三個脈沖的下降沿
      _nop_();
     ADCCLK=1;//開始第四個脈沖
     _nop_();
    }
   else    //選通CH1通道
    {
      DI=1;   //第二個脈沖下降沿之前送通道選擇的第一位
     ADCCLK=0; //第二個下降沿
     _nop_();
     ADCCLK=1; //第三個脈沖的上升沿
      _nop_();
     DI=1;//第三個脈沖的下降沿之前送通道通道選擇的第二位  
     ADCCLK=0;//第三個脈沖的下降沿
     _nop_();
     ADCCLK=1;//開始第四個脈沖
     _nop_();
    }
   ADCCLK=0;//第四個脈沖的下降沿
    DO=1;
    for(i=0;i<8;i++)//讀取前八位
    {
        _nop_();
        adval<<=1;
        ADCCLK=1;
        _nop_();
        ADCCLK=0;
        if(DO)
           adval|=0x01;
        else
           adval|=0x00;
}
    for(i=0;i<8;i++)//讀取后八位
    {
        test>>=1;
        if(DO)
           test|=0x80;
        else
           test|=0x00;
         _nop_();
        ADCCLK=1;
        _nop_();
        ADCCLK=0;
    }
    if(adval==test)//比較前8位與后8位的數值,如果不相同,舍去
        dat=test;
    _nop_();
    ADCCS=1;//釋放ADC0832
    DO=1;
    ADCCLK=1;
    return dat;
}
/*******************************************************
數據轉換函數
********************************************************/
void convdata(uint i)//數據轉換函數
{
shi=i/51;//十位,8位AD,0-255對應0-5V,例如:AD得到的數據是1000 0000,即128。128/51=2.509,可見i/51,就可以得到十位
ge=(i%51)*10/51;//小數點后一位,i(例如128)用51取余數,等于26,26*10/51=5,就得到個位
xiao1=((i%51)*10%51)*10/51;//小數點后兩位
dy=abs(shi*100+ge*10+xiao1-0          ///3 后改成0的
)*4;//硬件電路中,用4個10k電阻串聯,取其中一個電阻電壓,總電壓就是4倍,測量范圍變寬了,但是精度降低了。
         //-3是矯正值
shi1=dy/1000;
ge1=dy%1000/100;
xiao2=dy%100/10;
xiao3=dy%10;
}
/********************************************************
顯示函數
********************************************************/
void display()
{
P2=0xfe;
if(shi1==0)
{
P0=0xff;
}
else
P0=table[shi1];
delay(5);
P2=0xfd;
P0=table1[ge1];//帶小數點
delay(5);
P2=0xfb;
P0=table[xiao2];
delay(5);
P2=0xf7;
P0=table[xiao3];
delay(5);
P2=0xff;
}
/*********************************************************
主函數
**********************************************************/
void main()
{
init();
while(1)
    {
     convdata(dat);
     display();
    }
}
/***************************************************
中斷服務函數
*****************************************************/
void T0_time() interrupt 1
{
TH0=0x00;//賦初值
TL0=0x00;
num++;
if(num==10)
    {
     num=0;
     dat=ADC0832();
    }
}


5,壓縮包里有更詳細的教程及源文件  謝謝觀賞

數字電壓表.rar

8.8 MB, 下載次數: 29, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产伦精品一区二区三区高清 | 久久三级影院 | 日本 欧美 国产 | 国产精品成av人在线视午夜片 | 欧美日韩精品在线一区 | 欧美精品网站 | 国产二区精品视频 | 久久伊人精品 | 久久国产免费 | 奇米影视在线 | 97伦理影院| 在线国产一区二区 | 欧美成视频 | 欧美久久精品一级黑人c片 91免费在线视频 | 日本天堂视频在线观看 | 久久久久久国产 | 久久在线看 | 在线中文一区 | 日韩欧美国产精品一区二区三区 | 国产视频91在线 | 羞羞视频免费在线 | 日韩一级黄色毛片 | 毛片毛片毛片毛片毛片 | 久久久精品综合 | 国产欧美日韩精品一区 | 国产精品欧美一区二区 | 久久美国 | 欧美日韩免费 | 欧美黑人一区二区三区 | 在线观看a视频 | a级大片 | 99热这里有精品 | 三级在线免费 | 在线国产一区 | 欧美aⅴ | 伊人热久久 | 日本成人二区 | 米奇7777狠狠狠狠视频 | 国产成人在线一区二区 | 国产剧情久久 | 999久久精品|