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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM8S-Discovery DS18B20程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:83710 發(fā)表于 2015-6-25 02:33 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
/******** STM8S-Discovery DS18B20 Test ********
* 版本.........: 1.0
* 作者.........: 利棟
* 目標(biāo).........: STM8S105C6T6
* 文件名.......: main.c
* 開發(fā)環(huán)境.....: IAR for STM8 V1.1
* 創(chuàng)建時(shí)間.....: 2010.09.10
* 最后修改.....: 2010.09.10
***********************************************/

#include <iostm8s105c6.h>
#include <stdio.h>

#define BAUD_RATE     9600         //波特率
#define F_MASTER      16000000     //主頻率

#define DS18B20_DQ_OUT          PG_DDR_DDR0 = 1   //輸出
#define DS18B20_DQ_IN           PG_DDR_DDR0 = 0   //輸入
#define DS18B20_DQ_HIGH         PG_ODR_ODR0 = 1   //拉高
#define DS18B20_DQ_LOW          PG_ODR_ODR0 = 0   //拉低
#define DS18B20_DQ_PULL_UP      PG_CR1_C10  = 1   //上拉
#define DS18B20_DQ_FLOATING     PG_CR1_C10  = 0   //浮空
#define DS18B20_DQ_PUSH_PULL    PG_CR1_C10  = 1   //推挽
#define DS18B20_DQ_OPEN_DRAIN   PG_CR1_C10  = 0   //開漏
#define DS18B20_DQ_VALUE        PG_IDR_IDR0       //DQ值

//串口配置
//數(shù)據(jù)位:8
//停止位:1
//校驗(yàn)位:None
void UART_Init(void)
{
    UART2_CR2_TEN = 1;
    UART2_CR2_REN = 1;
    UART2_CR2_RIEN = 1;
    UART2_BRR2 = ((unsigned char)((F_MASTER / BAUD_RATE) & 0x0f)) + (((unsigned char)((F_MASTER / BAUD_RATE) >> 8)) & 0xf0);
    UART2_BRR1 = ((unsigned char)((F_MASTER / BAUD_RATE) >> 4));
}

void UART_TxByte(unsigned char _data)
{
    while (UART2_SR_TXE == 0);
    UART2_DR = _data;
}

int putchar(int c)
{
    UART_TxByte(c);
    return c;
}

void _delay_us(unsigned int i)
{
    i *= 3;
    while(--i);
}

void _delay_ms(unsigned int i)
{
    while(i--)
    {
        _delay_us(1000);
    }
}

void DS18B20_Init(void)
{
    DS18B20_DQ_OUT;   
    DS18B20_DQ_PUSH_PULL;   
    DS18B20_DQ_HIGH;   
    _delay_us(10);
    DS18B20_DQ_LOW;   
    _delay_us(600);     //復(fù)位脈沖
   
    DS18B20_DQ_IN;   
    DS18B20_DQ_PULL_UP;   
    _delay_us(100);     
    while(DS18B20_DQ_VALUE == 1);
    _delay_us(400);
}

void DS18B20_WriteByte(unsigned char _data)
{
    unsigned char i = 0;

    DS18B20_DQ_OUT;
    for (i = 0; i < 8; i++)
    {
        DS18B20_DQ_LOW;
        _delay_us(2);
        if (_data & 0x01)
        {
            DS18B20_DQ_HIGH;
        }
        _data >>= 1;
        _delay_us(60);
        DS18B20_DQ_HIGH;
    }
}

unsigned char DS18B20_ReadByte(void)
{
    unsigned char i = 0, _data = 0;

    for (i = 0; i < 8; i++)
    {
        DS18B20_DQ_OUT;
        DS18B20_DQ_LOW;
        _delay_us(5);
        _data >>= 1;
        DS18B20_DQ_HIGH;
        DS18B20_DQ_IN;
        if (DS18B20_DQ_VALUE)
        {
            _data |= 0x80;
        }
        DS18B20_DQ_OUT;
        DS18B20_DQ_HIGH;
        _delay_us(60);
    }

    return _data;
}

float DS18B20_ReadTemperature(void)
{
    unsigned char temp = 0;
    float t = 0;
   
    DS18B20_Init();
    DS18B20_WriteByte(0xcc);
    DS18B20_WriteByte(0x44);

    DS18B20_Init();
    DS18B20_WriteByte(0xcc);
    DS18B20_WriteByte(0xbe);

    temp = DS18B20_ReadByte();
    t = (((temp & 0xf0) >> 4) + (temp & 0x07) * 0.125);
    temp = DS18B20_ReadByte();
    t += ((temp & 0x0f) << 4);
   
    return t;
}

int main(void)
{  
    CLK_SWCR_SWEN = 1;
    CLK_SWR = 0xB4;    //HSE selected as master clock source
   
    UART_Init();
    printf("********* STM8S-Discovery DS18B20 Test *********\r\n");
    printf("Build: %s  %s\r\n", __DATE__, __TIME__);
   
    asm("rim");
   
    while(1)
    {
        _delay_ms(1000);
        printf("%.3f ", DS18B20_ReadTemperature());
    }
}

#pragma vector = UART2_R_RXNE_vector
__interrupt void UART2_IRQHandler(void)
{
    if (UART2_SR_RXNE == 1)
    {
        UART_TxByte(UART2_DR);
    }
}

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

使用道具 舉報(bào)

沙發(fā)
ID:113236 發(fā)表于 2016-4-20 20:48 | 只看該作者
好東西,值得學(xué)習(xí)。
回復(fù)

使用道具 舉報(bào)

板凳
ID:215455 發(fā)表于 2017-6-28 14:24 | 只看該作者
網(wǎng)上找了很多,就這個(gè)靠譜
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩高清一区 | 一区二区三区国产精品 | 国产美女黄色片 | 久久一区二区三区四区 | 国产成人aⅴ | 中文字幕一区二区三区精彩视频 | 欧美又大粗又爽又黄大片视频 | 国产一区二区精品在线观看 | 国产欧美一区二区在线观看 | 国产精品久久久久久久久免费桃花 | 国产一区 | www日韩 | 午夜资源 | 伊人色综合久久天天五月婷 | 狠狠插天天干 | 中文字幕精品一区二区三区精品 | 日韩欧美在线视频 | 91精品在线播放 | 成人免费精品视频 | 久久国产精品免费一区二区三区 | 欧美综合在线视频 | 无码一区二区三区视频 | 婷婷色国产偷v国产偷v小说 | 成人一区二区三区 | 美女在线视频一区二区三区 | 中文字幕亚洲区一区二 | 中文字幕亚洲一区二区三区 | 日韩第1页 | 91精品国产一区二区三区香蕉 | 视频第一区 | 国外激情av | 日日操操操| 日本精品一区二区 | 福利一区在线观看 | 九九热免费观看 | 久久久久久久久久久久久九 | 综合国产 | 91xxx在线观看 | 中国免费黄色片 | 欧美亚洲一区二区三区 | 婷婷综合色 |