• 大小: 29KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-11
  • 语言: 其他
  • 标签:

资源简介

测试在STM8S103K3单片机上可以使用

资源截图

代码片段和文件信息

#include

#define uint unsigned int
#define uchar unsigned char

#define DATA_SET    PA_ODR_bit.ODR2 = 1
#define DATA_CLR    PA_ODR_bit.ODR2 = 0
#define DATA_GET    PA_IDR_bit.IDR2

uchar datatime = 0;                              //记录电平宽度
uchar datareg = 0;                               //存储八位数据
uchar datanum = 0;                               //获取当前数据情况,筛选出一字节数据
uchar dataall[3] = {0x00};                       //储存所有的数据
uchar outline;                                   //等待超时重来
uchar DHTFLAG = 0;                               //判断总线读取状态的标志位

//先配置时钟
void CLK_Config()
{
  CLK_CKDIVR = 0x00;
}


//IO口配置,PA2  data数据总线

//把PA口的其余管脚设置为高电平,防止误触发
/*
void GPIO_Config()
{
   PA_ODR_bit.ODR1 = 1;
   PA_DDR_bit.DDR1 = 1;
   PA_CR1_bit.C11  = 1;
   PA_CR2_bit.C21  = 1;
   
   PA_ODR_bit.ODR3 = 1;
   PA_DDR_bit.DDR3 = 1;
   PA_CR1_bit.C13  = 1;
   PA_CR2_bit.C23  = 1;
   
}
*/
//参考18B20设置输出输入两种IO模式     
void DATA_OUT()
{
   PA_DDR_bit.DDR2 = 1;                             //一开始是输出模式
   PA_CR1_bit.C12 = 1;                              //使用推挽输出模式  
   PA_CR2_bit.C22 = 0;                             
}


//输入模式 
void DATA_IN()                                     //中断上拉输入模式
{
   PA_DDR_bit.DDR2 = 0;
   PA_CR1_bit.C12 = 1;
   PA_CR2_bit.C22 = 1;
}
//外部中断的配置
void EXTI_PA()
{
   EXTI_CR1 = 0X02;                                //PD口对于外部中断下降沿触发
}



#pragma vector = 0x05                               //PA的中断向量位
__interrupt void GPIOA_IRQHandler()
{
   datatime = TIM4_CNTR;         //获取两次下降沿之间的数据宽度
   TIM4_CNTR = 0;                //清零,再次获取下一位
   datareg <<= 1;                //高位先出,左移操作
   if((datatime>75)&&(datatime<85))           //数据0  我就默认高位开始获取了
   datareg &= 0xfe;                        
   if((datatime>120)&&(datatime<130))         //数据1
   datareg |= 0x01;                       
   if(datanum == 7)
   dataall[0] = datareg;                        //获取第一个字节也就是湿度整数位
   if(datanum == 23)                            //获取第三个字节也就是温度整数位
   dataall[1] = datareg;
   if(datanum == 39)                            //获取第五个字节也就是校验(温度+湿度)位
   dataall[2] = datareg;
   datanum++;                                 //每次读取一位进1
   if(datanum >= 40)                          //数据接收完了结束
   datanum = 0;
   
}




//定时器设定 使用通用定时器2进行精确地微秒延时
void TIM2_Config()
{
   TIM2_PSCR = 0x00;                                //预分频器设定(该寄存器是四位寄存器)
   TIM2_ARRH = 0x00;                                //16000 表示为 0x0010 就是说在 16000000的频率下,1微秒就会溢出
   TIM2_ARRL = 0x10;
   
   TIM2_CNTRH = 0x00;                               //计数器清零
   TIM2_CNTRL = 0x00;
   TIM2_SR1   = 0x00;                               //清除所有标志位
}

//基于以上设定的延时函数  本程序采用了查询等待方式进行精确延时 不过也的确是完全占用了CPU的时间,也算是一种非常粗暴的延时方式
void TIM2_Delayus(uint xus)                          //范围 0~65535毫秒
{
   TIM2_CR1 = 0x81;                                  //打开ARPE自动预装载使能,使能计数器
   while(xus--)
   {
    while(!(TIM2_SR1&0X01));                

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3714  2016-11-20 12:13  DHT11改写学习\Debug\Exe\STM8_DHT11.hex

     文件      37732  2016-11-20 12:13  DHT11改写学习\Debug\Exe\STM8_DHT11.out

     文件      44671  2016-11-20 12:13  DHT11改写学习\Debug\Obj\main.o

     文件        150  2016-11-20 15:55  DHT11改写学习\Debug\Obj\STM8_DHT11.pbd

     文件      11013  2016-11-20 12:13  DHT11改写学习\main.c

     文件       1009  2016-11-20 15:55  DHT11改写学习\settings\STM8_DHT11.cspy.bat

     文件       5627  2016-11-20 16:28  DHT11改写学习\settings\STM8_DHT11.dbgdt

     文件        834  2016-11-20 16:28  DHT11改写学习\settings\STM8_DHT11.dni

     文件       3244  2016-11-20 16:28  DHT11改写学习\settings\STM8_DHT11.wsdt

     文件       2220  2016-11-20 16:28  DHT11改写学习\STM8_DHT11.dep

     文件      41763  2016-11-13 13:26  DHT11改写学习\STM8_DHT11.ewp

     文件        164  2016-11-13 13:26  DHT11改写学习\STM8_DHT11.eww

     目录          0  2016-11-20 12:13  DHT11改写学习\Debug\Exe

     目录          0  2016-11-13 12:35  DHT11改写学习\Debug\List

     目录          0  2016-11-20 16:28  DHT11改写学习\Debug\Obj

     目录          0  2016-11-13 12:35  DHT11改写学习\Debug

     目录          0  2016-11-13 16:21  DHT11改写学习\settings

     目录          0  2016-11-20 15:55  DHT11改写学习

----------- ---------  ---------- -----  ----

               152141                    18


评论

共有 条评论