最新日志

发表于:2008-3-29 15:03:24
标签:无标签

0

单片机制作六位数显电子钟

 

6位LED数码管显示的电子钟,成品板20元,元件包16.5元,单购线路板1.8元

很多网友都买过本站的单片电子钟元件包,有的朋友说不需要这么大,就是想需要一个小小的LED数显电子钟,为了方便网友,本站推出了最低价格的6位LED数码管显示的电子钟,成品板20元,元件包16.5元,单购线路板1.8元,本板选用超亮LED数码管,更美观更实用!本元件包一次性组装成功率高达98%,特别适合学校批量订购制作。对于学校来说,特别是对于非电子专业的学校来说,组织学生进行这种电子制作活动,可以提高学生的兴趣,有利于从侧面培养学生的科学观念,这对一个受教育者的益处是相当具大的。由于很多学校没有这方面的教师人才,所以很多家长自己才会买给自己的孩子。

说明:成品板是指接上电源即可正常走时校时和定时,没有外壳,仅仅只能显示时间和发出声音!元件包就是还需要通过自己动手组装才会变成成品板。

本套件包含电路板,电路板上的所有元件,制作说明书,元件清单,原理图 胶袋包装。

关于数码管的引脚分布大家可以看看这里

http://www.51dz.com/pic/LED/04021-400.gif

http://www.51dz.com/s.asp?id=2156

装好的成品如下:

本板装配无误一般都能正常工作,仔细检查线路板安装无误后,插入单片机芯片(为了防止大家焊接有误本站给大家配备一个20脚的IC插座)。
本数字钟板使用直流4V-5V工作电压。
1.正常走时:默认为走时状态,按24小时制显示“时时:分分:秒秒”,按实际时间以秒为单位变化,同时四个秒点变化。
2.走时调整:长按K1(或K2、K3),时、分、秒会有其一快速闪动,按K1会循环,按K2和K3可以分别对闪动的数字进行加或者减。
3.闹时调整:再次长按K1(或K2、K3),时、分、秒会有其一慢速闪动,按K1会循环,按K2和K3可以分别对闪动的数字进行加或减。
  注意:时位01-64变化,表示64路定时;分位00-24变化,表示24小时和不闹,默认为24不闹;秒位00-59变化,表示60分钟。因此,只能以分钟为最小单位设定多路闹时。
4.误差修正:走时精度由高频石英晶振(4MHz比32.768KHz高出100倍)决定。理论上可以做到月误差小于6秒。在闹时调整状态下,长按K1(或K2、K3),时位、分位会变成全“一”或者全“三”表示变慢或者变快,按K1选择;按K2、K3秒位会在00-80中变化,数字越大,表示修正越大,00等于不变快也不变慢。
5.任何状态下:长时间(20秒以上)不按任何按键,都会自动回到正常走时状态。这时:
A、如果正逢闹铃响(会长响20秒)中,按K1、K2、K3任意键可以停止发声。
B、按K3可以启停电子钟每秒都发出短短的“嘀”声。
C、整点报时功能:按K2可以开启和关闭整点报时功能。开启后每逢整点就会听到长响两秒“嘀”声。
6、闹时开关功能:按K1可以开启和关闭定时闹铃功能。关闭闹铃时,设置的数据仍然保留,但是不输出。

蜂鸣器可以用压垫陶瓷片代替如下图所示:

本电子钟跟下面的电子钟的功能、原理、使用方法基本上一样,区别在于将分立的LED改成了一体化小巧的LED数码管,这样显示更美观,并且,由于现在LED数码管2V电源即可点亮(以前的分立LED是两支串联,需要4V以上电源才能正常点亮),因此,现在的电子钟可以在3.6V的手机电池供电下良好的工作。强列推荐用旧手机电池做后备供电,确保停电后时间照常走时!!!以下资料供参考,收到实物和以下会不同,更详细资料以收到的实际货物为主。

  电路特点
  这里介绍的电子钟,电路可称得上极简,它仅使用单片的20引脚单片机完成电子钟的全部功能,而笔者见到的其它设计方案均采用二片以上的多片IC实现。
 一片20引脚的单片机STC1052(引脚排列与AT89C2051完全相同)为电子钟主体,其显示笔画数据从P1口分时输出,P3口则输出对应的六位选通信号。由于LED数码管点亮时耗电较大,故不能使用AT89C2051单片来完成,但是可以可以用STC12C1052来完成。另外,本站制作时用超高亮的发光二极管代替昂贵的大数码管,成本低,效果独特。

   由于电路设计得极其简单,因此丰富的功能只能由软件完成,这里软件设计成为了关键。下面介绍软件设计中采用的一些要点。

  本电子钟程序设计时只使用了一个定时数T0,其它的中断全部关断,定时器工作在两个8位自动加载初始值状态。这是保证走时精确稳定的重要方法。站长看到很多书本教材上都让大家用定时器中断来执行动态显示程序和按键扫描程序,这是一种很不好的方法,除了浪费硬件资源以外,还会增加程序复杂性,还会影响其它程序运行。

  站长认为,越是中断程序,就要越写得简短,最好几条指令就立即结束,对于动态扫描显示、按键功能等等可以写在主程序中让程序不停的反复运行,如果中断多,最大的坏处就是影响到主程序运行时间不够,扫描显示会出现闪烁,或者按键反应变慢(一般觉察不出),可是,这又有另一好处,你可以随时改良程序并且立即看到结果。
  LED动态扫描显示是分时点亮各个LED,利用人的视觉暂留特性,让人觉得是连续点亮。当点亮的频率高时,说明单片机有充足的时间运行主程序。

  最后补充:
  1、这个电子钟程序认认真真的写了半个多月,全部用汇编语言写成,写一个程序真不简单。因此,本源程序需要花68元价格购买。但是,本程序的思路以及部分片断会在网上公开,请大家谅解,因为本站还要靠这个程序赚钱。
  2、本程序尚未最后完工,因为现在必需要求不掉电才能保存时间以及设置状态。由于STC1052(2052)芯片具有IAP功能,不需外接EEEPROM就可以停电永久保存时间,一年后我打算继续完成这个程序,因为现在写得太累了,或者,以后,站长会了C语言,就方便写这个程序了。
  3、本电子钟对于学单片机是有帮助的,大家购买后可以自己重新写程序也行,相信,很多人会写得更好,功能更强,效果更好,因为,对于站长来说,单片机技术毕竟是只会点皮毛。

