那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于51單片機(jī)+SHT30設(shè)計(jì)的環(huán)境溫度與濕度檢測(cè)設(shè)備(IIC模擬時(shí)序)

DS小龍哥-嵌入式技術(shù) ? 來源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2023-06-19 09:02 ? 次閱讀

一、項(xiàng)目介紹

當(dāng)前文章介紹基于51單片機(jī)和SHT30傳感器設(shè)計(jì)的環(huán)境溫度與濕度檢測(cè)設(shè)備。設(shè)備采用IIC模擬時(shí)序通信協(xié)議,能夠?qū)崟r(shí)監(jiān)測(cè)環(huán)境的溫度和濕度,并將數(shù)據(jù)通過LCD顯示屏顯示出來;可以廣泛應(yīng)用于室內(nèi)環(huán)境監(jiān)測(cè)、氣象觀測(cè)、農(nóng)業(yè)溫室監(jiān)測(cè)等領(lǐng)域。

在本項(xiàng)目中,使用了51單片機(jī)作為主控芯片,SHT30傳感器作為溫濕度傳感器,LCD顯示屏作為數(shù)據(jù)顯示模塊。通過51單片機(jī)的GPIO口模擬IIC通信協(xié)議,實(shí)現(xiàn)了與SHT30傳感器的數(shù)據(jù)通信。

image-20230618123229983

二、硬件設(shè)計(jì)

2.1 硬件構(gòu)成

本次設(shè)計(jì)所需的硬件主要包括以下部分:

2.2 硬件接口信號(hào)

本次設(shè)計(jì)使用51單片機(jī)通過IIC總線與SHT30傳感器進(jìn)行通信,同時(shí)使用串口與上位機(jī)進(jìn)行數(shù)據(jù)傳輸,并使用液晶顯示屏顯示當(dāng)前溫濕度值。

具體接口和信號(hào)定義如下:

(1) 51單片機(jī)與SHT30傳感器之間的IIC接口:

端口 功能 說明
P2.0 SDA 數(shù)據(jù)線
P2.1 SCL 時(shí)鐘
P2.2 RESET 復(fù)位線

(2) 51單片機(jī)與串口通信模塊之間的接口:

端口 功能 說明
P3.0 TXD 發(fā)送線
P3.1 RXD 接收線
P3.2 GND 地線

(3) 51單片機(jī)與液晶屏之間的接口:

端口 功能 說明
P1.0-P1.7 DB0-DB7 數(shù)據(jù)線
P0.0 RS 指令/數(shù)據(jù)選擇線
P0.1 RW 讀/寫選擇線
P0.2 E 使能線
P0.3 CS 片選線
VCC 電源正極 5V
GND 電源地

三、軟件設(shè)計(jì)

3.1 SHT30傳感器代碼

下面代碼讀取SHT30傳感器的值并通過串口打印。

