|
使用proteus進(jìn)行仿真:運(yùn)用單片機(jī)(AT89C52、STM32、MSP430等)控制實(shí)現(xiàn)一路模擬電壓采集(ADC)
需實(shí)現(xiàn)以下功能:
1、電壓測(cè)量范圍0~5V
2、設(shè)置電壓上限4.5V,超過上限電壓紅色LED燈警示、蜂鳴器警示1S;
3、設(shè)置電壓下限0.5V,低于下限電壓黃色LED燈警示、蜂鳴器警示1S;
4、顯示實(shí)時(shí)測(cè)量電壓值、上下限電壓值,將采集到的電壓數(shù)據(jù)顯示在LCD1602液晶屏的第一行中間位置,上下限電壓值顯示在LCD1602液晶屏的第二行位置;
5、將學(xué)號(hào)后兩位顯示在液晶屏的右下角;
6、AD芯片選型:ADC0804,TLC549等。
在附件里還有一個(gè)可以自己計(jì)算可調(diào)的上下限電壓的python代碼。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
單片機(jī)源程序如下:
python代碼:
- V_min = 0.0 # 最小電壓值
- V_max = 5.0 # 最大電壓值
- hex_min = 0x00 # 最小十六進(jìn)制值
- hex_max = 0xFF # 最大十六進(jìn)制值
- # 輸入電壓范圍
- V_range_min = float(input("請(qǐng)輸入電壓范圍的最小值(范圍在{}之間):".format(V_min)))
- V_range_max = float(input("請(qǐng)輸入電壓范圍的最大值(范圍在{}之間):".format(V_max)))
- # 計(jì)算電壓范圍對(duì)應(yīng)的相對(duì)位置
- relative_position_min = (V_range_min - V_min) / (V_max - V_min)
- relative_position_max = (V_range_max - V_min) / (V_max - V_min)
- # 計(jì)算十六進(jìn)制范圍
- 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)
- # 分解十六進(jìn)制范圍的最小值和最大值為高位和低位
- 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 # 最大值的低位
- # 輸出結(jié)果
- print("最小電壓值的十六進(jìn)制表示:volt_h = 0x{:02X}, volt_l = 0x{:02X}".format(volt_h_min, volt_l_min))
- print("最大電壓值的十六進(jìn)制表示:volt_h = 0x{:02X}, volt_l = 0x{:02X}".format(volt_h_max, volt_l_max))
- #最后你只要把輸出的結(jié)果選擇volt_l的值就可以寫入就可以了
復(fù)制代碼
Keil代碼與Proteus仿真下載:
仿真程序.7z
(60.3 KB, 下載次數(shù): 23)
2023-7-9 00:28 上傳
點(diǎn)擊文件名下載附件
|
評(píng)分
-
查看全部評(píng)分
|