教你玩转单片机

教你玩转单片机
教你玩转单片机

拨出插头,电烙铁慢慢凉了下来,即使你没有戴金丝边眼镜,在下面的操作过程中也可以显得更斯文一些。这是只与键盘、鼠标、显示器有关的故事情节,几片灰白颜色的软件窗口,嘟嘟的提示音,还有期盼成功并始终专注的眼神。其实我们完成了大部分内容,我们回顾一下看看:我们了解了单片机是什么、单片机能干什么、我们如何学习单片机、学习单片机的条件是什么、如何制作实验板和I SP下载线,了解了这些我即兑现了承诺也让你从中受益。下面我们聊聊软件使用和学习实验的一般操作,听上去好像很简单,但认真的状态依然不可放松。

在没有从宏观上了解事情的时候我们总会感觉茫然不知所措。你花了钱买这本杂志并不小心翻看到我的文章,煽动性的语言诱骗你喜欢上了单片机并一直迷迷糊糊看到这里我就已经非常开心了,除了以身相许之外我愿意为你做任何事情,包括详细介绍我们将会用到的一些软件和关于它们的故事。眼睛向下一扫,我虚张声势的把戏被你识破,明明就两个软件嘛,何必说得好像很多一样呢?大人请容我解释,这两个软件是单片机学习最常用的两个软件,而细述它们的功能最要独立成书了。如果可以弄明白这两个软件的使用和常见问题,那么任何操作问题都难不倒你了。值得庆幸的是本文正为了这个目标而努力。

ISPlay v1.3 – ISP下载工具软件

还记得我介绍ISP下载线时的比喻吗?“从电脑向手机下载图片或音乐一般都有一条连接线,再配上手机专用的软件就可以让手机丰富多彩了。”所谓“专用的软件”就是我们现在要介绍的ISPlay v1.3。它是一款绿色版小巧的ISP下载工具软件,配合前面讲到的ISP下载线向单片机下载程序。你可以根据名称到网上找到它,下载后不用安装只要双击图标就可以运行,运行的窗口就是图1所示的样子。我这里仅以ISPlay v1.3为例,你可能下载到更新的版本,可能窗口和功能会有一些不同,不过都是大同小异的。

图 1

检测器件

第一次使用时都会用到这个功能,它可以测试实验板和ISP下载线是否工作正常,上一篇文章中没能对我们辛辛苦苦制作好的两个硬件进行测试,现在可以弥补一下了。首先把实验板、ISP下载线和电脑的并口连接好,给实验板通电。在软件窗口的左上方的下拉列表中选择你选用的单片机型号,我用的型号是AT 89S52,然后点击后面的“检测器件”。所有单片机爱好者的心都关注着这一无比关键的时刻,放开鼠标左键的瞬间我们将面临成与败的分歧口,我们从文章的开始到现在所有的努力都系于这一次微不足道的点击。也许你不忍看到这一幕,没关系,闭上眼睛,用声音告诉你何去何从。当听到“嘟嘟嘟”三声则要恭喜你,我们的制作大获成功,在窗口下方的信息栏里同时可以看到器件的型号和特征字,欢呼之后我们就可以向下继续了。如果听到“嘟”一声则说明我们还要走一段回头路,信息栏显示没有找到器件,可能这只是我们的一时马虎大意而犯下的小错误导致的,也有重新插上电烙铁的可能。我现在从书里跳出来也不能帮你解决这个问题,而且还会吓到别人,该注意的我在上文已经说过,现在只能靠你自己了。

打开文件

幸运儿们请点击“检测器件”右边的“文件”,弹出一个打开窗口,这里我们要选择我们需要的“.hex”文件。我在《无线电》杂志光盘中放了一些“.hex”文件,我把它们集中放到一个叫“HEX文件”的文件夹里,我们来打开“第一个程序.hex”文件。我还要唠叨一下,这个文件夹里放的都是HEX文件,如果你看不到扩展名可能是你的电脑设置问题,没有理由怀疑我的程序。

擦除、写入、校验

文件打开之后顺次点击“擦除”、“写”、“校验”。如果一切顺利将显示“完成”,如果出现校验错误则重头再来一次,如果几次之后才成功下载的话说明电路抗干扰能力很差,检查一下电源部分和数据线的抗干扰能力。总之成功找经验、失败找原因。

自动完成

这个软件是简洁而人性化的,不然我也不会推荐给你,它的开发人员也是一个会玩单片机的朋友,他知道爱好者的疾苦,设计了“一键通”的功能。“检测器件”的下边有一个“AUTORUN!”按钮,只要打开文件后点击“AUTORUN!”,后面的擦除、写入、校验都可以用这一键完成。在窗口左下角的“程序设置”中可以设置自动完成的内容。

这么好用的软件却不知道是谁设计的,不然我一定要替单片机爱好者好好地谢谢他。话分两头,现在你下载成功了吗?成功则证明你已经掌握了ISP下载的方法,用同样的方法下载文件夹里的其它HEX文件试试,看看在这一个LE D和一个按键上能演义出多少种变化。值得注意的是程序下载完成后不用取下I SP下载线,实验板的程序运行不受影响,但如果只拨出ISP下载线的并口端而不拨出实验板端的连接线时实验板上的程序可能会无法运行。这个下载软件的基本使用就是这样的,日后我们会经常用到它。泡杯茶歇一会,别走开下面内容更精彩!

继续玩点更过瘾的吧,让你的天才想象力和创造力在单片机的地盘上得到施展。Keil μVision2 C51编译器(以下简称Keil)是一款优秀的编译软件,同时具有仿真调试的功能,我们一般的C51系列单片机都是用这个软件开发程序的。换句通俗的话说,只要我们学会了它就可以修改程序或是自己从头写程序了,在这之后你将征服单片机。关于Keil的介绍我

就不多说了,其它单片机入门文章里说得多了,而且对于务实派爱好者来说这并不重要,只要把它玩转了比什么都强。

Keil编译器安装程序的可以到https://www.360docs.net/doc/6d9087513.html,网站下载设有代码大小限制的免费试用版,就是说我们写的程序大小不能超过2K字节,否则不能编译、格杀毋论。初出茅庐的我们现在也写不了太大的程序,先用这个将就一段时间,如果以后有需要可以通过其它途径得到正式版的,随着了解的深入你终会想办法弄到的。

Keil的安装不想多说,它和其它软件的安装方法大同小异。双击安装文件的图标之后就按默认设置“下一步”、“下一步”……“完成”就可以了。我为此特意在我的电脑里试验了这个过程,保证你学得舒心、用得放心。安装好后在桌面和开

始菜单里会多出Keil μVision2的图标,双击运行。这里希望大家下载一种已经在网上流行的Keil汉化版补丁,它可以将菜单和各种信息都变成中文,不论是我们的使用还是我的说明都要方便许多,这与我的英文水平很烂也有一点关系,这里我们也以中文菜单的版本为例。图3所示的窗口就是Keil的主窗口,看上去灰灰白白的没什么特别,窗口最上方的菜单栏里我们点击“工程à打开工程”,在弹出的打开窗口里选择光盘里的“第一个工程”里的“第一个程序.Uv2”文件。注意,事先应该将光盘里的内容复制到电脑硬盘上再打开,不然在后面生成文件时会产生错误。插播一个解释,这里所说的“工程”是指一个项目的所有文件集合,包括一些链接文件、目标文件、源代码文件等,因为一个程序从编写到生成HE X文件是许多文件共同努力的结果,我们在写程序时不是只打开一个原始的程序文件,而是要打开一个工程再在工程里面打开原始的程序文件,所以我首先打开工程是顺理成章的事情。回到正题,“第一个程序.Uv2”打开后窗口中会自动展开一份“第一个程序.c”,如图4所示。这是C语言程序代码,C语言是单片机编程的重要语言之一,过不了多时你就会为它手舞足蹈,但我们现在不聊这个,卖个关子留到以后吊你的味口。现在我们只需改一下里面的数值,并用这个方法介绍一下Keil编写程序到下载、运行的流程,不是我夸张,这个流程是你以后经常用的,只要玩单片机就会用到。

