找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 9097|回復(fù): 19
打印 上一主題 下一主題
收起左側(cè)

SHT30的C51單片機(jī)程序 ,數(shù)碼管顯示,誤差±1,可直接移植

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:277976 發(fā)表于 2018-12-10 11:56 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include <intrins.h>
#include <STC12C5A60S2.h>
#include "I2C.h"
#include "SHT30.h"
#define uint unsigned int
#define uchar unsigned char

void display();

unsigned char code tableduan[]= {
    0x3f,0x06,0x5b,0x4f,
    0x66,0x6d,0x7d,0x07,
    0x7f,0x6f,0x77,0x7c,
    0x39,0x5e,0x79,0x71
};

uchar data DIS_ROME[6]= {0,0,0,0,0,0}; //顯示緩存區(qū)(4)
uchar DISP=0;//緩存區(qū)指針
uchar SCANF=0xDF;//掃描指針
sbit LED1=P1^0;
sbit LED2=P1^1;
sbit LED3=P1^2;
sbit LED4=P1^3;

sbit VOC_A=P3^5;
sbit VOC_B=P3^6;

sbit dula=P2^6; //IO口定義
sbit wela=P2^7;
sbit key=P3^4;
sbit beep_dr=P2^3;
uint pm1 = 0;
uint pm2 = 0;
uint pm10 = 0;
uchar vr=0;
uint intrcnt=0;
bit F_1HZ;
uint voice_time_cnt;
uchar Uart_Buf;
uchar Rec_Addr=0;
uchar mode=0;
uchar Rec_Uart=0;
uchar Recive_Buf[30]= {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
#define key P34
#define const_key_time1  50
unsigned char ucKeySec=0;   //被觸發(fā)的按鍵編號(hào)

unsigned int  uiKeyTimeCnt1=0; //按鍵去抖動(dòng)延時(shí)計(jì)數(shù)器
unsigned char ucKeyLock1=0; //按鍵觸發(fā)后自鎖的變量標(biāo)志
unsigned char displaycnt=0;
void keyscan()
{
    if(key==1)//IO是高電平,說(shuō)明按鍵沒(méi)有被按下,這時(shí)要及時(shí)清零一些標(biāo)志位
    {
        ucKeyLock1=0; //按鍵自鎖標(biāo)志清零
        uiKeyTimeCnt1=0;//按鍵去抖動(dòng)延時(shí)計(jì)數(shù)器清零,此行非常巧妙,是我實(shí)戰(zhàn)中摸索出來(lái)的。
    }
    else if(ucKeyLock1==0)//有按鍵按下,且是第一次被按下
    {
        uiKeyTimeCnt1++; //累加定時(shí)中斷次數(shù)
        if(uiKeyTimeCnt1>const_key_time1)
        {
            uiKeyTimeCnt1=0;
            ucKeyLock1=1;  //自鎖按鍵置位,避免一直觸發(fā)
            ucKeySec=1;    //觸發(fā)1號(hào)鍵
        }
    }

}
void keyservice()
{
        if(ucKeySec)
        {
                displaycnt=!displaycnt;
        
        }
                ucKeySec=0;

}

void UartInit(void)                //9600bps@12.000MHz
{
    TMOD=0x01;  //設(shè)置定時(shí)器0為工作方式1
    TH0=0xf8;   //重裝初始值(65535-500)=65035=0xfe0b
    TL0=0x2f;


    SCON=0x50;
    TMOD=0X21;


    IP =0x10;  //把串口中斷設(shè)置為最高優(yōu)先級(jí),


    EA=1;
    ES=1;
    ET0=1;
    TR0=1;
}



void T0_time(void) interrupt 1   //定時(shí)中斷
{
    TF0=0;  //清除中斷標(biāo)志
    TR0=0; //關(guān)中斷
    keyscan();
          keyservice();
    display();
    if(++intrcnt==1000)
    {
        intrcnt=0;

    }
    TH0=0xf8;
    TL0=0x2f;
    TR0=1;  //開中斷

}



void display()        //LED掃描
{


    if(displaycnt==1)
                {               
                                DIS_ROME[0]=0;
                                DIS_ROME[1]=Hum_num[4];
                                DIS_ROME[2]=Hum_num[3];
                                DIS_ROME[3]=Hum_num[2];
                                DIS_ROME[4]=Hum_num[1];
                                DIS_ROME[5]=Hum_num[0];
    }
                else
                {
                                DIS_ROME[0]=0;
                                DIS_ROME[1]=TEMP_num[4];
                                DIS_ROME[2]=TEMP_num[3];
                                DIS_ROME[3]=TEMP_num[2];
                                DIS_ROME[4]=TEMP_num[1];
                                DIS_ROME[5]=TEMP_num[0];
                }



    wela=1;

    P0=SCANF;
    wela=0;

    dula=1;
    P0=tableduan[DIS_ROME[DISP]];//數(shù)據(jù)端口送數(shù)據(jù)
    dula=0;

    DISP++;//緩存指針加1
    SCANF=_cror_(SCANF,1);//掃描切換
    if(DISP==7)//緩存指針到尾
    {
        DISP=0;//計(jì)數(shù)歸零
        SCANF=0xDF;//掃完四個(gè)數(shù)碼管,掃描復(fù)位
    }
//        delay(5);
}




void main(void)  //主函數(shù)
{

    UartInit();

    I2C_inita();
    while(1)
    {
                        
                  Getdat_SHT30();
                  SHT30_DATEChange();
    }   
}


sht30C51.rar

46.21 KB, 下載次數(shù): 504, 下載積分: 黑幣 -5

調(diào)試ok,可以直接移植

評(píng)分

參與人數(shù) 2黑幣 +65 收起 理由
perfect123 + 15 不管能不能用,贊一個(gè)
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享淘帖 頂4 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:159122 發(fā)表于 2019-3-14 16:25 | 只看該作者
感謝樓主分享
回復(fù)

使用道具 舉報(bào)

板凳
ID:356941 發(fā)表于 2019-4-13 23:16 | 只看該作者
perfect123 發(fā)表于 2019-3-14 20:56
擼主,我已經(jīng)完全調(diào)試好了你的代碼,你的代碼有一些小地方需要改動(dòng),并不能直接使用,否則各種報(bào)錯(cuò)。
本著 ...

能發(fā)給我看看嘛,我修改不出來(lái)
回復(fù)

使用道具 舉報(bào)

地板
ID:511114 發(fā)表于 2019-4-15 22:41 | 只看該作者
perfect123 發(fā)表于 2019-3-14 20:56
擼主,我已經(jīng)完全調(diào)試好了你的代碼,你的代碼有一些小地方需要改動(dòng),并不能直接使用,否則各種報(bào)錯(cuò)。
本著 ...

我也是寫不出來(lái),希望大佬發(fā)一下
回復(fù)

使用道具 舉報(bào)

5#
ID:541317 發(fā)表于 2019-5-18 12:59 | 只看該作者
應(yīng)該會(huì)有用吧
回復(fù)

使用道具 舉報(bào)

6#
ID:541949 發(fā)表于 2019-5-19 11:19 | 只看該作者
感謝樓主分享
回復(fù)

使用道具 舉報(bào)

7#
ID:34693 發(fā)表于 2019-8-14 14:13 | 只看該作者
這個(gè)程序好像是有點(diǎn)問(wèn)題
回復(fù)

使用道具 舉報(bào)

8#
ID:337808 發(fā)表于 2019-12-27 23:05 | 只看該作者
程序參考意義非凡,只需按照樓主的提示做,完全可以調(diào)試成功。
回復(fù)

使用道具 舉報(bào)

9#
ID:359588 發(fā)表于 2020-1-31 15:06 | 只看該作者
感謝樓主分享
回復(fù)

使用道具 舉報(bào)

10#
ID:359588 發(fā)表于 2020-1-31 15:07 | 只看該作者
我已經(jīng)完全調(diào)試好了你的代碼,你的代碼有一些小地方需要改動(dòng),并不能直接使用,否則各種報(bào)錯(cuò)。 本著這是你的代碼的緣由,我不便于發(fā)出修改版本,除非獲得
回復(fù)

使用道具 舉報(bào)

11#
ID:583853 發(fā)表于 2020-3-20 21:39 | 只看該作者
感謝樓主分享
回復(fù)

使用道具 舉報(bào)

12#
ID:728625 發(fā)表于 2020-4-14 11:20 | 只看該作者
感謝樓主分享
回復(fù)

使用道具 舉報(bào)

13#
ID:77840 發(fā)表于 2020-5-11 23:03 | 只看該作者
新人入坑,看不懂這里的訣竅:“unsigned int  uiKeyTimeCnt1=0; //按鍵去抖動(dòng)延時(shí)計(jì)數(shù)器
unsigned char ucKeyLock1=0; //按鍵觸發(fā)后自鎖的變量標(biāo)志
unsigned char displaycnt=0;
void keyscan()
{
    if(key==1)//IO是高電平,說(shuō)明按鍵沒(méi)有被按下,這時(shí)要及時(shí)清零一些標(biāo)志位
    {
        ucKeyLock1=0; //按鍵自鎖標(biāo)志清零
        uiKeyTimeCnt1=0;//按鍵去抖動(dòng)延時(shí)計(jì)數(shù)器清零,此行非常巧妙,是我實(shí)戰(zhàn)中摸索出來(lái)的!痹谏昝髯兞康臅r(shí)候已經(jīng)賦值了,為何還要在后面重新賦值?
回復(fù)

使用道具 舉報(bào)

14#
ID:277976 發(fā)表于 2020-5-18 08:59 | 只看該作者
面具下的狼性 發(fā)表于 2020-5-11 23:03
新人入坑,看不懂這里的訣竅:“unsigned int  uiKeyTimeCnt1=0; //按鍵去抖動(dòng)延時(shí)計(jì)數(shù)器
unsigned char u ...

按鍵松開計(jì)時(shí)清零標(biāo)記位和按鍵去抖計(jì)數(shù)器
回復(fù)

使用道具 舉報(bào)

15#
ID:832082 發(fā)表于 2020-10-22 15:23 | 只看該作者
下載了,試試看
回復(fù)

使用道具 舉報(bào)

16#
ID:846569 發(fā)表于 2020-11-22 22:59 | 只看該作者
感謝大佬,借用SHT30.c的代碼正常運(yùn)行,調(diào)試了3 4天終于有結(jié)果了,萬(wàn)分感謝
回復(fù)

使用道具 舉報(bào)

17#
ID:367948 發(fā)表于 2021-2-4 19:04 | 只看該作者
謝謝樓主分享程序,想做一個(gè)SHT30的溫濕度測(cè)量。
回復(fù)

使用道具 舉報(bào)

18#
ID:854496 發(fā)表于 2022-4-19 13:14 | 只看該作者
正好最近搞溫濕度,希望可以用上
回復(fù)

使用道具 舉報(bào)

19#
ID:58591 發(fā)表于 2022-8-25 23:33 | 只看該作者
非常Nice,感謝分享!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表