首页
论坛
电子技术基础
模拟技术
可编程器件
嵌入式系统与MCU
工程师职场
最新帖子
问答
版主申请
每月抽奖
商城免费换礼
社区有奖活动
博客
下载
评测
视频
文库
芯语
资源
2024国际航空电子大会
2024国际 AIoT 生态发展大会
3D IC 设计和Chiplet资料下载
车载总线测试和解码方案
新能源汽车三电测试技术中心
在线研讨会
EE直播间
小测验
白皮书
行业及技术活动
杂志免费订阅
免费在线工具
厂商资源中心
论坛
博文
电子工程专辑
电子技术设计
国际电子商情
资料
白皮书
研讨会
芯语
文库
登录|注册
登录
最新发表
推荐阅读
明星博主
原创博文
年度排行
博文排行
博文评论
FPGA/CPLD
MCU/ 嵌入式
模拟
电源/新能源
测试测量
通信
智能手机
处理器与DSP
PCB
汽车电子
消费电子
智能硬件
物联网
软件与OS
采购与分销
供应链管理
工程师职场
EDA/ IP/ 设计与制造
无人机
机器人/ AI
医疗电子
工业电子
管理
写博文
jizzll_617398179
修改
文章:
900
阅读:
2711814
评论:
393
赞:
4691
好友
私信
个人主页
文章
900
原创
0
阅读
2711814
评论
393
赞
4691
原创
18B20+1602+字符移动
2008-3-28 18:15
2399
7
10
分类:
MCU/ 嵌入式
根据网友的程序改编
18B20+液晶显示+字符移动(EDN51验证
呵呵,大家再优化哈吧,
写原创有奖励!2024面包板原创奖励正在进行中
点赞(
7
)
收藏
分享到:
上一篇:
简单的被动式红外线报警器
下一篇:
18B20+1602+字符
PARTNER CONTENT
换一换>
更多>
概伦电子:以开放心态共绘EDA产业新蓝图
概伦电子
2024-12-30
SK海力士将在CES2025亮相‘全方位面向AI的存储器供应商’的新蓝图
SK海力士
2025-01-03
文章评论
(
3
条评论)
登录
后参与讨论
您需要登录后才可以评论
登录
|
立即注册
发布
用户1587891
2009-7-9 23:29
//我请问的程序出了什么问题,串口不出温度 #include
#define uchar unsigned char #define COM_TXD_BUFF_SIZE 50 #define COM_RXD_BUFF_SIZE 90 sbit TMDAT = P3^3; //根据实实际情况设定 sbit bb =P3^4; uchar TMP[4]; //读取后的4个温度值,将其除以2即可得出实际温度; uchar SN[4][8]; //4个器件的序列号,先读出单个序列号后填上才可以读取温度 uchar f[4]; //结果是否为负温,“0”为正温,“1”为负温。 ////////////////////////////////////////延时部分////////////////////////// void dmsec (unsigned int count) // { // unsigned int i; // while (count) // { // i = 115; // while (i>0) i--; // count--; // } // } // ////////////////////////////////////////////////////////////////////////// /////////////////////////////////////// 发送复位////////////////////////// void tmreset (void) // { // unsigned int i; // TMDAT = 0; // i = 103; // while (i>0) i--; // 延时 900 uS(11.0592Mhz时) // TMDAT = 1; // i = 4; // while (i>0) i--; // } // ////////////////////////////////////////////////////////////////////////// //判断DS1820是否存在的子程序。最好不要用,因为当器件不存在时将会进入死循环 ////////////////////////////////////// 等待存在脉冲/////////////////////// void tmpre (void) //判断器件是否存在 // { // unsigned int i; // while (TMDAT); // while (~TMDAT); // i = 4; while (i>0) i--; // } // ////////////////////////////////////////////////////////////////////////// ///////////////////////////////////// 读一位////////////////////////////// bit tmrbit (void) // { // unsigned int i; // bit dat; // TMDAT = 0; i++; // TMDAT = 1; i++; i++; //微量延时 // dat = TMDAT; // i = 8; while (i>0) i--; // 延时 // return (dat); // } // ////////////////////////////////////////////////////////////////////////// //////////////////////////////////////// 读一个字节/////////////////////// unsigned char tmrbyte (void) // { // unsigned char i,j,dat; // dat = 0; // for (i=1;i<=8;i++) // { // j = tmrbit (); // dat = (j << 7) | (dat >> 1); // } // return (dat); // } // ////////////////////////////////////////////////////////////////////////// /////////////////////////////////////// 写一个字节//////////////////////// void tmwbyte (unsigned char dat) // { // unsigned int i; // unsigned char j; // bit testb; // for (j=1;j<=8;j++) // { // testb = dat & 0x01; // dat = dat >> 1; // if (testb) // { // TMDAT = 0; // 写0 // i++; i++; // TMDAT = 1; // i = 8; while (i>0) i--; // } // else // { // TMDAT = 0; // 写0 // i = 8; while (i>0) i--; // TMDAT = 1; // i++; i++; // } // } // } // ////////////////////////////////////////////////////////////////////////// /////////////////////////////////发送ds1820 开始转换////////////////////// void tmstart (void) // { // tmreset (); //复位 // //tmpre (); //等待存在脉冲 // dmsec (1); //延时 // tmwbyte (0xcc); //跳过序列号命令,对所有器件有效 // tmwbyte (0x44); //发转换命令 44H, // } // ////////////////////////////////////////////////////////////////////////// //////////////////////////////////读取温度//////////////////////////////// void tmrtemp () // { // uchar i,j; // uchar a,b; // for(j=0;j<4;j++) // { // tmreset(); //复位 // dmsec(1); //延时 // tmwbyte(0x55); //发送ROM匹配命令 // for(i=0;i<8;i++) // { // tmwbyte(SN[j][i]); //发送64位序列号 // } // tmwbyte (0xbe); //发送读取命令 // a = tmrbyte (); //连续读取两位温度 // b = tmrbyte (); // f[j]=b; //若b为1则为负温 // if(f[j]) // { // TMP[j]=~a+1; //如果为负温则去除其补码 // } // else // { // TMP[j]=a; // } // } // } // ////////////////////////////////////////////////////////////////////////// //以下是读取器件序列号的子程序,需要读取序列时可在程序中调用; //调用时确保总线中只有一只器件,若有多个器件时则读取出来的号码无效; //将读取出来的序列号填到前面的数组中即可使用; //平时可以将此子程序删除以节约空间。 //////////////////////////读取器件序列号子程序//////////////////////////// void rom() // { // //以下是定义8个序列号变量 // uchar sn1; // uchar sn2; // uchar sn3; // uchar sn4; // uchar sn5; // uchar sn6; // uchar sn7; // uchar sn8; // // tmreset (); //复位 // dmsec (1); //延时 // tmwbyte(0x33); //发送读序列号子程序 // sn1=tmrbyte(); //读取第一个序列号,应为16H; // sn2=tmrbyte(); //读取第二个序列号,应为10H; // sn3=tmrbyte(); // sn4=tmrbyte(); // sn5=tmrbyte(); // sn6=tmrbyte(); // sn7=tmrbyte(); // sn8=tmrbyte(); // } // ////////////////////////////////////////////////////////////////////////// code uchar test[] ={0x1,0x2,0x3,0x4,0x5}; xdata uchar ComTxdBuf[COM_TXD_BUFF_SIZE ]; xdata uchar ComRxdBuf[COM_RXD_BUFF_SIZE ]; xdata unsigned char Frame[40]; xdata uchar TimeCount; xdata uchar ComTxdRead ; xdata uchar ComTxdWrite ; xdata uchar ComRxdRead ; xdata uchar ComRxdWrite; bit ComTxdBufempty ; bit Frame_End ; void ComPrintf(unsigned char lengh ,unsigned char * PData ); void Init_Device(); void Interrupts_Init(); void InitCom(unsigned char BaudRate); ////////////////////////////////////////////////////////////////////////// main() // { bb=0; Init_Device(); ComPrintf(5,&test[0]); // do{ // //rom(); //调用读序列号子程序 // tmstart(); // dmsec(100); //如果是不断地读取的话可以不延时 // tmrtemp(); //读取温度,执行完毕温度将存于TMP[]数组中// }while(1); // } // ////////////// //-------------------------------------------------------------------------- // com_int() interrupt 4 using 0 //-------------------------------------------------------------------------- void com_int() interrupt 4 using 0 { bit GetaFrame; unsigned char i,temp,tlength ; GetaFrame = 0; if( TI ) { //串口发送中断处理 TI=0; if(ComTxdRead!=ComTxdWrite)//发缓区有数据,继续发送数据 { SBUF=ComTxdBuf[ComTxdRead]; ComTxdRead++; if(ComTxdRead>=COM_TXD_BUFF_SIZE) ComTxdRead=0; if(ComTxdRead==ComTxdWrite) { ComTxdBufempty= 1; //ComSwithTxRx = 0; } } else { ComTxdBufempty=1; //ComSwithTxRx = 0; } } if (RI) { //串口接收中断处理 RI=0; temp=SBUF; ComRxdBuf[ComRxdWrite]=temp; if(temp == 0xd) { if(ComRxdWrite == 0) tlength = ComRxdBuf[COM_RXD_BUFF_SIZE-1]; else tlength = ComRxdBuf[ComRxdWrite-1]; if( tlength >= ComRxdWrite -1 ) { ComRxdRead = tlength -(ComRxdWrite -1); ComRxdRead = (COM_RXD_BUFF_SIZE -1)- ComRxdRead ; } else { ComRxdRead = ComRxdWrite-tlength-2; } if(ComRxdBuf[ ComRxdRead] == 0xa) GetaFrame = 1; } ComRxdWrite++; if(ComRxdWrite > COM_RXD_BUFF_SIZE-1) ComRxdWrite=0; if(GetaFrame) { Frame[0] = tlength ; for(i =0; i < tlength; i++) { ComRxdRead++; if(ComRxdRead>COM_RXD_BUFF_SIZE-1) ComRxdRead = 0; Frame[i+1] = ComRxdBuf[ComRxdRead]; } } } } void ComPrintf(unsigned char lengh ,unsigned char * PData ) //注:lengh要小于COM_TXD_BUFF_SIZE { unsigned char * Lpdata; unsigned char i,j; Lpdata = PData; j= lengh; for(i=0;i
=COM_TXD_BUFF_SIZE) ComTxdWrite=0; Lpdata++; } if (ComTxdBufempty==1) { TI = 1; } } void InitCom(unsigned char BaudRate) { unsigned char THTL; switch (BaudRate) { case 1: THTL = 64; break; //波特率300 case 2: THTL = 160; break; //600 case 3: THTL = 208; break; //1200 case 4: THTL = 232; break; //2400 case 5: THTL = 244; break; //4800 case 6: THTL = 250; break; //9600 case 7: THTL = 253; break; //19200 case 8: THTL = 255; break; //57600 default: THTL = 243;//晶振为12M,波特率4800. } SCON = 0x50; //串口方式1,允许接收 TMOD = 0x20; //定时器1定时方式2 TCON = 0x40; //设定时器1开始计数 TH1 = THTL; TL1 = THTL; PCON = 0x80; //波特率加倍控制,SMOD位 RI = 0; //清收发标志 TI = 0; TR1 = 1; //启动定时器 } void Interrupts_Init() { IE=0x90; } void Init_Device() { InitCom(9600); Interrupts_Init(); }
回复
jizzll_617398179
2008-3-28 21:36
是温度传感器
回复
用户789411
2008-3-28 20:41
18B20也是某种液晶型号吗
回复
查看更多评论
相关推荐阅读
jizzll_617398179
2010-02-08 10:53
正确理解A/D转换器的输入
http://www.freescale.com.cn/tech_ariticles/2005/1102_1.asp 许多嵌入式应用都会用到A/D转换器。然而,如果错误连接了A/D转换器输入端的电路,...
jizzll_617398179
2010-01-12 13:37
好久没来,都长草了
好久没来,都长草了,呵呵。整天忙得很,不过估计再过两个月会轻松点~\(≧▽≦)/~啦啦啦...
jizzll_617398179
2009-03-16 21:57
很奇怪,我收到站内信,但是却找不到发信人呢
发信人是个[],点击就跳到我自己的主页了。只好在这里给那位朋友留言了。 我不知道你说的哪篇文章,还有我也不知道你的EDN的ID。你可以在博客上面留言的。...
jizzll_617398179
2009-03-14 13:08
如何在EXCEL中使用16进制数
最近需要计算串口发送的数据,太多而且比较麻烦。知道EXECL功能强大,所以网上找了找,刚好,不错,很方便。网上找到的http://hi.bccn.net/space-99452-do-blog-id-...
jizzll_617398179
2009-03-05 14:37
〖常识〗不同晶振的最大波特率及其误差
最近犯了个错误,呵呵,晶振和波特率的问题,特查了记在这里,O(∩_∩)O~〖常识〗不同晶振的最大波特率及其误差http://www.aoxue.org/bbs/read.php?tid=65585不同...
jizzll_617398179
2009-02-11 14:30
大端模式和小端模式
转载http://www.cnblogs.com/TsuiLei/archive/2008/10/29/1322504.html大端格式:在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则...
jizzll_617398179
修改
文章:
900
阅读:
2711814
评论:
393
赞:
4691
好友
私信
个人主页
文章
900
原创
0
阅读
2711814
评论
393
赞
4691
最新评论
更多
您好!请问这个ali_mqtt_init()函数是在哪里的
821411084_6 ...
评论博文
2025-1-19
【CH32V307评估板】+mqtt连接阿里云 ...
写得不错!
luckyzy2000
评论博文
2025-1-17
为什么负我不负她,PCB上的光学点是如何出 ...
欢迎分享!加油2025!
面包板社区 ...
评论博文
2025-1-17
2025年计划
最新
博文
中国大模型,有了“压舱石” ...
深度自然匿名化VS隐私保护与视觉完整 ...
手机购新补贴实施方案发布 京东将率先 ...
资料下载
本周热帖
晶体管电路设计-铃木雅臣(上).pdf ...
基于51单片机的万能遥控器设计论文 ...
基于51单片机的酒精浓度检测仪设计论 ...
基于51单片机的简易计算器设计任务书 ...
基于51单片机的简易计算器设计开题报 ...
2025,我在深圳一家元器件贸易公司“ ...
串行LED灯的频闪现象分析
桥式变换电路
altium Designer19使用问题20250115 ...
无感电阻器详解
最新资讯
芯语最新
CES 2025:对话西门子 EDA 首席执行官 ...
特斯拉上海超级工厂暂停部分产线,以 ...
PCI Express Gen5:自动化多通道测 ...
为什么紫外线固化对于高质量电子产品 ...
美成熟制程芯片低价冲击中国市场,中 ...
2025年华为汽车产业链年度投资策略报 ...
复盘科技投资25年的风口
智能驾驶2024年度格局报告|量子位智 ...
Robotaxi2024年度格局报告|量子位智 ...
150亿造车新势力,宣布停运破产 ...
EE直播间
更多
Fabless100系列技术和应用直播 —实时控制、BMS:国产MCU迈向高性能应用
直播时间: 02月18日 10:00
高效协同与版本管理:Cliosoft助力现代芯片设计
直播时间: 02月26日 10:00
第三代功率半导体器件测试解决方案
直播时间: 03月06日 10:00
在线研讨会
更多
重塑机器人未来:揭秘创新芯片解决方案的颠覆力量
如何在隔离的状态监控系统中捕获同步数据
多路有光·精准不凡——KSW-SGM01模拟信号源发布会
迈来芯Triaxis® 3D磁传感器:汽车安全应用的优选方案
热门
推荐
如何提升高压系统的实时性能?
如何增强电动汽车的实时控制能力?
无损芯片检测技术——X-RAY检测,可观察芯片内部结构、判断芯片质量及真假
【有奖调研】泰克入门级示波器用户调研
我要评论
3
7
分享到微信
分享到微博
分享到QQ
点击右上角,分享到朋友圈
我知道啦
请使用浏览器分享功能
我知道啦
关闭
站长推荐
/3
工程师写总结,送示波器、稳压电源、螺丝刀!
分享你的:职业生涯中故事、2024年年终总结、工作中的小故事,丰富多样的礼品等你哦!
面包板社区有奖活动汇总楼
1. DIY赢大奖!2. 写原创,有奖励!3.参与话题,奖励E币!4. 免费申领:开发板试用、书籍试读...
电子工程师DIY来分享,赢大疆无人机、小米手机、NAS存储、万用表 ...
展示您的 DIY 电子设计作品,社区将有丰富奖励送给您!
首页
论坛
电子技术基础
模拟技术
可编程器件
嵌入式系统与MCU
工程师职场
最新帖子
问答
版主申请
每月抽奖
商城免费换礼
社区有奖活动
博客
下载
评测
视频
文库
芯语
资源
2024国际航空电子大会
2024国际 AIoT 生态发展大会
3D IC 设计和Chiplet资料下载
车载总线测试和解码方案
新能源汽车三电测试技术中心
在线研讨会
EE直播间
小测验
白皮书
行业及技术活动
杂志免费订阅
免费在线工具
厂商资源中心
帖子
博文
返回顶部
×
用户1587891 2009-7-9 23:29
jizzll_617398179 2008-3-28 21:36
用户789411 2008-3-28 20:41