图 3

图 4

“Delay(1000); ”,这条语句你在“第一个程序.c”后边的内容里可以找到,括号里面有一个数值是1000,意思是延时等待1000个毫秒,也就是1秒钟,正如我们看到的效果一样,LED每1秒钟闪烁一次。

现在我们就要对它下毒手了,把它变大或变小,对应的LED闪烁速度也就会改变,修改的范围是0到65535之间。这里我们改了一个最有动感的速度,让LED显得更有激情。我们将数值改为250,也就是1/4秒。改好后的程序是需要重新编译的,点击菜单栏里的“工程à构造目标”或是直接按键盘上的F7键,窗口下方的输出窗口会显示编译的结果:“…第一个程序? -0 错误(S), 0警告(S)”。

这时Keil已经把C语言文件翻译成单片机可以看懂的HEX文件,这个HEX文件就生成在“第一个工程”的工程文件夹里。下面的过程就不用我说了吧,HEX文件已经生成了,怎么下载到单片机你就看着办吧,古有云:好话不说二遍。

“嘟嘟嘟”,下载成功了!看看LED的闪烁是不是呼应了你激动的心动节奏呢!现在我们都可以欣慰了,单片机世界的大门已经关上,是把你牢牢地关在了里面。你已经无力逃脱,而且你也不想这样做,你拥有了单片机的实验平台,为

你的想象插上了大鹏的翅膀,任你翱翔天际、瞰视凡尘。单片机前辈的成果供你

学习,无数的单片机实用制作应接不暇。开始吧,网罗所有单片机相关的技术资料为己所用,你的技术爱好进入了全新境界。

原来如此

也许你早已经没有耐心继续看下面的文字了,实验的趣味性总是能引人入胜,从实际操作的角度出发是本文的一个特点。艰苦的实验过程帮我们打通了任督二脉,但这并不表示习武生涯的结束,反而追根朔源成了新的渴望。了解我们实验过程中的技术原理对于深入学习单片机技术和应付死板的理论考试都有帮助。

现在找到单片机最小系统的电路图,见《十八变兵器》图5。这一次就要有板有眼地说说单片机的整个工作过程。我尽量少开一些玩笑,面对纯学术的知识还是怀有敬意的好,以便让大家能明白是怎么回事。先说芯片的一般要求,这可以在图8上窥见一斑,AT89S52采用的是5V的电源供电,Vcc和GND接口是单片机的系统电源接口。另外它内部集成了可以反复擦写10万次且掉电不会丢失数据的存储单元(ROM单元),我们用ISP下载线下载的程序就存放在这里。还有一块存储区域是存放一些在程序运行时的临时数据(RAM单元),因为在ROM单元里的数据下载后是不可以让单片机自己改写的,有一些经常变换的计算结果是可以在RAM单元里轻松改变的,但RAM单元里的数据在掉电后就烟消云散了,虽然看上去不怎么样,但这种结构还是常用的,C51系列的单片机就是采用的这种存储器结构,在日后的编程岁月里你会深有体会。以AT89S 52为例,其内部的RAM单元仅有256B(字节),如果要计算或处理许多数据则需要外扩RAM芯片,外扩的RAM单元最大可以达到64KB(千字节)。怎么让单片机知道我们是使用内部的RAM单元还是外扩呢,这就取决于单片机第31脚,即EA/VPP接口的状态。当单片机复位时读得EA/VPP接口为高电平则使用内部RAM单元,若为低电平则使用外扩的RAM单元,外扩RAM的使用有专门的文章介绍。

上面说的RAM使用的选择是在复位的时候,那复位又是怎么回事呢?每个看似不相关的事件都是有必然联系,复位功能和整个单片机运行是密不可分的。电脑主机箱上的“RESET”按键可以让你打到一半的游戏消失并让电脑重新启动,一切都从头开始,程序不管走到哪里就要回到第一行去,电脑开机的时候也是需要复位的,那些知识渊博的电脑设计师们已经在你按下电源开关时悄悄地完成了复位。电脑上的故事同样适用在单片机这里,同时也证明了我开始所说的单片机就是一个小型电脑的说法,不过单片机芯片的设计者并没有将复位功能的电路直

接放在AT89S52的里面,也许是他们很懒或是出于更成熟的考虑,虽然有一些单片机有内部复位电路可是我们涉及的AT89S52没有,总之复位电路是要我们单片机爱好者自己设计的。有一些专用的复位芯片出售,它们都可以提供稳定可靠的复位信号,并且卖给我们一个较贵的价格。以我们现在的最小系统而言只要有一个阻容复位电路就足够了,这正是单片机最小系统电路图中C1和R存在的理由。系统通电的瞬间,电流流入C1一端开始给C1充电,此过程中C1相当于短路状态,这巧妙地使AT89S52的第9脚即RET接口连接到高电平,而这正是单片机需要的复位信号。当C1充电完成后就相当于继路状态使得RET 通过下拉电阻R置于低电平,单片机读到RET为低电平时就知道复位结束可以开始工作了。读者朋友可以在C1的两端并联一个微动开关,这可实现不断开电源的手动复位功能,这在电路图里没有给出,你可以选择使用。单片机内部读到高电平的复位信号时是要忙一些事情的,它要把自己内部的东西收拾好,该回到开始位置的要移到开始位置,等它忙完了我们才可以让它开始工作。这就需要一段复位时间,以本文中的最小系统电路为例实现复位需要至少12μS(微秒)的时间,这是在12.00MHz时钟频率时12个时钟脉冲或2个机器周期的时间,这个时间的定义和产生是由单片机上另一个重要的电路部分实现的,这就是系统时钟电路。

上回书中我亲切地称之为晶振部分电路的家伙其实应该叫系统时钟电路,因为当时是实践性的说明我也就讲的通俗直观一些,这两个名词在业内一讲谁都明白所指的是什么。系统时钟电路是产生单片机用的基准时间了,这可以让单片机在你所指定的时刻精确地行动。人们以铯原子(Cs133)基态的两个超精细能级之间跃迁所对应辐射的9192631770个周期所持续的时间定义为一秒,虽然看上去很复杂但这让我们的生活多了时间观念。单片机的时间观念来自于一个精确的脉冲源。

你可以用专用芯片或是更精密的电路制作成精确而稳定的脉冲信号源接到单片机的XTAL1接口。除此之外单片机的内部还含有一个振荡电路,它可以和外接的石英晶体(俗称晶振)构成时钟脉冲,这也是本文电路中用到的方法。采用晶振电路设计的系统时钟电路一般都会接入两个几十皮法(pF)的电容,这是为了更好地提高晶振电路的时钟精度,一般的单片机电路设计都有这个部分,百益而无一害。系统时钟还可以更深入地介绍,但有专门的系统时钟的理论文章介绍得比我专业,我则多留一些文字给后面实用的制作吧。

再谈单片机的输入/输出接口,这是单片机实现工作的重要部分,上面谈到

