APT32F1023H8S6(SSOP-24封裝)MCU是由愛普特微電子推出的基于平頭哥半導(dǎo)體RISC-V內(nèi)核開發(fā)的32位高性能、低成本單片機(jī),現(xiàn)特將基于APT32F1023H8S6單片機(jī)的HX711_H720稱重傳感器原理圖和源代碼(3位數(shù)碼管顯示)分享給大家,方便大家學(xué)習(xí)、使用! 制作出來的實(shí)物圖如下:
實(shí)物圖.jpg (4.06 MB, 下載次數(shù): 46)
下載附件
2023-4-23 15:03 上傳
電路原理圖如下:
51hei.png (43.89 KB, 下載次數(shù): 42)
下載附件
2023-4-23 15:03 上傳
單片機(jī)源程序如下:
- /*******************************************************************************
- 文件名: HX711/HX720稱重顯示模塊主控程序
- 編 寫: 李工/Michael Lee
- 修 改:
- 版 本: V1.0
- 備 注:
- 1.時鐘選擇MCU內(nèi)部48M RC振蕩器;
- 2.接口說明:
- APT32F1023-24PIN ----- 外部設(shè)備
- ****************** 輕觸按鍵 ******************
- PB0.3(Key_1) ----- 清零鍵
- PA0.0(Key_2) ----- 設(shè)置鍵
- PA0.15(Key_3) ----- 去皮鍵
- PA0.1(Key_4) ----- 加鍵
- ****************** 3位共陰數(shù)碼管 ******************
- PA0.5 ----- SG12(SEG1_COM)
- PA0.12 ----- SG9(SEG2_COM)
- PA0.13 ----- SG8(SEG3_COM)
- PB0.4 ----- SG11(SEG_A)
- PA0.14 ----- SG7(SEG_B)
- PA0.8 ----- SG4(SEG_C)
- PA0.10 ----- SG2(SEG_D)
- PA0.11 ----- SG1(SEG_E)
- PB0.5 ----- SG10(SEG_F)
- PB0.2 ----- SG5(SEG_G)
- PA0.9 ----- SG3(SEG_DP)
- ****************** HX720 ******************
- PB0.1 ----- HX720_SCK
- PB0.0 ----- HX720_DOT
- 3.免費(fèi)申請APT32系列單片機(jī)/MCU下載仿真器、學(xué)習(xí)板及FAE技術(shù)支持、軟硬件
- *******************************************************************************/
- //加載頭文件
- #include "sys_clk.h"
- #include "iostring.h"
- #include "ifc.h"
- #include "csp.h"
- #include <string.h>
- #include <drv/gpio.h>
- #include <drv/pin.h>
- #include <drv/adc.h>
- #include <drv/bt.h>
- #include "led_display_weight.h" //加載LED數(shù)碼管顯示稱重?cái)?shù)值頭文件
- #include "hx720_drive.h" //加載24位ADC稱重芯片HX720驅(qū)動程序頭文件
- //宏定義
- /*** 變量類型 ***/
- #define uchar unsigned char
- #define uint unsigned int
- #define ushort unsigned short
- #define ulong unsigned long
- /*** 按鍵IO口 ***/
- #define Key1_Input csi_gpio_port_read(GPIOB0,0x0008)//讀取PB0.3端口高低電平值(Key1/清零鍵輸入)
- //外部函數(shù)
- /*** 系統(tǒng)啟動 ***/
- extern void system_init(void);
- extern void board_init(void);
- //外部變量
- //主函數(shù)標(biāo)志位
- //主函數(shù)變量
- float Weight_Test = 0; //定義、保存測得的重量值(大于0)
- ulong Weight_24Bit_ADC_Now = 0; //定義、保存當(dāng)前讀取到的HX720稱重芯片24位ADC轉(zhuǎn)換值
- ulong Weight_24Bit_ADC_Zero = 0; //定義、保存零點(diǎn)重量24位 ADC轉(zhuǎn)換值(實(shí)測大約為8752222左右)
- /********** GPIO口初始化操作 ***********/
- /*******************************************************************************
- 函數(shù)名: GPIO_Init()
- 功 能: GPIO口初始化
- 參 數(shù): 無
- 返回值: 無
- *******************************************************************************/
- void GPIO_Init(void)
- {
- //按鍵
- csi_pin_set_mux(PB03, PB03_INPUT); //配置PB0.3端口為輸入模式(Key_1鍵)
- csi_pin_pull_mode(PB03, GPIO_PULLUP); //上拉輸入
-
- //HX720稱重芯片
- csi_pin_set_mux(PB01, PB01_OUTPUT); //配置PB0.1端口為輸出模式(HX720_SCK)
- csi_pin_output_mode(PB01, GPIO_PUSH_PULL); //推挽輸出
- csi_pin_set_mux(PB00, PB00_INPUT); //配置PB0.0端口為輸入模式(HX720_DOT)
- csi_pin_pull_mode(PB00, GPIO_PULLNONE); //浮空輸入
-
- /*** 數(shù)碼管 ***/
- //SG12(SEG1_COM)
- csi_pin_set_mux(PA05, PA05_OUTPUT); //配置PA0.5端口為輸出模式
- csi_pin_output_mode(PA05, GPIO_PUSH_PULL); //推挽輸出
- //SG9(SEG2_COM)
- csi_pin_set_mux(PA012, PA012_OUTPUT); //配置PA0.12端口為輸出模式
- csi_pin_output_mode(PA012, GPIO_PUSH_PULL); //推挽輸出
- //SG8(SEG3_COM)
- csi_pin_set_mux(PA013, PA013_OUTPUT); //配置PA0.13端口為輸出模式
- csi_pin_output_mode(PA013, GPIO_PUSH_PULL); //推挽輸出
- //SG11(SEG_A)
- csi_pin_set_mux(PB04, PB04_OUTPUT); //配置PB0.4端口為輸出模式
- csi_pin_output_mode(PB04, GPIO_PUSH_PULL); //推挽輸出
- //SG7(SEG_B)
- csi_pin_set_mux(PA014, PA014_OUTPUT); //配置PA0.14端口為輸出模式
- csi_pin_output_mode(PA014, GPIO_PUSH_PULL); //推挽輸出
- //SG4(SEG_C)
- csi_pin_set_mux(PA08, PA08_OUTPUT); //配置PA0.8端口為輸出模式
- csi_pin_output_mode(PA08, GPIO_PUSH_PULL); //推挽輸出
- //SG2(SEG_D)
- csi_pin_set_mux(PA010, PA010_OUTPUT); //配置PA0.10端口為輸出模式
- csi_pin_output_mode(PA010, GPIO_PUSH_PULL); //推挽輸出
- //SG1(SEG_E)
- csi_pin_set_mux(PA011, PA011_OUTPUT); //配置PA0.11端口為輸出模式
- csi_pin_output_mode(PA011, GPIO_PUSH_PULL); //推挽輸出
- //SG10(SEG_F)
- csi_pin_set_mux(PB05, PB05_OUTPUT); //配置PB0.5端口為輸出模式
- csi_pin_output_mode(PB05, GPIO_PUSH_PULL); //推挽輸出
- //SG5(SEG_G)
- csi_pin_set_mux(PB02, PB02_OUTPUT); //配置PB0.2端口為輸出模式
- csi_pin_output_mode(PB02, GPIO_PUSH_PULL); //推挽輸出
- //SG3(SEG_DP)
- csi_pin_set_mux(PA09, PA09_OUTPUT); //配置PA0.9端口為輸出模式
- csi_pin_output_mode(PA09, GPIO_PUSH_PULL); //推挽輸出
- //主頻CLO輸出
- // csi_pin_set_mux(PA02, PA02_CLO); //設(shè)置主頻輸出引腳為PA0.2腳
- // csi_clo_config(CLO_SYSCLK, CLO_DIV8); //CLO分頻系數(shù)為8,輸出頻率=主頻48MHz/8=6MHz
- }
- //主函數(shù)
- int main()
- {
- uint i; //定義臨時變量,方便后續(xù)程序使用
- //系統(tǒng)、GPIO口等初始化
- system_init(); //系統(tǒng)時鐘、TICK等配置(系統(tǒng)時鐘48MHz 1分頻)
- // board_init(); //UART2硬件串口配置(系統(tǒng)參數(shù)、信息打印用)
- GPIO_Init(); //GPIO口初始化
-
- //主循環(huán)
- while(1)
- {
- //按下“清零”鍵,標(biāo)定零點(diǎn)重量ADC轉(zhuǎn)換值,并對稱重值清零
- if(Key1_Input==0x0000) //按下“清零”鍵
- {
- Weight_24Bit_ADC_Now = HX720_Read();//讀取當(dāng)前HX720稱重芯片24位ADC轉(zhuǎn)換值
- Weight_24Bit_ADC_Zero = Weight_24Bit_ADC_Now;//賦值零點(diǎn)重量24位ADC轉(zhuǎn)換值
- Weight_Test = 0;
- }
- //當(dāng)前沒有按下“清零”鍵
- else
- {
- //獲取當(dāng)前重量24位ADC轉(zhuǎn)換值
- Weight_24Bit_ADC_Now = HX720_Read();//先讀取當(dāng)前HX720稱重芯片24位ADC轉(zhuǎn)換值
- //計(jì)算重量值
- if(Weight_24Bit_ADC_Now<Weight_24Bit_ADC_Zero)//當(dāng)前ADC轉(zhuǎn)換值比零點(diǎn)重量ADC轉(zhuǎn)換值小(電子秤被抬起,傳感器反方向形變)
- {
- //空操作,稱重出現(xiàn)錯誤(也可以做負(fù)數(shù)顯示處理,本案則不顯示負(fù)數(shù)稱重)
- }
- else //當(dāng)前ADC轉(zhuǎn)換值大于等于零點(diǎn)重量ADC轉(zhuǎn)換值
- {
- Weight_Test = (Weight_24Bit_ADC_Now - Weight_24Bit_ADC_Zero)/106.5;//單位:g
- //(106.5數(shù)值和使用的傳感器線性度有關(guān),可以多次用標(biāo)準(zhǔn)砝碼測量、計(jì)算獲取)
- Weight_Test = Weight_Test/1000; //單位:Kg
- }
- }
- //延時并顯示稱重值
- for(i=0;i<100;i++) //循環(huán)多次顯示重量值,并延時
- {
- Display_Weight(Weight_Test); //數(shù)碼管顯示當(dāng)前稱重值
- }
- }
-
- return 0;
- }
復(fù)制代碼
51hei.png (7.57 KB, 下載次數(shù): 36)
下載附件
2023-4-23 15:03 上傳
所有資料51hei附件下載:
基于APT32F1023單片機(jī)HX711_HX720稱重傳感器原理圖和源代碼分享.7z
(3.14 MB, 下載次數(shù): 28)
2023-4-23 15:04 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|