开课城市 开课中心

嵌入式培训
美国上市嵌入式培训机构

400-111-8989

嵌入式培训

我来分享51单片机的DIY历程,你来回答我软件、硬件方向的问题!

  • 发布:一叶倾城wwq
  • 来源:嵌入式ARM
  • 时间:2018-07-16 16:50

关键词:嵌入式培训 DIY51单片机 嵌入式发展方向

本文是一位嵌入式新手写的自己DIY51单片机的历程,算是“抛砖引玉”吧,对嵌入式仍然抱有热情,但是却迷失在岔路口,希望走过这条路的各位前辈能够给予良好的建议,来了解一下吧:

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

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

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

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

嵌入式培训 DIY51单片机 嵌入式发展方向

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

嵌入式培训 DIY51单片机 嵌入式发展方向
嵌入式培训 DIY51单片机 嵌入式发展方向

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

51计算器PCB:

嵌入式培训 DIY51单片机 嵌入式发展方向
嵌入式培训 DIY51单片机 嵌入式发展方向

这是前段时间做的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;

}

}
嵌入式培训 DIY51单片机 嵌入式发展方向
嵌入式培训 DIY51单片机 嵌入式发展方向
嵌入式培训 DIY51单片机 嵌入式发展方向
嵌入式培训 DIY51单片机 嵌入式发展方向

12864显示诗词并通信控制

这就是我的DIY历程,

嵌入式培训 DIY51单片机 嵌入式发展方向

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

嵌入式培训 DIY51单片机 嵌入式发展方向

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

感谢您的阅读,阅读完了本文主人公的51单片机DIY历程,您有什么好的建议给他吗?在嵌入式中,嵌入式软件相对嵌入式硬件来说要容易一些,可以看一下《嵌入式大佬分享嵌入式怎么学》《如何从单片机开发过度到嵌入式开发》《5年嵌入式软件工程师的小建议》等文章,希望对你有所帮助。更多嵌入式相关的问题,欢迎你来达内嵌入式培训机构进行咨询。

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:入门嵌入式,你一定会问的几个问题!
下一篇:有人说做嵌入式没有前途了,这是真的吗?

有人说做嵌入式没有前途了,这是真的吗?

我来分享51单片机的DIY历程,你来回答我软件、硬件方向的问题!

入门嵌入式,你一定会问的几个问题!

零基础学习嵌入式难吗?零基础多长时间才能学会嵌入式?

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省