的所有电路最终都是为了让它动起来。输入/输出接口常被称为I/O口(IN/OU T)是单片机实现信号采集、控制、通信的接口,AT89S52的I/O口分为四组,分别是P0、P1、P2、P3,每组又分8位分别是P0.0~P0.7、P1.0~P1.7、P2.0~P2.7、P3.0~P3.7共32个I/O口,在最小系统电路图上可以了解其位置分布。每一个接口都可以作为信号的输入或输出使用,这是在程序中选择的,但无论输入还是输出都只有高、低电平两种状态。那怎么让单片机作为输出接口实现对外部电路的控制呢?答案是软硬件的完美配合,只要我们在程序中写上“P1.0=0”则P1.0接口被拉到低电平,实验板上连接在P1.0接口的LED正极连接到5V而负极的P1.0为低电平,LED就会被点亮。相反的“P1.0 = 1”则P1.0接口被拉到高电平,LED两端同为高电平状态,LED熄灭。一高一低之间我们的LED就闪烁了起来,这就是I/O口输出控制的原理。作为输入接口的原理要从连接到P2. 0接口的微动开关入手,我们要让单片机知道何时开关被按下就要让它一直读P 2.0的状态,在此之前先要用程序将P2.0设置成高电平。然后单片机不厌其烦地读着P2.0的电平状态,如果读到高电平则和我们事先设置的是一样,表示没有按下开关。微动开关的另一端是与地连接的,按下开关则P2.0被迫与地短路即变为低电平,程序读到的也就变成低电平,输入功能即可实现。顺便说一下,开关按键部分的程序设计还要涉及到延时去除按键抖动的部分,保证读到信号的准确,在编写程序的时候会用到这个。如果单片机的32个I/O口都只是一样的功能也许你会感觉有一些单调,单片机设计者们可能也这样认为,于是他们设计了一些复用功能,就是部分I/O口可以当其它功能使用。AT89S52的复用功能多种多样,有一路两线串口与P3.0、P3.1复用,两路硬件中断与P3.2、P3.3复用等等,更奇妙的是P0接口是具有输入、输出、高阻抗的三态I/O口,这些功能在特殊场合都很实用,我们可以在AT89S52的原版技术手册上了解这些内容。

有一些资料是权威的,这里必须要提一下。有谁比单片机的设计者更了解单片机呢?大家都能看得出这是设问句,所以我们要看设计者们写的单片机文章才权威,从文章中我们可以最全面而系统地了解AT89S52,包括它的电气参数、系统结构、指令集等。虽然这让我辛辛苦苦写的这篇文章显得一无事处,但我还是向大家推荐AT89S52的原版技术手册。不用担心,它是免费的,可以在网上搜索到该技术手册的电子版,等待你茶余饭后细细品味。

到此为止,单片机的理论与实践全部完成,我松了一口气,也不知我说得对不对、细不细、好不好。我既希望简单明了又希望面面俱到,既想轻松风趣又想认真严谨。不能单调无趣、不可一带而过,我用我的写作方式与大家分享一个故事,一个《无线电》爱好者与单片机之间的浪漫爱情故事。

单片机产品开发流程12.

