久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機雙積分AD-數碼管 Proteus仿真程序
[打印本頁]
作者:
展乾741
時間:
2020-1-4 12:14
標題:
單片機雙積分AD-數碼管 Proteus仿真程序
使用兩個運放組成積分電路,比較器電路,結合單片機定時器計數,測量ADC,并使用protues仿真實現
視頻連接:
https://www.bilibili.com/video/av81800813/
51hei.png
(20.08 KB, 下載次數: 21)
下載附件
2020-1-4 16:38 上傳
單片機源程序如下:
#include<reg52.h>
//#include<absacc.h>
//#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define GPIO_DIG P0 //傳送數據的端口設為P0,以上端口根據實際硬件電路圖可做修改
sbit S4=P2^3;
sbit S3=P2^2; //使能信號
sbit S2=P2^1; //讀寫控制信號
sbit S1=P2^0; //數據命令選擇端口
sbit P30=P3^0;
sbit P31=P3^1;
sbit P33=P3^3;
uint ss,vin;
uchar lo,kl = 0;
//--定義全局變量--//
unsigned char code DIG_CODE[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//0、1、2、3、4、5、6、7、8、9的顯示碼
unsigned char DisplayData[4];
//用來存放要顯示的4位數的值
/****************10MS延時函數******************************/
void Delay10ms() //@12.000MHz
{
unsigned char i, j;
i = 20;
j = 113;
do
{
while (--j);
} while (--i);
}
/****************1MS延時函數******************************/
void delay(unsigned int n)
{
unsigned int i,j;
for(j=n;j>0;j--)
for(i=112;i>0;i--);
}
void led_byte(unsigned int byte_data) //以十進制的方式顯示一個字符變量
{
DisplayData[0] = ~DIG_CODE[(byte_data % 10000 /1000)]; //求千位數
DisplayData[0] |= 0x80; //小數點
DisplayData[1] = ~DIG_CODE[(byte_data%1000/100)]; //求百位數
DisplayData[2] = ~DIG_CODE[(byte_data%100/10)]; //求十位數
DisplayData[3] = ~DIG_CODE[(byte_data%10)]; //求個位數
}
/*******************************************************************************
* 函 數 名 : DigDisplay
* 函數功能 : 使用數碼管顯示
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void DigDisplay()
{
unsigned char i;
led_byte(vin);
for(i=0;i<4;i++)
{
switch(i) //位選,選擇點亮的數碼管,
{
case(0):
S1=0;S2=1;S3=1;S4=1; break;//顯示第0位
case(1):
S1=1;S2=0;S3=1;S4=1; break;//顯示第1位
case(2):
S1=1;S2=1;S3=0;S4=1; break;//顯示第2位
case(3):
S1=1;S2=1;S3=1;S4=0; break;//顯示第3位
}
GPIO_DIG=DisplayData[i];//發送段碼
delay(10); //掃描間隔時間設定
GPIO_DIG=0x00;//消隱
}
}
/**************數碼管顯示*************************/
void my_t0(void) interrupt 1 //定時器0中斷用于固定時間對輸入待測電壓進行積分
{
TR0 = 0; //T0中斷關 ///
TH0 = 0;
TL0 = 0;
lo++; ///
TF0 = 0; //清除T0中斷標志 ///
TR0 = 1; //T0中斷開
}
void my_int0(void) interrupt 0 //外部中斷 用于反積分過程結束檢測
{
EX0 = 0; //INT0中斷關
TR0 = 0; //T0中斷關
TF0 = 0; //清除T0中斷標志
ss = TH0 * 256 + TL0;
if(ss == 5) ss = vin; //解決數據緩存溢出BUG
else {
// ss = ss/10 + lo*6553 ; //計算電壓
// ss = ss/10 + lo*6553 + 37; //補償系統誤差
if((ss % 10000 /1000) < 4)
vin = ss/10 + lo*6553 + ss/1000; //補償系統誤差
else
vin = ss/10 + lo*6553 + ss/2000;
}
TH0 = 0;
TL0 = 0;
kl = 1;
lo = 0;
ss = 0;
EA = 0;
}
void main()
{
char i = 0;
P33 = 0;
P31 = 0; ///
P30 = 1;
kl = 0;
EA = 1; //中斷開
ET0 = 1; //定時計數0中斷開
//IP = 1; //定時0中斷最高優先級 =2
TMOD = 0x01; //定時0,1模式1 2個16位定時/計數器
EX0 = 1; //INT0中斷開
TCON=0x01; //INT0負邊緣觸發或低電平觸發在此好象作用相同
IT0 = 1;
while(1)
{
if(kl == 1 && i == 20)
{
ss = 0;
lo = 0;
// vin = 0;
TR0 = 0;
P31 = 0;
P33 = 0;
P30 = 1; //選擇放電 ///
delay(100);
kl = 0;
P30 = 0;
P33 = 0;
P31 = 1; //選擇輸入電壓
Delay10ms();
TH0 = 0;
TL0 = 0;
P31 = 0;
P33 = 1; //選擇比較電壓
TF0 = 0; //清除T0中斷標志
TR0 = 1; //定時計數0起動
EX0 = 1;
EA = 1;
}
i++;
if(i==21) i=0; //徹底完成第一次轉換后進行下一次轉換,防止互相干擾
// delay(1);
delay(1);
DigDisplay();
}
}
復制代碼
51hei.png
(10.95 KB, 下載次數: 19)
下載附件
2020-1-4 16:38 上傳
所有資料51hei提供下載:
單片機雙積分AD-數碼管.rar
(89.47 KB, 下載次數: 49)
2020-1-4 12:11 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
學習習鴨
時間:
2021-3-22 15:48
你好,可以問問你這個雙積分程序的思路么?
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
狠狠操电影
|
亚洲综合久久久
|
九九视频在线观看
|
欧美一级欧美一级在线播放
|
国产欧美日韩一区
|
国产在线视频一区二区董小宛性色
|
日本不卡一区二区
|
日韩免费中文字幕
|
欧美精品一区二区三区在线播放
|
国产精品亚洲欧美日韩一区在线
|
www.9191.com
|
成人h动漫精品一区二区器材
|
国产精品美女久久久久久免费
|
久久成人综合
|
天堂在线91
|
99免费视频
|
久久久精品一区二区三区
|
婷婷久久综合
|
亚洲视频www
|
在线观看国产wwwa级羞羞视频
|
欧美日韩a
|
日韩视频一区二区
|
www亚洲成人
|
欧美在线日韩
|
成人在线免费看
|
欧美亚洲一区二区三区
|
久久久噜噜噜www成人网
|
国产美女久久
|
亚洲视频免费在线观看
|
亚洲欧洲精品一区
|
伊人网国产
|
国产精品一区久久久久
|
亚洲一区有码
|
在线成人免费视频
|
一级做a爰片性色毛片16美国
|
永久精品
|
午夜国产精品视频
|
99精品网
|
欧美色人
|
欧美日韩在线一区二区三区
|
久久r免费视频
|