久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
STC12C2052AD單片機制作的0-9.9V電壓表
[打印本頁]
作者:
ziba108
時間:
2018-6-7 10:36
標題:
STC12C2052AD單片機制作的0-9.9V電壓表
這款由電子樂屋原創的電路簡單制作容易的STC12C2052AD單片機的0-9.9V電壓表,電路簡單,元件少,容易制作,PCB板為單面板,下面是制作好的實物。
【附件包括原理圖和源程序】
制作出來的實物圖如下:
電壓表圖片1.png
(283.28 KB, 下載次數: 82)
下載附件
2018-6-7 10:35 上傳
電路原理圖如下:
電壓表圖片2.png
(112.27 KB, 下載次數: 81)
下載附件
2018-6-7 10:35 上傳
單片機源程序如下:
#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();
}
}
復制代碼
所有資料51hei提供下載:
STC12C2052AD單片機0-9.9V電壓表.doc
(448.5 KB, 下載次數: 140)
2018-6-7 10:36 上傳
點擊文件名下載附件
單片機0-9.9v電壓表
下載積分: 黑幣 -5
作者:
gpdt3209
時間:
2018-6-11 11:09
謝謝分享
作者:
KID0100
時間:
2018-6-26 22:47
謝謝分享
作者:
yechuan220
時間:
2018-6-27 13:12
謝謝分享
作者:
206004430
時間:
2018-7-1 23:41
程序直接復制粘貼到燒錄軟件上后直接燒錄就可以??
作者:
xsj1877578806
時間:
2018-7-29 10:18
謝謝分享,收藏
作者:
hbdj1234
時間:
2018-8-24 10:26
謝謝分享 收藏了
作者:
erli122
時間:
2018-9-4 22:02
如果我要判斷是多少伏電壓怎么判斷
作者:
da莫寒
時間:
2018-9-5 10:09
不錯,量程可以高點就好了
作者:
徐小虎
時間:
2018-9-12 14:47
謝謝分享
作者:
its
時間:
2018-9-17 20:06
好主意,馬上去實踐
作者:
panxiuq
時間:
2019-8-21 16:46
量電壓正負接反會怎么樣,是不是量出負電壓?
作者:
panxiuq
時間:
2019-8-21 16:56
基準電壓不用設置嗎,沒看明白 是哪里把P1.7口的431設為基準的。
作者:
小楊中國
時間:
2019-9-1 21:46
謝謝分享
作者:
azi197417
時間:
2019-9-2 23:56
這個程序很實用
作者:
yaoyao001
時間:
2019-9-3 17:19
學習中
作者:
難得糊涂2018
時間:
2019-9-23 20:41
謝謝分享,學習呢!
作者:
zfy13487253563
時間:
2019-10-25 22:10
謝謝!能不能改12v
作者:
liruilirui
時間:
2019-10-27 18:37
3.0口咋沒接
作者:
道洲
時間:
2019-11-13 17:00
感謝你
作者:
zh68a11
時間:
2019-11-16 17:57
謝謝分享.
作者:
195470880
時間:
2020-5-14 21:46
謝謝分享
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
天天干天天干天天干
|
中文字幕一区二区三区视频
|
久久网av
|
中文字幕免费高清
|
三级黄网站
|
一区二区水蜜桃
|
免费国产黄色
|
蜜臀av性久久久久av蜜臀妖精
|
狠狠狠狠干
|
久久性生活视频
|
国产做受网站
|
欧美精品二区三区四区免费看视频
|
特大黑人巨交吊性xxxx视频
|
欧美日本精品
|
少妇视频网站
|
国产三级一区
|
4438成人网
|
天天躁日日躁狠狠躁
|
亚洲91在线
|
亚洲狠狠爱
|
中文字幕第一区综合
|
五月婷婷六月丁香
|
国产乱淫av片免费
|
久色成人
|
97国产在线视频
|
国产精品毛片va一区二区三区
|
日本国产在线观看
|
色综合天天
|
免费看黄色一级片
|
日日夜夜精品
|
国产一区二区福利
|
午夜在线观看免费视频
|
特黄一级毛片
|
久久久在线视频
|
国产精品不卡视频
|
91精品国产综合久久久久久
|
六月婷婷激情
|
日韩欧美在线一区
|
日韩一级淫片
|
日本国产在线观看
|
老司机久久
|