详细的单片机开发流程 一、项目评估: 出初步技术开发方案,据此出预算,包括可能的开发成本、样机成本、开发耗时、样机制造耗时、利润空间等,然后根据开发项目的性质和细节评估风险,以决定项目是否落实资金上马。 二、项目实施: 1、设计电原理图: 在做这一步时要考虑单片机的资源分配和将来的软件框架、制定好各种通讯协议, 尽量避免出现当板子做好后, 即使把软件优化到极限仍不能满足项目要求的情况, 还要计算各元件的参数、各芯片间的时序配合, 有时候还需要考虑外壳结构、元件供货、生产成本等因素, 还可能需要做必要的试验以验证一些具体的实 现方法。设计中每一步骤出现的失误都会在下一步骤引起连锁反应, 所以对一些没有把握的技术难点应尽量去核实。 2、设计印刷电路板(PCB 图: 完成电原理图设计后, 根据技术方案的需要设计 PCB 图, 这一步需要考虑机械结构、装配过程、外壳尺寸细节、所有要用到的元器件的精确三维尺寸、不同制 版厂的加工精度、散热、电磁兼容性等等, 为最终完成这一步常常需要几十次回 头修改电原理图。 3、把 PCB 图发往制版厂做板: 将加工要求尽可能详细的写下来与 PCB 图文件一起发电邮给工厂,并保持沟通,及时解决加工中出现的一些相关问题。 4、定购开发系统和元件:

要考虑到开发过程中的可能的损耗, 供货厂商的最小订货量、商业信誉、价格、服务等, 具体工作包括整理购货清单、联系各供货厂商、比较技术参数、下定单、跑银行汇款、传真汇款底单、催货等等。 5、装配样机: PCB板拿到后开始样机装配,设计中的错漏会在装配过程开始显现,尽量去补救。 6、样机调试: 样机初步装好就可以开始调试, 当然需要有软件才能调, 有人说单片机的软件不是编出来而是调出来的, 所以这个过程需要用到电烙铁、刻刀、不同参数的元件、各种调试和仿真软件、样机的模拟工作环境等。常常会因为设计阶段的疏忽而不得不对样机动手术, 等整个调试终于完成之后, 往往样机的板子已经面目全非。 7、整理数据: 到了这一步, 项目开发的大部分工作都已经完成了, 这时候需要将样机研发过程中得到的重要数据记录保存下来,比如更新电原理图里的元件参数、 PCB 元件库里的三维模型, 还要记录暴露出来的设计上的失误、分析失误的原因、采用的补救方案等等。 8、 V1.1 如果项目进入生产阶段或确有需要, 可以根据修正后的技术方案按以上各个步骤重做一台完善的 V1.1版样机。 9、编写设备文档 包括编写产品说明书、拍摄外观图片等, 如果设备需要和电脑通讯, 还得写好与电脑的接口标准和通讯协议说明。

单片机程序设计方法总结.doc

单片机程序设计方法总结 程序设计是单片机开发最重要的工作程序设计就是利用单片机的指令系统根据应用系统即目标产品的要求编写单片机的应用程序其实我们前面已经开始这样做过了这一课我们不是讲如何来设计具体的程序而是教您设计单片机程序的基本方法不过在讲解之前还是有必要先了解一下单片机的程序设计语言这里的语言与我们通常理解的语言是有区别的它指的是为开发单片机而设计的程序语言如果 您没有学过程序设计可能不太明白我给大家简单解释一下您知道微软的VB VC 吗VB VC 就是为 某些工程应用而设计的计算机程序语言通俗地讲它是一种设计工具只不过这种工具是用来设计计 算机程序的要想设计单片机的程序当然也要有这样一种工具说设计语言更确切些单片机的设计 语言基本上有三类: 1 .完全面向机器的机器语言 机器语言就是能被单片机直接识别和执行的语言计算机能识别什么以前我们讲过--是数字0 或1 所以机器语言就是用一连串的0 或1 来表示的数字比如MOV A 40H 用机器语言来表示就是 11100101 0100000 很显然用机器语言来编写单片机的程序不太方便也不好记忆我们必须想办法 用更好的语言来编写单片机的程序于是就有了专门为单片机开发而设计的语言 2. 汇编语言 汇编语言也叫符号化语言它使用助记符来代替二进制的0 和1 比如刚才的MOV A40H 就是汇编语言 指令显然用汇编语言写成的程序比机器语言好学也好记所以单片机的指令普遍采用汇编指令来编写 用汇编语言写成的程序我们就叫它源程序或源代码可是计算机不能识别和执行用汇编语言写成的程 序啊怎么办当然有办法我们可以通过翻译把源代码译成机器语言这个过程就叫做汇编,汇编工作现在 都是由计算机借助汇编程序自动完成的不过在很早以前它是靠手工来做的. 值得注意的是:汇编语言也是面向机器的,它仍是一种低级语言每一类计算机都有它自己的汇 编语言比如51 系列有它的汇编语言;PIC 系列也有它的汇编语言微机也有它自己的汇编语言它 们的指令系统是各不相同的也就是说不同的单片机有不同的指令系统它们之间是不通用的,这就

单片机入门不难------谈PIC系列

单片机入门不难------谈PIC系列 单片机入门不难------谈PIC系列 作者:佚名来源:不详录入:Admin更新时间:2008-7-2716:27:15点击数:3 【字体:】 单片机入门不难------谈PIC系列(转自矿石收音机论坛---崂山) 坛子里的老兄小弟,如果你已经多次想进单片机之门而未入,如果你有很多空闲时间想打发,如果你玩收音机感到疲劳想换个口味,如果。。。 那就听小弟我白话白话,反正我们这些老大难也没有什么重要的事情做。。。。 闲言少许,话说人间事物的学习,不外两类:一类入门易,精通难比如矿石机,再比如练书法谁都会写两下,可写好却不是一朝一夕的事儿。另一类则入门难精通易,比如超外差收音机,学会需要各种放大、振荡、反馈、混频、中频、统调等等,但是一旦你学会,做出一个高质量的收音机,确也不是难事。单片机属于后者,所以无论如何,你得用些时间,学习一些新名词并理解,甚至还得花一些小钱。但是,一旦你掌握,其乐趣也像收音机一样,很有吸引力的。本故事说给一点也不懂计算机,甚至数字电路的引引道。一般入门应该有保障。 改为:本故事说给懂电工、电子、逻辑电路的老家伙和半老家伙,如果对电子一窍不通人讲那我劝你也别瞎子点灯了,要是边讲基础边讲pic这书就不知唱到何年何月啦。 单片机不同于收音机,收音机的任务最终就是听好声音一个,单片机可以做很多事情,要你来安排它的工作。安排它就先的认识它,熟悉它 请看图1 这个8条腿的小螃蟹就是我们的第一顿饭,只要把它吃下去,以后的大餐就好办了。 第1、8条腿接电源+5V和地线。头两条腿是螃蟹钳子,好吃的很。现在剩下了6条腿 第2、3条腿使用时外接一个晶振的东西我们接一个4MHz的。 第4条腿是复位脚,是一个信号输入脚。单片机正常运行时接高电平。当有一个低电平脉冲输入到这个脚时单片机就复位。所谓复位就是单片机内部所有的工作部件统统回到规定的状态,程序也复位到头一句上开始逐条运行。例如,你设计的一个报警锁定的LED红灯亮后,当需要解除报警时,用一个按钮给这个脚瞬时接地一下,相当于给它一个夫脉冲,系统就复位了,led灯就熄灭了,程序从头开始。 以上5个脚,几乎所有单片机都有,包括世界上最复杂的,和世界比较简单的单片机

高手讲解PIC单片机:单片机的入门就是这么简单

高手讲解PIC单片机:单片机的入门就是这么简单 单片机入门不难,这是几年前的一篇老文章,讲得通俗易懂,分享给初学者。 这个8条腿的小螃蟹就是我们的第一顿饭,只要把它吃下去,以后的大餐就好办了。 第1、8条腿接电源+5V 和地线。头两条腿是螃蟹钳子,好吃的很。现在剩下了6 条腿 第2、3条腿使用时外接一个晶振的东西我们接一个4 MHz的。 第4条腿是复位脚,是一个信号输入脚。单片机正常运行时接高电平。当有一个低电平脉冲输入到这个脚时单片机就复位。所谓复位就是单片机内部所有的工作部件统统回到规定的状态,程序也复位到头一句上开始逐条运行。例如,你设计的一个报警锁定的LED红灯亮后,当需要解除报警时,用一个按钮给这个脚瞬时接地一下,相当于给它一个夫脉冲,系统就复位了,led灯就熄灭了,程序从头开始。 以上5个脚,几乎所有单片机都有,包括世界上最复杂的,和世界比较简单的单片机-----PIC12CE519 轮到第几条腿啦?奥,是第5条腿,这条叫单片机的I/O 脚。就是输入输出脚。你可通过程序动态地控制它作为输入或输出,作为输出时可以程序控制它的输出电平为高1或低0。所以,他的工作状态有四种:输入0,输入1,输出0,输出1,剩下的两条腿和第5脚功能一个样。 上边我们已经把8条腿消化掉了,其实我们要弄明白的也就3只腿,我们再简单一些,先整明白两条腿,即GP0,GP1.这两条腿低级一点的用法,可以控制继电器,LED灯,高级一些的用法可以进行I2C总线,RS232总线的通信,作为扩展输入可以模拟出来A/D转换器(6--7bit),可以测量一个电阻的粗略值。作为输出也可以直接推动扬声器奏出音乐。这是后话暂且不提。 现在要控制使用这两只腿,我这个三脚猫功夫的说书的不得不讲一下软件了,要想讲明白软件又不得不涉及到单片机的内部结构。那位说啦,你可别提这软件和结构了,以前俺就

单片机基于C语言的编程程序

#include #include #define uchar unsigned char #define uint unsigned int sbit RED_ZHU = P0^0;//对应L1LED 代表主道路红灯sbit YELLOW_ZHU = P0^1;//对应L2LED 代表主道路黄灯sbit GREEN_ZHU = P0^2;//对应L3LED 代表主道路绿灯 sbit RED_ZHI = P0^4;//对应L4LED 代表支道路绿灯sbit YELLOW_ZHI = P0^5;//对应L5LED 代表支道路绿灯sbit GREEN_ZHI = P0^6;//对应L6LED 代表支道路绿灯 /********************************************************* 500ms延时函数 晶振:11.0592MHz *********************************************************/ void delay(unsigned char j) { unsigned char k; unsigned int i; for(;j>0;j--) { for(i=1250;i>0;i--) { for(k=180;k>0;k--); } } } /********************************************************* 主函数 *********************************************************/ main() { uchar t; P0=0xff; P3=0xff; RED_ZHU=0; //第一个状态 RED_ZHI=0; delay(10);

完整版单片机控制系统的设计

学号 07437230 常州大学 硬件实习报告 题目:步进电机单片机控制系统的设计 学生: 学院(系):专业班级: 指导教师: 通信(怀)081单片机原理与应用实习任务书 一、设计题目 步进电机单片机控制系统的设计 二、设计背景 步进电机是工业过程控制及仪表中的主要控制元件之一。它可以在机械结构中把丝杆的角度变成直线位移,也可以用它带动螺旋电位

通信工程系指导教师:孙守昌1、前言 1.1课题的背景、目的和意义 1.1.1课题设计的背景:

步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。您可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机也是工业过程控制及仪表中的主要控制元件之一。它可以在机械结构中把丝杆的角度变成直线位移,也可以用它带动螺旋电位器,调节电压和电流,从而实现对执行机构的控制。在数字控制系统中,由于它可以直接接收计算机输出的数字信号,而不需要进行D/A转换,所以使用起来十分方便。步进电机具有快速的启停能力和精度高的显著特点,在定位场合得到了广泛应用。 1.1.2 课题设计的目的: (1)了解步进电机的结构和工作原理。 (2)掌握步进电机控制系统的设计方法及其调试技术。 (3)能够使用电路仿真软件进行电路调试。步进电机驱动控制系统设计内容 1.1.3 课题设计的意义: 随着工业自动化的发展,步进电机的应用越来越广泛。步进电机是用脉冲信号进行控制,将电脉冲信号转换成相应的角位移或线位移的微电动机,它最突出的优点是可以在宽阔的频率来实现调速,快速起停,正转反转控制及制动等,并且用其组成的开环系统既简单,廉价,又非常可行,因此在打印机等办公自动化设备以及各种控制装备等多领域有着极其广泛的应用。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,研制步进电机驱动器具有十分重要的意义。 1.1.4课题的现状与发展趋势 步进电动机又称脉冲电动机或阶跃电动机,国外一般称为Stepping moter,pulse motor或Stepper servo,其应用发展已有80年的历史。正是由于步进电机具有突出的优点,所以成了机电一体化的关键产品之一,广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展。步进电机的需求量与日俱增,在各个国民经济领域都有应用。比如在数控系统中就得到了广泛应用。目前世界各国都在大力发展数控技术,我国的数控系统也取得了很大发展,我国已经能够自行研制开发适合我国数控机床发展需要的各种档次的数控系统。

从单片机初学者迈向单片机工程师

这个我从eehome贴过来的。写的非常的好。我们用学单片机不要停在演示的基础上。只能让单片机完成局部事。这样我们永远不会走出流水灯地狱!!! 学习单片机也已经有几年了,藉此机会和大家聊一下我学习过程中的一些经历和想法吧。也感谢一线工人提供了这个机会。希望大家有什么好的想法和建议都直接跟帖说出来。毕竟只有交流才能够碰撞出火花来^_^。 。“卖弄”也好,“吹嘘”也罢,我只是想认真的写写我这一路走来历经的总总,把其中值得注意,以及经验的地方写出来,权当是我对自己的一个总结吧。而作为看官的你,如果看到了我的错误,还请一定指正,这样对我以及其它读者都有帮助,而至于你如果从中能够收获到些许,那便是我最大的欣慰了。姑妄言之,姑妄听之。如果有啥好的想法和建议一定要说出来。 几年前,和众多初学者一样,我接触到了单片机,立刻被其神奇的功能所吸引,从此不能自拔。很多个日夜就这样陪伴着它度过了。期间也遇到过非常多的问题,也一度被这些问题所困惑……等到回过头来,看到自己曾经走过的路,唏嘘不已。经常混迹于论坛里,也看到了很多初学者发的求助帖子,看到他们走在自己曾走过的弯路上,忽然想到了自己的那段日子,心里竟然莫名的冲动,凡此总总,我总是尽自己所能去回帖。很多时候,都想写一点什么东西出来,希望对广大的初学者有一点点帮助。但总是不知从何处写起。今天借一线工人的台,唱一唱我的戏 一路学习过来的过程中,帮助最大之一无疑来自于网络了。很多时候,通过网络,我们都可以获取到所需要的学习资料。但是,随着我们学习的深入,我们会慢慢发现,网络提供的东西是有限度的,好像大部分的资料都差不多,或者说是适合大部分的初学者所需,而当我们想更进一步提高时,却发现能够获取到的资料越来越少,相信各位也会有同感,铺天盖地的单片机资料中大部分不是流水灯就是LED,液晶,而且也只是仅仅作功能性的演示。于是有些人选择了放弃,或者是转移到其他兴趣上面去了,而只有少部分人选择了继续摸索下去,结合市面上的书籍,然后在网络上锲而不舍的搜集资料,再从牛人的只言片语中去体会,不断动手实践,慢慢的,也摸索出来了自己的一条路子。当然这个过程必然是艰辛的,而他学会了之后也不会在网络上轻易分享自己的学习成果。如此恶性循环下去,也就不难理解为什么初级的学习资料满天飞,而深入一点的学习资料却很少的原因了。相较于其他领域,单片机技术的封锁更加容易。尽管已经问世了很多年了,有价值的资料还是相当的欠缺,大部分的资料都是止于入门阶段或者是简单的演示实验。但是在实际工程应用中却是另外一回事。有能力的高手无暇或者是不愿公开自己的学习经验。 很多时候,我也很困惑,看到国外爱好者毫不保留的在网络上发布自己的作品,我忽然感觉到一丝丝的悲哀。也许,我们真的该转变一下思路了,帮助别人,其实也是在帮助自己。啰啰嗦嗦的说了这么多,相信大家能够明白说的是什么意思。在接下来的一段日子里,我将会结合电子工程师之家举办的主题周活动写一点自己的想法。尽可能从实用的角度去讲述。希望能够帮助更多的初学者更上一层楼。而关于这个主题周的最大主题我想了这样的一个名字“从单片机初学者迈向单片机工程师”。名字挺大挺响亮,给我的压力也挺大的,但我会努力,争取使这样的一系列文章能够带给大家一点帮助,而不是看后大跌眼镜。这样的一系列文章主要的对象是初学者,以及想从初学者更进一步提高的读者。而至于老手,以及那些牛XX的人,希望能够给我们这些初学者更多的一些指点哈~@_@ 我们首先来看第一章节

超易单片机入门(小学生都能看得懂的PIC教程)

超易单片机入门(学单片机一定要看) ( 向作者致敬!) 一. 话说人间事物的学习,不外两类:一类入门易精通难,比如矿石机,再比如练书法谁都会写两下,可写好却不是一朝一夕的事儿。另一类则入门难精通易,比如超外差收音机,学会需要各种放大、振荡、反馈、混频、中频、统调等等,但是一旦你学会,做出一个高质量的收音机,确也不是难事。单片机属于后者,所以无论如何,你得用些时间,学习一些新名词并理解,甚至还得花一些小钱。但是,一旦你掌握,其乐趣也像收音机一样,很有吸引力的。 单片机不同于收音机,收音机的任务最终就是听好声音一个,单片机可以做很多事情,要你来安排它的工作。安排它就先的认识它,熟悉它。大家自己查看一下单片机的外形,不妨将它看成是一个8条腿的小螃蟹,这个8条腿的小螃蟹就是我们的第一顿饭,只要把它吃下去,以后的大餐就好办了。 第1、8条腿接电源 +5V和地线。头两条腿是螃蟹钳子,好吃的很。现在已经剩下6条腿了。 第2、3条腿使用时外接一个叫作晶振的东西,我们接一个4MHz的晶振(这还不知道?还是看一下:单片机之路(https://www.360docs.net/doc/6d9087513.html,)里面对晶振的介绍吧)。 第4条腿是复位脚,是一个信号输入脚。单片机正常运行时接高电平。当有一个低电平脉冲输入到这个脚时单片机就复位。所谓复位就是单片机内部所有的工作部件统统回到规定的状态,程序也复位到头一句上开始逐条运行。例如,你设计的一个报警锁定的LED红灯亮后,当需要解除报警时,用一个按钮给这个脚瞬时接地一下,相当于给它一个夫脉冲,系统就复位了,led灯就熄灭了,程序从头开始。 以上5个脚,几乎所有单片机都有,包括世界上最复杂的,和世界比较简单的单片机-PIC12CE519。 轮到底几条腿啦?奥,是第5条腿,这条叫单片机的I/O脚。就是输入输出脚。你可通过程序动态地控制它作为输入或输出,作为输出时可以程序控制它的

教你如何用C++写单片机程序

教你如何用C++写单片机程序 关键词:C++ 面向对象单片机 从大一就开始学习单片机,学51,A VR编程都使用C语言的风格,即面向过程,只要能画出程序流程图,程序基本就born了。我热衷于编程,尤其是C++,当时想有没有一天,C++的类和对象也能出现在单片机中? 历经世事沧桑,事到如今,我终于有机会,和大家一起学习使用真正面向对象的C++来控制单片机。目前单片机编译器大部分只支持C语言,C++还不够普及,但我们有理由相信,有着更先进的面向对象的理念,有更加平易近人的类和继承,C++必将取代C,成为单片机程序的主流。试看将来环球单片机,必是C++的世界! 下面大家跟着我来一起学习怎么用C++给单片机编程序!本文要求大家玩过A VR单片机,有过C语言编程经验,而且要对VC6.0开发环境有一定了解。 必备软件:VC6.0(用于编辑源程序),WinA VR(用于生成Makefile,支持A VR系列单片机),Proteus(用于仿真调试)。 首先,你的电脑上要装有VC6.0,进入后选菜单【file】---【new】新建工程,如图1选择Makefile工程,输入工程名称,路径,点确定。 图1_新建工程 一路OK建好工程,界面如图2。这个工程是专门写makefile脚本的,你如果学A VR单片机使用avr-gcc那应该对makefile有一定了解,如果想多了解一点详见https://www.360docs.net/doc/6d9087513.html,/view/974566.html?wtp=tt(呵呵,百度百科)。 你还需要安装WINA VR,这是个免费软件,网上很多资源,这个软件很容易安装,一路Next 就可以啦!为了使用方便,我的WINAVR安装到了C盘根目录下的WINA VR文件夹。安装好后,可以直接用它来编辑源代码,今天我就不讲它的使用方法了,只讲怎么生成makefile。自我感觉用熟悉的VC6.0环境编写程序心情很愉快,大家还是跟我一起来,打造

常见单片机芯片简介

3 常见单片机芯片简介 1) STC单片机技术。STC公司的单片机主要是基于8051内核,是新一代增强型单片机,指令代码完全兼容传统8051,速度快8~12倍,带ADC,4路PWM,双串口,有全球唯一ID号,加密性好,抗干扰强; 2)PIC单片机。它是MICROCHIP公司的产品,其突出的特点是体积小、功耗低、精简指令集、抗干扰性好、可靠性高、有较强的模拟接口、代码保密性好,大部分芯片有其兼容的FLASH程序存储器的芯片[2]。 3)EMC单片机。是台湾义隆公司的产品,有很大一部分与PIC 8位单片机兼容,且相兼容产品的资源相对比PIC的多,价格便宜,有很多系列可选,但抗干扰较差。 4)51单片机 (1)ATMEL单片机。ATMEl公司的8位单片机有AT89、AT90两个系列,AT89系列是8位Flash单片机,与8051系列单片机相兼容,静态时钟模式;AT90系列单片机是增强RISC结构、全静态工作方式、内载在线可编程Flash的单片机,也叫A VR单片机;(2)PHLIPIS 51PLC系列单片机。PHILIPS公司的单片机是基于80C51内核的单片机,嵌入了掉电检测、模拟以及片内RC振荡器等功能,这使51LPC在高集成度、低成本、低功耗的应用设计中可以满足多方面的性能要求;(3)TI公司单片机。德州仪器提供了TMS370和MSP430两大系列通用单片机.TMS370系列单片机是8位CMOS单片机,具有多种存储模式、多种外围接口模式,适用于复杂的实时控制场合;MSP430系列单片机是一种超低功耗、功能集成度较高的16位低功耗单片机,特别适用于要求功耗低的场合 5)HOLTEK单片机。台湾盛扬半导体的单片机,价格便宜,种类较多,但抗干扰较差,适用于消费类产品; 6)松翰单片机(SONIX)。SONIX是台湾松翰公司的单片机,大多为8位机,有一部分与PIC 8位单片机兼容,价格便宜,系统时钟分频可选项较多,有PMW ADC 内振内部杂讯滤波。缺点RAM空间过小,抗干扰较好; 4 八位单片机学习感想 通过对MCS-51、EMC系列、HT系列、PIC系列等八位单片机的学习与应用,对8位微处理器的特点有了较深的认识。

