久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3006|回復: 8
打印 上一主題 下一主題
收起左側

STC8H3K64S2單片機制作oled12832USB電壓電流容量表

  [復制鏈接]
跳轉到指定樓層
樓主
設計目的(聲明:僅作為個人參考用,希望能多給我點積分以便于下載更多的學習資料,謝謝):
    本設計為了方便的觀察手機及其他設備充電時所輸出的電流電壓大小,可進行功耗、充電時間、及充電容量的計算。參數:輸入電壓:5-25v,輸入電流0-3A
設計說明:
    采用STC8H3K64S2單片機的12位adc進行電壓及電流 程序代碼已完成顯示wmahwh.zip (386.82 KB, 下載次數: 81)

USB電壓電流檢測儀圖紙.zip (106.04 KB, 下載次數: 58)

的采樣,用0.91英寸的OLED屏幕來進行顯示。用嘉立創eda進行設計。先看成品如下(具體見附件哈哈):


原理圖:
PCB圖:


代碼部分截圖(具體見附件):

#include "STC8xxxx.H"
#include "oled.h"
#include "bmp.h"
#include        "config.h"
#include        "adc.h"
#include        "gpio.h"
#include        "delay.h"

#define N 8        //ADC采樣使用遞推平均濾波算法,采樣次數
                u8        i;
        u16        j;
           u32 sum=0;  //數值和
                u32 sum1=0;  //數值和
                u16 cut=0;  //采樣次數
         u16 cu=0;//平均數
                        u16 ca=0;//平均數
                         u16 u1=0;
   u16 u2=0;
    u16 u3=0;
   u16 a1=0;
   u16 a2=0;
   u16 a3=0;


/*************        功能說明        **************

本例程基于STC8H8K64U為主控芯片的實驗箱8進行編寫測試,STC8G、STC8H系列芯片可通用參考.

本程序演示多路ADC查詢采樣,通過串口2發送給上位機,波特率115200,N,8,1。

下載時, 選擇時鐘 22.1184MHz (可以在配置文件"config.h"中修改).

******************************************/


/*************        本地常量聲明        **************/
  unsigned int  ADC_Buf[N+1];                //采樣數組mA
  unsigned char num,ADCcount=0,ADCcount2=0;        //ADC采樣次數變量

/*************        本地變量聲明        **************/


/*************        本地函數聲明        **************/


/*************  外部函數和變量聲明 *****************/


/******************* IO配置函數 *******************/
void        GPIO_config(void)
{
        GPIO_InitTypeDef        GPIO_InitStructure;                //結構定義
        //AD口設置為輸入口
        GPIO_InitStructure.Pin  = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;                //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7
        GPIO_InitStructure.Mode = GPIO_HighZ;        //指定IO的輸入或輸出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
        GPIO_Inilize(GPIO_P1,&GPIO_InitStructure);        //初始化

        GPIO_InitStructure.Pin  = GPIO_Pin_6 | GPIO_Pin_7;                //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7
        GPIO_InitStructure.Mode = GPIO_PullUp;        //指定IO的輸入或輸出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
        GPIO_Inilize(GPIO_P4,&GPIO_InitStructure);        //初始化
}

/******************* AD配置函數 *******************/
void        ADC_config(void)
{
        ADC_InitTypeDef                ADC_InitStructure;                //結構定義
        ADC_InitStructure.ADC_SMPduty   = 31;                //ADC 模擬信號采樣時間控制, 0~31(注意: SMPDUTY 一定不能設置小于 10)
        ADC_InitStructure.ADC_CsSetup   = 0;                //ADC 通道選擇時間控制 0(默認),1
        ADC_InitStructure.ADC_CsHold    = 1;                //ADC 通道選擇保持時間控制 0,1(默認),2,3
        ADC_InitStructure.ADC_Speed     = ADC_SPEED_2X1T;                //設置 ADC 工作時鐘頻率        ADC_SPEED_2X1T~ADC_SPEED_2X16T
        ADC_InitStructure.ADC_Power     = ENABLE;                                //ADC功率允許/關閉        ENABLE,DISABLE
        ADC_InitStructure.ADC_AdjResult = ADC_RIGHT_JUSTIFIED;        //ADC結果調整,        ADC_LEFT_JUSTIFIED,ADC_RIGHT_JUSTIFIED
        ADC_InitStructure.ADC_Priority    = Priority_0;                        //指定中斷優先級(低到高) Priority_0,Priority_1,Priority_2,Priority_3
        ADC_InitStructure.ADC_Interrupt = DISABLE;                        //中斷允許        ENABLE,DISABLE
        ADC_Inilize(&ADC_InitStructure);                                        //初始化
        ADC_PowerControl(ENABLE);                                                        //單獨的ADC電源操作函數, ENABLE或DISABLE
}
void        ADCCL(void)
{


        if(cut<20000)
        {                  
        Get_ADCResult(1);  //電流
        Get_ADCResult(2); //電壓
        sum1+=Get_ADCResult(1);
        sum+=Get_ADCResult(2);

        cut++;
        
        }
      if(cut>=20000)
          {
           cu=sum/20000;
           ca=sum1/20000;
           sum=0;
           sum1=0;
           cut=0;
            cu=cu*0.902077193; //ADC平均值轉化成電壓值
                //        OLED_ShowNum(0,2,cu,7,16);
                   u1=cu/100;        //
                         OLED_ShowNum(0,0,u1,2,16);//整數部分電壓值
                   u2=cu%100/10;
                        OLED_ShowNum(20,0,u2,1,16);         //小數部分1位電壓值                  
                          u3=cu%1000;                                         
                        OLED_ShowNum(28,0,u3,1,16);         ////小數部分2位電壓值
               
                         ca=ca*0.20143615924092;        //ADC平均值轉化成mA電流值
                         a1=ca/100;        //
                         OLED_ShowNum(75,0,a1,2,16);//整數部分電流值
                   a2=ca%100/10;
                        OLED_ShowNum(95,0,a2,1,16);         //小數部分1位電電流值                  
                          a3=ca%1000;                                         
                        OLED_ShowNum(103,0,a3,1,16);         ////小數部分2位電流值
                //        OLED_ShowNum(75,2,ca,4,16);
          }      
         
                        
               

               



}

