0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一个ds18b20采集和64位光刻ROM读出的小东西

GReq_mcu168 来源:未知 作者:李倩 2018-08-29 10:32 次阅读

写这个帖子其实还是自己对后面的职业规划不清晰,所以想来各位前辈交流和请教(各位前辈之前都是怎样渡过的?)另一方面是整理下自己做的东西,将自己做的东西放到二姨家(第一次),虽然都是些小玩意,之前算是自己学的51吧,我们学校居然还上的汇编(不是说汇编不好),虽然也跟着学了些,但从来老师布置的任务都是用C,现在就是汇编指令都快忘光了,能看点,但不会写。

实习做了一段时间电路板维修,然后就开始做MCU开发相关的工作,公司目前使用的是PIC系列的MCU。

写这个帖子的初衷是想和各位前辈交流下,想听听前辈们的经验或者历程(前辈们愿意说的话),对于学习51之后应该学什么做什么,在网上也看过点篇相关文章,就是AVR、PIC和STM32等(MCU)或者ARM(上操作系统),对此确实感到了些不知怎么做...

回忆下,这是原来第一次自己焊洞洞板时的拍的,是一个ds18b20采集和64位光刻ROM读出的小东西:

这是到现在做的最失败的作品,没有之一,用学校雕刻机雕的,也是雕刻水平和经验值还不够啊,本来想做个ADC转换和485通信的,结果就这样了:

后来决定还是从小做起,先不要搞得复杂了,先把温度采集做个PCB,要的是可行性和稳定性,于是也开始学习PCB画板布线,这时我还没有使用AD的,用的是DXP2004,之前学过点后面基本记不得了,基本也是现学现卖,好在没犯什么很严重的错误导致整块板子废掉那种,错误也有就是把USB电源网络标签放反了,导致割线,废话不多,上图:

51计算器PCB:

这是前段时间做的12864显示诗词可用按键控制和上位机发送命令控制,也是开始使用AD画图之后第一次用AD画板,可以先先介绍一下,液晶屏是用的带字库的,显示字符方便倒是方便,就是画图和反白有问题,为此我还在论坛上发帖问过呢,以后坚决不用,还是自己写字库好,就是我用的STC89C52撑不住啊,现在才4首诗只往里写了3首,程序存储空间和ROM已经放不下了;按键是抬起执行(显示滚动和开背光和蜂鸣器),所有任务都交给定时器来分配,不死循,但是有一个问题:开启串口接收中断后显示刷新时间被拉长了。上图吧,完整的代码就不放这儿了,太占地方,放个片段

/*********************************************

FunctionName: pomeDisplay

FunctionInfo: 诗词显示函数

Input: no

Output: no

注:如果想要整屏向下移动->改变行数(行++)DisplayWhere(gFlag.gKeyRow +1,gVerse1.firstVerse);

但这种做法不好;于是想了第二种方法->不改变行数 改变显示内容

就可以向上翻,把下面的也显示出来

**********************************************/

void pomeDisplay(void)

{

switch(gFlag.gKeyPage)

{

case 0: //第一页->诗名

{

DisplayWhere(1,gTitile.firstPoetry+16*gFlag.gKeyRow); //&a+16和a+16一样的效果

if(gFlag.gKeyRow <(TITLE_NUM-1)) //若是改变诗的首数需改变这个宏

{

DisplayWhere(2,gTitile.secondPoetry+16*gFlag.gKeyRow);

}

if(gFlag.gKeyRow <(TITLE_NUM-2))

{

DisplayWhere(3,gTitile.thirdPoetry+16*gFlag.gKeyRow);

}

if(gFlag.gKeyRow <(TITLE_NUM-3)) //向上翻显示时不加边界检查 不需要显示那行会显示垃圾内容

{ //也就是现在4首诗按下第二次下键后第四行便要为空移到上行

DisplayWhere(4,gTitile.fourthPoetry+16*gFlag.gKeyRow);

}

break;

}

case 1: //第二页->诗句

{

if(ZERO == gFlag.gTitleCnt) //第一首

{

DisplayWhere(1,gVerse1.firstVerse+16*gFlag.gKeyRow);

if(gFlag.gKeyRow <(TITLE_NUM-1))

{

DisplayWhere(2,gVerse1.secondVerse+16*gFlag.gKeyRow);

}

if(gFlag.gKeyRow <(TITLE_NUM-2))

{

DisplayWhere(3,gVerse1.thirdVerse+16*gFlag.gKeyRow);

}

if(gFlag.gKeyRow <(TITLE_NUM-3))

{

DisplayWhere(4,gVerse1.fourthVerse+16*gFlag.gKeyRow);

}

break;

}

if(ONE == gFlag.gTitleCnt) //第二首

{

DisplayWhere(1,gVerse2.firstVerse+16*gFlag.gKeyRow);

if(gFlag.gKeyRow <(TITLE_NUM-1))

{

DisplayWhere(2,gVerse2.secondVerse+16*gFlag.gKeyRow);

}

if(gFlag.gKeyRow <(TITLE_NUM-2))

{

DisplayWhere(3,gVerse2.thirdVerse+16*gFlag.gKeyRow);

}

if(gFlag.gKeyRow <(TITLE_NUM-3))

{

DisplayWhere(4,gVerse2.fourthVerse+16*gFlag.gKeyRow);

}

break;

}

if(TWO == gFlag.gTitleCnt) //第三首

{

DisplayWhere(1,gVerse3.firstVerse+16*gFlag.gKeyRow);

if(gFlag.gKeyRow <(TITLE_NUM-1))

{

DisplayWhere(2,gVerse3.secondVerse+16*gFlag.gKeyRow);

}

if(gFlag.gKeyRow <(TITLE_NUM-2))

{

DisplayWhere(3,gVerse3.thirdVerse+16*gFlag.gKeyRow);

}

if(gFlag.gKeyRow <(TITLE_NUM-3))

{

DisplayWhere(4,gVerse3.fourthVerse+16*gFlag.gKeyRow);

}

break;

}

}

default:break;

}

}

