600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 共阳极数码时钟c语言程序 单片机C语言模块化编程之数码管显示实时时钟篇.doc...

共阳极数码时钟c语言程序 单片机C语言模块化编程之数码管显示实时时钟篇.doc...

时间:2021-04-05 21:30:55

相关推荐

共阳极数码时钟c语言程序 单片机C语言模块化编程之数码管显示实时时钟篇.doc...

模块化数码管显示实时温度DS18B20

单片机 AT89C51

温度芯片 DS18B20

数码管 共阳 7407驱动

采用模块化编程

/*delay.h*/

#ifndef _DELAY_H

#define _DELAY_H_

#define uint unsigned int

#define uchar unsigned char

void delay(uint xms); //秒级延时

void delayms(uint xms); //毫秒级延时,不可以更改,若更改,DS18B20将显示异常

#endif

/*delay.c*/

#include "delay.h"

void delay(uint xms)

{

uint i;

uchar j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}

void delayms(uint xms)

{

while(xms--);

}

/*ds18b20.h*/

#ifndef _DS18B20_H

#define _DS18B20_H

#include

#include "delay.h"

#include

#define NOP() {_nop_(),_nop_(),_nop_(),_nop_()}

sbit DQ=P3^2; //DS18B20控制线,单线模式。

extern bit ng; //正负数标志位,ng=0,为正数,反之为负数,正数负数的处理方法不同,

extern bit DS18B20_IS_OK;//为1时表示当前读取温度正常,否则读取失败。

extern uchar Display_Digit[4]; //读取的温度值转换后存在这个数组中

extern void Read_Temperature(); //读取当前温度值

extern void Process_Temperature(); //处理当前获得的温度值,正数,负数等。

#endif

/*ds18b20.c*/

#include "ds18b20.h"

//温度字符

uchar code Temperature_Char[8] = {0x0c,0x12,0x12,0x0c,0x00,0x00, 0x00,0x00};

//温度小数对照表

uchar code df_Table[] = {0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9 };

uchar CurrentT = 0 ; //当前读取的温度整数部分

uchar Temp_Value[] = {0x00,0x00}; //从DS18B20读取的温度值

bit ng=0;

bit DS18B20_IS_OK=1;

uchar Display_Digit[4]={0,0,0,0};

//-------------------------------------------------------

// 初始化DS18B20

//-------------------------------------------------------

uchar Init_DS18B20()

{

uchar status;

DQ = 1; delayms(8); DQ = 0 ; delayms(90); DQ = 1; delayms(8);

status = DQ; delayms(100);

DQ = 1;

return status;

}

//-------------------------------------------------------

//读一字节

//-------------------------------------------------------

uchar ReadOneByte()

{

uchar i, dat = 0;

DQ = 1; _nop_();

for (i = 0; i < 8; i++)

{

DQ = 0; dat >>= 1; DQ = 1; _nop_();_nop_();

if(DQ) dat |= 0x80;

delayms(30);

DQ = 1;

}

return dat;

}

//-------------------------------------------------------

// 写一字节

//--------------------------------

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。