#include < REG52.h >
 #include < stdio.h >
 ?
 #define uchar unsigned char
 #define uint unsigned int
 ?
 sbit SDA=P2^0;
 sbit SCL=P2^1;
 ?
 void delay(int n)
 {
     int i;
     while(n--)
     {
         for(i=0; i< 120; i++);
     }
 }
 ?
 void start()
 {
     SDA = 1;
     _nop_();
     SCL = 1;
     _nop_();
     SDA = 0;
     _nop_();
     SCL = 0;
     _nop_();
 }
 ?
 void stop()
 {
     SDA = 0;
     _nop_();
     SCL = 1;
     _nop_();
     SDA = 1;
     _nop_();
 }
 ?
 void ack()
 {
     SDA = 0;
     _nop_();
     SCL = 1;
     _nop_();
     SCL = 0;
     _nop_();
     SDA = 1;
     _nop_();
 }
 ?
 void nack()
 {
     SDA = 1;
     _nop_();
     SCL = 1;
     _nop_();
     SCL = 0;
     _nop_();
 }
 ?
 void write_byte(uchar dat)
 {
     uchar i;
     for(i=0; i< 8; i++)
     {
         SDA = dat & 0x80;
         _nop_();
         SCL = 1;
         _nop_();
         SCL = 0;
         _nop_();
         dat < <= 1;
     }
     ack();
 }
 ?
 uchar read_byte()
 {
     uchar i, dat;
     for(i=0; i< 8; i++)
     {
         dat < <= 1;
         SCL = 1;
         _nop_();
         dat |= SDA;
         SCL = 0;
         _nop_();
     }
     return dat;
 }
 ?
 void init_sht30()
 {
     start();
     write_byte(0x80);
     if(read_byte() != 0x5A)
     {
         stop();
         return;
     }
     write_byte(0xBE);
     if(read_byte() != 0x08 || read_byte() != 0x00)
     {
         stop();
         return;
     }
     stop();
 }
 ?
 float measure_temp(void)
 {
     uchar temp_h, temp_l, crc;
     float temp;
 ?
     start();
     write_byte(0x80);  // 主機(jī)發(fā)送寫地址
     write_byte(0x2C);  // 選擇開始溫度測(cè)量命令
     write_byte(0x06);
     stop();
 ?
     delay(15);    // 延時(shí)等待溫度測(cè)量完成
 ?
     start();
     write_byte(0x81);  // 主機(jī)發(fā)送讀地址
     temp_h=read_byte();  
     ack();
     temp_l=read_byte(); 
     ack();
     crc=read_byte();
     stop();
 ?
     temp = ((temp_h< 8)+temp_l)*175.0/0xffff - 45.0; // 溫度值轉(zhuǎn)換公式
 ?
     return temp;
 }
 ?
 float measure_humi(void)
 {
     uchar humi_h, humi_l, crc;
     float humi;
 ?
     start();
     write_byte(0x80);  // 主機(jī)發(fā)送寫地址
     write_byte(0x2C);  // 選擇開始濕度測(cè)量命令
     write_byte(0x06);
     stop();
 ?
     delay(15);    // 延時(shí)等待濕度測(cè)量完成
 ?
     start();
     write_byte(0x81);  // 主機(jī)發(fā)送讀地址
     humi_h=read_byte();  
     ack();
     humi_l=read_byte(); 
     ack();
     crc=read_byte();
     stop();
 ?
     humi = ((humi_h< 8)+humi_l)*100.0/0xffff; // 濕度值轉(zhuǎn)換公式
 ?
     return humi;
 }
 ?
 void main()
 {   
     float temp, humi;
 ?
     init_sht30();   // SHT30 初始化
 ?
     TMOD=0x20;      // 定時(shí)器0工作方式2,8位定時(shí)器,用于波特率設(shè)置
     TH1=0xfd;       // 波特率9600
     TL1=0xfd;
     TR1=1;          // 啟動(dòng)定時(shí)器0
 ?
     SCON=0x50;      // 設(shè)置串口工作方式1,允許接收,允許接收中斷
     ES=1;           // 允許串口中斷
 ?
     while(1)
     {
         temp = measure_temp();
         humi = measure_humi();
         printf("Temperature: %.1fC, Humidity: %.1f%\\n", temp, humi);
         delay(500); // 間隔時(shí)間500ms
     }
 }
 ?
 void ser() interrupt 4 using 2
 {
     if(RI)          // 接收到數(shù)據(jù)
     {
         RI=0;       // 清除標(biāo)志位
     }
     if(TI)          // 發(fā)送完畢
     {
         TI=0;       // 清除標(biāo)志位
     }
 }

在上面的代碼中,定義了兩個(gè)函數(shù) measure_tempmeasure_humi,分別用于測(cè)量溫度和濕度值,并返回結(jié)果。在主函數(shù)中,利用這兩個(gè)函數(shù)得到當(dāng)前的溫濕度值,然后通過串口打印出來。

3.2 LCD1602顯示屏代碼

下面代碼是LCD1602驅(qū)動(dòng)代碼,完成數(shù)字字符顯示。

