单片机Word文件下载.docx
- 文档编号:20869001
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:19
- 大小:36.52KB
单片机Word文件下载.docx
《单片机Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。
是完全来自于项目提成的奖金!
所以炼虾米的第一要素是:
爱好!
!
以上是我认为学单片机应该具备的技术心态。
然后该说到单片机的学习上了,很多人抱怨自己学校没有单片机课上,所以自己不会单片
机。
其实并不然,以我为例,我以前在学校的确有单片机的课上,不过直到上完一个学期
的单片机,我还是不知道自己在学什么!
考试的时候老师预先公布资料和答案了,考试
的时候我们就抄上去就是了,结果,到考完试的一刻,我突然有点领悟:
“我知道什么是
中断啦”。
。
是的,一个学期的单片机,我就知道了这么多了。
后来?
后来是完全的
自学,自己研究走出来的,如果靠学校那点所谓单片机,我早捡破烂去了!
所以对于我
们这类非名校的学生哥而言,技术离不开自学。
第一章:
偶然
这篇文章叫虾米是怎样炼成的,而不是什么单片机速成,所以我是在写故事,而不是在写
教材。
我单片机起步于2002年10月1号,这个是个重要的日子。
但注意,我在2002年9月的时候有
了自己第一台烧写器和简单的实验板,但那时候不叫起步,因为我把这东西买回来了,还
根本不怎么会用。
为什么我记得是2002年10月1号?
而没有记错为10月2号?
呵呵。
2002年国庆前几天,学校开始举办电子设计竞赛了,因为学校每次举办比赛,经费都是问
题,所以这个什么电子竞赛根本不会隆重宣布,其实我当时还不知道的呢。
直到有个同学
偶然跟我提起,学校有比赛啊,你有打算参加吗?
我当时不知道发了什么疯,就说,好
啊,我参加!
这样,一个单片机,甚至是电子白痴的命运就改变了。
然后就是出方案啦,我也不知道什么时候发梦梦见个什么古怪产品之类的,总之我就提出
了一个用PC无线控制设备的方案。
PC端用VC写的串口程序,传到单片机上,然后单片机启
动无线发射模块,远程设备接收到信号后,由另一个单片机负责处理,控制一个16*2LCD和
4个LED灯。
对于当时的我来说,难度真的很大的,因为我不会VC,不会单片机,不会LCD,无线发射模
块我是买了一对,但没用过。
也就是说,白手起家!
但我还是决定做,不然很没面子。
于是和2个MM组合起来,成为3人组报名学校的设计大赛
了。
和MM组有个原因,1。
方案是我提出的,我希望自己能够独立完成2。
组男生的话可能会在
设计上有争议等的,随时破坏计划,还是MM听话点。
其实在最后,这两位MM的表现
完全是出于我意料,他们实在是强!
很多问题都是他们帮忙解决的呢。
第二章:
奋斗的开始
可能这篇故事写的不是很生动,也没什么趣味,有些朋友们或许看到一半就溜了,,但我
依然希望能有人愿意看下去。
也希望能让一些还没进门的菜鸟有所感悟。
和MM们组队后,‘工程’就要开始了,题目是“计算机远程控制系统”(呵呵,很牛的名
字吧:
),但由于我的方案相对于当时我们的实力来说是超前不少的,所以和MM们有个协
议,因为我们都不会VC串口编程(VC也不会),所以VC部分我必须负责全部并在最短时间
内完成,不然整过计划就不用再做了。
回应第一章所说的,为什么我记得是2002年10月1
号?
因为我是在那天起呆在家里整整7天,干什么?
研究VC啊!
这是我到现在为止,第
一个没有去玩的国庆节。
从早到晚,除了睡觉,吃饭上厕所,就是屁股不离座,眼不离电
脑!
你说,我会忘记吗?
当时做了一条串口线把电脑的两个串口连起来,然后串口1发给串口2,一边是用我的程
序,另外一边是用串口调试软件。
还有手上的几本VC书,就这样写出我的第一个VC程序出
来。
还记得当时成功发送的第一个字节是'
r'
到现在我还记得很清楚,当时真是开心死
了,还马上把串口线和程序带回学校(我是走读生)给MM看,并正式宣布我们的项目开
始。
这国庆7天假期个中的困难和痛苦我就不想说了,只知道那是我技术之路的第一个起
点。
人家都说VC难入门,是的,真的很难啊,不过你要知道VC存在并为这么多程序员所用,自
然有他的道理,只要愿意坚持,困难是能够克服的,而且,你并不是第一个面对他的人,
所以没有任何道理退缩。
看到别的大虾能够成功,那自己为什么不行呢?
所以炼虾米的第
二要素是:
坚持!
第三章:
尝试成功
在VC写的串口程序成功后,我们的计算机远程控制系统就要开始了。
其实,当时的VC程序
只能发数据,并不能收,因为收的话如果是mscomm要利用消息,如果是API的话要用线程,
上面两个我当时都不懂,不过没问题,我的题目是远程控制,没有说是远程监控,所以单
发就够用了,:
)。
剩下的就是单片机接收串口数据,然后控制射频模块发射,接收端就
是模块接收后的单片机处理,例如亮LED和控制16*2LCD。
那时侯如何分配51的IO脚也弄了个半天呢,最后和2个MM协调好后,用了张A3纸画了两个大
大的51,然后那个脚做什么,哪个脚接LED,那个脚接16*2LCD,那个脚按键。
呵呵,
是夸张了点,但当时还是菜鸟阶段啊~~~~
弄好管脚分配了,就做板子,别以为我很有钱,做工业板,我是拿万能板飞线做的,当时
焊个MAX232也焊了半天,勉强焊好了个有串口的最小系统了,发射模块都还没焊上呢。
但
这时候要分工合作利用时间,于是开始写程序了,基本上是边看书本边写程序,半猜半
写。
用的是汇编。
那时侯没有这里的家伙这么幸福,300元就能买个老丁的仿真器来调试程
序,我用的是最纳闷的方法:
N片51侍侯,130元的便宜烧写器写程序,编译通过,烧一
片,插上板,上电!
出什么问题?
拔下,猜猜原因后改程序,再烧再插拔。
(当时没有
S51的,其实那时侯有我也不会用ISP的),于是就是这样调试程序的了,其中多繁琐可能
没多少人明白,因为你们买了个仿真器就插到上面去了,到程序完成了才拔掉。
直到整个项目完成为止,我有一片51烧坏了,估计是寿命到达终点了,1000次的寿命,代
表我至少就这样插拔了1000次单片机。
真不知道是什么滋味了。
总之当时就是这样天天写,晚晚写,还得和MM逃课了一个星期,终于搞定,发射距离是30M
左右啦。
20M内接收完全没有错误。
还能在PC上按键,然后字母发射到远处的16*8LCD显示
出来。
(其实现在还想不通这么简单的东西当时居然要花一个多月呢,如果是现在,估计
单片机程序我是一小时就出来了)
电子大赛结束,我的MM组合赢得学校的一等奖(林中无老虎,菜鸟称大王咯:
),后来这
东东改进一下就赶着参加了广东省的挑战杯了,蒙混骗了个3等奖。
第四章:
真正的开始
比赛是有两个一等奖的,还有一个是我们邻班的家伙,他当时比我牛多了,做的是串口的
电子阅读器,把文章从PC下载他的阅读器上就能阅读了,中文的哦:
),其实他当时就已
经会VC的DIRECTX编程了,还喜欢用VC来写游戏,比我牛多了。
之后的大学单片机生涯我都
是在和他比拼中度过的,这样进步当然就快啦。
现在这个家伙和我住在一起了,呵呵,不
过他向驱动程序的路走,我向嵌入式发展,此为后话。
自从有了第一次尝试成功,我就开始沉迷起来了,特别在放假的时候,更是全情投入,我
戒掉电脑游戏也是从那时侯开始的,现在有多少大学生敢说他不玩游戏?
我看没多少
吧?
其实现在想来,玩游戏真的浪费了我很多的生命啊。
回头看一看,游戏在你的回忆
中并没有多少残留,也就是不值得去回忆,那我们弄来还有什么用?
所以我从不玩游戏。
说回来,我开始沉迷在单片机的研究中,也经常省下点钱上落广州购买点芯片等东西,开
始还是自己用万能板焊电路板的,玩玩键盘扫描,做做动态显示8段管等的。
后来买了块
128*64的LCD,学人家搞起汉字显示来了,好象搞了一个多星期才能输出个汉字,呵呵,够
笨吧?
后来还做了很多小实验,其实都是自己焊的万能板的。
之后从老师中得知有种感光
板,于是就扑上广州买了几块回来弄,第一次弄就失败了2块,合共18大元,我狂倒中
(2002年12月左右吧)~~后来积累经验后,就成功了,之后越做越漂亮:
)单面的工艺已
经比美工业板,现在能做到0.25MM的线宽和0.3MM的线距,能够完成大部分的实验需要了。
(如果大家想知道感光板的制作,可以搜索论坛精品中的‘感光板’)
其实那时侯大学阶段做的小实验还是围绕着一些自己的愿望,也就是算创作了,例如做个
计数器,做个电子种;
有的是网上看到别人做出来了,自己又想做。
不过想做的太多,时
间却太少,那时候还是处于刚进门什么都想学的阶段。
但不管时间够不够,做的多少得多
少嘛,结果现在家里就一大堆东西了,呵呵。
后来学会了上论坛问人了,取名字的时候我想想,我是个电子白痴呢,就取个菜点的名字
吧,叫白痴不是很好,于是就叫白菜了,于是我就叫电子白菜,其实就是电子白痴的意
思:
)那年是2003年的新年。
有了论坛的帮助,我感觉进步的更快了,好多问题都有人指点,开始发的问题还直被人骂
菜,后来慢慢地积累帖子数百,偶然也就能骂骂别人菜,呵呵,不过论坛是要上,自己的
实验也得做,我觉得在开始阶段,很多东西都要亲身经历过才能积累经验的,单看书上说
的是一回事,自己做起来又是另外一回事。
在实践中,我学到的绝对不止是实验中的一个
程序,更加地我学会了如何去解决问题和如何利用实验成果进入下一个更复杂的实验中。
第五章狂热
2003年开始,大学的课程基本完结,但还没毕业^0^,我是2003年7月毕业的,那么这7个月就是假期,对的,是7个月的假期,基本除了做毕业设计外是没什么事情做的。
我觉得这个正是我第一个飞跃的阶段。
话说回来,我们的同学们啊,真是难得有这7个月假期了,疯狂的在游戏,电影和睡觉吃饭中度过,直到后来快要把全天下的电影看光了,百般无聊下,开始看那些有着10年历史的外国肥皂剧(中文语音),那么这7个月他们是白过的了,还连电费都亏下了!
当然,我也很快乐地玩了不少时间,这7个月当中,我基本把技术和娱乐1比1地分配下去了,折算一下我也算下了3个半月去钻研了。
其实现在回想一下还是觉得当时应该把更多的时间下在技术研究上,这样的话我现在的技术应该会更好一些。
因为工作后自己研究的时间就少很多了嘛。
说到我这7个月,学会的东西还真不少,主要是不玩游戏啊,就省下了很多很多时间了。
我在不做实验的时候,基本时间都花在网上,找找资料,看看技术类的东西,从网上我得到了很多新信息,包括很多单片机的应用,重要的是这些应用远超越我自己做的那些小试验,小电路板。
另一个方面,应用思维也很重要,实际的产品跟我们学生比赛弄的东西不同,他要求的是稳定,实际和可行。
举个例子:
学生们参加比赛都做过什么红外线水龙头的东西吧?
他们做出来的那东东,红外线不怎么经过调制和编码就射了,接收端当然是抗干能力扰差啦,如果用在实际上,岂不是水龙头一天自动放水几次?
就算一天自动放水一次而已,这个东西都是卖不出的了。
另一方面,他们总觉得电费不是钱,红外线是源源不断地放,接收端是不停地检测,单片机经常缺乏睡眠。
再举个例子,温度控制,这个东西估计大学生的比赛中是常出现的题目了,他们总是有着这样一个概念:
你调100度,那么我的发热管就一直加热,直到AD检测到100度了,就停,然后当温度降低到99度,又开始加温。
同学们,看上去很正常吧?
但我不妨跟你说,这样的东西是根本不能用的,如果用在工控上(一般要求精度为1~2度)是必然闯祸的东西!
为什么?
因为学生们都认为到了100度的时候就关发热管,那么他温度就应该只有下降没有上升的理由是不?
但实际中,关掉发热设备后,发热丝还是火红火红的,温度是以一个曲线形式继续上升的,所以你到100度才关,到头来实际温度是到110或更高才会开始下降的。
同理,温度下降后的加热上升也有这个问题。
关于这类温度控制的算法,是有一门专门的PID学问的。
大家可以在网上多搜索资料。
说回正题,由于在上网中得到了不少启发,我就开始慢慢脱离那些C程序量还不到300行的小实验了,也就是说,不再点跑马灯,键盘,LED等的东西了。
我开始想写大点的程序,但想归想,可是没有什么题材啊,于是就想不如尝试做个主板的BIOS烧写器如何?
其实BIOS烧写器就只是一个简单的PC下载BIN或HEX程序到FLASH上的东西而已。
如果这个东西能做出来,倒不如再加上一个128*64的LCD上去(之前刚能弄的他显示汉字),再加个键盘(早就会了,扫描程序是抄回来的:
),做个类似PDA的东西,有时间显示(当时刚弄通了1302),有中文显示,还要有中文阅读器的(因为那位朋友做过的,我不会,当然就想做出来啦)。
于是就这样,心中就有了一大堆的想法了,慢慢就把这个模型拼了出来:
要有一个单片机,一片FLASH,一片RAM,一个串口,LCD,键盘,还有时钟芯片,就这么多!
(呵呵,说着好象有点象丁丁在卖的实验板了:
)
不过很可惜,到现在我还是没有把这个东西完全做出来(倒是给老丁先下了手:
),只自己做了块有FLASH,RAM,串口的板子,也就是先完成了烧写BIOS的部分了,而且这个东西还是很后期才做出来的,为什么?
因为当时有更重要的事情吸引了我。
第六章升级
当时在论坛上,网上看到有人做USB接口的,觉得很牛啊,于是自己也想做,但一直就是没资料,也不知道如何学。
这时候好象又回到了当初认识单片机的时候,好象一切都很新鲜,全部都不懂一样。
感到无从下手。
2003年一月,是我大学4年级第一学期末,我们开始要毕业设计选题了,当时有两个最难的题目USB接口设计和蓝牙协议通信(我的是普通学校,这样的题目已经是最难的了,呜。
)我选了USB题目(顺便提一下,邻班的那家伙,就是我现在的室友,选了蓝牙的)。
其实我选USB的时候对USB还是完全没有了解的,有时候想当时真的是勇字当胸了,因为做不出来很可能毕业不了的。
但有时候一些技术的研究当成为了压力和任务的时候,进步反而快。
于是,我的USB就是这样起步的了。
有了任务在身,就不象以前那么地边玩边实验了,我放下了很多打算,开始专心研究起USB来,说是专心,但什么底子都没有。
做个P呢!
开始是上驱动开发网的USB专栏的,但一看就傻了眼,哪里除了牛B的虾,就是菜鸟一群,帖子要么看不懂,看懂的都对我没有帮助。
不过上那里我也获得了信息,就是用D12做USB比较普遍,于是设计就定位在D12了。
正好这个时候周立功哪里出了本USBD12编程的书,虽然我对周X没有什么好感,但无论那本书是不是真正是他公司出的,在当时的环境下,这本书对于我是有着划时代的意义的(夸张了),当时是马上到广州买的,要价35元,还是烂纸油“妫还Ф司筒凰悼髁耍辉僖黄珼12,20元;
之后再买本USB协议的书,再从网上下了USB的相关东西,好了,就这么多,2本书,一个芯片,放下我的实验和一点点的激情和幻想,静下心来,我开始了闭门造车。
那时候是2003年的农历新年啊,我的快乐的新年,基本就在闭门中度过,幸好还有拜年,讨了点红包,不然真的穷死了。
说起这个USB,他的确和我之前做的小实验有天渊之别,之前做的东西只是了解一下原理,动一动脑然后就可以写程序了,但这个是涉及协议,当时我还是第一次接触协议类的东西,没有什么动脑的空间了,只能老实地看,学。
记得鲁迅在写文章救国家之前呆在屋子里抄了一年的碑文,那一年的工夫练就了鲁迅的坚韧。
之前经常焊万能板飞线的实验板,做多了,除了做出点板子来玩,还让我学会了坚韧和耐性(不知道多少人试过焊复杂线路的万能板?
别以为简单,很烦的呢,要很有耐性,万一错一跟线,修改是比较痛苦的)有了这么一点耐性一个月的闭关练功,某天我突然领悟,
(只见关内石门顿开,一人影身披彩云,飞星天外,此刻山摇地动——白菜出山啦~~?
?
#%#—%—)
台下众大虾:
-_-#!
..
当时是看懂了,其实是开始看懂了而已,明白到D12每个寄存器的意义,USB那些反反复复的数据交换的一点意义,说实在的,板子没做,程序没开始写,我只是放下所有东西看了一个月的书。
呵呵
-_-####!
!
.....
离开2003寒假结束还有一个星期,我尽情地玩去了~~
于是是开学,找指导老师谈毕业设计等等,我的指导老师是个博士猪,为什么叫博士猪?
因为他有博士的证书和头脑,但象猪般懒惰,所以叫博士猪,听说他很懒,讲完课了,就玩去了,不过这家伙讲课技术不简单,为什么?
因为他讲的东西不简单,但我们听起来简单——牛也!
以下简称他博猪,博猪很有钱,因为偶然不偷懒的时候就出去接点活干干,一般一两个星期就干完,然后就拿个几万到几十万,之后又开始猪的生活,到快没钱的时候,又会去干活。
跟博猪的毕业设计不错,因为他不懂USB,于是就没有什么要求,我想怎么发挥就怎么发挥。
博猪对通信和DSP的算法等东西非常牛牛牛!
让我感到什么是天外有天,猪外有猪!
不过我最后也没有走通信的路。
博猪的牛没有带给我什么,只是送我4片D12,然后说,拿去做吧。
我暗喜,4片啊,发达了:
有两片我做感光板子把他们焊成双列直插,一片现在焊到老丁的板子上,自己还留了2片。
于是当然就是做板调试啦,搞USB弄了不少时间呢。
当时其实想花钱买周立功的USB板子的,不过要价450大元,广东话说:
好过去抢!
于是没买,但到广州的时候死死地盯着柜台的哪个450元看了半小时,2个LED,2个键,D12唤醒用了片74XX,D12是总线方式连接。
于是我就做了块类似的板子出来了,而且还多了个串口,比周立功的450元强!
不过做的时候不小心把串口的收发脚调乱了。
(主要是选封装的时候搞错了,PROTEL不过关啊,后来苦练了)总的来说板子比较难看。
之后就是写程序。
不过程序还没怎么写,之前投简历的公司要求我过去实习一个月了,于是那些早上12点起来,晚上2点睡觉的生活没有了。
我得去上班了。
上班实习,其实就是没事情干,当时有个工程师跳走,留下一个USB接口的项目没人做也,于是我又勇字挂胸前,对主管说:
我来做¥……¥#……—%主管瞪起金鱼眼看我,好象说:
你小子!
我不做,也没人手做,我不做,我又没事情做,所以,USB我做。
那个USB可不是D12,他是三菱的16位单片机自带的USB接口(我讨厌三菱,各位要多抵制日货),困难比较大,幸好他有所有的DEMO程序,呵呵,有程序在手,简单啦:
)那次是我第一次接触51以外的单片机,而且还是16位的,算是升级了。
而且那个项目是跑UCOSII的,当时还没有2.51出来,那些工程师手拿的是橙黄色的那本UCOS书,好象是2.01版本左右吧,不记得了。
总之我就顺便连带UCOS也学了。
实习时间一个月,我收获不少:
1。
为他们的项目写了一个VC界面,用来做USB的上位机通信,2。
修改了三菱的单片机DEMO程序(C的)让他能基本运行来收发数据,3。
修正了三菱USB技术手册上的一个重大错误(那次后我知道日本芯片的DATASHEET经常出问题的,好象有意坑我们中国人)4。
让我知道这个世界上有UCOS这样东西,正打算买书回来看5。
劳累过度,住了一天医院。
走的时候主管说我行:
)不过我走后,做的东西就没有用了,他们中没有人会VC,我写的东西是白写,后来哪个项目泡了,单片机部分的程序也就没了。
再后来,我的电脑出问题了,我不小心把自己硬盘干掉了,第一份工作的成果完全没有了。
一点底子都没有留。
连带一些重要的资料也没有了,应该有几位老哥知道我这件事情的吧。
还好,毕业设计我刻了光盘,不然。
这次意外说明一个问题,我并不是别人想象中那么幸运的。
由于电脑的问题,拖了我好几个星期,幸好坚持之前下班的时候晚上一定要动动脑做点东西,不然真的赶死!
最后USB毕业设计还是马马乎乎干完了(主要是PC端的程序是拿非利谱网上的,和我的51+USB配合起来不是很好,这个问题我还得有时间再解决,然后把整个系统完善一下)
在这里有个小插曲的:
在我下载了非利谱的USB资料后,看了一两天的哪个上位机VC程序,看懂了点,于是决定动手改改,发现改动起来其实很简单。
于是沉迷了几天去研究和看懂那个程序。
在毕业答辩的前一天,我突然想改进我的USB毕业设计,就是在下位机的板子上添一块128*64的LCD(我以前一直用来玩的那块),然后上位机的VC程序构造一个字符输入栏,在PC上输入汉字,然后在PC上转换出他的点阵(16*16的)再发到我的USB板子上,并在LCD上显示出哪个汉字来。
但离开毕业答辩还只有一天,我当晚就挑灯夜战。
先用跨线的方式把板子上51的多余脚引出来,接到LCD上(其实刚好够,呵呵)这样不用总线方式来驱动LCD,确保我即使到最后调试失败了,也不会影响我原先的USB部分(我还得毕业,输不起!
)焊好电路了,就要改动VC部分,因为PC负责把输入的汉字转换内码,然后在一个点阵文件中提取点阵(点阵文件是16*16的,可以用网上的很多点阵提取软件生成),所以涉及到文件的读写,当时是用API来读写文件的:
)提取点阵了,就要通过USB传到板子上,再通过单片机在LCD上重显。
时间只有一天,我是不停的想不停的写了,当时我的VC还是不怎么样的,所以用了不少时间。
最大问题是我没有仿真器!
还是用烧片子,插片子的方法调啊。
我记得一直写到第二天早上6点的时候,成功把‘啊’字传过去了:
),之后当然要继续改写51的程序,让他能达到换行的效果等东西啦,于是继续写啊写啊。
然后不幸降临:
(。
当我再插上51的时候,然后插上USB接口(我用USB供电的),USB枚举成功,但LCD没有显示了(我在枚举成功后LCD会显示欢迎字段的,这时候真的麻烦了,因为很可能LCD坏了:
(我马上拔掉LCD,插到我其他的板子上试,发现真的不显示了,天啊,倒霉的很啊~~我不段调负压电阻,发现LCD一点反映都没有,5555。
于是省下不用试了,可以睡大觉了。
于是我人生中的第一个通宵编程以无奈告终。
毕业设计当然是拿了个优啦,不过没有机会在博猪前展示我的USB传汉字功能了!
这次又说明了,我有时候真的很倒霉的。
不过,有失必有得,我一直认为是LCD负压芯片烧掉了,所以希望找一块代换,但他是MAX的,比较难买到,我根据网友的指示去MAXIM哪里申请,于是我学会了申请免费东东:
)后来证实我的想法没错,把负压芯片换上后,LCD就能用了:
我觉得我弄的两个USB——实习公司的和毕业设计的,都是自己争取回来的,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机