从单片机初学者迈向单片机工程师_完整.doc

目录: KEY篇第一章----按键程序编写的基础 KEY篇第二章----基于状态转移的独立按键程序设计 LED篇第三章—模块化编程初识 LED篇第四章----渐明渐暗的灯 LED篇第五章----多任务环境下的数码管编程设计 我们用学单片机不要停在演示的基础上。只能让单片机完成局部事。这样我们永远不会走出流水灯地狱! !! 学习单片机也已经有几年了,藉此机会和大家聊一下我学习过程中的一些经历和想法吧。也感谢一线工人提供了这个机会。希望大家有什么好的想法和建议都直接跟帖说出来。毕竟只有交流才能够碰撞出火花来 几年前,和众多初学者一样,我接触到了单片机,立刻被其神奇的功能所吸引,从此不能自拔。很多个日夜就这样陪伴着它度过了。 期间也遇到过非常多的问题,也一度被这些问题所困惑……等到回过头来, 看到自己曾经走过的路,唏嘘不已。经常混迹于论坛里,也看到了很多初学者发的求助帖子,看到他们走在自己曾走过的弯路上,忽然想到了自己的那段日子,心里竟然莫名的冲动,凡此总总,我总是尽自己所能去回帖。很多时候,都想写一点什么东西出来,希望对广大的初学者有一点点帮助。但总是不知从何处写起。今天借一线工人的台,唱一唱我的戏。卖弄”也好,吹嘘”也罢,我只是想认真的写写我这一路 走来历经的总总,把其中值得注意,以及经验的地方写出来,权当是我对自己的一个总结吧。而作为看官的你,如果看到了我的错误,还请一定指正,这样对我以及其它读者都有帮助,而至于你如果从中能够收获到些许,那便是我最大的欣慰了。姑妄言之,姑妄听之。如果有啥好的想法和建议一定要说出来。 一路学习过来的过程中,帮助最大之一无疑来自于网络了。很多时候,通过网络,我们都可以获取到所需要的学习资料。但是,随着我们学习的深入,我们会慢慢发现,网络提供的东西是有限度的,好像大部分的资料都差不多,或者说是适合大部分的初学者所需,而当我们想更进一步提高时,却发现能够获取到的资料越来越少,相信各位也会有同感,铺天盖地的单片机资料中大部分不是流水灯就是 LED,液晶, 而且也只是仅仅作功能性的演示。于是有些人选择了放弃,或者是转移到其他兴趣上面去了,而只有少部分人选择了继续摸索下去,结合市面上的书籍,然后在网络上锲而不舍的搜集资料,再从牛人的只言片语中去体会,不断动手实践,慢慢的,也摸索出来了自己的一条路子。当然这个过程必然是艰辛的,而他学会了之后也不会在网络上轻易分享自己的学习成果。如此恶性循环下去,也就不难理解为什么初级的学习资料满天飞,而深入一点的学习资料却很少的原因了。相较于其他领域,单片机技术的封锁更加容易。尽管已经问世了很多年了,有价值的资料还是相当的欠缺,大部分的资料都是止于入门阶段或者是简单的演示实验。但是在实际工程应用中却是另外一回事。有能力的高手无暇或者是不愿公开自己的学习经验。 很多时候,我也很困惑,看到国外爱好者毫不保留的在网络上发布自己的作品,我忽然感觉到一丝丝的悲哀。也许,我们真的该转变一下思路了,帮助别人,其实也是在帮助自己。啰啰嗦嗦的说了这么多,相信大家能够明白说的是什么意思。在接下来的一段日子里,我将会结合电子工程师之家举办的主题周活动写一点自己的想法。尽可能从实用的角度去讲述。希望能够帮助更多的初学者更上一层楼。而关于这个主题周的最大主题我想了这样的一个名字从单片机初学者迈向单片机工程师”。名字挺大挺响亮,给我的 压力也挺大的,但我会努力,争取使这样的一系列文章能够带给大家一点帮助,而不是看后大跌眼镜。这样的一系列文章主要的对象是初学者,以及想从初学者更进一步提高的读者。而至于老手,以及那些牛XX 的人,希望能够给我们这些初学者更多的一些指点哈?@_@ 我们首先来看第一章节