12864显示诗词并通信控制

这就是我的DIY历程,

这是原来还在学校时就一直想做的计算器,现在也干脆不在实验板上弄了,为了熟悉PCB布线也把它做成PCB吧,于是就有了下图:

以上就是我的51DIY历程,虽然现在在上班了,可是还在纠结是偏软件还是硬件....

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16011

    浏览量

    343533
  • DS18B20
    +关注

    关注

    10

    文章

    765

    浏览量

    80088

原文标题:一位新手嵌入式er分享51单片机DIY例程 ,纠结软件还是硬件...?

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    [原创]DS18B20智能温度控制器

    (CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现根总线上挂接多个
    发表于 02-22 13:45

    ds18b20温度传感器问题[急!!!]

    Wait_18B20();//等待程序,等待ds18b20应答bit Readbit_18B20(void);//读取bit的数据un
    发表于 11-29 13:16

    stm32 ds18b20驱动 转

    序列号。如果总线上存在多于的节点,则此指令不能使用。 2 )ROM匹配(指令码0X55H):此命令后跟64
    发表于 01-16 11:29

    如何实现在同一个IO口上接多个DS18B20,进行多点温度测量教程

    DS18B20光刻ROM是实现多点温度采集的前提,首先初始化
    发表于 05-12 20:24

    【众拳】基于STM8的DS18B20温度传感器实验

    56的循环冗余校验码。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现根总
    发表于 12-15 09:49

    DS18B20单线数字温度计详解

    循环冗余校验码发生器(6)配置寄存器第64激光ROMROM操作指令 每
    发表于 01-23 21:00

    多个DS18B20测温仿真

    请问大家DS18B20在Proteus中怎么设置ram seial number呢,仿真运行不起来 1602显示直错误猜测是两问题 是序列号设置不对(如图
    发表于 05-07 14:45

    如何实现在同一个IO口上接多个DS18B20,进行多点温度测量教程

    光刻ROM可以通过串口,打印到上位机上然后在上位机中可以看到这样的数据(看不清可以放大WORD来看)要知道64光刻
    发表于 09-23 20:05

    DS18B20多点测温方法探讨

    、功耗低、性能高、抗干扰能力强、使用简单等优点。其独特的单总线技术使用户可轻松地组建传感器网络,特别适合于构成多点温度测控系统。每个DS18B20 都有
    发表于 11-02 16:10

    基于Linux的温度传感器DS18B20驱动程序设计

    就被厂家通过光刻刻录好了64序列号。该序列号可以看作是DS18B20的地址序列码,用来区分每一个DS1
    发表于 11-14 15:24

    DS18B20简介

    1、DS18B20简介DS18B20本身就是温度传感器,只需要将DS18B20的数据引脚和单片机的
    发表于 11-22 07:21

    DS18B20的相关资料分享

    与主机通信,只需要根线就可以完成温度数据读取;DS18B20内置了64产品序列号,方便识别身份,在根线上可以挂接多个
    发表于 11-30 06:22

    18b20开始转换温度DS18B20 的典型温度读取过程

    目标:目标: DS18B20数字温度计(三)18b20开始转换温度DS18B20 的典型温度读取过程为:复位→发 SKIP ROM 命令(0XCC)→发开始转换命令( 0X44)→延时
    发表于 01-05 06:42

    使用DS18B20实现温度采集并在串口或液晶屏上显示

    /1的时序图:ROM命令总线上可以挂多个器件,通过不同的器件地址来访问不同的器件。同样, 1-Wire 总线也可以挂多个器件,但是它只有条线,如何区分不同的器件呢?在每个 DS18B20 内部都有
    发表于 01-05 08:06

    STM32获取DS18B2064光刻ROM读取程序下载

    STM32获取DS18B2064光刻ROM读取程序下载
    发表于 04-23 14:27 17次下载