|
本帖最后由 七彩的夢想 于 2025-6-5 23:44 編輯
最近心血來潮買了幾個ADS1115模塊,想找個時間測試驗證一下。發(fā)現(xiàn)模塊配送的資料是Arduino平臺,手頭沒有Arduino硬件,只有STC8G1K08單片機,于是在本論壇找了個現(xiàn)成的51系列的ADS1115代碼修修改改發(fā)現(xiàn)基本能用,但是讀數(shù)據(jù)有點問題,15位數(shù)據(jù)的低4位無法正常讀取,一直為0,用邏輯分析儀看了數(shù)據(jù)波形是正常的沒發(fā)現(xiàn)問題在哪。折騰了好幾天還是沒能解決。我已經(jīng)排除過硬件是沒有問題的,問題應(yīng)該還是出在軟件上,望論壇里的高手幫忙看看指點我一下。謝謝!
ADS1115配置為:單端輸入, A0端口輸入0---5V 滿量程配置為4.096V 正常轉(zhuǎn)換范圍0---32767現(xiàn)在異常轉(zhuǎn)換值范圍是這樣的:0,16,32,48,64,80,96,112,,,,,,,,32752。隨著電壓增加 AD轉(zhuǎn)換值以每16個LSB跳躍累加。
問題重點:低4位數(shù)據(jù)讀回來一直為0
以下是用邏輯分析儀采集的波形圖
異常波形圖
低4位異常.png (143.99 KB, 下載次數(shù): 0)
下載附件
低4位異常
2025-6-5 00:26 上傳
波形圖1
波形圖1.png (192.19 KB, 下載次數(shù): 0)
下載附件
2025-6-4 23:42 上傳
波形圖2
波形圖2.png (98.5 KB, 下載次數(shù): 0)
下載附件
波形圖2
2025-6-4 23:42 上傳
波形圖3
波形圖3.png (165.9 KB, 下載次數(shù): 0)
下載附件
2025-6-4 23:42 上傳
波形圖4
波形圖4.png (142.52 KB, 下載次數(shù): 0)
下載附件
波形圖4
2025-6-4 23:43 上傳
波形圖5
波形圖5.png (165.05 KB, 下載次數(shù): 0)
下載附件
波形圖5
2025-6-4 23:43 上傳
大于0的第一個值
大于0的第一個值.jpg (81.71 KB, 下載次數(shù): 0)
下載附件
大于0的第一個值
2025-6-4 23:43 上傳
對應(yīng)波形圖5數(shù)據(jù)顯示
對應(yīng)波形圖5.jpg (79.13 KB, 下載次數(shù): 0)
下載附件
對應(yīng)波形圖5數(shù)據(jù)顯示
2025-6-4 23:44 上傳
最大值
最大值.jpg (74.87 KB, 下載次數(shù): 0)
下載附件
最大值
2025-6-4 23:44 上傳
最小值
最小值.jpg (80.98 KB, 下載次數(shù): 0)
下載附件
最小值
2025-6-4 23:44 上傳
硬件連接
硬件連接.jpg (135.24 KB, 下載次數(shù): 0)
下載附件
硬件連接
2025-6-4 23:45 上傳
代碼部分:
- /*******************************************************************************************************************************************************************
- /*ADS1115+TM1637例程
- /*本示例在STC8G1K08A驗證暫不OK
- /*工作頻率11.0592MHz
- /*編輯日期:2025/05/26,星期一,00:10
- *********************************************************************************************************************************************************************/
- #include<AI8G.h>//STC8G系列頭文件
- #define uchar unsigned char //0---255
- #define uint unsigned int //0---65535
- #define ulong unsigned long //0---4294967295
-
- ///==================================================================================================================================================================
- bit Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7,K1_flag,K2_flag,K3_flag,K4_flag,switch_CHN;//8個位變量,對應(yīng)LED1---LED8 ,5個按鍵標(biāo)志位
- sbit SCL=P3^2;//ADS1115時鐘線
- sbit SDA=P3^3;//ADS1115數(shù)據(jù)線
- sbit clk = P5^4;//TM1637時鐘端口
- sbit dio = P5^5;//TM1637數(shù)據(jù)端口
- uchar buf[6];//6個數(shù)碼管緩存區(qū)
- int D_ADS; //轉(zhuǎn)換的數(shù)字量
- uint Config;//
- uint Result[2];//
- uchar Writebuff[4],Readbuff[3];//
-
- ///==================================================================================================================================================================
- #define TRUE 1 //真
- #define FALSE 0 //假
- #define ADDRESS_0 0x90 //ADDR PIN ->GND
- #define ADDRESS_1 0x92 //ADDR PIN ->VDD
- #define ADDRESS_2 0x94 //ADDR PIN ->SDA
- #define ADDRESS_3 0x96 //ADDR PIN ->SCL
- /************POINTERREGISTER*****************/
- #define Pointer_0 0x00 //Convertion register
- #define Pointer_1 0x01 //Config register
- #define Pointer_2 0x02 //Lo_thresh register
- #define Pointer_3 0x03 //Hi_thresh register
- /************CONFIG REGISTER*****************/
- #define OS_0 0x0000
- #define OS_1 0x8000
- #define MUX_0 0x0000 //AINp=AIN0, AINn=AIN1
- #define MUX_1 0x1000 //AINp=AIN0, AINn=AIN3
- #define MUX_2 0x2000 //AINp=AIN1, AINn=AIN3
- #define MUX_3 0x3000 //AINp=AIN2, AINn=AIN3
- #define MUX_4 0x4000 //AINp=AIN0, AINn=GND
- #define MUX_5 0x5000 //AINp=AIN1, AINn=GND
- #define MUX_6 0x6000 //AINp=AIN2, AINn=GND
- #define MUX_7 0x7000 //AINp=AIN3, AINn=GND
- #define PGA_0 0x0000 //FS=6.144V
- #define PGA_1 0x0200 //FS=4.096V
- #define PGA_2 0x0400 //FS=2.048V
- #define PGA_3 0x0600 //FS=1.024V
- #define PGA_4 0x0800 //FS=0.512V
- #define PGA_5 0x0A00 //FS=0.256V
- #define PGA_6 0x0C00 //FS=0.256V
- #define PGA_7 0x0E00 //FS=0.256V
- #define MODE_0 0x0000 //
- #define MODE_1 0x0100 //
- #define DR_0 0x0000 //Data Rate = 8
- #define DR_1 0x0020 //Data Rate = 16
- #define DR_2 0x0040 //Data Rate = 32
- #define DR_3 0x0060 //Data Rate = 64
- #define DR_4 0x0080 //Data Rate = 128
- #define DR_5 0x00A0 //Data Rate = 250
- #define DR_6 0x00C0 //Data Rate = 475
- #define DR_7 0x00E0 //Data Rate = 860
- #define COMP_MODE_0 0x0000
- #define COMP_MODE_1 0x0010
- #define COMP_POL_0 0x0000
- #define COMP_POL_1 0x0008
- #define COMP_LAT_0 0x0000
- #define COMP_LAT_1 0x0040
- #define COMP_QUE_0 0x0000
- #define COMP_QUE_1 0x0001
- #define COMP_QUE_2 0x0002
- #define COMP_QUE_3 0x0003
- //*************ADDRInitial********************/
- #define ADDRESS ADDRESS_0 //ADDR PIN ->GND
- #define ADDRESS_W ADDRESS|0x00 //寫地址
- #define ADDRESS_R ADDRESS|0x01 //讀地址
- /*************ConfigInitial*********************/
- #define OS OS_1
- #define MUX_A0 MUX_4 //AINp=AIN0, AINn=GND
- #define MUX_A1 MUX_5 //AINp=AIN1, AINn=GND
- #define MUX_A2 MUX_6 //AINp=AIN2, AINn=GND
- #define MUX_A3 MUX_7 //AINp=AIN3, AINn=GND
- #define PGA PGA_1 //FS=4.096V分辨率
- #define MODE MODE_1 //Continuous conversion mode
- #define DR DR_0 //Data Rate = 8 轉(zhuǎn)換速率
- #define COMP_QUE COMP_QUE_3
- ///==================================================================================================================================================================
- void Delay_us(unsigned int i) //N_us 微秒延時
- {
- for(;i>0;i--);
- }
- ///==================================================================================================================================================================
- void Start(void)//IIC開始
- {
- SDA=1;
- SCL=1;
- Delay_us (1);
- SDA=0;
- Delay_us (5);
- SCL=0;
- _nop_(); _nop_();
- _nop_(); _nop_();
- _nop_(); _nop_();
- _nop_(); _nop_();
- }
- ///==================================================================================================================================================================
- void Stop(void)//IIC停止
- {
- //Delay_us (1);
- SCL=1;
- Delay_us (2);
- SDA=1;
- // Delay_us (5);
- // SCL=0;
- // Delay_us (5);//00&91中間波形
- // SDA=0;
- }
- ///==================================================================================================================================================================
- void ACK(void)//IIC應(yīng)答 7F&F0中間波形
- {
- _nop_();
- _nop_();
- SDA=0;
- _nop_();
- _nop_();
- SCL=1;
- Delay_us (4);
- SCL=0;
- SDA=1;
- }
- ///==================================================================================================================================================================
- void NACK(void)//IIC無應(yīng)答
- {
- unsigned int x;
- for(x=1;x>0;x--);
- SDA=1;
- _nop_();
- _nop_();
- SCL=1;
- Delay_us (4);
- SCL=0;
- _nop_();
- _nop_();
- SDA=0;
- Delay_us (2);
- }
- ///==================================================================================================================================================================
- unsigned char Check(void)//檢查從機是否有應(yīng)答:1--有,0--無
- {
- unsigned char slaveack;
- SDA=1;
- _nop_();
- _nop_();
- _nop_();
- SCL=1;
- slaveack = SDA; //讀入SDA數(shù)值
- Delay_us (5);//90&01中間波形
- SCL=0;
- //Delay_us (1);
- if(slaveack)
- return FALSE;
- else
- return TRUE;
- }
- ///==================================================================================================================================================================
- void Write_1_Byte(unsigned char DataByte)//寫一字節(jié)
- {
- int i;
- SCL=0;
-
- for(i=0;i<8;i++)
- {
- if(DataByte&0x80) //if((DataByte<<i)&0x80)
- SDA=1;
- else
- SDA=0;
- DataByte <<= 1;
- SCL=1;
- Delay_us (5);//
- SCL=0;
- Delay_us (3);//
- }
- SDA=1;
-
- }
- ///==================================================================================================================================================================
- unsigned char Write_N_Byte(unsigned char*writebuffer,unsigned char n)//寫多字節(jié)
- {
- int i;
- for(i=0;i<n;i++)
- {
- Write_1_Byte(*writebuffer);
- if(Check())
- {
- writebuffer++;
- }
- else
- {
- Stop();
- return FALSE;
- }
- }
- Delay_us (1);//
- Stop();
- return TRUE;
- }
- ///==================================================================================================================================================================
- unsigned char Read_1_Byte(void)//讀一字節(jié)
- {
- unsigned char data_Value = 0, FLAG, i;
- for(i=0;i<8;i++)
- {
- SDA=1;
- Delay_us (3);
- SCL=1;
- Delay_us (3);
- FLAG=SDA;
- data_Value <<= 1;
- if(FLAG)
- data_Value |= 0x01;
- SCL=0;
- _nop_();_nop_();
- _nop_();_nop_();
- _nop_();_nop_();
- }
- return data_Value;
- }
- ///==================================================================================================================================================================
- void Read_N_Byte(unsigned int*readbuff,unsigned char n)//讀多字節(jié)
- {
- unsigned char i;
- for(i=0;i<n;i++)
- {
- readbuff[i]=Read_1_Byte();
- if(i==n-1)
- NACK(); //不連續(xù)讀字節(jié)
- else
- ACK();//連續(xù)讀字節(jié)
- }
- Stop();
- }
- ///==================================================================================================================================================================
- void WriteWord(void)//寫一個Word
- {
- int t;
- Start(); //寫入4個字節(jié)
- do
- {
- t=Write_N_Byte(Writebuff,4);
- }
- while(t==0);
- Stop();
- }
- ///==================================================================================================================================================================
- void ReadWord(void)//讀Word
- {
- int t;
-
- Start(); //寫入2個字節(jié)
- do
- {
- t=Write_N_Byte(Readbuff,2);
- }
- while(t==0);
- Start(); //寫入2個字節(jié)
- do
- {
- t=Write_N_Byte(&Readbuff[2],1);
- }
- while(t==0);
-
- Read_N_Byte(Result,2); //讀出2個字節(jié)
- }
- ///==================================================================================================================================================================
- void InitADS1115(bit S_MUX_0, bit S_MUX_1)//ADS1115初始化
- {
- if(S_MUX_0 == 0 && S_MUX_1 == 0) //AIN0
- Config= OS+MUX_A0+PGA+DR+COMP_QUE+MODE;//【OS=1開始ADC轉(zhuǎn)換】+【MUX_A0通道0】+【PGA 電壓量程FS=4.096】+【DR總線數(shù)據(jù)速率】+【COMP_QUE ALERT引腳輸出配置】+【MODE=0x0000 連續(xù)轉(zhuǎn)換 MODE=0x0100單次轉(zhuǎn)換】;
- if(S_MUX_0 == 0 && S_MUX_1 == 1) //AIN1
- Config= OS+MUX_A1+PGA+DR+COMP_QUE+MODE;//【OS=1開始ADC轉(zhuǎn)換】+【MUX_A0通道0】+【PGA 電壓量程FS=4.096】+【DR總線數(shù)據(jù)速率】+【COMP_QUE ALERT引腳輸出配置】+【MODE=0x0000 連續(xù)轉(zhuǎn)換 MODE=0x0100單次轉(zhuǎn)換】;
- if(S_MUX_0 == 1 && S_MUX_1 == 0) //AIN2
- Config= OS+MUX_A2+PGA+DR+COMP_QUE+MODE;//【OS=1開始ADC轉(zhuǎn)換】+【MUX_A0通道0】+【PGA 電壓量程FS=4.096】+【DR總線數(shù)據(jù)速率】+【COMP_QUE ALERT引腳輸出配置】+【MODE=0x0000 連續(xù)轉(zhuǎn)換 MODE=0x0100單次轉(zhuǎn)換】;
- if(S_MUX_0 == 1 && S_MUX_1 == 1) //AIN3
- Config= OS+MUX_A3+PGA+DR+COMP_QUE+MODE;//【OS=1開始ADC轉(zhuǎn)換】+【MUX_A0通道0】+【PGA 電壓量程FS=4.096】+【DR總線數(shù)據(jù)速率】+【COMP_QUE ALERT引腳輸出配置】+【MODE=0x0000 連續(xù)轉(zhuǎn)換 MODE=0x0100單次轉(zhuǎn)換】;
- Writebuff[0]=ADDRESS_W;//寫數(shù)據(jù),從機地址0x90(最低位bit0決定讀寫操作R/W 0讀 1寫)
- Writebuff[1]=Pointer_1;//數(shù)據(jù)要寫入的寄存器地址(地址指針,0x01)
- Writebuff[2]=Config/256;//參數(shù)配置寄存器高8位【對應(yīng)OS,MUX,PGA,MODE】
- Writebuff[3]=Config%256;//參數(shù)配置寄存器低8位【對應(yīng)DR,COMP_MODE,COMP_POL,COMP_LAT,COMP_QUE】
-
- Readbuff[0]=ADDRESS_W;//寫數(shù)據(jù),從機地址0x90(最低位bit0決定讀寫操作R/W 0讀 1寫)
- Readbuff[1]=Pointer_0;//數(shù)據(jù)要寫入的寄存器地址(地址指針,0x00)
- Readbuff[2]=ADDRESS_R;//讀數(shù)據(jù),從機地址0x91(最低位bit0決定讀寫操作R/W 0讀 1寫)
- }
- ///==================================================================================================================================================================
- unsigned int ADS1115(bit S_MUX_0, bit S_MUX_1)//從指定AD輸入通道讀取AD轉(zhuǎn)換值
- {
- InitADS1115(S_MUX_0, S_MUX_1);
- WriteWord();
- ReadWord();
- D_ADS=Result[0]*256+Result[1]; //轉(zhuǎn)換的數(shù)字量
- return D_ADS;
- }
- ///==================================================================================================================================================================
- uint ADC_operation()//ADC數(shù)據(jù)運算處理
- {
- static unsigned char count = 0;//ADC采樣次數(shù),計數(shù)
- static unsigned long sum = 0;//ADC采樣總數(shù),“和”
- static unsigned int AD_Value = 0;//處理好的平均值
- static unsigned int AD_temp = 0;//未處理的AD值
-
- AD_Value=ADS1115(0,0); //ADS1115取值_AIN0
- //AD_temp=ADS1115(0,0); //ADS1115取值_AIN0
- //AD_Value=Result[0];//調(diào)試用
- //AD_Value=Result[1];//調(diào)試用
- // Delay_us (5);
-
- // if(count < 100)//如果采集次數(shù)小于100
- // {
- // sum += AD_temp;//AD值累計
- // count++;//采樣計數(shù)加一
- // }
- //
- // if(count >= 100)//如果采集次數(shù)大于等于100
- // {
- // AD_Value = sum / 100;//總數(shù)“和”除100,慮除波動值
- // count = 0;//采集次數(shù)清零
- // sum = 0;//總數(shù)“和”變量清零
- // }
- return AD_Value;//返回處理好的AD值
- }
- ///==================================================================================================================================================================
- /* 往下是TM1637代碼區(qū)域 */
- ///==================================================================================================================================================================
- uchar key_data,key_value;//按鍵處理過程變量
- uint Display;//待顯示數(shù)據(jù)
- uchar code SMG_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};//0-F編碼表
- //uchar code key_table[]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef};//key1--key16按鍵倒序識別碼
- uchar code key_table[]={0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0,0xef,0xee,0xed,0xec,0xeb,0xea,0xe9,0xe8};//key1--key16按鍵順序識別碼
-
- ///==================================================================================================================================================================
- void init() //初始化函數(shù)
- {
- P3M0 = 0x0c; P3M1 = 0x0c;
- //P3M0 = 0x00; P3M1 = 0x00;//IO口模式配置【準(zhǔn)雙向口】
- P5M0 = 0x00; P5M1 = 0x00;//IO口模式配置【準(zhǔn)雙向口】
- switch_CHN=1;//指定顯示內(nèi)容
- }
-
- ///==================================================================================================================================================================
- // void Delay_us(unsigned int i) //N_us 微秒延時
- // {
- // unsigned char j;
- // for(;i>0;i--)
- // for(j=10;j>0;j--);
- // }
- ///==================================================================================================================================================================
- void I2CStart(void)//TM1637 開始
- {
- clk = 1;
- dio = 1;
- Delay_us(2);
- dio = 0;
- }
-
- ///==================================================================================================================================================================
- void I2Cask(void)//TM1637 應(yīng)答
- {
- clk = 0;
- Delay_us(5);//在第八個時鐘下降沿之后延時 5us,開始判斷 ACK 信號
- while(dio);
- clk = 1;
- Delay_us(2);
- clk=0;
- }
-
- ///==================================================================================================================================================================
- void I2CStop(void)//TM1637 停止
- {
- clk = 0;
- Delay_us(2);
- dio = 0;
- Delay_us(2);
- clk = 1;
- Delay_us(2);
- dio = 1;
- }
-
- ///==================================================================================================================================================================
- void I2CWrByte(unsigned char oneByte)//TM1637 寫一個字節(jié)
- {
- unsigned char i;
- for(i=0;i<8;i++)
- {
- clk = 0;
- if(oneByte&0x01)//低位在前
- {dio = 1;}
- else
- {dio = 0;}
- Delay_us(3);
- oneByte=oneByte>>1;
- clk=1;
- Delay_us(3);
- }
- }
-
- ///==================================================================================================================================================================
- unsigned char Scankey(void)//TM1637 讀按鍵
- {
- unsigned char rekey,i;
- I2CStart();
- I2CWrByte(0x42);//讀按鍵命令
- I2Cask();
- dio=1; //在讀按鍵前拉高數(shù)據(jù)線
- for(i=0;i<8;i++)//從低位開始讀
- {
- clk=0;
- rekey=rekey>>1;
- Delay_us(30);
- clk=1;
- if(dio)
- {rekey=rekey|0x80;}
- else
- {rekey=rekey|0x00;}
- Delay_us(30);
- }
- I2Cask();
- I2CStop();
- return (rekey);
- }
-
- ///==================================================================================================================================================================
- void SMG_Display(void)//TM1637 寫顯示寄存器
- {
- unsigned char i;
- I2CStart();
- I2CWrByte(0x40); // 40H 地址自動加 1 模式,44H 固定地址模式,本程序采用自加 1 模式
- I2Cask();
- I2CStop();
- I2CStart();
- I2CWrByte(0xc0);//設(shè)置首地址,
- I2Cask();
- for(i=0;i<6;i++)//地址自加,不必每次都寫地址
- {
- if(i<5)
- {I2CWrByte(SMG_table[buf[i]]);}//送數(shù)據(jù)
- else
- {I2CWrByte(buf[5]);}//送數(shù)據(jù)
- I2Cask();
- }
- I2CStop();
- I2CStart();
- I2CWrByte(0x8f);//開顯示 ,最大亮度
- I2Cask();
- I2CStop();
- }
-
- ///==================================================================================================================================================================
- void key_inquiry(unsigned char key_data)//TM1637 按鍵ID查詢,識別按鍵
- {
- uchar i;
- for(i=0;i<16;i++)
- {if(key_data==key_table[i])break;}
- key_value=i;//查詢到的ID號
- }
-
- ///==================================================================================================================================================================
- unsigned char set_led()//合并8個二進(jìn)制位成一個字節(jié)
- {
- unsigned char Byte = 0;
- unsigned char Temp;
- Temp = (unsigned char)Bit0;
- Byte |= (Temp & 1) << 0;
- Temp = (unsigned char)Bit1;
- Byte |= (Temp & 1) << 1;
- Temp = (unsigned char)Bit2;
- Byte |= (Temp & 1) << 2;
- Temp = (unsigned char)Bit3;
- Byte |= (Temp & 1) << 3;
- Temp = (unsigned char)Bit4;
- Byte |= (Temp & 1) << 4;
- Temp = (unsigned char)Bit5;
- Byte |= (Temp & 1) << 5;
- Temp = (unsigned char)Bit6;
- Byte |= (Temp & 1) << 6;
- Temp = (unsigned char)Bit7;
- Byte |= (Temp & 1) << 7;
- return Byte;
- }
-
- ///==================================================================================================================================================================
- void main(void)//主函數(shù)
- {
- init();//初始化
- while(1)//循環(huán)體
- {
- Bit0=1;//Mot (LED1)對應(yīng)set_led()函數(shù)里面的Bit0
- Bit1=0;//Ch4 (LED2)對應(yīng)set_led()函數(shù)里面的Bit1
- Bit2=0;//Valley (LED3)對應(yīng)set_led()函數(shù)里面的Bit2
- Bit3=0;//Ch3 (LED4)對應(yīng)set_led()函數(shù)里面的Bit3
- Bit4=0;//Peak (LED5)對應(yīng)set_led()函數(shù)里面的Bit4
- Bit5=0;//Ch2 (LED6)對應(yīng)set_led()函數(shù)里面的Bit5
- Bit6=0;//Net (LED7)對應(yīng)set_led()函數(shù)里面的Bit6
- Bit7=0;//Ch1 (LED8)對應(yīng)set_led()函數(shù)里面的Bit7
-
- if(switch_CHN==1){Display=ADC_operation();}//顯示ADC值
- if(switch_CHN==0){if(key_value==0){if(K1_flag==0){K1_flag=1;Display=12345;}}else{K1_flag=0;}}//KEY1按鍵事件處理
- if(switch_CHN==0){if(key_value==1){if(K2_flag==0){K2_flag=1;if(Display>0){Display--;}}}else{K2_flag=0;}}//KEY2按鍵事件處理
- if(key_value==2){if(K3_flag==0){K3_flag=1;switch_CHN=~switch_CHN;}}else{K3_flag=0;}//KEY3按鍵事件處理
- if(switch_CHN==0){if(key_value==3){if(K4_flag==0){K4_flag=1;if(Display<65535){Display++;}}}else{K4_flag=0;}}//KEY4按鍵事件處理
-
- key_data=Scankey();//讀出的按鍵值不作處理。
- key_inquiry(key_data);//按鍵ID號查詢函數(shù)
- //if(key_data!=0xff){key_value=16;}//如果沒有按鍵按下,顯示空白(編碼表第16個元素,對應(yīng)不顯示)
- //Display=12345;//數(shù)碼管顯示內(nèi)容
- //buf[4]=key_value;//按鍵ID號顯示
-
- if(Display>999){buf[0]=Display%100000/10000;}else{buf[0]=16;}//萬
- if(Display>999){buf[1]=Display%10000/1000;}else{buf[1]=16;}//千
- if(Display>99){buf[2]=Display%1000/100;}else{buf[2]=16;}//百
- if(Display>9){buf[3]=Display%100/10;}else{buf[3]=16;}//十
- buf[4]=Display%10;//個
- buf[5]= set_led();//8個LED燈輸出控制,通過Bit0---Bit7設(shè)置LED狀態(tài)
-
- SMG_Display();//數(shù)碼管顯示控制
- }
-
- }
-
-
-
復(fù)制代碼 下面是滿量程的時候?qū)?yīng)的波形圖
滿量程.png (129.39 KB, 下載次數(shù): 0)
下載附件
滿量程
2025-6-5 23:42 上傳
視頻展示:
https://v.youku.com/video?vid=XNjQ4NDEwMDYwNA%3D%3D
|
|