手把手学单片机一个小时学会

上传人:枫** 文档编号:490138137 上传时间:2022-12-22 格式:DOCX 页数:18 大小:779.66KB
返回 下载 相关 举报
手把手学单片机一个小时学会_第1页
第1页 / 共18页
手把手学单片机一个小时学会_第2页
第2页 / 共18页
手把手学单片机一个小时学会_第3页
第3页 / 共18页
手把手学单片机一个小时学会_第4页
第4页 / 共18页
手把手学单片机一个小时学会_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《手把手学单片机一个小时学会》由会员分享,可在线阅读,更多相关《手把手学单片机一个小时学会(18页珍藏版)》请在金锄头文库上搜索。

1、手把手学单片机(1)第一个试验:点亮一个发光管一、单片机的外部结构拿到一块芯片,想要使用它,首先必须要知道怎样连线,我们用的一块称之为89C51的芯片,下面我们就 看一下如何给它连线。1、 电源:这当然是必不可少的了。单片机使用的是5V电源,其中正极接40引脚,负极(地)接20引 脚。2、振蒎电路:单片机是一种时序电路,必须提供脉冲信号才能正常工作,在单片机内部已集成了振荡器, 使用晶体振荡器,接18、19脚。只要买来晶振,电容,连上就可以了,按图1接上即可。3、复位引脚:按图1中画法连好,至于复位是何含义及为何需要复要复位,在单片机功能中介绍。4、EA引脚:EA引脚接到正电源端。至此,一个单

2、片机就接好,通上电,单片机就开始工作了。当然:您并不一定完全需要一片89c51,实际上我们用8051系列的任何一种芯片都是可以的。例如89s5 1,89c52 等等。目此主题相关图片如下:FFFFFFFF80310 1 2 3 4 5 6 7I NT0I NT 1 T0T 1X 13 83 73 63 5343 33 22 1222 324252 6272S1 01 1390 1 2 3 4 5 6 70二W0 0 0 _w 0 0 PPPPPPPP0 1 2 3 4 5 6 72 2 2 2 2 2 2 2 PPPPPPPPD RR WD D0Llu-二、任务分析我们的第一个任务是要用单片机

3、点亮一只发光二极管LED,显然,这个LED必须要和单片机的某个引脚相 连,否则单片机就没法控制它了,那么和哪个引脚相连呢?单片机上除了刚才用掉的5个引脚,还有35 个,我们将这个LED和1脚相连。(见图1,其中R1是限流电阻)按照这个图的接法,当1脚是高电平时,LED不亮,只有1脚是低电平时,LED才发亮。因此要1脚我们 要能够控制,也就是说,我们要能够让1引脚按要求变为高或低电平。即然我们要控制1脚,就得给它起 个名字,总不能就叫它一脚吧?叫它什么名字呢?设计51芯片的INTEL公司已经起好了,就叫它P1.0, 这是规定,不可以由我们来更改。名字有了,我们又怎样让它变高或变低呢?叫人做事,说

4、一声就可以,这叫发布命令,要计算机做事, 也得要向计算机发命令,计算机能听得懂的命令称之为计算机的指令。让一个引脚输出高电平的指令是SE TB,让一个引脚输出低电平的指令是CLR。因此,我们要P1.0输出高电平,只要写SETB P1.0,要P1.0 输出低电平,只要写CLR P1.0就可以了。现在我们已经有办法让计算机去将P1.0输出高或低电平了,但是我们怎样才能计算机执行这条指令呢?总 不能也对计算机也说一声了事吧。要解决这个问题,还得有几步要走。第一,计算机看不懂SETB CLR之 类的指令,我们得把指令翻译成计算机能懂的方式,再让计算机去读。计算机能懂什么呢?它只懂一样东 西一一 字。因

