24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1355  |  回复: 16
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

beinifaxian

金虫 (著名写手)

日易者

[交流] 【求助】我想学编程,该从哪里开始?

想学编程是因为觉得嵌入式开发很有前途,有点C语言基础,该学些什么?怎么才能学得更好呢?
     和网友聊天他建议我去学网络编程,我说我在看汇编语言学基础知识,他叫我别学了?汇编现在没用了吗?
     希望得到虫虫们的指点.
     邮箱:lwhua12#yahoo.com.cn

[ Last edited by weiwenjie on 2007-12-16 at 11:21 ]
回复此楼

» 猜你喜欢

贷帮,将爱心投资于勤奋!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sdlj8051

金虫 (著名写手)

继续

第二部分:软件知识
一、 汇编语言
二、 C51
该部分可以从市场上买到的N种开发板上学到,至于第一部分,需要人来带吧。


工程师在某个方面精深钻研,成为某一个特殊领域的专家,从一开始的养家糊口、慢慢小有收益、最后宝马豪宅,也是有的;这些电子工程师可能没有全面掌握这些知识,因为这些行业用不上,例如,液晶显示器,很多行业就不需要;但是,对于一个初学者,我认为,这个提纲是切合实际的,对于面向控制而言,已经基本够用了;对于初学者,全面地掌握这些知识是很有必要的,因为你不知道今后需要使用什么哪些知识,而这些知识, 80%以上你会在今后的工作中使用上,因为这是都是最基本的。熟练掌握这些知识和应用,根据不同的地区、行业和老板,月薪应该可以在3000元~5000元之间,甚至更高。  

其实,可能有些你用不上,但是知道了也没有坏处;所谓书到用时方很少,又有谓艺不压身。知识=月薪=年薪=金钱=香车宝马=…….. ,呵呵。  

为什么要掌握这些知识?  

实际上,电子工程师就是将一堆器件搭在一起,注入思想(程序),完成原来的这些器件分离时无法完成的功能,做成一个成品。所需要的技能越高、功能越复杂、成本越低、市场上对相应的东东的需求越大,就越成功。这就是电子工程师的自身的价值。从成本到产品售出,之间的差价就是企业的追求。作为企业的老板,是在市场上去寻找这样的应用;对电子工程师而言,是将老板提出的需求或者应用按照一定的构思原则(成本最低、可靠性最高、电路板最小、功能最强大等)在最短的时间内完成。最短的时间,跟电子工程师的熟练程度、工作效率和工作时间直接有关。这就是电子工程师的价值。  

将电子产品抽象成一个硬件的模型,大约有以下组成:  

1) 输入  
2) 处理核心  
3) 输出  

输入基本上有以下的可能:  

1) 键盘  
2) 串行接口(RS232/485/can bus/以太网/USB)  
3) 开关量(TTL,电流环路,干接点)  
4) 模拟量(4~20ma、 0~10ma、0~5V(平衡和非平衡信号))  

输出基本上有以下组成:  

1) 串行接口(RS232/485/can bus/以太网/USB)  
2) 开关量(TTL、电流环路、干接点、功率驱动)  
3) 模拟量(4~20ma, 0~10ma,0~5V(平衡和非平衡信号))  
4) LED显示:发光管、八字  
5) 液晶显示器  
6) 蜂鸣器  

处理核心主要有:  

1) 8位单片机,主要就是51系列  
2) 32位arm单片机,主要有atmel和三星系列  

51系列单片机现在看来,只能做一些简单的应用,说白了,这个芯片也就是做单一的一件事情,做多了,不如使用arm来做;还可以在arm上加一个操作系统,程序既可靠又容易编写。  

最近三星的arm受到追捧,价格便宜,以太网和USB的接口也有,周立功的开发系统也便宜,作为学习ARM的产品来说,应该是最好的;作为工业级的控制,是不是合适,在网友中有不同的看法和争议。本公司使用atmel ARM91系列开发的1个室外使用的产品,在北京室外使用,没有任何的通风和加热的措施,从去年的5月份到现在,运行情况良好。已经有个成功应用的案例。  

但对于初学者来说,应该从51着手,一方面,51还是入门级的芯片,作为初学者练手还是比较好的,可以将以上的概念走一遍;很多特殊的单片机也是在51的核的基础上增加了一些I/O和A/D、D/A;也为今后学习更高一级的单片机和ARM打下基础。再说了,哪个老板会将ARM级别的开发放在连51也没有学过的新手手中?  

