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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機的ADC0809數字電壓表Proteus仿真程序

[復制鏈接]
跳轉到指定樓層
樓主
說明 按鍵按下去 進入單路電壓采集模式(及電壓表模式) 按鍵彈起來 就是8路電壓輪流采集模式
基于51單片機的ADC0809 4路數字電壓表下面是仿真圖



以下代碼已經測試過

單片機代碼:
#include <reg52.h>             //頭文件
#define uchar unsigned char           //宏定義無符號字符型
#define uint  unsigned  int           //宏定義無符號整型
code uchar seg7code[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //顯示段碼 數碼管字跟
sbit ST=P3^0;   //A/D啟動轉換信號
sbit OE=P3^1;   //數據輸出允許信號
sbit EOC=P3^2;  //A/D轉換結束信號
sbit CLK=P3^3;  //時鐘脈沖  
sbit KEY=P2^7;
uint z,x,AD0809, date;        //定義數據類型
/******************************************************************
延時函數
******************************************************************/
void delay(uchar t)
{
  uchar i,j;
   for(i=0;i<t;i++)
   {
            for(j=13;j>0;j--);
         { ;
         }
   }
}
/**********************************************************************
                數碼管動態掃描
*********************************************************************/
void xianshi() //顯示函數
{
    uint z,x;
    z=date%100/10;                         //求千位
    x=date%10;                 //求百位
    P3&=0x0f;
          P0=seg7code[z]&0x7f;
          P3|=0X10;
          delay(80);

          P3&=0X0f;  
    P0=seg7code[x];
          P3|=0X20;
          //delay(80);
  }
unsigned char  GetVoltage(unsigned char  ch)
{
  float temp;
  unsigned char value=0;
  P2=0xf0;
  P2|=ch;
  delay(1);
  ST=0;                                //使采集信號為低
  delay(1);
  ST=1;                                //開始數據轉換
  delay(1);
  ST=0;                                //停止數據轉換
  delay(1);
  while(!EOC);                //等待數據轉換完畢
  OE=1;                                //允許數據輸出信號
  delay(1);
  AD0809=P1;                    //讀取數據
  OE=0;                                //關閉數據輸出允許信號
  temp=AD0809;
  temp=temp*19.531f;  //計算出電壓值(19.531=5000mv除以AD的位數值256=5000/256)
  value=temp/100;//為了方便顯示 進行縮小 轉換成整形 比如實際電壓1.5V 1500mv/100=15 15在的十位顯示的時候作為電壓的整數位 個位作為小數位
  return value;
}
void Timer0Init(void)                //20毫秒@12.000MHz
{
        TMOD &= 0xF0;                //設置定時器模式
        TL0 = 0xE0;                //設置定時初值
        TH0 = 0xB1;                //設置定時初值
        TF0 = 0;                //清除TF0標志
        TR0 = 1;                //定時器0開始計時
  ET0=1;
  EA=1;
}
/*************************************************************************
                                主函數        
**************************************************************************/
  unsigned char count=0;
void main()
{
  KEY=1;
  Timer0Init();
  while(1)                           //無限循環
  {
    if(KEY==0)
    {
      date=GetVoltage(0);                //數碼管顯示的數據值,其中20為采集數據的毫安值
    }
    else
    {
      date=GetVoltage(count);//采集第count路AD值

    }
    xianshi();                        //數碼管顯示函數
  }
}        
unsigned char delay1=0;
void timer0( ) interrupt 1 //定時器0 10ms定時
{

        TL0 = 0xE0;                //設置定時初值
        TH0 = 0xB1;                //設置定時初值
  delay1++;
  if(delay1>20)
  {//AD切換顯示的定時時間到
    delay1=0;//中斷計數清零
    count++;//路數變量自加
      if(count>7)//路數變量大于7
        count=0;//清零
  }
}

Keil代碼與Proteus仿真下載: 仿真代碼.7z (899.14 KB, 下載次數: 72)

評分

參與人數 1黑幣 +40 收起 理由
admin + 40 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91免费版在线观看 | 国产999精品久久久久久 | 一区二区福利视频 | 国产高清免费视频 | 亚洲成人自拍 | 久久精品中文字幕 | 中文字幕av亚洲精品一部二部 | 成人av观看 | 日本天天操 | 韩日一区| 午夜视频一区二区 | 日本不卡一区二区三区 | 日韩欧美国产一区二区三区 | 国产日韩欧美综合 | 黄色av免费网站 | 国产日韩欧美一区二区 | 爱爱免费视频网站 | 精品在线看 | 亚洲一区电影 | 久久国产精品免费一区二区三区 | 午夜一区二区三区在线观看 | 亚洲一区免费 | 欧美精品一区三区 | 亚洲欧洲成人av每日更新 | 国产精品99999999 | 国产精品久久久久久妇女6080 | 天堂中文av | 操操日| 噜噜噜噜狠狠狠7777视频 | 色在线免费视频 | 最新日韩在线 | а天堂中文最新一区二区三区 | chinese中国真实乱对白 | 亚洲成人中文字幕 | 亚洲激情在线观看 | 国产精品2 | 欧美专区在线观看 | 亚洲欧洲激情 | 国产三级| 日韩欧美一区二区三区免费观看 | 国产精品国产三级国产aⅴ中文 |