|
使用proteus進行仿真:運用單片機(AT89C52、STM32、MSP430等)控制實現(xiàn)一路模擬電壓采集(ADC)
需實現(xiàn)以下功能:
1、電壓測量范圍0~5V
2、設(shè)置電壓上限4.5V,超過上限電壓紅色LED燈警示、蜂鳴器警示1S;
3、設(shè)置電壓下限0.5V,低于下限電壓黃色LED燈警示、蜂鳴器警示1S;
4、顯示實時測量電壓值、上下限電壓值,將采集到的電壓數(shù)據(jù)顯示在LCD1602液晶屏的第一行中間位置,上下限電壓值顯示在LCD1602液晶屏的第二行位置;
5、將學(xué)號后兩位顯示在液晶屏的右下角;
6、AD芯片選型:ADC0804,TLC549等。
在附件里還有一個可以自己計算可調(diào)的上下限電壓的python代碼。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif (112.05 KB, 下載次數(shù): 25)
下載附件
2023-7-9 00:29 上傳
1.png (38.41 KB, 下載次數(shù): 28)
下載附件
2023-7-8 22:56 上傳
單片機源程序如下:
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)))
- # 計算電壓范圍對應(yīng)的相對位置
- 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 # 最大值的低位
- # 輸出結(jié)果
- 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))
- #最后你只要把輸出的結(jié)果選擇volt_l的值就可以寫入就可以了
復(fù)制代碼
Keil代碼與Proteus仿真下載:
仿真程序.7z
(60.3 KB, 下載次數(shù): 23)
2023-7-9 00:28 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|