更多详情:http://www.51dz.com/s.asp?id=kjf888

点击此处查看原文 >>

系统分类: 自由话题   |    用户分类:    |    来源: 原创

评论(0) | 阅读(589)
发表于:2008-3-29 15:02:00
标签:无标签

0

(超值)---低价AT51编程板

 

本编程板的功能和使用方法完全等于本站

  本编程板主要不同点在于全新的设计,绝对是本站原创板图,并且降低了成本,改成了单面板,有利于电子爱好者自行修改利用扩充等(双面板做的东东等于是个黑匣子,元件想拆都拆不下来)。

  另外,本站在电路设计方面更是别具一格,采用全新的12V编程电压产生控制电路,大家可以看到,该板和网上其它板相比,不但看见少了个IC,连晶振也看不见了,总之,这正是本站编程板的独特神奇之处!

  另外,本站编程板采用了最新的增强功能的STC89C51芯片做监控芯片,元件可以大量减少,图中看到的元件已经很少了,不过,再取掉3个电阻也能正常工作!本站多装3个电阻,主要原因是为了外观漂亮,不要让大家觉得元件太少了。

  这款电路板是站长亲自设计改良的,电路方面的改动,是站长十多年应用经验的一种应用,大家只要买回了这块板,就会知道站长是如何产生和控制12V编程电压的。

 另外,由于本站的12V编程电压的产生和控制方法完全不同于以前的产生方法(以前的板是通过MAX232的引脚整流得到的),并且增加了保护电路,烧录更稳定更可靠。

  另外,大家看到本板上有四根铜针插座,那分别是GNDTxRx+V四根线,应用这四根线还可以结合本站的STC实验板用以及别站的其它实验板用,也还可以对其它公司(例如SST公司)的产品进行编程,甚至可以自己制作硬件仿真器。

  总之,牛皮现在就不吹了,大家买了先看看再用用就知道了。一张光盘、一张USB线、一张串口线加上本板共计68元整。

--------------------------------------------------------------------------------

  Easy51pro编程器请大家用本站的低价68元编程器完全取代、真接取代(不需做任何更改,软件一样,操作一样!)可以烧录Atmel公司系列单片机芯片,具有性能稳定,烧录速度快,性价比高等优点。产品性能介绍如下:

一、支持的芯片型号

  支持目前最为经典和市场占有量最大的ATMEL公司生产的AT89C51C52C55和最新的S51S52AT89C105120514051等芯片。特别适合于渴望学习51单片机又想尽量减小学习投入的网友。毕竟51系列早已经成为了工业标准,学习51单片机,使一切都在单片机的控制下变得智能化,是每一个爱好者和发烧友的梦想!

  89C51是目前市场占有率第一的单片机芯片,华邦等公司都在以每天万片的规模大量生产和AT公司完全兼容的51系列芯片,所以网友们不用担心它的货源问题。AT公司退出生产转而生产S51系列是为了增加自己产品的竟争力,而本编程器可以完美的支持S51系列。

二、产品特点

1.使用串口通讯,芯片自动判别,编程过程中的擦除、烧写、校验各种操作完全由编程器上的监控芯片89C51控制,不受PC配置及其主频的影响,因此烧写成功率高可以达到100%,烧写速度很快并且烧写速度和微机的档次无关。

2.采用57600高速波特率进行数据传送,编程速度可以和一般并行编程器相媲美,经测试,烧写一片4K ROMAT89C51仅需要9.5S,而读取和校验仅需要3.5S

3.体积小巧,省去笨重的外接电源适配器,直接使用USB端口5V电源, 携带方便,非常初学者学习51单片机的要求。

4.软件界面友好,菜单、工具栏、快捷键齐全,全中文操作,提供加密功能,可以保护您的创作产权。可以说是麻雀虽小,五脏俱全!