51单片机常用芯片引脚图

常用芯片引脚图 一、 单片机类 1、MCS-51 芯片介绍:MCS-51系列单片机是美国Intel 公司开发的8位单片机,又可以分为多个子系列。 MCS-51系列单片机共有40条引脚,包括32 条I/O 接口引脚、4条控制引脚、2条电源引 脚、2条时钟引脚。 引脚说明: P0.0~P0.7:P0口8位口线,第一功能作为通用I/O 接口,第二功能作为存储器扩展时 的地址/数据复用口。 P1.0~P1.7:P1口8位口线,通用I/O 接口无第二功能。 P2.0~P2.7:P2口8位口线,第一功能作为通用I/O 接口,第二功能作为存储器扩展时传送高8位地址。 P3.0~P3.7:P3口8位口线,第一功能作为 通用I/O 接口,第二功能作为为单片机的控 制信号。 ALE/ PROG :地址锁存允许/编程脉冲输入信号线(输出信号) PSEN :片外程序存储器开发信号引脚(输出信号) EA/Vpp :片外程序存储器使用信号引脚/编程电源输入引脚 RST/VPD :复位/备用电源引脚 2、MCS-96 芯片介绍:MCS-96系列单片机是美国Intel 公司继MCS-51系列单片机之后推出的16位单 片机系列。它含有比较丰富的软、硬件 资源,适用于要求较高的实时控制场合。 它分为48引脚和68引脚两种,以48引 脚居多。 引脚说明: RXD/P2.1 TXD/P2.0:串行数据传出分发 送和接受引脚,同时也作为P2口的两条 口线 HS1.0~HS1.3:高速输入器的输入端 HS0.0~HS0.5:高速输出器的输出端(有 两个和HS1共用) Vcc :主电源引脚(+5V ) Vss :数字电路地引脚(0V ) Vpd :部RAM 备用电源引脚(+5V ) V REF :A/D 转换器基准电源引脚(+5V ) AGND :A/D 转换器参考地引脚 12345678910111213141516171819204039383736353433323130292827262524232221P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST RXD/P3.0TXD/P3.1INT0/P3.2INT1/P3.3T0/P3.4T1/P3.5WR/P3.6RD/P3.7XTAL2XTAL1V SS V CC P0.0/AD 0P0.1/AD 1 P0.2/AD 2P0.3/AD 3P0.4/AD 4P0.5/AD 5P0.6/AD 6P0.7/AD 7 EA/V PP ALE/PROG PSEN P2.7/A 15P2.6/A 14P2.5/A 13 P2.4/A 12P2.3/A 11P2.2/A 10P2.1/A 9P2.0/A 8803180518751