#include < REG52.h >
 ?
 #define LCD1602_DB P0
 sbit  RS = P2^5;
 sbit  RW = P2^6;
 sbit  E  = P2^7;
 ?
 void delay(int n)
 {
     int i;
     while(n--)
     {
         for(i=0; i< 120; i++);
     }
 }
 ?
 void main()
 {   
     //LCD 初始化
     delay(1000);
     LCD1602_DB = 0x38;
     E = 1;
     delay(5);
     E = 0;
 ?
     delay(500);
     LCD1602_DB = 0x08;
     E = 1;
     delay(5);
     E = 0;
 ?
     delay(500);
     LCD1602_DB = 0x01;
     E = 1;
     delay(5);
     E = 0;
 ?
     delay(500);
     LCD1602_DB = 0x06;
     E = 1;
     delay(5);
     E = 0;
 ?
     delay(500);
     LCD1602_DB = 0x0C;
     E = 1;
     delay(5);
     E = 0;
 ?
     while(1)
     {
         //向LCD中寫入數(shù)字12345
         RS = 0;  //選擇指令寄存器
 ?
         LCD1602_DB = 0x80;  //設(shè)置地址為第一行的第一個(gè)字符位置(0x80 + 0x00)
 ?
         E = 1;
         delay(5);
         E = 0;
 ?
         RS = 1;  //選擇數(shù)據(jù)寄存器
 ?
         LCD1602_DB = 0x31;  //寫入數(shù)字1
         E = 1;
         delay(5);
         E = 0;
 ?
         LCD1602_DB = 0x32;  //寫入數(shù)字2
         E = 1;
         delay(5);
         E = 0;
 ?
         LCD1602_DB = 0x33;  //寫入數(shù)字3
         E = 1;
         delay(5);
         E = 0;
 ?
         LCD1602_DB = 0x34;  //寫入數(shù)字4
         E = 1;
         delay(5);
         E = 0;
 ?
         LCD1602_DB = 0x35;  //寫入數(shù)字5
         E = 1;
         delay(5);
         E = 0;
 ?
         delay(500); //間隔時(shí)間為500ms
     }
 }

在上面的代碼中,定義了函數(shù) delay 用于延時(shí)等待,并且實(shí)現(xiàn)了LCD1602的初始化和寫入操作。在主函數(shù)中,執(zhí)行LCD1602的初始化操作,然后循環(huán)不斷向LCD中寫入數(shù)字12345,并且間隔時(shí)間為500ms。

3.3 完整代碼