5.功能完善,具有编程、读取、校验、空检查、擦除、加密等系列功能;

6.40pin20pin锁紧插座,所有器件全部以第一脚对齐,无附加跳线,对于DIP封装芯片无需任何适配器;

7.采用优质万用锁紧插座,和接触不良等问题彻底说再见,可烧写40脚单片机芯片和20脚单片机芯片

8.改进的烧写深度确保每一片C51系列芯片的反复烧写次数都能达到1000以上!内部数据至少保存10年。

9.因为采用了9针传口通讯,这样一来就不会再和打印机抢一个打印口,随时随地想烧就烧,让芯片编程成为一种快乐!

三、硬件连接

1.通讯电缆与编程器连接好,

2.将串口插头插入电脑串口,

3.USB插头插入电脑任一个USB口,此时编程器上LED点亮,表明电源接通。

4.接着安装软件,本软件支持Win9x/me/2000/NT,标准Window操作界面。本软件属于绿色软件,不需要安装,直接把相关的软件拷贝到硬盘中,运行其中的Easy 51Pro 2_0程序即可。

四、软件使用

  程序启动后,会自动检测硬件及连接,状态框中显示就绪字样,表示编程器连接和设置均正常。否则请检查硬件连接和端口设置。

  把单片机芯片正确地放到编程器的相应插座上,注意,芯片的缺口要朝向插座的把手方向。

  芯片放好后,就可以对芯片进行读写操作了,读写操作按下面的步骤进行:

1、程序运行,请先选择器件(点下选框)

2、用打开文件选择打开要编写的.HEX .BIN 文件

3、用保存文件可以保存读出来的文件

4、用擦除器件擦除芯片

5、用写器件编程

6、用读器件读取芯片中的程序,加密的读不出来

7、用校验数据检查编程的正确与否

8、用自动完成自动执行以上各步骤

9、用加密选择加密的级数

详情请访问http://www.51dz.com/s.asp?id=1760&i=kjf888

Easy51pro编程器的功能,就连使用方法和软件光盘都是一模一样的。因此请大家最后看看Easy51pro编程器的介绍。

点击此处查看原文 >>

系统分类: 工业控制   |    用户分类:    |    来源: 原创

评论(0) | 阅读(162)
发表于:2008-3-29 14:57:13
标签:无标签

1

单片机课程体系改革总体规划

 


第一部份:入门


一、 单片机的基础知识


1、 微型计算机与单片机


1) 微型计算机的构成


2) 单片机的由来


3) 人与计算机的关系


2、 数制


1)十、二、十六进制概念


2)以上数制互换


3)常用单位(K、M)


3、几个基本概念


1) 位的含义

2) 字节的含义

3) 字的含义

4) 总线概念初步

二、 任务一(单灯闪烁)
1、 单片机引脚功能

1) 电源引脚和EA引脚。

2) RST引脚及RESET电路

3) 晶振引脚及晶振电路

2、 指令初步知识

1)SETB 、CLR、LCALL、LJMP 指令

2)标号的应用

3)指令的助记符形式与目标代码形式

3、 编程器的使用

4、 存储器组织

三、 任务二(键控灯亮)
1、 指令的继续学习

2、 输入、输出的含义

3、 并行口的结构

1) P1、P2、P3口的结构

2) P0口的结构

四、 任务三(彩灯)

1、 指令的继续学习

2、 片内RAM组织

3、 工作寄存器组织

第二部份:巩固提高

一、 指令的全面认识

1、 寻址方式

2、 所有指令

3、 编程

1) 实例讲解

2) 软件仿真器

3) 软件仿真器调试

二、 任务四(定时器)

1、 定时器结构

2、 定时器工作方式

3、 定时器编程

三、 任务五(中断)

1、 中断结构

2、 中断编程

1) 按键中断

2) 定时中断

四、 任务六(串口应用)

1、 串口结构

2、 串口编程

1) 同步扩展(74LS164)

2) 异步通讯

第三部份:提高

一、 任务七(外部ROM、RAM扩展)
二、 任务八(并行口扩展)
三、 综合应用(一)

1、 LED显示器编程

1)

2)定时器法

2、 键盘编程

四、 综合应用(二)

1、 时钟应用

2、

以上是初步的规划,当然还只是设想,是否合理尚需实践检验。

成功的若干关键:能否合理分解各部份知识点,能否将它们恰当地组合在一个任务中,能否不断保持学习的兴趣,能否找到大量的、确切、形象的比喻,能否编制出内容、难度恰当的习题……

难点应当在编程训练上,要将一个从未有任何编程经验的人训练成能熟练地编程,决非易事,当然这有点超过我们的范围了——程序概念和常用算法应当是在BASIC学习时解决的,但事实上很多人在学单片机时,早就忘光了BASIC的,所以任务很艰巨,说实话,这是我最没信心的部份。

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 无分类

评论(0) | 阅读(215)
发表于:2008-3-29 14:55:51
标签:无标签

1

走向单片机世界

 

