首页
论坛
电子技术基础
模拟技术
可编程器件
嵌入式系统与MCU
工程师职场
最新帖子
问答
版主申请
每月抽奖
商城免费换礼
社区有奖活动
博客
下载
评测
视频
文库
芯语
资源
2024国际航空电子大会
2024国际 AIoT 生态发展大会
3D IC 设计和Chiplet资料下载
车载总线测试和解码方案
新能源汽车三电测试技术中心
在线研讨会
EE直播间
小测验
白皮书
行业及技术活动
杂志免费订阅
免费在线工具
厂商资源中心
论坛
博文
电子工程专辑
电子技术设计
国际电子商情
资料
白皮书
研讨会
芯语
文库
登录|注册
登录
最新发表
推荐阅读
明星博主
原创博文
年度排行
博文排行
博文评论
FPGA/CPLD
MCU/ 嵌入式
模拟
电源/新能源
测试测量
通信
智能手机
处理器与DSP
PCB
汽车电子
消费电子
智能硬件
物联网
软件与OS
采购与分销
供应链管理
工程师职场
EDA/ IP/ 设计与制造
无人机
机器人/ AI
医疗电子
工业电子
管理
写博文
jizzll_617398179
修改
文章:
900
阅读:
2690747
评论:
393
赞:
4674
好友
私信
个人主页
文章
900
原创
0
阅读
2690747
评论
393
赞
4674
原创
18B20+1602+字符移动
2008-3-28 18:15
2388
7
10
分类:
MCU/ 嵌入式
根据网友的程序改编
18B20+液晶显示+字符移动(EDN51验证
呵呵,大家再优化哈吧,
写原创有奖励!2024面包板原创奖励正在进行中
点赞(
7
)
收藏
分享到:
上一篇:
简单的被动式红外线报警器
下一篇:
18B20+1602+字符
IIC Shenzhen - 2024国际集成电路展览会暨研讨会(深圳,11.5-6)
2024 AI& Connect 是德创新技术峰会(深圳,10.22)
第六届意法半导体工业峰会2024(深圳,10.29)
2024 Arm Tech Symposia 年度大会(上海/深圳,11月19/21日)
文章评论
(
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
阅读:
2690747
评论:
393
赞:
4674
好友
私信
个人主页
文章
900
原创
0
阅读
2690747
评论
393
赞
4674
最新评论
更多
写的好,学习参考,很实用,拆的很细,老物件,电子产品
开发工匠 ...
评论博文
2024-12-12
不得不拆解修理台式组合音响
图片失效了呢
OPTIMIST
评论博文
2024-12-10
美的风扇灯拆解:如何实现极致高效的稳定输 ...
期待续更
Jun2024
评论博文
2024-12-10
比较器检测模拟脉冲说明(四) ...
最新
博文
康谋方案 | 多源相机数据采集与算法集 ...
PCBA打样需要哪些准备?
实施TPM过程中如何进行设备的全面清查 ...
资料下载
本周热帖
[14章附电子书]Springboot+ChatGLM 实 ...
24LC02芯片手册以及注意事项 ...
《高等代数自学教程》(下册,贺昌亭 ...
11-19学习笔记
SATA specification
【2024年末活动】工程师写总结,送示 ...
【STM32F103C8T6教程】(七)串口通信 ...
ESD保护二极管的四大特点丨浪拓 ...
【富芮坤 FR3068x-C低功耗开发板】-01 ...
什么是半导体芯片的失效切片分析? ...
最新资讯
芯语最新
欧洲港口自动化战略:在AI浪潮中增强 ...
为什么说机器人的“ChatGPT时刻”将至 ...
用4200A和矩阵开关搭建自动智能的可靠 ...
1961年的金色功率音频放大器,挑战当 ...
前11个月中国集成电路出口额,突破万 ...
芒果融创空间内容生产技术探索与实践 ...
Aigtek功率放大器应用:压电极化测试 ...
芯片女王苏姿丰当选《时代》2024年度C ...
爆雷!又一AI公司原地解散! ...
极越被曝拖延直播款36万元,极越或将 ...
EE直播间
更多
提升毫米波信号测试精度
直播时间: 12月18日 14:00
EE Talk主题专访系列直播-对话:释放 Wi-Fi 7 在高带宽应用中的技术潜力
直播时间: 12月19日 10:00
在线研讨会
更多
ADAS系统中采用的MEMS时钟
PLL基础知识及其在时钟系统中的应用
PIC16F13145单片机可配置逻辑模块(CLB)概览
适用于安全连接的新一代PIC32CK SG/GC系列单片机
热门
推荐
精密双向电流感应放大器设计方案
【有奖直播】提升毫米波信号测试精度
【有奖直播】
深入学习Microchip时钟和全新单片机方案
我要评论
3
7
分享到微信
分享到微博
分享到QQ
点击右上角,分享到朋友圈
我知道啦
请使用浏览器分享功能
我知道啦
关闭
站长推荐
/2
面包板社区有奖活动汇总楼
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