久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機控制實現ADC TLC549一路模擬電壓采集程序Proteus仿真
[打印本頁]
作者:
norlike
時間:
2023-7-8 20:57
標題:
單片機控制實現ADC TLC549一路模擬電壓采集程序Proteus仿真
使用proteus進行仿真:運用單片機(AT89C52、STM32、MSP430等)控制實現一路模擬電壓采集(ADC)
需實現以下功能:
1、電壓測量范圍0~5V
2、設置電壓上限4.5V,超過上限電壓紅色LED燈警示、蜂鳴器警示1S;
3、設置電壓下限0.5V,低于下限電壓黃色LED燈警示、蜂鳴器警示1S;
4、顯示實時測量電壓值、上下限電壓值,將采集到的電壓數據顯示在LCD1602液晶屏的第一行中間位置,上下限電壓值顯示在LCD1602液晶屏的第二行位置;
5、將學號后兩位顯示在液晶屏的右下角;
6、AD芯片選型:ADC0804,TLC549等。
在附件里還有一個可以自己計算可調的上下限電壓的python代碼。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif
(112.05 KB, 下載次數: 25)
下載附件
2023-7-9 00:29 上傳
1.png
(38.41 KB, 下載次數: 28)
下載附件
2023-7-8 22:56 上傳
單片機源程序如下:
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit fengmingqi = P1^0; // 蜂鳴器引腳定義
sbit LED_red = P1^6; // 紅色LED報警引腳定義
sbit LED_yellow = P1^7; // 黃色LED報警引腳定義
sbit RS = P2^0; // LCD控制引腳定義
sbit RW = P2^1; // LCD控制引腳定義
sbit E = P2^2; // LCD控制引腳定義
sbit TLC549_CLK = P2^3; // TLC549時鐘引腳定義
sbit TLC549_CS = P2^4; // TLC549片選引腳定義
sbit TLC549_DO = P2^5; // TLC549數據引腳定義
uchar volt_h = 0xBF, volt_l = 0x68; // 設置電壓上下限 4.5V 0.5V
unsigned char s1[] = "21"; // 顯示學號字符串
unsigned char s2[] = "2.05V 3.75V"; // 顯示電壓上下限字符串
void delayms(uchar ms)
{
uchar i;
while (ms--)
for (i = 0; i < 123; i++); // 延時函數,以毫秒為單位
}
void delayus(uchar us)
{
while (us--); // 延時函數,以微秒為單位
}
void w_com(uchar com)
{
RS = 0; // RS=0表示選擇指令寄存器
RW = 0; // RW=0表示寫,RW=1表示讀
E = 1; // 使能端
P0 = com; // 指令代碼從P0口送出
E = 0; // 下降沿執行
delayms(1);
}
void w_dat(uchar dat)
{
RS = 1; // RS=1表示選擇數據寄存器
RW = 0;
E = 1;
P0 = dat; // 數據從P0口送出
E = 0; // 下降沿執行
delayms(1);
}
void lcd_ini(void)
{
delayms(10);
w_com(0x38); // 功能設置:8位口2行
delayms(10);
w_com(0x0C); // 顯示設置:開顯示,關光標,無閃爍
delayms(10);
w_com(0x06); // 輸入模式:右移一格,地址加1
delayms(10);
w_com(0x01); // 清顯示
delayms(10);
w_com(0x38); // 功能設置:8位口2行
delayms(10);
}
uchar TLC549_ADC(void)
{
uchar i, temp;
TLC549_CLK = 0;
TLC549_CS = 0;
for (i = 0; i < 8; i++)
{
temp <<= 1;
temp |= TLC549_DO;
TLC549_CLK = 1;
TLC549_CLK = 0;
}
TLC549_CS = 1;
delayus(20);
return temp;
}
void main(void)
{
uint temp, d, i = 0, j = 0;
uchar digit1, digit2, digit3; // 個位數和小數點后兩位數的變量
lcd_ini();
w_com(0xC1); // 第二行顯示電壓上下限
while (s2[j] != '\0')
{
w_dat(s2[j]);
j++;
}
w_com(0xCE); // 第二行第14列顯示學號
while (s1[i] != '\0')
{
w_dat(s1[i]);
i++;
}
while (1)
{
temp = TLC549_ADC();
d = temp * 1.96; // 基準電壓5V轉換為電壓值
digit1 = d %1000 / 100; // 計算個位數
digit2 = d %100 / 10; // 計算小數點后第一位
digit3 = d %10; // 計算小數點后第二位
w_com(0x84);
w_dat(digit1 + 0x30); // 顯示電壓值個位
w_dat('.'); // 顯示小數點
w_dat(digit2 + 0x30); // 顯示電壓值小數點后第一位
w_dat(digit3 + 0x30); // 顯示電壓值小數點后第二位
w_dat('V');
if(temp<=volt_l&&temp>=0x00) //低于下限電壓,黃色LED亮蜂鳴器響
{
LED_red=1;
LED_yellow =0; //黃色燈示警
fengmingqi=0; //蜂鳴器示警
delayms(1000);
fengmingqi=1;
delayms(1000);
}
else if(temp<volt_h&&temp>volt_l) //正常電壓
{
LED_red =1;
LED_yellow =1;
fengmingqi=1;
delayms(1000);
}
else //高于上限電壓,紅色LED亮蜂鳴器報警
{
LED_red =0; //紅色燈示警
LED_yellow=1;
fengmingqi=0; //蜂鳴器示警
delayms(1000);
fengmingqi=1;
delayms(1000);
}
}
}
復制代碼
python代碼:
V_min = 0.0 # 最小電壓值
V_max = 5.0 # 最大電壓值
hex_min = 0x00 # 最小十六進制值
hex_max = 0xFF # 最大十六進制值
# 輸入電壓范圍
V_range_min = float(input("請輸入電壓范圍的最小值(范圍在{}之間):".format(V_min)))
V_range_max = float(input("請輸入電壓范圍的最大值(范圍在{}之間):".format(V_max)))
# 計算電壓范圍對應的相對位置
relative_position_min = (V_range_min - V_min) / (V_max - V_min)
relative_position_max = (V_range_max - V_min) / (V_max - V_min)
# 計算十六進制范圍
hex_range_min = int(relative_position_min * (hex_max - hex_min) + hex_min)
hex_range_max = int(relative_position_max * (hex_max - hex_min) + hex_min)
# 分解十六進制范圍的最小值和最大值為高位和低位
volt_h_min = (hex_range_min >> 8) & 0xFF # 最小值的高位
volt_l_min = hex_range_min & 0xFF # 最小值的低位
volt_h_max = (hex_range_max >> 8) & 0xFF # 最大值的高位
volt_l_max = hex_range_max & 0xFF # 最大值的低位
# 輸出結果
print("最小電壓值的十六進制表示:volt_h = 0x{:02X}, volt_l = 0x{:02X}".format(volt_h_min, volt_l_min))
print("最大電壓值的十六進制表示:volt_h = 0x{:02X}, volt_l = 0x{:02X}".format(volt_h_max, volt_l_max))
#最后你只要把輸出的結果選擇volt_l的值就可以寫入就可以了
復制代碼
Keil代碼與Proteus仿真下載:
仿真程序.7z
(60.3 KB, 下載次數: 23)
2023-7-9 00:28 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
中文字幕国产精品
|
狠狠干狠狠干
|
黄色片网站在线观看
|
午夜成人在线视频
|
久久中文字幕视频
|
一区二区影视
|
国产黄在线观看
|
国产麻豆xxxvideo实拍
|
久久久久久久99
|
国产精品二区一区二区aⅴ污介绍
|
日韩欧美在线播放
|
久久精品国产亚洲
|
欧美黄色一区二区
|
久久在线精品
|
欧美精品乱码99久久蜜桃
|
国产91清纯白嫩初高中在线观看
|
青青青草视频在线观看
|
四虎av在线
|
国产精品99久久久久久久久
|
福利小视频在线观看
|
三上悠亚一区二区
|
国产欧美综合一区二区三区
|
亚洲精品乱码久久久久久动漫
|
黄色在线免费
|
999精品在线
|
久久国产精品一区二区三区
|
亚洲成人免费网站
|
久久国产影院
|
天天躁日日躁狠狠躁
|
九九热只有精品
|
av不卡在线观看
|
影音先锋国产精品
|
草草在线视频
|
久久精品欧美一区
|
亚洲特级片
|
国产乱淫av片免费
|
亚洲精品成人
|
av激情影院
|
成人在线视频观看
|
黄色片网站视频
|
欧美成人午夜
|