大小[2533] 更新时间[2006-7-1] 阅读[3298]次/评论[0]次  欢迎度[ 555]


   当今大家对计算机已经不陌生了。从铺天盖地的计算机学习班广告到有关任职必须具备计算机知识的通知,已经使我们自觉不自觉地进入了计算机的世界。但是还有一类计算机我们可能并不熟悉,它就在我们面前,这就是单片机。单片机顾名思义就是将计算机集成到一个芯片上,正因为如此,它已经深入到电饭堡:洗衣机、录象机、电话、汽车、火车、飞机、火箭、医疗器械等各个地方,甚至在微机里也有单片机在默默地工作。因此了解单片机的工作原理、掌握它的使用方法就成了十分有意义的事情。本刊从本期开始,系统地、通俗地介绍这方面的知识。

一、从晶体管到单片机

   为了有个对比,在搭乘单片机列车之前,先回顾一下我们已经熟悉的传统的电子世界。在传统的电子世界里,电子管已经退役多时了,虽然现在“胆机”在音响发烧友中间又流行起来,但是在控制领域电子管已经远远的离开了舞台,我们不再花时间讨论。晶体管是电子爱好者们熟悉的器材,我们对于二极管的整流原理和三极管的放大原理非常熟悉,但是对于它们所构成的逻辑电路是否也很熟悉呢?我们不妨共同做一简要复习。

   用二极管构成的与门电路,它是怎样工作的?读者不妨自己先叙述一下,看看我们想的是否相同。当A和B都接到地时,C端由于两个二极管都导通,二极管的导通压降是很小的,可以近似认为是0伏,也就是处于低电平。当A接地,B接到+5V时,C端没有发生根本变化。这是因为二极管D1的导通使C点仍为低电平,B点虽然接到+5V, 但是D2未导通,所以C点仍为低电平。当A接十5V,B接地 时情况同样如此。只有A和日同时接到+5V时,两只二极管都不导通了,此时C点升到+5V。

   结论是: 与门电路的输入端只有一个接低电平,输出就为低电平,只有全部输入都为高电平时,输出才为高电平。简单说就是:A为高“与”B为高,输出才为高。把电路改变一下接法就构成了或门电路,工作原理 不再赘述,只把结论写在这里: 或门电路的输入端只要有一个接高电平,输出就为高电平, 只有输入端全部接低电平时,输出才为低电平。简化为:A为高 “或”B为高,输出就为高。

   还有一种“非”门电路:当输入为高时,输出为低;当输入为低时,输出为高。用一个三极管就可以构成非门电路。当三极管的基极输入为高电平时三极管饱和,集电极输出近似为0V也就是低电平;反之,当基极接低电平时三极管截止,集电极输出接近+5V为高电平。输入和输出总是相反,故称之为非门。

   与、或、非电路是逻辑电路的基本形式。由理论可知:
   一切逻辑电路都可以通过这三种基本逻辑电路的组合形成。在逻辑电路中为了突出电路之间的逻辑关系,不再关心是用什么器件产生的逻辑关系,也不考虑电路的输入是接到三极管的基极还是接到二极管的阳极,而是用一个逻辑符号表示之间的联系。三种基本逻辑电路对应的符号标在图的下部。

   随着技术的进步和社会发展的需要,直接由三极管构成逻辑电路在体积和功能上已经不能满足需要了,于是产生了集成电路。早期集成电路----一片芯片集成了几个或几十个晶体管,称之为小规模集成电路。后来集成度提高到几百,几千个晶体管, 称之为大规模集成电路,现在一个芯片可以集成相当于几十万、几百万或更多的晶体管称为超大规模集成电路。这样从电子管时间算起,电子电路经历了四代变迁。

   从集成电路来看,比晶体管在性能上有极大提高,体积大 大缩小、功能也更加完善,单以74类门电路为例就有LLS、HC等不同系列,每个系列都有几百个品种。用它们可以组合出各种各样的电路。逻辑集成电路的出现为逻辑电路的广泛应用打下了基础。

   逻辑电路可以分为两种类型:组合电路和时序电路。 像上面介绍的单个与、或、非门电路就属于“组合电路”。 这类电路的特点是:输出状态跟随输入状态变化,输入状态一旦发生变化,输出立即改变。并且输出状态和输入状态一一对 应:每一种输入状态对应唯一的输出状态。

   另一类逻辑电路称“时序电路”;这类电路的输出不但和当时的输入状态有关,还与以前的状态有关。计数器就是一种典 型的时序电路。计数器的输入端每接受一个脉冲,输出端的状态就发生一次变化,并且输出的状态是与前一次状态有关的。以 74LS161为例,这个集成电路有一个时钟输入端、四个输出端和一些辅助端。当按器件规定接好线路后,在时钟端每输入一个脉冲,输出状态就变化一次。最初清零后四个输出端QA、 QB、QC、QD均为0。第一个脉冲到来后QA=1,其余输出仍为0。第二个脉冲到来后QA=0、QB=1,其余为0。依次输入脉冲。

   可以看到从同一个输入端进入信号,输出却有不相同变化。 计数器的应用非常广泛。将前端接上机械开关或光电开关就可作为流水线产品计数;把标准时间脉冲作为输入,就可以作为精确的定时器。

  因为栏目所限,基础部分不能写的很多、很细,那些知识可以由三极管原理、数字电路知识等类似的学习材料得到,不能完全包含在本栏目的范围内。同样原因,对于单片机的原理也不会是全面的、系统的讲解,而是从使用者的角度,将最基本、最常角的内容做一简单介绍,达到“人门”的目的。

   预计通过阅读这个栏目,配合基本练习,可以掌握单片机的基本知识;学会使用单片机的基本方法;能够进行简单程序(几十行)的阅读;基本程序(上百行)的编写,为进一步深造打下基础。需要强调的一点是:计算机(自然包括单片机)是实践性很强的一门技术。一定要通过实践来理解基本原理,至少要将文中介绍的实验亲手实践一遍,最好举一反三用自己编写的程序验证所学习的知识。到底情况如何,可以通过实践体会一下。 如果真的还有什么困难,我也愿和大家一起克服,共同进入单片机世界。

   在本次驶往单片机世界的列车即将启动的时候,请旅客检查一下:自己希望乘座的列车车次、日期、方向是否和本车相符,如果有误请及时更换,以免延误您的行程。

