adurnio 单片机_单片机20~200A大电流检测电路设计 用AD实现 带原理图,源代码,proteus仿真文件...
//------------------------------51單片機(jī)頭文件
#include
//各數(shù)字的數(shù)碼管段碼(共陰)
unsigned char code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //數(shù)碼管顯示數(shù)組{0,1,2,3,4,5,6,7,8,9}
sbit CLK=P3^3;? ? //時(shí)鐘信號(hào)
sbit ST=P3^6;? ???//啟動(dòng)信號(hào),由低電平到高電平時(shí)間段復(fù)位 ,高電平到低電平時(shí)間段開始轉(zhuǎn)換
sbit EOC=P3^5;? ? //轉(zhuǎn)換結(jié)束信號(hào),當(dāng)轉(zhuǎn)換結(jié)束時(shí)會(huì)自動(dòng)變成高電平
sbit OE=P3^4;? ???//輸出使能 ,當(dāng)OE為高電平時(shí)開啟輸出端,OE為低電平時(shí)禁止輸出
sbit W1=P2^4;? ???//定義W1表示P2.4位,第一位數(shù)碼管控制端, 為0時(shí)亮,為1時(shí)滅
sbit W2=P2^3;? ? ? ?? ?//定義W2表示P2.3位,第二位數(shù)碼管控制端, 為0時(shí)亮,為1時(shí)滅
sbit W3=P2^2;? ? ? ?? ?//定義W3表示P2.2位,第三位數(shù)碼管控制端, 為0時(shí)亮,為1時(shí)滅
sbit key=P3^7;? ? ? ?? ?//定義按鍵控制key為P3.7
//----------------------------1ms延時(shí)函數(shù)
void Delayms(unsigned char ms)
{
unsigned char i;
while(ms--)
for(i=0;i<120;i++);
}
//---------------------------顯示轉(zhuǎn)換結(jié)果(動(dòng)態(tài)掃描模式)
void Display(unsigned int d)
{
d=d*1.0/256*5*40;??//將數(shù)字量轉(zhuǎn)換成模擬量的公式為5V*(d/256),采樣電壓值為電流值*100歐姆,所以要獲得實(shí)際電流值,即為采樣電壓值*40倍 (n1:n2=4000:1)
W1=0;? ?//第一個(gè)數(shù)碼管亮
P0=DSY_CODE[d%10];??//顯示第一個(gè)數(shù)碼管的值 為P1的值除以10取余
Delayms(6);? ? ? ? ? ? ? ? ? ? ? ? //延時(shí)5ms
W1=1;? ?//第一個(gè)數(shù)碼管滅
W2=0;
P0=DSY_CODE[d%100/10];? ? ? ? //顯示第二個(gè)數(shù)碼管的值 為P1的值除以100取余 再除以10取整
Delayms(6);
W2=1;
W3=0;
P0=DSY_CODE[d/100];? ? ? ?? ? //顯示第三個(gè)數(shù)碼管的值 為P1的值除以100取整
Delayms(6);
W3=1;
}
//-------------------------------------------------主程序
void main()
{
TMOD=0x02; //16位定時(shí)器0工作模式設(shè)置為2
TH0=0x14;??//設(shè)置定時(shí)器高8位初值為0x14
TL0=0x00;??//設(shè)置定時(shí)器低8位初值為0x00
TR0=1;? ? ? ?? ? //開啟定時(shí)器0開關(guān)
ET0=1;? ? ? ?? ? //開啟定時(shí)器0中斷開關(guān)
EA=1;? ? ? ?? ? //開啟中斷總開關(guān)
//---------------啟動(dòng) A/D 轉(zhuǎn)換
//---------開始按鍵-----
A:? ? ? ? while(key==1);? ???//等待按鍵按下
Delayms(1);? ? ? ?? ?? ???//延時(shí)1ms
if(key==0)? ?? ?? ?//延時(shí)1ms后按鍵還是按下了,說明按鍵確實(shí)按下了(按鍵消抖功能)
while(key==0);? ? ? ?? ? //當(dāng)按鍵松開時(shí),循環(huán)轉(zhuǎn)換和顯示
while(1)
{
ST=0;
ST=1;
ST=0;
while(EOC==0);? ?//等待轉(zhuǎn)換完成
OE=1; ? ? ? ? ? ? ? ? ? ? ? ???//開啟輸出端
Display(P1);? ???//將輸出到單片機(jī)P1端口上的數(shù)字信號(hào)在LED顯示出來
OE=0;? ?? ?? ?? ?//關(guān)閉輸出端
//------停止按鍵---------
if(key==0)
{
Delayms(1);
if(key==0)? ?? ?? ?//延時(shí)1ms后按鍵還是按下了,說明按鍵確實(shí)按下了(按鍵消抖功能)
while(key==0);? ? ? ?? ? //當(dāng)按鍵松開時(shí)
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的adurnio 单片机_单片机20~200A大电流检测电路设计 用AD实现 带原理图,源代码,proteus仿真文件...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美军特种部队常用的五款“单兵火箭筒”
- 下一篇: 靠一把54式手枪,与飞虎队激战