在51上面去做复杂的并行扩展是没有必要的,比如,扩展I/O口和A/D、D/A等等,可以直接买带有A/D、D/A的单片机;或者直接使用ARM,它的I/O口线口多。可以使用I2C接口的芯片,扩展I/O口和A/D、D/A,以及SPI接口扩展LED显示,例如:MAX7219等芯片。  

市面上一些比较古老的书籍中还有一些并行扩展的例子,如:RAM、EPROM、A/D、D/A等,我觉得已经没有必要去看了,知道历史上有这些一回事就行了;  

这些知识,是所有产品都具备的要素。所以要学,再具体应用。  

说一个小的故事:野人献曝。  

从前,有一个农民,冬天干了活后,休息晒太阳。好舒服呀。  
他想,这么舒服的享受,我要献给国王,让他也能得到享受。  
于是他兴冲冲地到了王宫,将他的宝贵经验献给了国王。  

我现在就象这个农民,把自己认为很宝贵的经验献给大家。希望大家多提宝贵意见;拍板砖也可以,骂我也无所谓,呵呵,随便。  

第一课:51单片机最小系统  

实际上,51单片机核心外围电路是很简单的,一个单片机+一个看门狗+一个晶振+2个磁片电容;  

1. 单片机:atmel的89C51系列、winbond的78E52系列,还有philips的系列,都差不多;现在有一些有ISP(在线下载的),就更好用了;  

2. 看门狗:种类很多,我常用的有max691/ca1161和DS1832等,具体看个人习惯、芯片工作电压、封装等。Max系列和DS系列,还有IMP公司的,种类很多,一般只需要有最基本的功能就可以了;原来我使用max691,但是max691比较贵,因为它有电池切换功能,后来新设计电路板,就都采用ca1161了。  

很早以前的电路设计中,现在可能还有人使用,使用一个电阻和一个电容达成的上电复位电路;但是,这样的复位电路一个是不可靠,为什么不可靠,网络上能找得到专门论述复位电路的文章;更重要的是,51系列的单片机比较容易受到干扰;没有看门狗电路是不行的,当程序跑飞时,回不来了,死在那里。  

常规的做法是买一个专门的看门狗电路,完成复位电路和看门狗电路的功能。  
这些芯片的资料很容易在网络上找到,通常使用百度搜索就可以了;看见有PDF的字样,就点击下载;使用网际快车flashget下载也是最好的;  

这些资料通常是pdf格式的文件,所以,还需要一个pdf的阅读器。  

实际上,有了百度和其它的搜索引擎,很方便下载到这些芯片的资料,比光盘还方便,不需要去到处找。  

单片机和单片机抗干扰能力是不一样的。如果你的产品是工作在干扰比较大的环境,可以试试选用不同品牌的单片机;原来我在一个光电所,做YAG激光治疗机的控制部分,脉冲激光机的电源放电的时候,能量是很大的,在采取了所有能够想到的光电隔离等措施之后,还是不行;后来,选用了intel的8031,就可以了。小声的说:当时的philips的单片机抗干扰性能是最差的,可能跟Philips主要是用在民用领域有关。现在不知道怎么样了,有人知道的话告诉我。  

单片机的输入输出口线是最容易引进干扰的地方;在严重干扰的情况下,需要将所有的口线光电隔离。  

3. 晶振:一般选用11.0592M,因为可以准确地得到9600波特率和19200波特率;也可以使用36.864M,这个频率是1.8432M的20倍,看别人的电路板上用过,我也没有用到。这2种晶振很容易买到,价钱跟12M的一样。书上说,12M的晶振也能得到9600的波特率,但是,实际用的时候,会每隔一段时间就出错一次,好像累积误差一样,比较奇怪。  

即使你的单片机系统不使用RS232接口,也可以做一个Rs232,留着做测试,或者预留等等,没有坏处。除非你的单片机系统的口线不够用了。  

4. 磁片电容:22pf~30pf,可以在有些书上找到什么晶振频率对应什么容量的磁片电容,但是,我都是随便拿来使用,反正在11.0592M下,都没有问题;如果你用到了更高的频率,最好还是找找资料看看。  

参见以下电路图:  

如果你的单片机系统没有工作,检查步骤如下:  

1. 查看门狗的复位输出,可能的话在电路板上加一个LED,下拉,这样看起来就更方便;要是看门狗复位信号有,往下;  

2. 查单片机,看看管脚有没有问题;一般编程器能够将程序写入,说明单片机是好的;最好手头上准备一个验证过的单片机,内部有一个简单的程序,比如,在某个口线上输出1个1秒占空比的方波等,可以使用万用表测量。  