点击此处查看原文 >>

系统分类: 电子制造   |    用户分类:    |    来源: 转贴

评论(0) | 阅读(250)
发表于:2008-3-29 14:54:08
标签:无标签

0

实践-----单片机制作流水灯

 

流 水 灯

  学习了一段时间,有了一定经验的朋友,肯定会觉得不过瘾,老是纸上谈兵,点个LED有什么用?能不能来点实际点的。好的,我们就安排一点实际一点的,这次是点亮真的电灯了,不过要注意安全,莫要发生触电事故,另外这次要用到双向可控硅了,强电没接触过的朋友,先预习吧,正好我要花点时间准备一下了。

  上传啦,是一块线路板图,单面板,红线代表跳线。没有原理图,简单地说一下吧。A17是一个8芯的插针,可以用它与单片机的P1口相连,记得我上传的板子吗?在P1口接LED前也有一个8芯插座的位置,装上去,用一根8芯扁平电缆相连就行了,记住,两块板子要用一只电源,也就是要共地。板上用的器件,如果用外接5V电源,那么D1、D2、D3、D4及C1、C2、C3、C4、C5、C6及T9(7805)、A18(散热器)均不需要装,如果用外接交流电,则将它们装上去,A26是一插座,可以用来向单片机板供电。

点击看大图

  IC1到IC8上使用交流光耦,型号为MOC3020,注意,MOC3020是6脚封装,由于没有找到6脚的插座,所以全是用的8脚的插座,插时最上两只不用,即靠插座底安装,R9——R16是限流电阻,470殴,1/4W,金属膜。R1——R8是限流电阻,330殴,1/2W,金属膜。T1——T8是晶闸管(可控硅),型号是BTA06-800C,用ST的比较好,6安培,800V电压,加上合适的散热片后,带500W以内的负载应没问题。A1-A8是相应的散热片的位置,我用的散热片比较小,因为只带灯,又是间隙亮,所以问题不大。P1——P5是接线端子。根据各人条件去买吧——也用不着菲尼克斯的,哈哈。

  好了,一切装好,OK了,通电吧,当心,再次提醒大家,小心触电哦。电源一端接P2,另一端接到P3——P5,负载则一端接P3——P5中的一个(它们都是连着的),另一端则接P1的八个输出端子之一。

  至于软件,就自已编了,原来让LED怎么亮的,现在改成了让电灯亮,如此而已。

  有了这么一个东东,其实也可以让它和PC机接起来,让PC机来做流水灯或做更多的事情,顺便上传一个文件给大家玩玩,我用C++ BUILD编的,只有玩的价值,没什么用途。就是用它来控制计算机的打印接口,输出高或低电平而已。大家可以去电脑商场买一根并口电缆(不是打印电缆,是两端都可以和计算机相连的那种),载去一头,把它的八根数据线接到A17的八个输入端,然后将地线相连,就可以演示了,放心,板子是光耦隔离的,不会对计算机造成伤害。

点击此处查看原文 >>

系统分类: 软件开发   |    用户分类:    |    来源: 无分类

评论(0) | 阅读(252)
发表于:2008-3-29 14:52:17
标签:无标签

1

单片机MCS-51系列指令快速记忆法

 

      随着微电子技术和超大规模集成电路技术的发展,单片微型计算机以其体积小、性价比高、功能强、可靠性高等独有的特点,在各个领域(如工业控制、家电产品、汽车电子、通信、智能仪器仪表)得到了广泛的应用。学习、使用单片机的人越来越多,而生产单片机的厂家很多,单片机种类繁杂,不知如何选择。据统计,八位单片机占全球单片机销量的65%。在八位单片机中,Intel公司的8051单片机内核已成为8位单片机事实上的标准。因此,对初学者而言,选择8051单片机来学习不失为明智的选择。
   学习单片机,除了搞清单片机内部功能、存储空间分配及I/O接口外,还应掌握其指令系统。MCS-51共有111条指令,现介绍我们总结出的快速记忆MCS-51指令的方法,供大家参考。
   大家都知道,汇编语言指令由操作码、操作数两部分组成。MCS-51使用汇编语言指令,它共有44个操作码助记符,33种功能,其操作数有#data、direct、Rn、@Ri等。这里先介绍指令助记符及其相关符号的记忆方法。
