完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include #include #include"ds1624.h" #include"LCD.h" extern flag,h_tem,l_tem; void delay(void) { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); } void scl() { i_scl = 0; delay(); i_scl = 1; delay(); i_scl = 0; delay(); } void i_start() //I2C开始通信 { i_scl = 1; delay(); i_sda = 1; delay(); i_sda = 0; delay(); } void i_stop() //I2C结束通信 { i_scl = 1; delay(); i_sda = 0; delay(); i_sda = 1; delay(); } /* 向从机发送数据和应答信号 ** */ bit send_i_dat(uchar dat) { uchar date,i; date = dat; i_scl = 0; delay(); for(i = 0;i<8;i++) { if(date&0x80) i_sda = 1; else i_sda = 0; i_scl = 1; delay(); date = date<<1; i_scl = 0; delay(); } i_sda = 1; //释放总线 i_scl = 0; return ~i_ack(); //检测应答 } /*应答函数 sda为低表示应答 高为非应答 */ uchar i_ack() { bit ack; i_scl = 1; delay(); ack = i_sda; delay(); delay_1(1); i_scl = 0; delay(); return ack; } void send_ack(bit c) { //i_sda = 0; i_scl = 0; delay(); i_sda = c; delay(); i_scl = 1; delay(); } uchar i_receive(bit b) { uchar i,r_dat = 0,j; //接收的数据 i_sda = 1; delay(); i_scl = 1; delay(); for(i = 0;i<8;i++) { j = i_sda; _nop_(); _nop_(); r_dat = r_dat<<1; i_scl = 0; delay(); r_dat |= j; i_scl = 1; delay(); } i_sda =1; //释放总线 delay(); send_ack(b); //i_scl = 0; //delay(); return r_dat; } uchar start_temperature() { i_start(); if(send_i_dat(0x90)) { delay(); if(send_i_dat(0xee)) { delay(); i_stop(); return 1; } else { i_stop(); return 0; } } else { i_stop(); return 0; } } uchar read_temperature() { i_start(); if(send_i_dat(0x90)) { delay(); if(send_i_dat(0xaa)) { delay(); i_start(); if(send_i_dat(0x91)) { h_tem = i_receive(0); delay(); l_tem=i_receive(1); i_stop(); delay(); return(1); } } } else { i_stop(); delay(); return(0); } } 下面是我的主程序 i_scl = 0; i_stop(); while(1) { start_temperature(); delay(); if(flag == 1) //已经到达1s { flag = 0; read_temperature(); xs_ad(); dat_transform(); } } |
|
相关推荐
2个回答
|
|
|
|
|
|
问题是我堵回来的数据是错的 和那个芯片没关系。我就是不知道程序错在哪里 或者是说I2C的时序有错了
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
72 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
509 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
546 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
545 浏览 0 评论
1008 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11763 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 13:55 , Processed in 3.284315 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号