加一句:设计产品时,要在关键的地方:电源、串口、看门狗的输出和输入、I/O口等加不同颜色的LED指示,便于调试;作为批量大的产品,可以去掉部分LED,一方面是降低成本、一方面是流程保密;  

3. 再查磁片电容,有些瓷片电容质量不行,干脆换了;顺便说一下,换器件最好使用吸锡带,将焊盘内的锡吸干净,再将器件拔出,这样不会损伤焊盘内的过孔;再将新的瓷片电容焊接上去的时候,用万用表量量是好的再焊;  

4. 最后只有换晶振了;切记要买好的晶振,有些品牌质量比较好。  

5. 以上按照以上步骤检测时,将无关的外围芯片去掉;因为有一些是外围器件的故障导致单片机最小系统没有工作。  

二课 基本的芯片和分立器件  
2.1 简述  
2.2 74系列  
2.3 CD4000系列  
2.4 光耦与光电管  
2.5 三极管  
2.6 电容电阻  
2.7 固态继电器  
2.8 继电器  
2.9 变压器和三端稳压器  
2.10 开关电源芯片  
2.11 封装知识、芯片批号等  
2.12 接插件  
2.13 器件选购的知识  
第三课 数字量的输入输出  
第四课 单片机的通讯接口  
第五课 单片机系统设计的硬件构思  
第六课 单片机程序的框架(汇编版本)  
第七课 模拟量的输入输出  
……  
各位多提宝贵意见。  
保证实用。如果程序里面有一些例程,也是已经经过测试可以拿来就用的;实际上是我早年的一些产品的程序的一部分;不好意思,都是汇编的。  
写的时间只有周末会多一些,可以保证做到一周一课;尽量能够提前,但是这要看看工作忙不忙了。  
坊间有一些参考书,准备今天上午到北京中发市场转了一圈,我记得以下参考书目较好:  
1. 周航慈:《单片机程序设计》  
2. 徐涵芳:《MCS-51单片机结构与设计》  
3. 何立民:《......》  

有了这些就基本够用了;其它的很多都是资料的翻译;如果英文不好,可以看看;英文好的话,可以不必了,省电钱买开发系统和编程器、开发板什么的,需要什么资料直接下载PDF文件好了。  
要想成为电子工程师,需要宽带,在家里安装包月的adsl或者长宽,绝对值得。  
实际上,网络上什么都有了,就是一个网络数据库,要好好利用。  
网上自有黄金屋,网上自有颜如玉……
7楼2008-02-10 13:39:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 17 个回答

dream_fly84

银虫 (正式写手)

★ ★
weiwenjie(金币+2,VIP+0):merci
所有程序设计语言都是相通的.
我总是假定别人学习编程不是为了应付什么,而是成为高手级别的.而高手是可以融会贯通的。
我建议你学C和java,它们是语言中很有代表性的,C可以直接操控系统底层,而java面向对象比较彻底.如果学习到用C可以写出面向对象的中型程序,那你就是高手了.这时再去看C++或者其他语言是很轻松的.
汇编语言也不错,但是它偏底层了,现在的底层程序一般也用C不用汇编,主要是太费事了.暂时不建议学这个.

建议体会完整系统的示例代码,体会几个示例后就自己编写小程序.
2楼2007-12-15 11:13:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jige001

金虫 (小有名气)

o  ,这样啊
   多谢指导
3楼2008-02-10 12:28:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sdlj8051

金虫 (著名写手)


sinapdb(金币+1,VIP+0):thanks
不知道楼主是怎样理解的嵌入式系统的
也不知道楼主打算往哪方面发展
就个人的观点来看做技术有两条道路走
一,    MCU + 硬件, 走软硬结合的道路。单片机现在还是很不错的,特别是在测控,仪器仪表等行业,在这一块软硬件都牛的人还是比较少的,所以找这条道路我感觉不错,往往一个公司的技术总监就是这样的人才,但需要很深的基础,看楼主的专业不是这块出身的,这条路比较不好走。

二,    嵌入式道路,嵌入式现在很火。因为随着人民生活提高,以后产品会加入联网,多媒体,通讯等功能,这些都离不开嵌入式了。在这一块一般有ARM和DSP两条路。楼主可以选择自己感兴趣的方向发展。
但不论哪一个方向开发板必须要买的,如果没有开发板我感觉还是不要学了,对于买开发板我建议楼主还是买知名公司的,因为一般知名公司的板子一般资料比较齐全,利于新人上手。等到楼主把开发板的示例程序(一般开发板会配C与汇编两个版本的程序)搞懂之后,就算是入门了。
4楼2008-02-10 13:30:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复(可上传附件)
信息提示
请填处理意见