一、助记符号的记忆方法
   1 表格列举法
   把44个指令助记符按功能分为五类,每类列表记忆。此处从略,请读者自己总结。

  2 英文还原法
   单片机的操作码助记符是该指令功能的英文缩写,将缩写还原成英语原文,再对照
汉语有助于理解其助记符含义,从而加强记忆。例如:
增量 INC-Incremect  减量 DNC-Decrement
短转移 SJMP-Short jump  长转移 LJMP-Long jump
比较转移 CJNE-Compare jump not equality 
绝对转移 AJMP-Absolute jump 空操作 NOP-No operation
交换 XCH-Exchange    加法 ADD-Addition
乘法 MUL-Multiplication  除法 DIV-Division
左环移 RL-Rotate left  进位左环移 RLC-Rotate
                    left carry
右环移 RR-Rotate right  进位右环移RRC-Rotate
                    right carry
   3 功能模块记忆法
   单片机的44个指令助记符,按所属指令功能可分为五大类,每类又可以按功能相似原则为2~3组。这样,化整为零,各个击破,实现快速记忆。
   1)数据传送组。      2)加减运算组
    MOV 内部数据传送    ADD 加法
    MOVC 程序存储器传送   ADDC 带进位加法
    MOVX 外部数据传送    SUBB 带进位减法
   3)逻辑运算组。      4)子程序调用组。
    ANL 逻辑与         LCALL 长调用
    ORL 逻辑或       ALALL 绝对调用
    XRL 逻辑异或       RET 子程序返回

  二、指令的记忆方法
   1 指令操作数的有关符号
   MCS-51的寻址方式共有六种:立即数寻址、直接寻址、寄存器寻址、寄存器间址、变址寻址、相对寻址。我们必须掌握其表示的方法。
   1)立即数与直接地址。 ata表示八位立即数,#data16表示是十六位立即数,data或direct表示直接地址。
   2)Rn(n=0-7)、A、B、CY、DPTR寄存器寻址变量。
   3)@R0、@R1、@DPTR、SP表示寄存器间址变量。
   4)DPTR+A、PC+A表示变址寻址的变量。
   5)PC+rel(相对量)表示相对寻址变量。
   记住指令的助记符,掌握不同寻址方式的指令操作数的表示方法,为我们记忆汇编
指令打下了基础。MCS-51指令虽多,但按功能可分为五类,其中数据传送类28条,算术
运算类24条,逻辑操作类25条,控制转移类17条,布尔位操作类17条。在每类指令里,
根据其功能,抓住其源、目的操作数的不同组合,再辅之以下方法,是完全能记住的。
我们约定,可能的目的操作数按(#
data/direct/A/Rn/@Ri)顺序表示。
   对于MOV指令,其目的操作数按A、Rn、direct、@Ri的顺序书写,则可以记住MOV的
15条指令。例如以累加器A为目的操作数,可写出如下4条指令。
   MOV A,#
data/direct/A/Rn/@Ri
   以此类推,写出其它指令。
   MOV Rn,#data/direct/A
   MOV direct,#
data/direct/A/Rn/@Ri
   MOV @Ri,#data/direct/A
   2 指令图示记忆法
   图示记忆法是把操作功能相同或相似、但其操作数不同的指令,用图形和箭头将目的、源操作数的关系表示出来的一种记忆方法。例如:由助记符MOV、MOVX、MOVC组成的送数组指令,可以用图1、2帮助记忆。
   由助记符CJNE形成的四条指令,也可以用图示法表示,如图3。
CJNE A,#data,rel   CJNE A,direct,rel
CJNE @Rn,#data,rel CJNE @Ri,#data,rel
   另外,对于由(ANL、ORL、ARL)形成的18条逻辑操作指令,有关A的四条环移指令,也可以用图示法表示,请读者自行画出记忆。
   3 相似功能归类法
   在MCS-51指令中,我们发现部分指令其操作码不同,但功能相似,而操作数则完全一样。相似功能归类法就是把具有这样特点的指令放在一起记忆,只要记住其中的一条,其余的也就记住了。如加、减法的十二条指令,与、或、非的十八条指令,现列举如下。
   ADD/ADDC/SUBB A,#
data/direct/Rn/@Ri
   ANL/ORL/XRL A,#data/direct/Rn/@Ri
   ANL/ORL/XRL direct,#data/a
   上述每一排指令,功能相似,其操作数都相同。其它的如加1(INC)、减1(DEC)指令也可照此办理。
   4 口诀记忆法
   对于有些指令,我们可以把相关的功能用精练的语言编成一句话来记忆。如PUSH direct和POP direct这两条指令。初学者常常分不清堆栈SP的变化情况,为此编成这样一句话:(SP的内容)加1(direct的内容)再入栈,(SP的内容)弹出(到direct单元)SP才减1。又如乘法指令中积的存放,除法指令中被除数和除数以及商的存放,都可以编成口诀记忆如下。
   MUL AB  高位积(存于)B,低位积(存于)A。
   DIV AB  A除以B,商(存于)A余(下)B。
   上面介绍了几种快速记忆单片机指令的方法,希望能起到抛砖引玉的作用,相信读者在学习单片机的过程中能找到适合自己的方法来记忆。但是,有了好的方法还不够,还需要实践,即多读书上的例题和别人编写的程序,自己再结合实际编写一些程序。只有这样,才能更好更快地掌握单片机指令系统。

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(172)
发表于:2008-3-29 14:50:30
标签:无标签

