DIY迷你单片机学习板
图28.1 单片机编程实验板
单片机是一门实践性非常强的学科,复杂的中断系统和寄存器往往让初学者觉得晦涩难懂。如果仅仅是理论学习和纸上谈兵而不经过任何实践,套用平凡老师以前的一句话——“我劝您还是趁早放弃。”
为此,我们设计了这款小巧的单片机编程实验板(见图28.1),成本低廉,同时具备了单片机的编程和基本的试验功能,适合新手学习制作。为了确保您能够按照本文介绍的方法制作成功,特别建议您在此之前先学习基本的电子知识和焊接技巧。
迷你单片机学习板的特点
(1)它可以直接支持STC89C52RC单片机的烧写,可以把程序写入单片机并实验。
(2)它是一个多功能的51单片机试验板,配合我们提供的范例程序。您不需要另外购买其他任何材料即可完成51单片机的流水灯、小键盘、数码管动态/静态显示、计数器、扬声器报警/唱歌、串口通信试验、24C02扩展、外部中断等试验。
学习使用此编程板对计算机的要求是:操作系统是Windows 98/me/2000/xp或者Windows 7,硬件配有USB接口即可。
图28.2 学习板的工作示意图
图28.2所示是这个学习板的工作示意图,即通过USB接口,将计算机中的程序用STC_ISP软件下载到单片机中,然后程序自动在学习板上运行,用户会看到程序运行结果。
单片机学习板所包括的硬件资源
1个实验芯片STC89C52
8个Led 指示灯(接 P1.0~P1.7 引脚)可做跑马灯试验,或 IO 状态指示
4个小键盘(接P3.2~P3.5引脚),一端接IO,一端接地,按下小键盘时相应的端口变为低电平
1个扬声器(接P3.3引脚)用作唱歌或者报警试验
1个硬件复位
2位动态扫描数码管分别接P2.6和P2.7引脚
1个USB转232通信接口
1个扩展储存器24C02
1个电源开关,用于冷启动单片机
1个复位键,在实验时通过按此键,使得试验部分复位运行,重启程序
1个MINI USB 接口,用于学习板的通信和供电
制作所需工具:
30W左右的尖头烙铁
海绵泡沫,用于清洗电烙铁头
优质焊锡丝
松香水(可把松香磨碎加酒精自制)
镊子
放大镜
万用表
为了方便用户,我们还特别设计了外接两个8PinI/O接口,可以通过连接将板上的I/O口,外接扩展电路实现不同的功能,学习板的电路原理见图28.3。以下有关引脚的描述均是指QFP44封装的STC89C52单片机,和常见的双列直插DIP封装引脚不同。
目前很多计算机主板设计已经取消了串口,为此我们集成了USB转串口芯片PL2303HX,可以直接使用USB口来通信和供电。
图28.3 学习板电路原理图
制作过程
整机电路较为简单,按照一般的电路板制作原则,先焊接高度最低的元器件,如贴片电阻、贴片电容、贴片IC等;然后清理电路板,再焊接较高的元器件,如晶体、扬声器等;最后再焊接较大的零件,如插接件、数码管。为了美观和减小体积,我们使用了全贴片元器件,而不是传统的DIP元器件,这样对新手会增加一些制作难度。可能有的读者会问,如果是芯片坏了或者想要换芯片,岂不是很麻烦?实际上STC89C52单片机可以支持上万次擦除和写入,那时您早已学会了单片机的使用。而现在随着电子技术的发展,贴片元器件已经是元器件市场的主力军,小型化和贴片化也是该行业的必由之路。
1.焊接主芯片
主芯片为QFP封装的STC89C52,这里需要看清楚芯片的引脚和方向,PCB有标记圆圈的地方与IC芯片上有圆圈的地方相对应,先仔细地对准芯片和焊盘,用烙铁焊接固定的几个引脚,然后在芯片四周引脚上均匀涂抹松香水,接着可将焊锡堆在引脚上,用烙铁拖动即可甩掉焊锡。如果最后有一些引脚的焊锡拖不掉,可以取一截导线,将表皮剥掉,然后沾满松香水,配合烙铁加热,可将多余的焊锡吸走,见图28.4。完成后可以用同样的方法,焊接PL2303HX 以及24C02芯片。
图28.4 焊接主芯片
2.焊接电阻
一共26颗电阻,3种规格,10kΩ的电阻标记是103,1kΩ的电阻标记是102,另外有一颗120Ω的电阻标记是121,这个电阻的作用是作为整机的负载,在关闭电源开关时,将整个板子的电压强行拉低,否则系统就不能复位了。如果不确定阻值,可以用万用表测量一下。
3.焊接贴片电容
共8颗电容,有两种容量规格,一种是104(也就是0.1μF),另一种是22pF。它们也可以通过颜色来区别,黄色的是104,灰白色的是22pF。
4.焊接发光管、三极管和二极管
一定要注意焊接方向,如果焊反了,板子将不能正常工作。
5. 焊接贴片电解电容、贴片晶体、按键和扬声器
相对来说这些都比较容易,除贴片电解电容外,其余都没有极性。
6.焊接 USB 接口、数码管和开关
这里要特别注意,这个USB接口用手工焊接比较困难。可以先在USB上加好焊锡和松香水,然后把烙铁头用海绵洗干净,用烙铁的温度融化USB头上的剩余焊锡即可。最好不用拖锡的方法,否则容易造成连锡和短路。为了增加焊接成功率,建议新手用剪钳把USB接口后半部分的铁片剪掉,使烙铁更容易操作。
组装成功后的效果见题图,仔细检查一遍,用万用表量一下电源是否短路,没有异常即可以开始进行调试。
KEIL 软件的安装与使用
直接复制KEIL文件夹到C盘的根目录, 去掉文件夹的只读属性(注意,必须是C盘根目录,不要安装在其他目录),双击keil\uv2\uv2.exe即可运行软件。
01 单击 Project(工程)菜单,选择 New Project(新工程),在文件名中输入你的第一个程序项目名称,假定我们使用“test”程序。“保存”后的文件扩展名为uv2 这是 KEIL uVision2 项目文件扩展名,以后我们可以直接单击此文件,以打开先前设计的项目。注意输入的时候不要输入文件的后缀名,使用默认即可。为了查找方便,假定我们保存在C盘的根目录。这时会弹出让您选择单片机型号的对话框,我们选择Atmel→AT89C52。注意我们实际使用的是STC89C52,它们的基本资源是一致的,不必理会。
02 汇编源文件的建立:单击 FILE(文件)菜单中的NEW(新文件)命令,新建一个文本编辑窗口。在里面输入一个程序范例,如流水灯程序,然后点击FILE(文件)菜单中的SAVE(保存)命令保存文件,必须输入文件的后缀名.asm,例如保存为C:/prog/001.asm(注意不要有中文目录,文件名不超过8个字符,否则编译不通过!如果是第一次使用,建议直接保存在C盘的根目录,文件名同样取001.asm,不要保存在其他地方)。
03 单击 Target 1(目标 1)前面的“+”,出现Source Group 1(源程序组 1),选中右键点选“Add files Group Source Group 1”(增加文件到源程序组1),这时选择文件类型为asm,再选中001.asm文件,再单击Add(添加),在随后的提示框中单击“确定”即可。
单击“Project”(工程)菜单,再在下拉菜单中单击“options for target 1”(目标1属性)在右侧下图中选择output(输出)“Create HEX file”(产生HEX文件)的选项,以便汇编后生成HEX代码。
04 单击图标进行编译(或者按F7快捷键),编译成功后会在软件下方的提示框中出现汇编结果的提示信息,图中显示没有错误和警告,表示编译成功。
此时,在C盘的根目录中就生成了test.hex文件,有了这个HEX文件,我们就可以用 ISP 方式烧写到单片机进行实验了。
安装 USB 驱动程序
本文以Windows 7操作系统为例,介绍安装PL2303HX的USB驱动程序。请读者到qq群657864614 下载 Windows XP、Windows vista 或者 Windows 7 操作系统下的驱动程序。
01 双击驱动程序PL-2303 Vista Driver Installer.exe进行安装。
02 单击“下一步”,然后点“接受许可协议”,再单击“下一步”,稍后就会显示完成的界面。
03 用USB线缆连接学习板和计算机USB接口,打开系统的“控制面板/硬件和声音/设备管理器/端口”。
04 稍后在端口下出现Prolific Usb-to-Serial Comm Port(COM6),表示成功安装了USB驱动程序,其中COM6是系统分配给USB的虚拟串口号,以后在使用串口的时候选择COM6就可以了。根据你的系统安装USB设备的不同,也可能会出现COM3、COM5等。您也可以用右键单击这个端口,选择“属性/端口设置/高级/COM端口号”,更改为你喜欢的端口号。
USB驱动程序安装成功以后,直接打开配套驱动文件夹的STC下载软件STC_ISP_V480.exe。此软件运行时,有时会反复提示需要配置Office插件,这个不用理会,直接单击“取消”即可。另外经过测试,我们发现4.88版本和4.83版本不能正常使用,建议大家用4.80版本。
首先选择正确的单片机型号(这里是选择STC89C52RC)。打开一个配套程序文件夹的测试程序(HEX格式文件),然后选择串口号和波特率。注意关闭其他可能用到串口的软件,比如编程器、仿真器等,避免争抢串口,波特率按默认设置即可。在本例中,串口号使用的是COM6,软件的其他设置均按默认,最后单击Download/下载程序(特别注意:必须先关掉电源开关,再单击下载程序,然后打开电源开关,冷启动单片机,否则会下载失败)。如果下载正常,窗口会有下载成功的提示,学习板也会自动开始运行。到这里,学习板就算调试成功了,您可以自己烧写各个程序,验证各部分实验是否正常。
最后,祝各位读者组装成功,单片机世界的大门将从此为你敞开。
工程师故事|与单片机结缘只因兑现童年时的一个梦!
我是一个平凡的工程师,标准的80后,从事单片机及嵌入式相关工作已经有几年有余。每天忙忙碌碌,上班下班,既有做出产品时的开心,也有调试程序时的痛苦。一个平凡的人,做着一些平凡的事,每天过着平凡的生活。
有人说做电子工程师是年轻人的活,过了30还不转管理无论是体力上还是精力上都无法胜任了。这句话有一定的道理,但如果兴趣依旧为何不继续追寻自己的梦想呢? 从小我就对机械、电子方面的东西感兴趣。听父母说,每次买回的玩具我都要拆开看看里面的结构,美其名曰:看看为啥能动?为啥能工作。到现在有时回到乡下的老房子里,还能看到不少缺胳膊少腿的玩具呢。
特别是这个小青蛙,我拆开研究了很久
真正让我对电子感兴趣的还得从一个著名的玩具开始,它就是经典的任天堂红白机。 想当初,把这个东西搬回家时还兴奋了不少时间呢,一个暑假把所有能玩的游戏都玩了遍,接着就在琢磨这东西真神奇,到底里面有啥东西呢?拆开一看发现居然全都是绿绿的板子,上面还有不少黑色的玩意。忽然觉得做这个东西的人好伟大,以后自己也要学会做这个。
80后的经典啊,我也是从这里开始对电子一类的东西感兴趣
真正开始接触电子、电脑这一块那就到大学了。当时信息太闭塞了,填志愿的时候也不太清楚计算机、电子信息工程、通信专业都有啥区别。只是问了下同乡的几个师兄,都说计算机是今后的发展。既然是这样,那就报呗。于是我把所有能填的地方都填满了计算机专业,功夫不负有心人,最后还真去了个二本的计算机系。
其实现在想起来我最应该去的就是电子信息工程或机电工程专业,毕竟这两个专业学的才是后来我们所说的嵌入式,不过好在该学校的计算机系既不偏软也不偏硬,属于软件也学硬件也学的那一种,所以大学四年还是学到了不少东西的。
大学4年的时间是短暂的,在这里我还要鄙视下某些所谓的大学老师,记得有一次上微机原理讲到8253、8255我就问:这个东西现在还在用吗?能不能弄个实物来看看?老师当时回答我说:这个芯片已经不用了,所以也不能找到实物,大家只要记住它就好。当时我就无语,既然淘汰的东西为啥要学???
不过后来事实证明这些东西老是老了一点,但现在在很多的地方还是在用的。当然也不是说所有的大学老师都是严重脱离实际的,有些老师还是很厉害的,我就有幸碰到了一个,据说以前是某个公司的技术主管,专弄单片机这块。他让我知道了任天堂红白机里面绿绿的东西叫做PCB。有时他上课会给我们带一些小的玩意,比如说让单片机做流水灯,让蜂鸣器唱歌等等,让我们这些人崇拜的不行了。也正是在他的带领下我开始与单片机结下了不解之缘。
经典的AT89C51单片机,也是我的第一块单片机
51单片机开发板,我们就是从这里开始的
现在想想当时挺有意思的,在用51单片机做完了所有实验后忽然感觉它真是无所不能,所有东西都琢磨着是不是能用51单片机完成,甚至尝试着用51单片机做个手机啥的玩玩(当然,这是无法实现的...)不过还是做了很多好玩的东西,比如说远距离万能遥控器啦,晚上偷偷的遥控对面楼的电视。51大概玩了1年左右,期间还把PCB给画了一遍,学会了用PROTEL。
在一次偶然的机会听说51过时了,ARM才是现在的老大,于是省吃俭用花了600多大洋弄了块44B0X的板子,拿回来一看傻眼了,比51复杂的多啊,光是引脚就密密麻麻的一排,看都看不清,后来听师兄说居然有人能够徒手焊接,更是佩服得五体投地。
经典的44B0X板子,还记得吗?
据说这块板子是某个高手布的线,所有的44B0X都是参考它的,堪称经典。到目前有人学习PCB走线我还要求他好好琢磨这块板子呢。
除了主芯片外,其它外围设备也不简单啊,网卡,硬盘接口,FLASH等等应有尽有,既然买了就硬着头皮学呗,不过好在有51的基础,这块板子裸奔的程序很快就搞定了,也琢磨出个味来:不管芯片多复杂,最终到底无非就是配置下寄存器而已,只要配对了寄存器其它一切都好办。 在软件方面就相对复杂多了,为了搞这块板子我还特意去买了好几本LINUX方面的书,现在闲暇下来翻翻这些书还是很有感觉的。不过linux太过于复杂了,花了大半年的时间我才把这些书粗略的看了一遍。
经典的Linux书籍,你看过没有?
很多精髓的东西都没有弄清楚。这时候已经是大三下学期,刚好老师有个小项目看到我弄得还行就派我过去干了,其实东西现在想起来挺简单:有4~5路模拟信号采集到系统中,再通过AD转换变为数字信号用单片机进行运算,再把结果通过RS232发送给上位机软件。但这毕竟是我接的第一个项目,心里的忐忑可想而知,特别怕搞不定丢了老师的脸。于是在拿完需求后,先自己买了点器件用万用表搭了一个电路先试试。项目最终很成功,我也拿到了第一份报酬。
丑陋的自搭电路
大学4年很快就过去了,带着一堆的开发板、书籍和满腹的电子知识我离开了校园。很快我就找到了第一份工作:在一家小公司做技术员,公司主要的产品是为各种电子设备定做测试仪器。
由于我学的是计算机专业,所以公司希望招我来做上位机软件。这我可傻眼了,以前所有的时间都花在了电子方面,谈到做上位机软件倒还真的不会。毛主席说过:世上的事最怕“认真”二字。没学过没关系,只要现在开始也不晚。
那到底学什么语言和开发工具呢?跑到电子发烧友论坛上晃了一圈,很多人都说C++功能强大,以后发展也好。不过到底是VC还是C++ builder呢?VC难学,但据说学会了以后啥都好办了。既然是这样,那我就弄VC吧。好在公司的任务不紧,有充足的时间看书和学习,再加上有几个前辈指引,学习起来轻松多了。如果有朋友现在还想学习VC和windows程序设计的话,下面几本书可不能错过。这些书都是对应于VC 6.0的,到现在估计应该有对应.net的新版本了吧。
在这个公司的两年里先后完成了许多小的项目,从一开始的帮别人打下手,到后来的自己负责、带徒弟,感觉自己成长了很多。离开这家公司后,我往北边发展。进入了一家做视频相关系统的公司B,公司不大,但各个都是技术强人,这也给我了不小的压力。还记得入职的第一天,项目经理就和我说:我们这任务比较紧,你今天把入职手续办完就进入项目组吧,最近视频点播系统那边活比较多,你先去那边。于是我就误打误撞进入了视频领域,想想自己对这方面什么都不懂还真是胆大,不过这个选择对我今后的方向有重大影响,这个后面再说。
搞过视频的朋友应该都知道,这东西对工程师的综合素质要求还是挺高的,硬件方面所用处理器的都是主频比较高,性能比较好的,很多都是用DSP或FPGA来做;软件方面对算法、数据结构要有较深的理解。不过当时我可不知道这些,总觉得无非就是单片机的升级版本,没什么大不了的。到了项目组后,简单的和项目沟通了下,了解到目前上位机这边有个问题:无法获取当前鼠标所指的位置的文字。当时我立马想到金山词霸不是有个屏幕取词功能么?应该和这个类似。于是立即动手查资料,看到到底是什么原理。等我把相关的资料看完后已经到了下午5点多钟,这是大家都陆陆续续准备下班了,正当我犹豫要不要告诉项目经理时,项目经理走到了我身边于是我顺势就把自己的想法告诉了他,只见他两眼“闪光”,说:那个谁。。。还有那个谁。。。都别走了,留下来加个班,我们一起把这个东西解决了。等到完成基本框架已经到了深夜1点多钟,路上已经基本看不到行人了,晚风吹在脸上,心里充满了作为工程师的自豪,像一个得胜而归的将军。
在这里我特别要感谢项目经理,在B公司的3年时间里是我成长最快的3年,我陆续接触了AT9200,I.MX系列,OMAP,达芬奇系列等各种处理器的开发,特别是达芬奇系列,当时公司里的板子才2块,项目经理居然允许我带一块回家,要知道当时这个板子要好几万呢。当时可把我高兴坏了,像中了500万一样...嚯嚯,开玩笑的。
可能在一个地方久了就会厌倦,B公司虽然不错,但几年的光阴已经把我的激情磨灭,而我又是个需要激情的人。所以最终我还是从B公司离职了。离职后并没有立即找工作,当然并不是找不到,而是我需要一段时间放松下自己,整理下心情。
恰巧这段时间各个半导体公司在不停的开研讨会,像ARM, TI,ST,Xilinx等等。于是乎,我就免费吃了好几顿大餐:)不过最让我印象深刻的是XILINX的研讨会,它们当时在推Spartan系列FPGA。说实话,我对这个FPGA这个东西只有耳闻,但到底是个什么东西还真不知道。在研讨会上看到了它们公司推出的几个案例,其中一个就是视频监控与模式识别的。由于我本身就是做这个的,所以对这块听得尤为仔细。相比于传统的DSP来做算法,FPGA做算法的速度、效率优势更为明显。
于是我很快就有了下一次目标----学习FPGA 。不过想法是好的,不过FPGA学起来真是相当的麻烦:开发板很贵,完全硬件编程。这对我们软件出生的人真是不小的挑战。好在当时xilinx开研讨会赠送了一块BASYS开发板,于是我就从它开始踏上了FPGA的不归路。
有人问:一直学习累不累?有的时候想想确实很累。
夜深人静的时候,总是会一个人坐在窗前发呆:为什么我要不停的学习?我到底要什么?其实我并不知道这些东西到底有什么用,或许只是为了实现童年时期的一个梦,就像筷子兄弟说的:梦想这东西和经典一样,永远不会因为时间而褪色,反而更显珍贵!
作为一名正在埋头苦学51单片机的你,或者刚刚涉足单片机开发的你,在未来几年时间内,你的梦想是什么?你想成为什么样子的人?
单片机工程师,硬件工程师,还是嵌入式工程师?
51系列单片机,作为已经整整地影响了一代人划时代产品,在面临网络化、智能化物联网的今天,已经显得力不从心。ARM作为移动物联网时代的王者,其Cortex系列产品已经遍及高、中、低端设备,将成为引领时代发展的先驱。以STM32作为学习Cortex系列产品的嵌入式开发,是电子初学者的最优学习之路。
相比51单片机,STM32具有如下优势:
1.无论在主频、速度和性能方面,STM32均优于51单片机,能够应付未来产品需求。
2.STM32的ST官方最新Hal库开发,是STM32开发的趋势,开发项目速度相比51单片机更加轻松快捷、方便。
3.嵌入式物联网开发,STM32占据核心地位。STM32是嵌入式系统的心脏,IoT、智能工业、智能家居应用,STM32使得开发产品更加智能化;同时,STM32也是大众市场第一MCU,基本满足任何开发者需求,引领物联网嵌入式系统开发行业潮流。
为帮助更多人学会嵌入式开发,发烧友学院联合创客学院,通过9天视频课程内容,教会大家嵌入式系统STM32在实际开发中常用的技术。只要你认真听课、多敲代码多练习,一周多的时间即可完全掌握!
扫码或点击阅读原文
立即报名嵌入式系统STM32学习!
课程特色
1.视频以STM32F0为讲解对象,大屏直播形式讲课;
2.采用ST官方最新Hal库方法开发,摒弃传统标准库;
3.所有项目基于STM32开发平台CubeMx建成;
4.引入大量传感器开发实例,如光照、三轴传感器;
5.视频均有对应实例代码、课程PPT等资料,方便及时复习。
学员服务
1.课程全部大屏直播讲解,摒弃传统视频形式;
2.学员专享课程QQ群专业讲师答疑。
↓↓↓ 点击"阅读原文" 立即报名嵌入式系统STM32学习!
相关问答
重庆大学机械工程在读硕士,想转去学机器学习,应该怎么规划自己的学习?谢谢邀请!要想从机械工程转向机器学习是可以的,但是存在一定的难度,需要一个系统的学习规划。通常情况下机械工程专业的学生往往都有一个扎实的数学基础,数...