/**********************************************/
void main(void)
{
//        u8        i;
//        u16        j;
        
        GPIO_config();

        ADC_config();
        EA = 1;
        P3M1 = 0x00;
        P3M0 = 0x00;
        OLED_Init();//初始化OLED
        OLED_ColorTurn(0);//0正常顯示,1 反色顯示
   OLED_DisplayTurn(0);//0正常顯示 1 屏幕翻轉顯示
          OLED_Clear();
        OLED_ShowString(17,0,".",16);
                OLED_ShowString(40,0,"V",16);
                OLED_ShowString(112,0,"A",16);
                OLED_ShowString(91,0,".",16);
        
        while (1)
        {
           
//                OLED_ShowString(0,2,"T:",16);
//                OLED_ShowString(16,2,"00:00",16);
//                OLED_ShowString(70,2,"5000",16);
//                OLED_ShowString(102,2,"mAh",16);
                          ADCCL();
               
                //        delay_ms(250);

               
               
        
        }
}

評分

參與人數 2黑幣 +60 收起 理由
admin + 50 共享資料的黑幣獎勵!
jialishoushi + 10 很給力!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏14 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:35873 發表于 2023-12-3 04:58 | 只看該作者
謝謝分享 手上還有好幾個這屏 得閑了也整個玩玩
回復

使用道具 舉報

板凳
ID:672765 發表于 2023-12-3 13:02 | 只看該作者
jialishoushi 發表于 2023-12-3 04:58
謝謝分享 手上還有好幾個這屏 得閑了也整個玩玩

可以的,哈哈
回復

使用道具 舉報

地板
ID:1086066 發表于 2023-12-5 09:40 | 只看該作者
樓主高手,準備買元件做一個。
回復

使用道具 舉報

5#
ID:430492 發表于 2023-12-6 09:26 | 只看該作者
樓主高手,動手設計就成功一半!!
回復

使用道具 舉報

6#
ID:672765 發表于 2023-12-6 20:12 | 只看該作者
ycw701123 發表于 2023-12-5 09:40
樓主高手,準備買元件做一個。

可以的,有問題可以隨時交流
回復

使用道具 舉報

7#
ID:672765 發表于 2023-12-6 20:16 | 只看該作者
cooleaf 發表于 2023-12-6 09:26
樓主高手,動手設計就成功一半!!

哈哈,還得多多學習,
回復

使用道具 舉報

8#
ID:1087912 發表于 2023-12-20 21:24 | 只看該作者
請問,用的是什么型號的屏?
回復

使用道具 舉報

9#
ID:371734 發表于 2024-3-29 22:15 | 只看該作者
樓主高手  學習了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 97视频人人澡人人爽 | 久久国内 | 国户精品久久久久久久久久久不卡 | 久久爱综合 | 99久久免费精品国产男女高不卡 | 鲁视频 | 国产精品久久久乱弄 | 日韩在线视频观看 | 国产精品成人国产乱一区 | 国产一区二区免费电影 | 欧美做暖暖视频 | 国产精品久久久久久吹潮 | 久久精品国产精品青草 | 日韩精品一区二区三区中文在线 | 亚洲国产精品一区在线观看 | 免费在线h视频 | 免费日韩av | 中文字幕一区二区三区四区五区 | 一区二区蜜桃 | 一区二区三区久久久 | 成人精品国产免费网站 | 一级毛片网 | 欧美日韩国产一区二区三区 | 中文字幕第二十页 | 一区在线播放 | 超碰av人人 | 日韩和的一区二在线 | 手机av在线 | 亚洲国产精品99久久久久久久久 | 亚洲国产高清高潮精品美女 | 精品欧美黑人一区二区三区 | 国产高清在线 | 国产一区二区久久 | 一区二区三区av | 精品一区二区三区四区五区 | 国产精品毛片一区二区三区 | 亚洲国产69 | 久久久久一区二区三区 | 国产精品久久久爽爽爽麻豆色哟哟 | 国产伦一区二区三区久久 | 91精品国产91 |