2

单片机名词解释

 

总线: 指能为多个部件服务的信息传送线,在微机系统中各个部件通过总线相互通信。
地址总线: 它是传送由CPU发出的用于选择要访问的器件或部件的地址。

数据总线: 它是用来传送微型机系统内的各种类型的数据。
汇编: 是能完成一定任务的机器指令的集合。
二进制数: 只有0和1两个数码,基数为二。
16进制数: 采用0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F等16个数码,其中A-F相应的十进数为10-15,基数是16。
指令: 是计算机所能执行的一种基本操作的描述,是计算机软件的基本单元。
存储器: 用来存放计算机中的所有信息:包括程序、原始数据、运算的中间结果及最终结果等。
暂存器: 用来暂存由数据总线或通用寄存器送来的操作数,并把它作为另一个操作数。
中断: 中断是单片机实时地处理内部或外部事件的一种内部机制。当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。
掉电保护: 指在正常供电电源掉电时,迅速用备用直流电源供电,以保证在一段时间内信息不会丢失,当主电源恢复供电时,又自动切换为主电源供电。
RAM 随机存取存储器: 主要用来存放各种输入数据、输出数据、中间结果、最终结果以及与外存交换的信息等,当掉电后,RAM中所存储的信息都将消失。
ROM 只读存储器: ROM 通过特别手段可将信息存入其中,并能长期的保存被存储的信息,一般的情况,CPU只能对它进行写入操作,当断电后,ROM中所存储的信息不会消失。
寄存器寻址: 操作数在寄存器中,由指令操作码中的rrr三位的值和PSW中RS1及RS0的状态,选中某个工作寄存器区的某个寄存器,然后进行相应的指令操作。
波特率: 即每秒钟传送二进制数的位数, 波特率越高,数据传输的速度越快。
UART 通用异步接收器/发送器: 用于数据的串/并转换,硬件UART由三部分组成:接收部分、发送部分和控制部分,接收和发送都具有双缓冲结构。
D/A转换: 即将二进制数量转换成与其量值成正比的电流信号或电压信号。
A/D转换: 即将模拟量转换成相应的数字量,然而送计算机处理。
EPROM存储器:紫外光擦除的EPROM 它的基本存储电路由一个浮栅雪崩注入 MOS 管和一个普通 MOS 管组成。其中浮栅雪崩注入 MOS 管作为存储器用,另一个普通 MOS 管作为地址选择用。
EEPROM存储器:电擦除可编程 EEPROM :它的某些型号编程和擦除可在普通电压下进行,另外,它是实行在线操作的,既在写入一个字节的数据之前,自动的对要写入的单元进行擦除。
串行方式: 指数据的各位分时传送,只需一条数据线,外加一条公共信号地线和若干条控制信号线。
并行方式: 指数据的各位同时传送,每一条数据都需要一条传输线。
伪指令: 用于告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不被汇编成机器代码,只能为汇编程序所识别并指导汇编如何进行。
SLEEP MODI 睡觉模式: 保证程序内部运行,但与外部的传输等动作已停止的一种运行模式。
linking 连接: 把编译后生成的 *.obj 文件与其它 *.obj文件合并成机器能识别的机器文件。
I2C:输入与输出共用一条传输线,而时钟由另一条线控制的一种串行传输方式。
SFR 特殊功能寄存器区: 8051 把 CPU 中的专用寄存器、并行端口锁存器、串行口与定时器/计数器内的控制寄存器集中安排到一个区域,离散地分布在地址从 80H 到 FFH 范围内,这个区域称为特殊功能寄存器区 SFR.

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 无分类

评论(0) | 阅读(153)
发表于:2008-3-29 14:43:40
标签:无标签

2

为什么51系列单片机常用11.0592MHz的晶振设计

 
 
 

1、因为它能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)量常见的波特率相关。特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被使用的。

2、当定时器1被用作波特率发生器时,波特率工作于方式1和方式3是由定时器1的溢出率和SMOD的值(PCON.7------双倍速波特率)决定:

方式1、3波特率= (定时器1的溢出率)

特殊时,定时器被设在自动重装模式(模式2,TMOD的高四位为0100B),其为:

方式1、 3波特率=

11.0592MHZ晶振的一些典型波特率如下:

波特率
SMOD
TH1
19200
1
0FDH
9600
0
0FDH
4800
0
0FAH
2400
0
0F4H
1200
0
0E8H
300
0
0A0H
更换一种计算方式,它将以修改公式达到我们需求的波特率来计算出晶振。
  最小晶振频率=波特率x 384 x 2 SMOD