5、此我们得把SETB P1.0变为(D2H,90H ),把CLR P1.0变为(C2H,90H ),至于为什 么是这两个数字,这也是由51芯片的设计者-INTEL规定的,我们不去研究。第二步,在得到这两个数字 后,怎样让这两个数字进入单片机的内部呢?这要借助于一个硬件工具编程器。当然,如果您使用我们 的倚天版开发套件或者xp开发套件,那么编程器和试验板都有了,只需要编程序就可以了。这里是我们迈出单片机编程的第一步,别看很简单可是却对于您有重要的意义,没错,您在编程序了:(打 开我们前面介绍的uvw51e中文版;参照它的使用方法;写入程序.TF-Gision/51 - 001LED. PBJ -

6、001LED. i罔 文件 编辑 迥项目 运行 担窟wn clr p1.址end我们把它的名字设为:001led.最后把生成的001led.hex烧入我们的倚天版套件配的89s51里面 然后把芯片换到试验卡座里,这时候我们可以看到p1.0这个灯亮了。看这个图片就是我们的51单片机万能实验板开发套件P1.0-P1.7的8个灯 注意他是可以通过旁边的一排开关切换端口外接的哦。这时可能有的朋友会问;这么简单的问题,为啥要用单片机搞得这么复杂?接一个电池,灯不就亮 了?没错,但是这是在编程序,如果我们不要pl.O亮。而是要p2.0亮,那么写入clr P2.0就可以啦,不需要 你动烙铁来改线。这样我们看

7、到,硬件电路的连线没有做任何改变,只要改变写入单片机中的内容,就可 以改变电路的输出效果。由此可见,用硬件实现起来非常困难的问题,用单片机解决起来就很ez.因此,每一个硬件工程师掌握单 片机技术是必由之路。三、单片机内部结构分析我们来思考一个问题,当我们在编程器中把一条指令写进单片要内部,然后取下单片机,单片机就可以执 行这条指令,那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持这 条指令不会丢失,这是个什么地方呢?这个地方就是单片机内部的只读存储器即ROM(READ ONLY MEM ORY)。为什么称它为只读存储器呢?刚才我们不是明明把两个数字写进去了吗?原来

8、在89C51中的RO M是一种电可擦除的ROM,称为FLASH ROM,刚才我们是用的编程器,在特殊的条件下由外部设备对R OM进行写的操作,在单片机正常工作条件下,只能从那面读,不能把数据写进去,所以我们还是把它称 为 ROM.第二个试验:用单片机点亮一个闪烁的发光管一次我们的程序实在是没什么用,要灯亮还要重写一下片子,下面我们要让灯不断地闪烁,这就有一定的 实用价值了,比如可以把它当成汽车上的一个信号灯用了。怎样才能让灯不断地闪烁呢?实际上就是要灯 亮一段时间,再灭一段时间,也就是说要P10不断地输出高和低电平。怎样实现这个要求呢?请考虑用下 面的指令是否可行:SETB P1.0CLR P

9、1.0这是不行的,有两个问题,第一,计算机执行指令的时间很快,执行完SETB P10后,灯是灭了,但在极 短时间(微秒级)后,计算机又执行了 CLR P10指令,灯又亮了,所以根本分辨不出灯曾灭过。第二,在 执行完CLR P10后,不会再去执行SETB P10指令,所以以后再也没有机会让灭了。为了解决这两个问题,我们可以做如下设想,第一,在执行完SETB P10后,延时一段时间(几秒或零 点几秒)再执行第二条指令,就可以分辨出灯曾灭过了。第二在执行完第二条指令后,让计算机再去执行 第一条指令,不断地在原地兜圈,我们称之为循环,这样就可以完成任务了。 以下先给出程序(后面括号中的数字是为了便于讲

10、解而写的,实际不用输入):;主程序:LOOP: SETB P1.0;(1)LCALL DELAY;(2)CLR P1.0;(3)LCALL DELAY;(4)AJMP LOOP;(5);以下子程序DELAY: MOV R7, #250;(6)DI: MOV R6, #250;(7)D2: DJNZR6,D2;(8)DJNZ R7, D1; (9)RET;(10)END;(11)按上面的设想分析一下前面的五条指令。第一条是让灯灭,第二条应当是延时,第三条是让灯亮,第四条和第二条一模一样,也是延时,第五条 应当是转去执行第一条指令。第二和第四条实现的原理稍后谈,先看第五条,LJMP是一条指令,意思

11、是转 移,往什么地方转移呢?后面跟的是LOOP,看一下,什么地方还有LOOP,对了,在第一条指令的前面有 一个LOOP,所以很直观地,我们可以认识到,它要转到第一条指令处。这个第一条指令前面的LOOP被 称之为标号,它的用途就是给这一行起一个名字,便于使用。是否一定要给它起名叫LOOP呢?当然不是, 起什么名字,完全由编程序的人决定,可以称它为A, X等等,当然,这时,第五条指令UMP后面的名字 也得跟着改了。第二条和第四条指令的用途是延时,它是怎样实现的呢?指令的形式是LCALL,这条指令称为调用子 程序指令,看一下指令后面跟的是什么,DELAY,找一下DELAY,在第六条指令的前面,显然,

12、这也是一 个标号。这条指令的作用是这样的:当执行LCALL指令时,程序就转到LCALL后面的标号所标定的程序处 执行,如果在执行指令的过程中遇到RET指令,则程序就返回到LCALL指令的下面的一条指令继续执行, 从第六行开始的指令中,可以看到确实有RET指令。在执行第二条指令后,将转去执行第6条指令,而在 执行完6,7,8,9条指令后将遇到第10条令:RET,执行该条指令后,程序将回来执行第三条指令, 即将P10清零,使灯亮,然后又是第四条指令,执行第四条指令就是转去执行第6, 7, 8, 9, 10条指令, 然后回来执行第5条指令,第5条指令就是让程序回到第1条开始执行,如此周而复始,灯就在

13、不断地亮、 灭了。在标号DELAY标志的这一行到RET这一行中的所有程序,这是一段延时程序,大概延时零点几秒,至 于具体的时间,以后我们再学习如何计算。程序的最后一行是END,这不是一条指令,它只是告诉我们 程序到此结束,它被称为伪指令。二、单片机内部结构分析: 为了知道延时程序是如何工作的,我们必需首先了解延时程序中出现的一些符号,就从R1开始,R1被称 之为工作寄存器。什么是工作寄存器呢?让我们从现实生活中来找找答案。如果出一道数学题:123+567, 让你回答结果是多少,你会马上答出是690,再看下面一道题:123+567+562,要让你要上回答,就不这 么容易了吧?我们会怎样做呢?如果

14、有张纸,就容易了,我们先算出123+567=690,把690写在纸上, 然后再算690+562得到结果是1552。这其中1552是我们想要的结果,而690并非我们所要的结果,但 是为了得到最终结果,我们又不得不先算出690,并记下来,这其实是一个中间结果,计算机中做运算和 这个类似,为了要得到最终结果,往往要做很多步的中间结果,这些中间结果要有个地方放才行,把它们 放哪呢?放在前面提到过的ROM中可以吗?显然不行,因为计算机要将结果写进去,而ROM是不可以写 的,所以在单片机中另有一个区域称为RAM区(RAM是随机存取存储器的英文缩写),它可以将数据写 进去。特别地,在MCS-51单片机中,将

15、RAM中分出一块区域,称为工作寄存器区。 以下是它的a51文件:我们把它的名字叫作002.A51LOOP: SETB P1.0LCALL DELAYCLR P1.0LCALL DELAYAJMP LOOPDELAY: MOV R7,#250D1:MOV R6,#250 D2:DJNZ R6,D2DJNZ R7,D1RETEND第三个试验:认识单片机发音程序什么是声音?上过初中的朋友都知道声音是由震动所产生的。一定频率的震动就产生了一定频率的声音。 在我们的倚天版开发套件和XP开发套件中,实验版的P3.3 口(13脚)接了一个小喇叭,如果我们往它 那里送一个高电平,送一个低电平,他就会发出滴嗒的声音。我们把上面的闪烁发光管试验的P1.0改为 P3.3就好了。上图小喇叭LOOP: SETB P3.3LCALL DELAYCLR P3.3LCALL DELAYAJMP LOOPDELAY: MOV R7,#250D1:MOV R6,#250D2:DJNZ R

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号