#include"main.h"

char xdata temp_[3];   //

char xdata test[15];

bit        temp_flag;

void Delay_us(int i)   //iic延时

{

int j;

for(j=0;j

}

void IIC_init(void)    //iic初始化

{

SCL = 1;

Delay_us(5);

SDA = 1;

Delay_us(5);

}

void iic_start(void)         //iic通信起始信号

{

SDA = 1;

Delay_us(2);

SCL = 1;

Delay_us(2);

SDA = 0;

Delay_us(2);

}

void iic_stop(void)                 //iic通信终止信号

{

SDA = 0;

Delay_us(2);

SCL = 1;

Delay_us(2);

SDA =1;

}

void iic_ack(void)     //发送应答信号函数

{

SCL = 0;

SDA = 0;

Delay_us(2);

SCL = 1;

Delay_us(2);

SCL = 0;

Delay_us(1);

SDA = 1;

}

void read_ack(void)    //iic应答函数

{

SCL = 0;

Delay_us(2);

SDA = 1;

SCL = 1;

Delay_us(2);

SCL = 0;

}

void iic_nack()        //iic非应答函数

{

SDA = 1;

Delay_us(2);

SCL = 1;

Delay_us(2);

SCL = 0;

}

u8 get_byte(void)         //输入一个字节

{

u8 dd;

int i;

dd=0;

SDA = 1;

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

{

Delay_us(1);

SCL = 0;

Delay_us(5);

SCL = 1;

Delay_us(2);

dd<<=1;

if (SDA)

dd|=0x01;

Delay_us(1);

}

SCL = 0;

Delay_us(1);

return dd;

}

void out_byte(u8 dd)      //输出一个字节

{

u8 i;

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

{

SCL = 0;

Delay_us(0);

SDA = (dd & 0x80)>>7;

Delay_us(2);

SCL = 1;

Delay_us(3);

dd <<= 1;

}

SCL = 0;

}

//写入器件地址和所需读取寄存器的地址

void iic_write_addr(u8 addr,u8 data_addr)

{

iic_start();

out_byte(addr);

read_ack();

out_byte(data_addr);

read_ack();

}

//iic总线读取多个数据

void IICA_Read(u8 id, u8 addr, u8 *p, u16 len)

{

int i;

bit EA_SAVE = EA;

EA = 0;

iic_write_addr(id|0,addr);

iic_start();

out_byte(id|1);

read_ack();

for (i=0;i

{

*p++ = get_byte();

if (i!=(len-1))

iic_ack();

}

iic_nack();

iic_stop();

EA = EA_SAVE;

}

//读取并计算当前温度

void readTemperature()

{

u8 id=0x90;          //设备地址

u8 addr=0x00;        //温度寄存器地址

u32        temp_high;        //储存高字节

u8        temp_low;         //储存低字节

u8 temp[2]={0};

u8 a = 0;

IICA_Read(id,addr,temp,2);      //将温度的两个字节存到temp中

temp_high = temp[0];                                //温度高

temp_low = temp[1];                                //温度低

temp_high = (temp_high << 8) + temp_low;

temp_high = temp_high >> 5;

memset(test,0,sizeof(test));

if((temp_high & 0x0400) == 0x0400)

test[a++] = '-';

else

test[a++] = '+';

temp_high = temp_high * 125;

if(temp_high >= 25500)

temp_flag = 1;

if(temp_high >= 100000)

test[a++] = temp_high / 100000 % 10 + '0';

test[a++] = temp_high / 10000 % 10 + '0';

test[a++] = temp_high / 1000 % 10 + '0';

test[a++] = '.';

test[a++] = temp_high / 100 % 10 + '0';

test[a++] = temp_high % 100 / 10 + '0';

test[a++] = temp_high % 10 + '0';

test[a++] = 'C'; //℃

}

lm75b 读取温度 c语言,STC单片机读取LM75A温度的代码,以及ADC读取电压。给大家分享一下把...相关推荐

  1. 电视摇控器c语言程序,单片机红外电视遥控器C51程序代码

    原标题:单片机红外电视遥控器C51程序代码 //************************************************************** //名称:代码() /*- ...

  2. 通用编程c语言,STC单片机C语言通用万能编程.docx

    <8051单片机C语言编程模板> TOC \o "1-5" \h \z \o "Current Document" 毫秒级CPU延时函数 4 \o ...

  3. ymodem协议c语言,STC单片机ISP-Demo-使用Y-Modem协议源码与库函数分享

    #define MAIN_Fosc                22118400L        //定义主时钟 #define Baudrate0                115200UL  ...

  4. ADC0809检测报警c语言,51单片机ADC0809+AD590温度检测、报警程序

    #include "reg52.h"//头文件 #include "intrins.h" #define uchar unsigned char//宏定义 #d ...

  5. java 读取文件第一行代码,java文件读取。(单字节读取和按行读取读取)

    评论 # re: java文件读取.(单字节读取和按行读取读取) 2008-10-06 15:16 隔叶黄莺 再简单也比不过 groovy 的这一行代码 text = new File("f ...

  6. VSCode PlatformIO开发STC单片机注意事项

    VSCode PlatformIO开发STC单片机注意事项 首先需要注意代码的语法 附上本论坛一位网友总结的笔记 其实开源的SDCC+code blocks也不错的.SDCC语法与keil C有一点点 ...

  7. 单片机c语言中void key(void),STC单片机C语言通用万能编程模板

    <STC单片机C语言通用万能编程模板>由会员分享,可在线阅读,更多相关<STC单片机C语言通用万能编程模板(23页珍藏版)>请在人人文库网上搜索. 1.8051 单片机 C 语 ...

  8. stc单片机c语言 pdf,STC单片机C语言程序设计 第13章 STC单片机C语言指针.pdf

    STC单片机C语言指针 主讲:何宾 Email :hebin@mail.buct.edu.cn 2016.03 C51编译器中指针的分类 Cx51编译器支持使用字符"*"声明变量指 ...

  9. Keil用C语言定义函数,STC单片机Keil中C语言函数定位的方法

    STC单片机Keil中C语言函数定位的方法:STC单片机Keil中C语言函数定位的方法 下面以演示程序进行说明 演示程序中有ReadIAP.ProgramIAP和EraseIAP三个函数 最终目的是将 ...

  10. stc15系列c语言pwm编程,STC单片机C语言程序设计 第25章 STC单片机增强型PWM原理及实现.docx...

    STC单片机C语言程序设计 第25章 STC单片机增强型PWM原理及实现 STC单片机增强型PWM发生器原理及应用主 讲:何宾Email:hebin@mail.buct.edu.cn2016.03增强 ...

最新文章

  1. python模块--Beautifulsoup
  2. ASP.NET MVC Controller激活系统详解:默认实现
  3. c++Insertion Sort插入排序的实现算法(附完整源码)
  4. python 中cPickle学习二
  5. Train Problem II 卡特兰裸题(入门题)
  6. java面试 上传文件_字节跳动面试官,我也实现了大文件上传和断点续传
  7. 解决Scrapy-Redis爬取完毕之后继续空跑的问题
  8. python跟人工智能的关系_Python和人工智能的关系
  9. 【CCL 2019】参会小结与心得分享
  10. Ubuntu的版本号命名规则
  11. 计算机网络实验四协议分析心得,计算机网络学习心得体会范文
  12. lamp技术研发人员的必备
  13. 2019033期3d计算机开机号,3D历史120期开奖
  14. 第九十五章 SQL函数 MINUTE
  15. Matlab的parfor的使用条件
  16. 学生成绩分析报告数据分析可视化python实现源码seaborn、matplotlib
  17. SyntaxHighlighter代码高亮框架使用方法
  18. 如何一步开启容器时代?青云QingCloud有话要说
  19. 怎么样才能降低职称论文查重率?
  20. 手机软件管家 V0.12 申请手机证书、下载软件免签名自动安装

热门文章

  1. 首次揭秘!字节跳动基础架构技术迭代演进之路
  2. H5页面唤起指定app或跳转到应用市场
  3. linux内核下载 ok6410,手把手教你移植linux内核---------OK6410(一)
  4. 跨境电商机遇爆发,时下应该怎么“玩”?
  5. 医药电商平台解决方案
  6. 【剑桥英语I优加】剑桥pet相当于什么级别
  7. java获取某天时间的最小值和最大值 00:00:00 与 23:59:59
  8. 超级漂亮炫酷的HTML菜单栏导航栏+网站+独特二级列表
  9. 如何搭建WordPress个人博客网站?
  10. 小程序如何复用公众号资质快速认证