久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
非常好制作的單片機DC 0-9.99V電壓表
[打印本頁]
作者:
51黑黑黑
時間:
2016-3-4 15:17
標題:
非常好制作的單片機DC 0-9.99V電壓表
本帖最后由 51黑黑黑 于 2016-3-4 15:20 編輯
非常好制作的單片機電壓表,這款電壓表使用的單片機是STC12C2052AD,電壓表的是單片機內部自己帶的A/D,設計的測量范圍是DC0-9.99V,文章最早發布在我的百度空間上,有很多人轉載過,深受單片機愛好者的喜歡。由于百度空間關閉了,今天,我重新整理一下,并附上PCB圖,源程序、原理圖,資料打包放在了51黑附件,
需要的可以自己去下載:
STC12C2052單片機電壓表_0-9.99V.zip
(97.04 KB, 下載次數: 32)
2016-3-4 15:16 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
下面是源碼:
#include <STC12C2052AD.H> //單片機頭文件
#include <intrins.h> //51基本運算(包括_nop_空函數)
#define uchar unsigned char
#define uint unsigned int
sbit temp=P1^7;
sbit LED3=P3^0; //C
sbit LED0=P1^4; // 小數點后一位
sbit LED1=P1^3; //個位
sbit LED2=P1^0; // 十位
sbit A=P1^1;
sbit B_B=P1^5;
sbit C=P3^2;
sbit D=P3^4;
sbit E=P3^5;
sbit F=P1^2;
sbit G=P3^1;
sbit H=P3^3; //小數點
char d[5];
uint R,M,N,h;//若定義成uchar型就只能顯示2.5V以下的數值
void dm(mz);
void delayus(uint x) //(x+1)*6微
{
while(x--);
}
/*****************************************************************
函數名:毫秒級CPU延時函數
調 用:delay (?);
參 數:1-65535(參數不可為0)
返回值:無
結 果:占用CPU方式延時與參數數值相同的毫秒時間
備 注:應用于1T單片機時i<600,應用于12T單片機時i<125
/******************************************************************/
void delay(uint t)
{
uint i; //定義變量
for(;t>0;t--) //如果t大于0,t減1(外層循環)
for(i=600;i>0;i--); //i等于124,如果i大于0,i減1
}
/*******************************************************************
函數名:ADC初始化及8位A/D轉換函數
返回值:8位的ADC數據
結 果:讀出指定ADC接口的A/D轉換值,并返回數值
備 注:適用于STC12C2052AD系列單片機(必須使用STC12C2052AD.h頭文件)
*******************************************************************/
uchar Read (uchar CHA)
{
uchar AD_FIN=0; //存儲A/D轉換標志;若在函數外定義此變量則不能得到連續變化的模擬量的顯示
/******以下為ADC初始化程序****************************/
CHA &= 0x07; //選擇ADC的8個接口中的一個(0000 0111 清0高5位)
ADC_CONTR = 0x60; //ADC轉換的速度(0XX0 0000 其中XX控制速度,請根據數據手冊設置)
_nop_();
ADC_CONTR |= CHA; //選擇A/D當前通道
_nop_();
ADC_CONTR |= 0x80; //啟動A/D電源
delay(1); //使輸入電壓達到穩定(1ms即可?
/******以下為ADC執行程序****************************/
ADC_CONTR |= 0x08; //啟動A/D轉換(0000 1000 令ADCS = 1)
_nop_();
_nop_();
_nop_();
_nop_();
while (AD_FIN ==0) //等待A/D轉換結束
{
AD_FIN = (ADC_CONTR & 0x10); //0001 0000測試A/D轉換結束否
}
ADC_CONTR &= 0xE7; //1111 0111 清ADC_FLAG位, 關閉A/D轉換,
return (ADC_DATA); //返回A/D轉換結果(8位)
}
/******************************************************************
顯示函數轉換函數:
M=模擬量采樣值,N=基準電壓源采樣值(本例為2.5V),R=模擬量輸入值(待顯示值)
N=256*2.5/Vcc;變形后得Vcc=256*2.5/N; 代入M=256*R/Vcc;得到M=R*N/2.5;變形后得R=M*2.5/N
1.105為輸入端分壓比。
******************************************************************/
void transfer(void)
{
M=Read(6); //P1.6口模擬量轉換
N=Read(7); //P1.7口2.5V基準電壓源采樣(轉換)
R=((M*2.5)/N)*198; //輸入模擬量換算并放大500倍;
/***以下為3位顯示轉換***/
h=R;
d[3]=R/1000;
R=R%1000;
d[2]=R/100;
R=R%100;
d[1]=R/10;
d[0]=R%10;
}
/**********顯示函數(未優化)************************************************/
void xian_shi (void)
{
if(h>999)
{
d[3]=10;
d[2]=10;
d[1]=10;
d[0]=10;
}
if(d[3]==0)
d[3]=11;
dm(d[3]);
LED3=1;
delayus(5);
LED3=0;
delayus(30);
dm(d[2]);
LED2=1;
delayus(5);
LED2=0;
delayus(30);
dm(12);
LED2=1;
delayus(1);
LED2=0;
delayus(400);
dm(d[1]);
LED1=1;
delayus(5);
LED1=0;
delayus(30);
dm(d[0]);
LED0=1;
delayus(5);
LED0=0;
delayus(30);
}
void dm(mz)
{
switch(mz)
{
case 0:A=0;B_B=0;C=0;D=0;E=0;F=0;G=1;H=1;break;
case 1:A=1;B_B=0;C=0;D=1;E=1;F=1;G=1;H=1;break;
case 2:A=0;B_B=0;C=1;D=0;E=0;F=1;G=0;H=1;break;
case 3:A=0;B_B=0;C=0;D=0;E=1;F=1;G=0;H=1;break;
case 4:A=1;B_B=0;C=0;D=1;E=1;F=0;G=0;H=1;break;
case 5:A=0;B_B=1;C=0;D=0;E=1;F=0;G=0;H=1;break;
case 6:A=0;B_B=1;C=0;D=0;E=0;F=0;G=0;H=1;break;
case 7:A=0;B_B=0;C=0;D=1;E=1;F=1;G=1;H=1;break;
case 8:A=0;B_B=0;C=0;D=0;E=0;F=0;G=0;H=1;break;
case 9:A=0;B_B=0;C=0;D=0;E=1;F=0;G=0;H=1;break;
case 10:A=0;B_B=1;C=1;D=0;E=0;F=0;G=1;H=1;break; //C
case 11:A=1;B_B=1;C=1;D=1;E=1;F=1;G=1;H=1;break; //不顯示
case 12:A=1;B_B=1;C=1;D=1;E=1;F=1;G=1;H=0;break; //小數點
}
}
/******************************************************************
函數名:主函數
調 用:無
參 數:無
返回值:無
結 果:程序開始處,無限循環
備 注:
******************************************************************/
void main (void)
{
P1M0 = 0xC0;
P1M1 = 0x19;
P3M0=0x00;
P3M1=0x01;
LED0=0;
LED1=0;
LED2=0;
LED3=0;
while(1)
{
uint i;
i++;
if (i==500)
{
transfer();
i=0;
}
xian_shi();
}
}
復制代碼
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产精品免费一区二区三区
|
久久精品久久久精品美女
|
在线不卡视频
|
中文在线观看视频
|
国产精品va
|
欧美日韩国产三级
|
国产精品久久午夜夜伦鲁鲁
|
黄色片一级
|
水蜜桃一区二区
|
日韩欧美三级
|
亚洲国产成人在线
|
成人在线免费视频观看
|
成人免费毛片aaaaaa片
|
国产网站在线
|
国产不卡视频
|
亚洲黄色精品
|
av综合网站
|
能看的av网站
|
精品理论片
|
欧美日韩成人在线观看
|
福利视频免费观看
|
99av
|
国产黄色免费网站
|
欧美日韩国产在线观看
|
97国产精品
|
日韩a视频
|
一二区视频
|
国产激情久久久
|
精品久久一区二区三区
|
欧美一区二区三区在线观看
|
黄色在线免费看
|
国产精品美女久久久久久久久
|
午夜黄色大片
|
一级片免费在线观看
|
欧美日韩免费
|
手机av在线播放
|
色天使在线视频
|
91精品久久久久久久久
|
男男成人高潮片免费网站
|
国产美女精品视频
|
国产精品一区一区三区
|