单片机必会程序2

#include "delay.h" /*------------------------------------------------ uS延时函数,含有输入参数unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下T=tx2+5 uS ------------------------------------------------*/ void DelayUs2x(unsigned char t) { while(--t); } /*------------------------------------------------ mS延时函数,含有输入参数unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编 ------------------------------------------------*/ void DelayMs(unsigned char t) { while(t--) { //大致延时1mS DelayUs2x(245); DelayUs2x(245); } } #include"display.h" #include"delay.h" #define DataPort P0 //定义数据端口程序中遇到DataPort 则用P0 替换 //sbit LA TCH1=P2^0;//定义锁存使能端口段锁存 //sbit LA TCH2=P2^3;// 位锁存 unsigned char code dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9 unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码 unsigned char TempData[8]; //存储显示值的全局变量 /*------------------------------------------------ 显示函数,用于动态扫描数码管

51单片机常用芯片引脚图

常用芯片引脚图 一、单片机类 1、MCS-51 芯片介绍:MCS-51系列单片机是美国Intel公司开发的8位单片机,又可以分为多个子系列。 MCS-51系列单片机共有40条引脚,包括32 条I/O接口引脚、4条控制引脚、2条电源引 脚、2条时钟引脚。 引脚说明: P0.0~P0.7:P0口8位口线,第一功能作为 通用I/O接口,第二功能作为存储器扩展时 的地址/数据复用口。 P1.0~P1.7:P1口8位口线,通用I/O接口 无第二功能。 P2.0~P2.7:P2口8位口线,第一功能作为 通用I/O接口,第二功能作为存储器扩展时 传送高8位地址。 P3.0~P3.7:P3口8位口线,第一功能作为 通用I/O接口,第二功能作为为单片机的控 制信号。 ALE/ PROG:地址锁存允许/编程脉冲输入信号线(输出信号) PSEN:片外程序存储器开发信号引脚(输出信号) EA/Vpp:片外程序存储器使用信号引脚/编程电源输入引脚 RST/VPD:复位/备用电源引脚 2、MCS-96 芯片介绍:MCS-96系列单片机是美国Intel公司继MCS-51系列单片机之后推出的16位单 片机系列。它含有比较丰富的软、硬件 资源,适用于要求较高的实时控制场合。 它分为48引脚和68引脚两种,以48引 脚居多。 引脚说明: RXD/P2.1 TXD/P2.0:串行数据传出分发 送和接受引脚,同时也作为P2口的两条 口线 HS1.0~HS1.3:高速输入器的输入端 HS0.0~HS0.5:高速输出器的输出端(有 两个和HS1共用) Vcc:主电源引脚(+5V) Vss:数字电路地引脚(0V) Vpd:内部RAM备用电源引脚(+5V) V REF:A/D转换器基准电源引脚(+5V) AGND:A/D转换器参考地引脚P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST RXD/P3.0 TXD/P3.1 INT0/P3.2 INT1/P3.3 T0/P3.4 T1/P3.5 WR/P3.6 RD/P3.7 XTAL2 XTAL1 V SS

单片机初学者必须掌握的几个概念

单片机初学者必须掌握的几个概念 一、总线:我们知道,一个电路总是由元器件通过电线连接而成的,在模拟电路中,连连线并不成为一个问题,因为各器件间一般是串行关系,各器件之间的连线并不很多,但计算机电路却不一样,它是以微处理器为核心,各器件都要与微处理器相连,各器件之间的工作必须相互协调所以就需要的连线就很多了,如果仍如同模拟电路一样,在各微处理器和各器件间单独连线线,则线的数量将多得惊人,所以在微处理机中引入了总线的概念,各个器件共同享用连线,所有器件的8根数据线全部接到8根公用的线上,即相当于各个器件并联起来,但仅这样还不行,如果有两器件同时送出数据,一个为0,一个为1,那么,接收方接收到的究竟是什么呢这种情况是是不允许的,所以要通过控制线进行控制,使器件分时工作,任何时候只能有一个器件发送数据(可以有多个器件同时接收)。器件的数据线也就被称为数据总线,器件所有的控制线被称控制总线。 在单片机内部或者外部存储器及其它器件中有存储单元,这些存储单元要被分配地址,才能用,分配地址当也是以电信号的形给出的,由于存储单元比较多,所以,用于地址分的线也较多,这些线被称为地址总线。 二、数据、地址、指令:之所以将这三者放在一起,是因为这三者的本质都是一样的─数字,或者说都是串‘0‘和‘1‘组成的序列。换言之,地址、指令也都是数据。指令由单片机芯片的设计者规定的一种数字,它与我们常用的指令助记符有着严格的一一对应关,不可以由单片机的开发者更改。地址:是寻找单片机内部、外部的存储单元、输入输出口的依据,内单元的地址值已由芯设计者规定好,不可更改,外部的单元可以由单片机开发者自行决,但有一些地址单元是一定要有的(详见程序的执行过程)。数据:这是由微处理机处理的象,在各种不同的应用电路中各不相同,一般而言,被处理的数据可能有这么几种情况: 1地址(如MOV DPTR,#1000H),即地址1000H送入DPTR。 2方式字或控制字(如MOV TMOD,#3),3即是控制字。 3常数(如MOV TH0,#10H)10H即定时常数。 4实际输出值(如P1口接彩灯,要灯全亮,则执行指令:MOV P1,#0FFH,要灯全暗,则执兄令:MOV P1,#00H)这里0FFH和00H都是实际输出值。又如用于LED的字形码,也是实际出的值。理解了地址、指令的本质,就不难理解程序运行过程中为什么会跑飞,会把数据当成指令来行了。 三、P0口、P2口和P3的第二功能用法初学时往往对P0口、P2口和P3口的第二功能用法迷惑不解,认为第二功能和原功能之间要有个切换的过程,或者说要有一条指令,事实,各端口的第二功能完全是自动,不需要指令来转换。如、分别是WR、RD信号,当微片理机外接RAM或有外部I/O口时,它们挥作第二功能,不能作为通用I/O口使用,只要一微处理机一执行到MOVX指令,就会有相应的信号从 P3. 或送出,不需要事先用指令说明。事实上‘不能作为通用I/O口使用‘也并不是‘不能而是(使用者)‘不会‘将其作为通用I/O口使用。你完全可以在指令中按排一条S ETB 的指令,并且当单片机执行到这条指令时,也会使变为高电平,但使用者不会这么做,因为这通常这会导致系统当溃(即死机)。 四、程序的执行过程单片机在通电复位后8051内的程序计数器(PC)中的值为‘0000,所以程序总是从‘0000‘单元开始执行,也就是说:在系统的ROM中一定要存在‘0000‘个单元,并且在‘0000‘单元中存放的一定是一条指令。

单片机程序设计编程规范

单片机程序设计编程规范 本规范适用于松翰科技 8-bit MCU部门汇编程序编写准则,同样适用于代理商及重要客户工程师编程规范参考。本规范的目的为统一编程风格,保证程序编写质量,提高程序的可移植性和维护性。 大部分的规范严格, 品质要求高的软件公司对员工编写代码的风格都有硬性规定, 例如缩排的使用,TAB 的长度,函数变量的命名方式。这些规定的明显好处是可以统一规范不同程序员所编制的代码,提升程序代码的可读性与可维护性,同时统一格式的编程风格也为code review提供方便。 目录 一、设计总则 二、排版风格 三、程序可读性及可维护性 四、注释 五、变量命名规则 六、常量命名规则 七、标号命名规则 八、文件命名规则及文件分割 九、标准程序模块 十、附录

一、设计总则 1.程序质量的评估 程序的优劣可以从两个方面进行评估,定量指标和定性指标。 定量指标包括: 1) 程序代码执行效率; 2) 程序占用资源多少。 定性指标包括: 1) 可调试性,即是否方便排除程序语法错误; 2) 可测试性,即是否方便验证程序功能的正确性; 3) 可维护性,即是否方便程序的修改和升级; 4) 可移植性; 5) 可读性。 2、程序架构 为了便于维护和移植,推荐使用层次化的软件设计方法。可把整个软件分为三层:应用层、界面层和底层驱动层。各层之间的关系如下图所示。 层次化设计说明: 1) 底层驱动层主要包含直接和硬件相关的驱动程序,如数码管显示、按键、峰鸣器、继电器和电机控制等。底层的各个模块间要保持各自的独立性,不产生直接的数据交互,底层也不直接访问应用层,如果有需要,都要通过界面层进行数据交互。 2) 界面层主要提供数据交互,为应用层和底层驱动之间以及底层驱动层各模块之间提供数据的交互。 3) 应用层主要完成具体功能的实现,它要通过界面层控制底层驱动层各模块来完成所需功能,而不能越过界面层直接访问底层驱动层。所有的用户接口要在应用层来实现。 4) 一个好的架构必须将底层硬件包装起来,为应用程序提供一组丰富的函数操作(buffer or parameter),例如在中断的处理中,应用程序不需要资料中断的堆栈如何保护不需要知道地址操作, 只需要读取中断产生的旗标动作。