这就是我们所需波特率的最小晶振频率,此频率能成倍增加达到我们需求的时钟频率。
例如:波特率为19.2KH2的最小晶振频率:
  3.6864=19200x384x2(波特率为19.2K的SMOD为1 )
  11.0592=3.6864x3
其中TH1是由倍乘数(3)确定
  TH1=256-3=253=0FDH
用来确定定时器的重装值,公式也可改为倍乘数的因子:
  晶振频率=波特率x(256-TH1)x384x2 SMOD,这是波特率为19.24K的晶振频率。
以上的例子可知,被乘数(3)是用来确定TH1:
  TH1=256-3=253=0FDH
19.2K波特率的晶振为:
  11.0592=19200x(256-0FDH)x384x2(19.2 k的SMOD为1)

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 整理

评论(0) | 阅读(722)
发表于:2008-3-29 14:42:01
标签:无标签

2

Keil C 调试心得

 
 

我们使用Keil C调试某系统时积累的一些经验:

1、由于Keil C对中文支持不太好,因而会出现显示的光标与光标实际所在不一致的现象,这会对修改中文注释造成影响。在Windows2000下面,我们可以把字体设置为Courier,这样就可以显示正常。

2、当使用有片外内存的MCU(如W77E58,它有1K片外内存)的时候,肯定要设置标志位,并且编译方式要选择大模式,否则会出错。

3、当使用Keil C跟踪程序运行状态的时候,要把引起Warning的语句屏蔽,否则有可能跟踪语句的时候会出错。

4、在调用数组的时候,Keil C是首先把数组Load进内存。如果要在C中使用长数组的时候,我们可以使用code关键字,这样就实现了汇编的DB的功能,Keil C是不会把标志code的数组Load入内存的,它会直接读取Rom。

5、当编程涉及到有关通信,时序是很重要的。拉高管脚的执行速度远远比检查管脚电平的要快。

6、在等待管脚电平变化的时候,我们需要设置好超时处理,否则程序就会因为一个没有预计的错误而死锁。

7、能用C语言实现的地方,尽量不要用汇编,尤其在算法的实现,用汇编是晦涩难懂。

8、程序的几个参数数组所占篇幅很大,其中液晶背景数组最长,有四千个Byte,因而把那些初始化数组都放在另外一个C文件,在主文件使用使用关键字extern定义,这样就不会对主文件的编写造成干扰。

9、所有函数之间的相关性越低越有利于以后功能的扩展。

10、6.20版在编译带code关键字的数组时,编译通过但是单片机运行结果是错误的,改用6.14版后正常。

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(179)
发表于:2008-3-29 14:40:10
标签:无标签

0

51单片机使用点滴

 
 
 
  8051单片机是我们最常见的一种单片机,我用8051已经很久了,也教过一段时间的单片机课程,在这里把自己的心得与大家分享一下。

一、硬件部分
  • 一定要记得接晶振和复位电路。很多学生在Proteus上仿真成功后,焊板子的时候总是不记得把晶振和复位电路接上,这样板子是不会工作的。
  • 一般没有特殊要求的话,选用11.0592MHZ的晶振。这样有利于得到没有误差波特率。特别是当与PC机进行通信的话,选用这种晶振比较好。
  • 复位电路的电容可以选择10uF或者22uF。如果是10uF的话,充电电阻R的值要高于4K欧姆,如果你的单片机工作速度很慢,可以选择8.2K欧姆。
  • 每个大规模的数字IC旁边都要放一个0.1uF的电容(一端接电源,一端接地)来去除高频的干扰。
  • 在板子上最好做一个ISP下载座子与单片机相连,这样调试改写程序的时候就不用把单片机拔来拔去的,调试的周期也可以缩短。
  • 目前比较好用的51单片机有ATMEL公司的AT89S系列、SST公司的SST89系列,现在新出现一个公司的好51单片机,价格更便宜,听说性能也不错,就是STC系列单片机

二、软件部分

  • 能用C语言开发就用C语言,这样开发速度比较快,而且代码也比较容易维护。
  • 将你常用的芯片的服务编成函数库,这样就能重复利用了,降低开发的周期。
  • 善于利用KEIL C51的开发环境与PROTEUS仿真环境的联合调试,可以降低开发的成本。
  • 平常多做设计练习,多学多看,尤其要多多地收集别人公开的驱动源程序,这样可以在设计的时候少写很多代码。
  • 设计完成后,要结合电路图和代码写出设计说明书,这样可以很好地保存自己的设计思路,对以后维护设计和移植设计都是很有好处的。
  • 多看看《软件工程》和《数据结构与算法》,提高自己代码的可重用能力。
  • 好的程序员是热爱程序的程序员,把你编写的每个源代码文件都加上自己的名字和版权说明,在能保护自己的知识产权的同时,也是对自己的一种激励。
  • 大一点的设计都要写出数据词典,这样在用变量、写功能的时候就不会晕头转向。

点击此处查看原文 >>

系统分类: 工业控制   |    用户分类:    |    来源: 无分类

评论(0) | 阅读(232)
23下一页总共 , 当前 /