人妻暴雨中被强制侵犯在线,亚洲国产欧美日韩精品一区二区三区,四虎影免看黄,国产无人区二卡三卡四卡不见星空

注冊會員 登錄
機(jī)械社區(qū) 返回首頁

1五湖四海1的個人空間 http://www.xa-space.com/?333152 [收藏] [復(fù)制] [分享] [RSS]

日志

自制單片機(jī)控制電瓶放電容量檢測儀

熱度 5已有 3046 次閱讀2010-12-25 09:18

  本人在2010年12月份開始制作單片機(jī)控制電瓶放電容量檢測儀,經(jīng)過半個月的努力完成了此項(xiàng)目。在其中遇到的問題數(shù)不勝數(shù),但還是用時間和大量精力解決了現(xiàn)有問題。
  工作原理:單片機(jī)控制放電容量檢測儀是由單片機(jī)時鐘控制電路,電子負(fù)載,單片機(jī)AD轉(zhuǎn)換電壓電流檢測電路等組成。首先檢測電瓶的當(dāng)前電壓,根據(jù)電壓的大小判斷電瓶是什么狀態(tài),如果小于10.5V說明已經(jīng)放電結(jié)束,檢測儀不能工作,當(dāng)電壓在充滿電后方可開始準(zhǔn)備工作,當(dāng)按下按鈕S后,啟動信號輸入單片機(jī),單片機(jī)內(nèi)部定時器開始計時,觸發(fā)繼電器開始吸合控制電子負(fù)載對電瓶進(jìn)行放電。電子負(fù)載是利用控制場效應(yīng)管的導(dǎo)通角實(shí)現(xiàn)恒流放電的。同時單片機(jī)AD轉(zhuǎn)換檢測電流電壓然后送到單片機(jī)在通過數(shù)碼管顯示出來。當(dāng)放電電壓不足10.5V時,單片機(jī)控制內(nèi)部定時器停止計時,并將結(jié)果鎖存起來,通過數(shù)碼管顯示出來。
 以下是電子負(fù)載的程序資料,原理圖和實(shí)物圖
 ////////////2010.12.09.21:00///////////////////
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define shum P0  //數(shù)碼
#define saom P1  //數(shù)碼掃描
char ddisp[4]={0,0,0,0};
char ddosp[4]={0,0,0,0};
char code DATA_7SEG[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar hour=0,min=0,sec=0,rou=0;
uchar deda=0;
bit d_05s=0;
uchar set=0;
void delay(uint k);
sbit  out=P3^7;
sbit shut=P3^3;
sbit    s=P3^0;
sbit P3_2=P3^2;
/*-----------------------走時函數(shù)--------------------------*/
void init_timer()
 {
  TMOD=0x01;
  TH0=(65536-12000)/256;     //定時器采用定時4ms.  初值為12000
  TL0=(65536-12000)%256;
  IE=0x82;
 
 }
/*-----------------------4ms定時中斷服務(wù)函數(shù)--------------------------*/
void T0_srv(void) interrupt 1
{
  TH0=(65536-12000)/256;     //定時器采用定時4ms.  初值為12000
  TL0=(65536-12000)%256;
  deda++ ;
}
/*----------------------時,分,秒單元及走時單元轉(zhuǎn)換-------------------------*/
void conv()
{
 if(deda<=100)d_05s=0;
 else d_05s=1;
 if(deda>=250){sec++;deda=0;}
 if(sec==60){min++;sec=0;}
 if(min==60){hour++;min=0;}
 if(hour==24){hour=0;}
 rou=(sec+min*60)*5;
}
void diyi()
{
  ddisp[3]=min/10;
  ddisp[2]=min%10;
  ddisp[1]=sec/10;
  ddisp[0]=sec%10;
}
void dier()
{
  ddisp[3]=rou/60/10;
  ddisp[2]=rou/60%10;
  ddisp[1]=rou%60/10;
  ddisp[0]=rou%60%10;
}
/*-------------------走時時間顯示函數(shù)部分-------------------------*/
void disp()
{ char j,scan;
  scan=0xf7;
  for(j=0;j<4;j++)
  {
   shum=0xff;
   saom=scan;
   P0=DATA_7SEG[ddisp[j]];
   delay(4);
   scan>>=1;
  }
}

void scan_key()
{
 if(s==0)
  {
   delay(1);
   if(s==0)
    {
     hour=0,min=0,sec=0;out=0;
    TR0=1;
    }
  }
  if(shut==1)
  {
   delay(1);
   if(shut==1)
    {
     TR0=0;
     out=1;
    
    }
  }
 }

/*--------掃描按鍵函數(shù)--------*/
void jianpan()
{
 delay(1);
 if(P3_2==0)set++;
 if(set>=2)set=0;
 F0:if(P3_2==0)goto F0;
}
/*--------延時函數(shù)-------------*/
void delay(uint k)
{
 uint i,j;
 for(i=0;j<k;i++)
  {
   for(j=0;j<120;j++);
  }
}
/*-----------------主函數(shù)-------------------------------------*/
void main()
{
 init_timer();
 while(1)
 {
 scan_key();
  if(P3_2==0)jianpan();
  switch(set)
  {
  case 0:conv();diyi();disp();break;
  case 1:conv();dier();disp();break;
  default:break;
  }
 }
}
// ADC0809模數(shù)轉(zhuǎn)換
//ADC0809采樣通道3輸入的模擬量,轉(zhuǎn)換后結(jié)果顯示在數(shù)碼管上
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define shum P1  //數(shù)碼
#define saom P2 //數(shù)碼掃描
char code tab[10]={~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F};
char disp[4]={0,0,0,0};
//ADC0809引腳定義
sbit OE=P3^7;
sbit EOC=P3^1;
sbit ST=P3^5;
uchar i;
//延時
void delay(int x)
{
int i,j;
for(i=0;i<x;i++)
for(j=1;j<120;j++);
}
//顯示轉(zhuǎn)換結(jié)果
void display_led(int count2)//數(shù)碼管模塊
{char j,scan;
disp[3]=count2%10;
disp[2]=count2%100/10;
disp[1]=count2/100%10;
disp[0]=count2/1000;
scan=0xdf;
for(j=0;j<4;j++)
{
shum=0xff;
saom=scan;
P1=tab[disp[j]];
delay(4);
scan>>=1;
}
}
// 主程序
 void main()
 {
 ST=1;
 EOC=1;
 OE=1;
 //選擇ADC0809通道3(0111)
           //高4位設(shè)通道地址為0111                                                                                                                                                                                                                
 while(1)
 {
 ST=1;
 ST=0;
 for(i=0;i<1;i++);
 ST=1;//啟動轉(zhuǎn)換
 while(EOC==0);    //等待轉(zhuǎn)換結(jié)果
 OE=0;   //允許輸出
 display_led(P0);  //顯示A/D轉(zhuǎn)換結(jié)果
 OE=1;  //關(guān)閉輸出
 }
 }
 

發(fā)表評論 評論 (10 個評論)

回復(fù) jindz 2011-6-26 08:59
你的程序和原理圖好像不符合吧
回復(fù) 1五湖四海1 2011-6-27 19:48
jindz: 你的程序和原理圖好像不符合吧
程序是做實(shí)驗(yàn)時初步成功的程序,而原理圖是從參考書中拍的部分原理圖,在protel99中有完整的原理圖,由于想和大家分享成功的喜悅時間沖忙原理圖不太詳細(xì),請大家見諒。
回復(fù) 放電儀愛好者 2011-9-17 19:59
你用什么單片機(jī)
回復(fù) 放電儀愛好者 2011-9-21 07:50
怎么沒人回答,我也制作一個放電儀,就是單片機(jī)不會,請指教。
回復(fù) 1五湖四海1 2011-9-27 20:10
放電儀愛好者: 你用什么單片機(jī)
放電儀愛好者網(wǎng)友你好:我用的是8051核心的單片機(jī),這幾天沒上網(wǎng),今天剛看到你的留言,如果你有興趣我們可以共同探考學(xué)習(xí)。
回復(fù) hhy5488 2011-10-24 10:42
你好,我想和你買6個放電儀,多少錢一個,請聯(lián)系我13318285098
回復(fù) 1五湖四海1 2011-10-24 21:40
hhy5488: 你好,我想和你買6個放電儀,多少錢一個,請聯(lián)系我13318285098
你好,這個放電儀是為我們單位制作的,目前沒有多余的。你要放電儀用在什么地方呢?
回復(fù) 放電儀愛好者 2011-11-10 18:00
我看了一下,你的電路圖比較復(fù)雜,成本不會太低,不知放電電流最大是多少,最小電流是多少。
回復(fù) 1五湖四海1 2011-11-11 19:51
放電儀愛好者: 我看了一下,你的電路圖比較復(fù)雜,成本不會太低,不知放電電流最大是多少,最小電流是多少。
放電電流0到10安
回復(fù) 放電儀愛好者 2011-11-11 23:15
不錯,我是5安培和10安培,我想知道51單片機(jī)控制電路圖,編程用的下載線是樣子的

facelist

您需要登錄后才可以評論 登錄 | 注冊會員

Archiver|手機(jī)版|小黑屋|機(jī)械社區(qū) ( 京ICP備10217105號-1,京ICP證050210號,浙公網(wǎng)安備33038202004372號 )

GMT+8, 2025-7-15 02:38 , Processed in 0.066934 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

返回頂部