单片机学习感悟1.doc

单片机学习感悟1 这个我从别处贴来百度文库的。写的非常的好。我们用学单片机不要停在演示的基础上。只能让单片机完成局部事。这样我们永远不会走出流水灯地狱!!! 学习单片机也已经有几年了,藉此机会和大家聊一下我学习过程中的一些经历和想法吧。也感谢一线工人提供了这个机会。 。“卖弄”也好,“吹嘘”也罢,我只是想认真的写写我这一路走来历经的总总,把其中值得注意,以及经验的地方写出来,权当是我对自己的一个总结吧。而作为看官的你,如果看到了我的错误,还请一定指正,这样对我以及其它读者都有帮助,而至于你如果从中能够收获到些许,那便是我最大的欣慰了。姑妄言之,姑妄听之。几年前,和众多初学者一样,我接触到了单片机,立刻被其神奇的功能所吸引,从此不能自拔。很多个日夜就这样陪伴着它度过了。期间也遇到过非常多的问题,也一度被这些问题所困惑……等到回过头来,看到自己曾经走过的路,唏嘘不已。经常混迹于论坛里,也看到了很多初学者发的求助帖子,看到他们走在自己曾走过的弯路上,忽然想到了自己的那段日子,心里竟然莫名的冲动,凡此总总,我总是尽自己所能去回帖。很多时候,都想写一点什么东西出来,希望对广大的初学者有一点点帮助。但总是不知从何处写起。今天借一线工人的台,唱一唱我的戏一路学习过来的过程中,帮助最大之一无疑来自于网络了。很多时候,通过网络,我们都可以获取到所需要的学习资料。但是,随着我们学习的深入,我们会慢慢发现,网络提供的东西是有

限度的,好像大部分的资料都差不多,或者说是适合大部分的初学者所需,而当我们想更进一步提高时,却发现能够获取到的资料越来越少,相信各位也会有同感,铺天盖地的单片机资料中大部分不是流水灯就是LED,液晶,而且也只是仅仅作功能性的演示。于是有些人选择了放弃,或者是转移到其他兴趣上面去了,而只有少部分人选择了继续摸索下去,结合市面上的书籍,然后在网络上锲而不舍的搜集资料,再从牛人的只言片语中去体会,不断动手实践,慢慢的,也摸索出来了自己的一条路子。当然这个过程必然是艰辛的,而他学会了之后也不会在网络上轻易分享自己的学习成果。如此恶性循环下去,也就不难理解为什么初级的学习资料满天飞,而深入一点的学习资料却很少的原因了。相较于其他领域,单片机技术的封锁更加容易。尽管已经问世了很多年了,有价值的资料还是相当的欠缺,大部分的资料都是止于入门阶段或者是简单的演示实验。但是在实际工程应用中却是另外一回事。有能力的高手无暇或者是不愿公开自己的学习经验。 很多时候,我也很困惑,看到国外爱好者毫不保留的在网络上发布自己的作品,我忽然感觉到一丝丝的悲哀。也许,我们真的该转变一下思路了,帮助别人,其实也是在帮助自己。啰啰嗦嗦的说了这么多,相信大家能够明白说的是什么意思。在接下来的一段日子里,我将会结合电子工程师之家举办的主题周活动写一点自己的想法。尽可能从实用的角度去讲述。希望能够帮助更多的初学者更上一层楼。而关于这个主题周的最大主题我想了这样的一个名字“从单片机初学者 迈向单片机工程师”。名字挺大挺响亮,给我的压力也挺大

常用单片机及其它芯片引脚图

一、 单片机类 1、MCS‐51 芯片介绍:MCS‐51系列单片机是美国Intel公司开发的8位单片机,又可以分为多个子系列。 MCS‐51系列单片机共有40条引脚,包括32 条I/O接口引脚、4条控制引脚、2条电源引脚、2条时钟引脚。 引脚说明: P0.0~P0.7:P0口8位口线,第一功能作为 通用I/O接口,第二功能作为存储器扩展时的地址/数据复用口。 P1.0~P1.7:P1口8位口线,通用I/O接口无第二功能。 P2.0~P2.7:P2口8位口线,第一功能作为通用I/O接口,第二功能作为存储器扩展时传送高8位地址。 P3.0~P3.7:P3口8位口线,第一功能作为通用I/O接口,第二功能作为为单片机的控制信号。 ALE/ PROG:地址锁存允许/编程脉冲输入信号线(输出信号) PSEN:片外程序存储器开发信号引脚(输出信号) EA/Vpp:片外程序存储器使用信号引脚/编程电源输入引脚 RST/VPD:复位/备用电源引脚 2、MCS‐96 芯片介绍:MCS‐96系列单片机是美国Intel公司继MCS‐51系列单片机之后推出的16位单 片机系列。它含有比较丰富的软、硬件资源,适用于要求较高的实时控制场合。它分为48引脚和68引脚两种,以48引脚居多。 引脚说明: RXD/P2.1 TXD/P2.0:串行数据传出分发 送和接受引脚,同时也作为P2口的两条口线 HS1.0~HS1.3:高速输入器的输入端 HS0.0~HS0.5:高速输出器的输出端(有 两个和HS1共用) Vcc:主电源引脚(+5V) Vss:数字电路地引脚(0V) Vpd:内部RAM备用电源引脚(+5V) VREF:A/D转换器基准电源引脚(+5V) AGND:A/D转换器参考地引脚

相关文档
最新文档