#include< reg52.h >
 #include< intrins.h >
 ?
 #define uchar unsigned char
 #define uint unsigned int
 ?
 sbit SDA = P2^0;    //定義SDA引腳
 sbit SCL = P2^1;    //定義SCL引腳
 sbit CS = P0^3;     //定義液晶屏片選引腳
 sbit RW = P0^1;     //定義液晶屏讀/寫引腳
 sbit RS = P0^0;     //定義液晶屏指令/數(shù)據(jù)引腳
 sbit E = P0^2;      //定義液晶屏使能引腳
 ?
 void delay(int n)   //延時(shí)函數(shù),n為延時(shí)時(shí)間
 {
     int i;
     while(n--)
     {
         for(i=0; i< 120; i++);
     }
 }
 ?
 void start()        //開始信號(hào)
 {
     SDA = 1;        //數(shù)據(jù)線高電平
     _nop_();
     SCL = 1;        //時(shí)鐘線高電平
     _nop_();
     SDA = 0;        //數(shù)據(jù)線低電平
     _nop_();
     SCL = 0;        //時(shí)鐘線低電平
     _nop_();
 }
 ?
 void stop()         //結(jié)束信號(hào)
 {
     SDA = 0;        //數(shù)據(jù)線低電平
     _nop_();
     SCL = 1;        //時(shí)鐘線高電平
     _nop_();
     SDA = 1;        //數(shù)據(jù)線高電平
     _nop_();
 }
 ?
 void ack()          //應(yīng)答信號(hào)
 {
     SDA = 0;        //數(shù)據(jù)線低電平
     _nop_();
     SCL = 1;        //時(shí)鐘線高電平
     _nop_();
     SCL = 0;        //時(shí)鐘線低電平
     _nop_();
     SDA = 1;        //數(shù)據(jù)線高電平
     _nop_();
 }
 ?
 void nack()         //非應(yīng)答信號(hào)
 {
     SDA = 1;        //數(shù)據(jù)線高電平
     _nop_();
     SCL = 1;        //時(shí)鐘線高電平
     _nop_();
     SCL = 0;        //時(shí)鐘線低電平
     _nop_();
 }
 ?
 void write_byte(uchar dat)  //寫一個(gè)字節(jié)
 {
     uchar i;
     for(i=0; i< 8; i++)
     {
         SDA = dat & 0x80;
         _nop_();
         SCL = 1;
         _nop_();
         SCL = 0;
         _nop_();
         dat < <= 1;
     }
     ack();
 }
 ?
 uchar read_byte()   //讀一個(gè)字節(jié)
 {
     uchar i, dat;
     for(i=0; i< 8; i++)
     {
         dat < <= 1;
         SCL = 1;
         _nop_();
         dat |= SDA;
         SCL = 0;
         _nop_();
     }
     return dat;
 }
 ?
 void init_sht30()   //SHT30初始化
 {
     start();
     write_byte(0x80);
     if(read_byte() != 0x5A)
     {
         stop();
         return;
     }
     write_byte(0xBE);
     if(read_byte() != 0x08 || read_byte() != 0x00)
     {
         stop();
         return;
     }
     stop();
 }
 ?
 void measure()          //測(cè)量溫濕度值
 {
     float humi, temp;
     uint i;
     start();
     write_byte(0x80);
     read_byte();
     read_byte();
     read_byte();
     write_byte(0x2C);
     write_byte(0x06);
     for(i=0; i< 40000; i++); //等待測(cè)量結(jié)果
     start();
     write_byte(0x80);
     read_byte();
     read_byte();
     read_byte();
     humi = read_byte() * 256;
     humi += read_byte();
     temp = read_byte() * 256;
     temp += read_byte();
     stop();
     temp = -45 + (175*temp)/65535;  //轉(zhuǎn)化溫度
     humi = 100 * humi / 65535;      //轉(zhuǎn)化濕度
     //將溫濕度值通過串口發(fā)送
     printf("Temperature: %.1fC\\n", temp);
     printf("Humidity: %.1f%%RH\\n", humi);
 }
 ?
 void init_lcd()         //液晶屏初始化
 {
     RW = 0;
     RS = 0;
     E = 0;
     delay(15);
     write_byte(0x30);
     delay(15);
     write_byte(0x30);
     delay(5);
     write_byte(0x30);
     delay(5);
     write_byte(0x38);
     write_byte(0x08);
     write_byte(0x01);
     write_byte(0x06);
     write_byte(0x0c);
 }
 ?
 void display(float temp, float humi)    //顯示溫濕度值
 {
     uchar i;
     uchar temp_str[5];
     uchar humi_str[5];
     //轉(zhuǎn)化為字符串
     sprintf(temp_str, "%.1f", temp);
     sprintf(humi_str, "%.1f", humi);
     //顯示溫度
     RS = 0;
     E = 1;
     P1 = 0x80;  //第一行第一個(gè)字符
     E = 0;
     RS = 1;
     for(i=0; i< 5; i++)
     {
         E = 1;
         P1 = temp_str[i];
         E = 0;
     }
     //顯示濕度
     RS = 0;
     E = 1;
     P1 = 0xc0;  //第二行第一個(gè)字符
     E = 0;
     RS = 1;
     for(i=0; i< 5; i++)
     {
         E = 1;
         P1 = humi_str[i];
         E = 0;
     }
 }
 ?
 void main()
 {
     init_sht30();   //SHT30初始化
     init_lcd();     //液晶屏初始化
     while(1)
     {
         measure();  //測(cè)量溫濕度值并通過串口發(fā)送
         delay(1000);
         display(temp, humi);    //顯示溫濕度值
     }
 }
 ?

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6043

    文章

    44621

    瀏覽量

    638624
  • 51單片機(jī)
    +關(guān)注

    關(guān)注

    274

    文章

    5705

    瀏覽量

    124311
  • IIC
    IIC
    +關(guān)注

    關(guān)注

    11

    文章

    302

    瀏覽量

    38513
  • 檢測(cè)設(shè)備
    +關(guān)注

    關(guān)注

    0

    文章

    639

    瀏覽量

    16897
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于STM32+SHT30設(shè)計(jì)的環(huán)境溫度濕度檢測(cè)系統(tǒng)(IIC模擬時(shí)序)

    當(dāng)前介紹基于STM32F103ZCT6芯片設(shè)計(jì)的環(huán)境溫度濕度檢測(cè)系統(tǒng)設(shè)計(jì)過程。當(dāng)前系統(tǒng)通過SHT30濕度傳感器采集
    的頭像 發(fā)表于 06-20 09:16 ?2127次閱讀
    基于STM32+<b class='flag-5'>SHT30</b>設(shè)計(jì)的<b class='flag-5'>環(huán)境溫度</b>與<b class='flag-5'>濕度</b><b class='flag-5'>檢測(cè)</b>系統(tǒng)(<b class='flag-5'>IIC</b><b class='flag-5'>模擬</b><b class='flag-5'>時(shí)序</b>)

    SHT30濕度傳感器的51程序

    SHT30濕度傳感器的51程序
    發(fā)表于 05-16 22:22

    STM32+SHT30(DS18B20)+0.96寸OLED(IIC)的溫度濕度顯示程序

    程序,顯示SHT30濕度模塊的溫濕度。OLED(IIC接口)屏幕的溫濕度顯示,串口數(shù)據(jù)輸出。為了作對(duì)比,我順便把DS18B20的
    發(fā)表于 03-16 10:31

    SHT30溫度傳感器使用記錄

    SHT30使用記錄(基于AVR)文章目錄SHT30使用記錄(基于AVR)硬件篇軟件篇硬件篇硬件按照數(shù)據(jù)手冊(cè)連接到單片機(jī)IIC接口或者任意兩個(gè)IO口即可,加2個(gè)4.7K左右上拉電阻,本
    發(fā)表于 07-13 08:35

    STM32F103是如何讀取SHT30濕度數(shù)據(jù)的

    1 準(zhǔn)備工作硬件設(shè)備:兩個(gè)激光測(cè)距SHT30模塊、六合一、USB-TTL、杜邦線、STM32F103C8T6單片機(jī)。給大家看下圖片。SHT30 STM32F103C8T62)軟件準(zhǔn)備
    發(fā)表于 08-11 07:01

    怎樣去使用基于AVR的SHT30濕度傳感器

    怎樣去使用基于AVR的SHT30濕度傳感器?SHT30濕度傳感器的軟硬件分別是由哪些部分構(gòu)成的?
    發(fā)表于 09-23 06:58

    SHT30濕度模塊怎么使用

    的STH30一般是用IIC(I2C)通信使用的,所以我們打開一個(gè)IIC通道,IIC默認(rèn)配置就可以了。4、因?yàn)槲覀冃枰匆娝男Ч鞘裁?,我開了一個(gè)串口,所有數(shù)據(jù)通過串口打印出來。5、然
    發(fā)表于 02-15 06:28

    怎樣通過單片機(jī)普通IO口去模擬IIC時(shí)序

    一、實(shí)驗(yàn)?zāi)康模和ㄟ^單片機(jī)普通IO口,模擬IIC時(shí)序,掌握IIC通訊協(xié)議。二、實(shí)驗(yàn)用到的主控芯片:STM32F103RCT6,
    發(fā)表于 02-17 06:30

    如何用51單片機(jī)實(shí)現(xiàn)IIC通信

    在之前的MCS-51系列單片機(jī)中內(nèi)部沒有IIC通信資源,所如果要想用51單片機(jī)實(shí)現(xiàn)IIC通信,就
    發(fā)表于 11-20 15:52 ?1.7w次閱讀
    如何用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>實(shí)現(xiàn)<b class='flag-5'>IIC</b>通信

    dfrobot SHT30模擬濕度傳感器簡(jiǎn)介

    SHT30高精度溫濕度測(cè)量,內(nèi)部自動(dòng)校準(zhǔn),線性模擬電壓輸出
    的頭像 發(fā)表于 01-07 10:45 ?1.7w次閱讀
    dfrobot <b class='flag-5'>SHT30</b><b class='flag-5'>模擬</b>溫<b class='flag-5'>濕度</b>傳感器簡(jiǎn)介

    使用51單片機(jī)實(shí)現(xiàn)SHT11溫濕度傳感器檢測(cè)的程序和電路圖

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)實(shí)現(xiàn)SHT11溫濕度傳感器檢測(cè)的程序和電路圖
    的頭像 發(fā)表于 01-31 12:10 ?1.7w次閱讀
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>實(shí)現(xiàn)<b class='flag-5'>SHT</b>11溫<b class='flag-5'>濕度</b>傳感器<b class='flag-5'>檢測(cè)</b>的程序和電路圖

    濕度傳感器SHT30參考代碼資料

    濕度傳感器SHT30參考代碼資料
    發(fā)表于 08-30 16:40 ?39次下載

    SHT30濕度傳感器使用記錄(AVR atmega128)

    SHT30使用記錄(基于AVR)文章目錄SHT30使用記錄(基于AVR)硬件篇軟件篇硬件篇硬件按照數(shù)據(jù)手冊(cè)連接到單片機(jī)IIC接口或者任意兩個(gè)IO口即可,加2個(gè)4.7K左右上拉電阻,本
    發(fā)表于 11-15 20:06 ?23次下載
    <b class='flag-5'>SHT30</b>溫<b class='flag-5'>濕度</b>傳感器使用記錄(AVR atmega128)

    SHT30濕度模塊使用

    的STH30一般是用IIC(I2C)通信使用的,所以我們打開一個(gè)IIC通道,IIC默認(rèn)配置就可以了。4、因?yàn)槲覀冃枰匆娝男Ч鞘裁?,我開了一個(gè)串口,所有數(shù)據(jù)通過串口打印出來。5、然
    發(fā)表于 12-16 16:53 ?72次下載
    <b class='flag-5'>SHT30</b>溫<b class='flag-5'>濕度</b>模塊使用

    STM32之IIC通訊-SHT30濕度采集

    一、實(shí)驗(yàn)?zāi)康模和ㄟ^單片機(jī)普通IO口,模擬IIC時(shí)序,掌握IIC通訊協(xié)議。二、實(shí)驗(yàn)用到的主控芯片:STM32F103RCT6,
    發(fā)表于 12-22 18:49 ?36次下載
    STM32之<b class='flag-5'>IIC</b>通訊-<b class='flag-5'>SHT30</b>溫<b class='flag-5'>濕度</b>采集
    申博娱乐城开户| 秦皇岛市| 大发888官方网| 百家乐赢钱打| 百家乐注册送免费金| 在线百家乐官网作| 迪威百家乐官网娱乐网| 大玩家百家乐官网现金网| 缅甸黄金赌场| 娱乐城送现金| 大发888怎么进不去| 免费百家乐计划| 网上百家乐哪家较安全| 百家乐电子路单下载| 百家乐现金网排名| 百家乐官网具体怎么收费的| 百家乐官网国际娱乐网| 百家乐官网电话投注多少| 真人百家乐官网是骗局| 张掖市| 99真人娱乐城| 利高| bet365网址主页| 大发888送58彩金| 大发888缺casino组件| 百家乐园天将| 百家乐丽| 新葡京百家乐的玩法技巧和规则| 百家乐网上玩法| 百家乐桌码合| 黄金城百家乐官网安卓版| 公海百家乐官网的玩法技巧和规则 | 达日县| 常德市| 太湖县| 乐亭县| 百家乐官网视频世界| 绥中县| 百家乐官网庄家提成| 百家乐官网隔一数打法| 百家乐官网园搏彩论坛|