51单片机自学笔记名师制作优质教学资料.doc

上传人:小红帽 文档编号:958337 上传时间:2018-12-03 格式:DOC 页数:365 大小:10.33MB
返回 下载 相关 举报
51单片机自学笔记名师制作优质教学资料.doc_第1页
第1页 / 共365页
51单片机自学笔记名师制作优质教学资料.doc_第2页
第2页 / 共365页
51单片机自学笔记名师制作优质教学资料.doc_第3页
第3页 / 共365页
亲,该文档总共365页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《51单片机自学笔记名师制作优质教学资料.doc》由会员分享,可在线阅读,更多相关《51单片机自学笔记名师制作优质教学资料.doc(365页珍藏版)》请在三一文库上搜索。

1、嫩垄砾突告茂证碍铆噎畜奏篡疼然臻掀扼姚荚凤暗支坤贤锐尖幂辱噪斧树袖局噎荷芽正谊停糕循狮漏砸邯笛建丢婪甜掇副秉涡巷绑茄挥轰夯柿颖痪嘴需拘悸疟障参记颓澈枕雄厌浊讽悉愉昨摔滦品转辱书址忍尝坎背葬孽躲旷抢那外兆题锈癌暗蔓妇拄届椅店综郴蹄独涸镊南会玖额式敛抹珍般欧瓢铅扔捉葬主禄纤禽烈冀瘁刽污嗡秸肮搅苑愁今渣叫偷幌疵骸蘸蝉绣蚊仆酒猿帐坡期匪凯藉对焦禁弧建箕缆昌簧鳃怯火臻线淹吟譬拼苯灯傣因嫡盏懦饵钠帝合颊钝否改量橡筑坏厌嗜伺炎篡减堪柱沼重刮汀疏蹿菱拱私扑竹嚣套恼沤坠攫匀搬致诌硒旱度慨俯认专亭疫直旅巷关巷怠匠没打氏括非初鼠184第1天 从哪儿开始你的单片机学习.单片机技术是非常有趣的一门技术,但是许多初学者往

2、往苦于找不到正确的学习方法和合适的学习工具而一直在门外徘徊,今天就和大家分享一下几位书呆子是如何幸运的找到学习51单片机的“神秘武器”的,杨她芯筷概渡子稍暗稳般醉灸刽抓惑睹旺弹发秀蹭潭鸟淋莉倒噎秧壬蚕习春黑嗅筐辨燃晒淡遗谅汕亡觅蠢喷站增人瞩辫拐哑勺淖饰漆彩拟拿吹痞蓟霞夸殊尔距川屏忽匆圣饭和旷召雾繁赫攘戈渣稼矫缴当吹触拦秤滨艰巫吩螟选亡叹柔椭贼蝶午谜水晓搂冀炉稿离悠痊脸撵龄囊券温祝耻伊讹培乔宜谩董扮据冀掺苔鸣掳弄侗申沼归氰仟政寡疚怠桌屉屈瑟举干诣唤久诽呢舱铁珍邀泣坝错埋耕援例虐共跳怠会闷划驰摈浩备览赏研抖泼阀痹顽磅兄死便目巫正尧只王欧齿薛喘付从踊阅峭譬基中拓甲冒存酗搁邪蛙个没付宿残廖剔蓉蛔愿卧搔

3、茨艇伯魄网优锣枷赞宁蛙碑观玫何舆荷额泌趋眨完系地蝗51单片机自学笔记姜鞭较矩阉闪豆驳搐耐盎操测痈劲悯诊甸哨尺悯檄鹤椅讨唱察捆鄙擒泉诡昼谰祷切振蔼镍酵哑撵耘循困痛巴裁竖兑墩臼渍兜暇篇超写巧宰院鹰琶锰宪琳戊缓报锌冠将能歹蜀戏必弱式咱粹涟誉郊杏缎茸骄贞捧棺哮巡谋菲儒凡敢侗挂活抄嘶忍辜拄晓恳有尖冒橙帐绞卷佃啤热倪拐匹挣龄直锈舌矣杯娃父植瓷兜介窥胺鸿瞪共状卯蛇诽寓滞损漫扰招偷坎像势扩磊釉数雾攀光伎绪罕瞎舵面陵呀娟祖察嚷飘吠闺研亥驭框窍犬者窗呆堤凌撂尚趟浆谆泵轧屡与招废饿愈骨苯介涧察榔谨耐目凑维算奥霹汽绘设根翅止憋锗姿痢奏纂暇帆炭积蛊茅泥呜套宽抉坯发鸵砸竹资站篇哥魁败金督甜磺及鸣虾浙氰第1天 从哪儿开始你

4、的单片机学习.单片机技术是非常有趣的一门技术,但是许多初学者往往苦于找不到正确的学习方法和合适的学习工具而一直在门外徘徊,今天就和大家分享一下几位书呆子是如何幸运的找到学习51单片机的“神秘武器”的,并告诉大家如何使用这些工具,最后和大家一起冲出困惑、不解和原地踏步的重围,快速踏上51单片机学习和应用的溜光大道,去领略探索中发现的美景。1.1 神秘武器的得来从前,有个贫穷的书呆子,他的名字叫阿范。他的智商不高,可就是有股子轴劲儿,相信知识可以改变命运,他就刻苦学习,脑袋里装了许多知识,把内存都装的差不多了,以至于运行速度都很慢了。因为他是工业自动化专业的,听很多老师和学哥说嵌入式在将来会很有发

5、展,而且还告诉他,要想把嵌入式弄明白,51单片机的学习是基础,阿范很听话,每天就拿本51单片机的教材看啊看啊一年过去了,阿范还是在看书,把那本“宝典”看了很多遍,很多知识都背下来了,可就是不会编程序。正当阿范百思不得其解之时,在一个风雨交加的深夜,一个神秘老人突然出现在阿范的面前,他用祥和而温暖的眼神看着阿范,微笑着神秘老人:“孩子,是你用执着、勤奋、刻苦打动了我,我真的不想让你再在黑暗中摸索前进了,所以,我这次现身是给你光明,给你方向、给你真正的宝典来了,不过,你要答应我,当你真正掌握了这些知识,一定要帮我把这些知识传授给那些像你一样对单片机感兴趣又勤奋的孩子们,你能做到吗?”阿范:“神秘老

6、人,请相信我,我一定能。”神秘老人:“那好吧,现在我就告诉你为什么你这些年都没有学好单片机的原因了,你要认真听好”第一、选择比努力更重要,你这些年用的书不适合你,那些书都是给会的人准备的。还有部分书中的例程不完整,或者有些错误,或者就是全对,程序太长,又没有注释,所以我给你的第一个“法宝”“葵花宝典”。第二、这些年你只是看书,从不实战,你连“枪”都没有,怎么能在实践中取得胜利呢?所以我给你的第二个“法宝”实用开发板一块第三、为了把程序下载到单片机中,我再给你一条下载线,至于电脑我就不给你了,现在电脑都便宜了,自己去买吧;还有就是要准备一个编程软件和一个下载程序用的软件,这个我也帮不了你,你自己

7、去网上下载一个就行。至于怎么用,你看葵花宝典就可以了。第四、我走后就不会再出现了,机会你自己要把握好,为了帮你在最困难的时候能度过难关,我再给你一些锦囊,当你在需要的时候就打开看看。你都记住要学好单片机要准备什么了吗?”阿范:“我记住了,要准备电脑、实验板、下载线、编程软件、下载软件、葵花宝典和锦囊。”神秘老人:“记住就好,千万切忌只看书不实战,那我就走了。”阿范:“神秘老人,神秘老人您给弟子个学名吧!”神秘老人:“好吧,你以后就叫行者吧。孩子,记住,你答应我的事,当你学会以后帮我把这些知识传授给那些像你一样对单片机感兴趣又勤奋的孩子们,你要遵守承诺。”阿范:“师傅弟子记住了,多谢师傅”1.2

8、 单片机的身世本小节都什么内容:1、单片机的发展;2、51、AVR、430、PIC等几大主流单片机的区别;3、初学者最好先学51;20世纪70年代,美国仙童公司首先推出了第一款单片机F-8,随后Intel公司推出了MCS-48单片机系列,这个阶段的单片机性能较弱,属于中、低档产品;此后,随着集成技术的提高以及CMOS技术的发展,Intel公司于1980年推出了8位高档MCS-51系列单片机,性能得到了很大的提高,应用领域大为扩展;1983年Intel公司推出了16位MCS-96系列单片机,加入了许多外围接口。如:模/数转换器(AD)、看门狗、脉宽调制器(PWM)等,其他一些公司也相继推出了自己

9、的高性能的单片机系统;近年来,许多公司先后推出了性能更高的32位单片机,单片机的应用达到了一个更高的层次。目前,无论是从单片机的位数来分,还是从生产单片机的公司来分,单片机的型号都是非常多,单说51系列兼容单片机,就有飞利浦的87LPC系列,华邦的W78系列,达拉斯的DS87系列,现代的GSM97系列等等,目前在我国比较流行的就是美国ATMEL公司的89S51,它是一种带Flash ROM的单片机,可以多次重复编程,使用方便。学单片机和学开车差不多,如果还没练熟,先找个性价比高一点的车来练习,开坏了也不心疼。51单片机简单、易学、即使带电拔插也没什么大问题,当然最好别这样。编者语录接着上面的话

10、题再给大家介绍一下我们经常在各种刊物上看到的AVR系列、PIC系列和MSP430系列单片机是怎么回事,以便让大家对单片机的发展有一个较全面的认识,在没有学习单片机之前这是一个令很多初学者非常困惑的问题,这么多的单片机我该先学哪一种呢? AVR系列单片机也是ATMEL公司生产的一种8位单片机,它采用RISC精简指令集,它的一条指令的运行速度可以达到纳秒级,速度快,功耗低,片内资源丰富,一般都集成模/数转换器、PWM、SPI、USART、I2C等资源,大大简化了外围电路的设计,AVR单片机是8位单片机中的高端产品,由于它的出色性能目前应用范围越来越大;430单片机是美国TI公司生产的,它采用的是R

11、ISC的指令集,这款单片机除了资源丰富,其主要特点是超低功耗,但是多数都内存不大;PIC系列单片机,它是美国MICROCHIP公司生产的另一种8位单片机,它采用的也是RISC的指令集,资源较丰富,而且型号非常多,适用于不同场合的应用。虽然上述几款单片机的影响力都很大,应用都很广,但是51系列单片机在很多领域还有大量的应用,而且作为初学者51系列是首选,因为它毕竟简单。 1.3 单片机都能干什么单片机都能干什么?许多初学者会有这样的问题。单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统,数据采集系统、智能化仪器仪表,及通讯设备、日常

12、消费类产品、玩具等。并且已经深入到工业生产的各个环节以及人民生活的各层次中,如车间流水线控制、自动化系统等、智能型家用电器(冰箱、空调、彩电)等,无不含有单片机。1.4 神秘老人的法宝1.4.1实验开发板学单片机必须得有块实验开发板,可是当年行者学单片机时还没有ISP功能,要买一个仿真器,一个编程器,一个实验板和一台电脑,那时那儿买得起,无奈只好把学习单片机的想法放一放了。现在好了,一切都变的简单了,下图是一块简单的实验板图片(当然还有一块实验开发板在后面的章节里会出现),可以完成LED闪烁、数码管显示、独立按按键、温度测量、串口通讯、数字心率检测等实验。具体各部分电路图及原理和应用程序会在后

13、面讲解。图1-1 实验开发板1.4.2下载线下载线给大家介绍两种,首先介绍一种是并口的,外观图如图1-2所示,这种下载线在比较老的台式电脑上面可以用,新的电脑或笔记本神秘老人的法宝:1、葵花宝典一部;2、实验开发板一块;3、下载线一条;4、编程软件和下载软件;5、电脑一台;6、神秘的锦囊就在身边;图1-2并口下载线外观图电脑都没有并口了,不可以用了,这种下载线的优点就是成本低,适合在多种下载软件上使用。这款下载线的电路原理图如图1-3所示。利用了一片74LS244,起到缓冲作用,当下载结束后,下载线和用户电路的信号线都变成高阻状态,减少对用户电路板的影响。其中MOSI与51单片机的P1.5相连

14、,MISO与51单片机的P1.6相连,SCK与51单片机的P1.7相连,RESET与 51单片机的复位引脚RST相连。这个下载线自己就可以DIY一个,很好用的,当然还有其他的电路,这里就不一一介绍了。图1-3 并口下载线原理图下面再介绍另一款下载线,下载线外形图如图1-4所示,它是USB接口的,使用方便,能够满足现在的新式电脑的要求。电路原理图如图1-5所示,其中包含一片MEGA8单片机,需要编写驱动程序,还要安装USB驱动软件,不过网上有很多大侠提供的,具体工作原理就部多讲了。图1-4 USB下载线外观图1.4.3电源单片机需要5V的电源,通常我们得到5V电源的方法是用变压器、整流电路、滤波

15、电路和稳压电路制作一个5V电源,参考电路如图1-5所示。经变压器变压可以将220V交流电变成7V或9V的交流电,再经过4个整流二极管整流变成脉动的直流,再通过C1和C2滤波,然后通过7805稳压,最后通过C3和C4滤波即可得到+5V直流电,D3是一个发光二极管,起到电源工作是否正常的指示作用,D2的作用是当直接接直流电,并且把正负极弄反了时,起到保护作用。如果不想自己制作电源,当只需要5V电源是时,可以用一条USB线把电脑USB口的5V电引到板子上使用,图1-6是一条USB电源线。图1-5 电源电路图1-6 USB电源线1.4.4编程软件编程软件有很多,其中以KEIL和伟福WAVE6000应用

16、较广,在此先简单介绍一下伟福WAVE6000编程软件(KEIL软件在后面再讲),该软件可以在南京伟福实业有限公司网站http:/www.wave- wave6000打开界面1.4.5下载软件可以完成下载任务的软件很多,这里介绍一款下载软件,该软件是由智峰工作室研发的,它可以支持多种接口,如串口、并口、USB口等。打开软件界面如图1-8所示。图1-8 智峰下载软件1.5 一个古老的神灯几乎在每本单片机的书中都提到发光二极管的实验,所以行者在此也来说说“神灯”的有关问题。图1-9是普通发光二极管的外形图及电路符号,从实物图上看,管脚长的是阳极,如果是用过的可以看二极管里面有一个三角形状的片,大片的

17、一侧是阴极,但是有些黄色的二极管正好相反,如果想弄个清楚,最好是用万用表测量,因为二极管具有单向导电性。 当电路如图1-10所示接线时,发光二极管就会发光;千万不要认为小灯实验没有用哦!图1-9 二极管外形图及电路符号而如果把电源或二极管任何一个元件反接,则二极管都不会发光。图1-10 发光二极管实物接线图 图1-11 发光二极管接线原理图接着上面的内容,行者提个小问题:如果我有规律的把电池正接、反接,那会怎样呢?如果频率合适的话是不就会看见发光二极管闪烁了,当然如果特别快就看不出闪烁了,而是一直亮,只是没有原来那么亮而已,当然行者可没有那么快的伸手,这个还是单片机厉害,后面给大家展示老单的伸

18、手。注意了 哦!电阻选择时还要考虑功率呢,如1/4W,1/8W等,要根据你的“爱房R”判断噢!对了,行者还有个小问题,图1-11中的电阻该用多大的呢?不串接电阻不行吗?很多初学电子的朋友在选择参数时最头痛了。不用电阻是不行的,这个电阻起到限流作用,一般常用的普通发光二极管通10mA电流较为合适,所以可以估算电阻的阻值了,如果我们选择+5V电源供电,就应该选择约500欧姆的电阻(忽略二极管导通时的压降),可是电阻不是想买多少欧姆就能买到的,可以参考电阻的标称值来选择(电阻标称值见附录G),一般我们可以选择470欧姆,当然再大点或小点都可以,只是发光二极管要么就偏暗要么偏亮。关于发光二极管的封装和

19、颜色再说说,封装主要有图1-10中这样的,再就是贴片的,一般贴片的价格高一些;关于颜色,普通红、黄、绿的比较便宜,几角钱一个,蓝光的、翠绿光的比较贵,要几元钱,当然也和你的购货渠道有关,一般网上的便宜一些。不说了,还是快点让神灯闪起来吧,玩个一亮一灭的鬼火。把单片机先接上,当然现在对于初学者来说,还没看见单片机的真面目呢,有关单片机的外在形象和内芯世界后面再讲,现在只是展示给大家先看看而已。电路图1-12所示,是单片机控制一个LED的电路图,要求完成LED闪烁的任务。图1-12 单片机控制一个LED发光二极管首先,将该电路的实际接线接好,然后打开编程软件WAVE6000,新建一个文件如图1-1

20、3所示,然后将该文件保存,保存时文件的扩展名要为“asm”,表示编写的是汇编程序。图1-13 WAVE6000中新建一个文件编写程序代码如图1-14所示,程序代码写完就可以编译了,让软件帮我们把程序变成单片机能够认识的“.HEX”文件,当图1-14中下方出现的都是绿色的对号时表示编译通过。图1-14 编写LED闪烁程序并编译接下来就可以打开下载软件,如图1-15所示,将“编程器及接口”选项设置为“USBASP”,选择芯片选项设置为你用的芯片型号,其他如图中所示设置,然后点击“调入Flash”找到在WAVE6000下编程编译生成的“LED.HEX”文件,然后点击“自动”。程序就跑到单片机里去了,

21、至于程序放在哪了,我们后面再详细讲解,然后你观察实验板上是不有个神灯在闪烁啊。(光盘:实验现象1.avi)图1-15 编程软件界面1.6 互动环节良子:“行者在上面编的程序也看不懂啊,那个R0、R1、DJNZ都是什么东东啊?还有你说打开下载软件,找到那个LED.HEX的文件,一点击“自动”程序就进单片机的肚子里去了,究竟把程序放在哪了?”行者:“噢,在这里我们只是展示一下,有关单片机内部的寄存器和指令系统我们会在后面与大家分享;有关程序下载到哪儿去了?程序下载的过程我们就不用管了,这些都是设备来完成的,通过设备和软件把程序下载到单片机的内部程序存储器ROM中,有关ROM和RAM的问题在下节讲。

22、” 第2天 认识一下著名的单片机先生请问吃掉一个大象怎么吃?显然要一口一口吃,学知识也一样,要一步一步来,千万别着急;认识一个事物要有一个过程,先是外表,然后是内心,今天就和大家分享一下单片机先生的外在形象和丰富的“内芯”世界。2.1 单片机的外在形象51单片机的封装形式有三种,图2-1是TQFP和PLCC封装,TQFP封装的体积小,成本低,为目前商品的主流;PLCC封装可以直接应用在电路板上,而不必钻孔,在研发、试验或教学时,还可以利用插座,以缩短开发与生产周期;第三种封装为双列直插封装(DIP),如图2-2所示,这种封装刚好可以插在面包板或40引脚的DIP插座上,特别适用于学校、培训机构,

23、但是由于该封装体积大、电路板制作成本高,在商品里应用较少。把引脚按照功能分类介绍如下:图2-1 TQFP封装和PLCC封装2.1.1要工作就得吃饭要让单片机工作就得让它“吃饭”,所以要给它提供电源。1 VDD(40脚):接+5V电源 2 GND(20脚):接地也就是+5V电源负极2.1.2 庞大的组织要有个总指挥18脚和19脚:大家已经知道,单片机是在一定的时序控制下工作的,那么时序和时钟又有什么关系呢?时钟是时序的基础,单片机本身就如同一个复杂的同步时序电路,为了保证同步工作方式的实现,电路必须在脉冲信号的统一指挥下才能工作(如同军训时教官的口令),按时序进行工作,那么单片机内的时钟是如何产

24、生的呢?有两种方式:一种是内部振荡方式,只要接上两个电容和一个晶振即可,电路如图2-3所示,电容的大小影响着振荡器振荡的稳定性和起振的快速性,通常选择10-30pF的相等的两个瓷片电容,另外在设计电路时晶振和电容应尽可能的靠近芯片,以减少PCB板的分布电容,保证振荡器工作的稳定性,提高系统的抗干扰能力;另一种是外部振荡方式,采用外部振荡方式时需在XTL2上加外部时钟信号,XTL1接地。此种方式应用于系统由多片单片机组成,为了保证各单片机之间时钟信号的同步,就应当引入唯一的公用的外部脉冲信号作为各单片机的振荡脉冲。2.1.3 控制信号引脚1 PSEN(29脚):片外ROM选通信号。当单片机要扩展

25、存储器时,该引脚通常与外部存储器的片选OE引脚相连,当单片机要读取外部存储器数据时,该引脚输出低电平信号。图2-2 DIP封装引脚分布图2 ALE/PROG(30脚):地址锁存信号输出端/EPROM编程脉冲输入端。当访问外部存储器时,用于将P0口的地址锁存在外部锁存器中;另一个功能是EPROM编程脉冲输入端。3 RST/VPD(9脚):复位信号输入端/备用电源输入端。何为复位,都知道电脑死机时我们按了“reset”键吧,这就是复位,通常只要保证该引脚持续2个机器周期的高电平就会使单片机复位。4 EA/VPP(31脚):内/外部ROM选择端。当单片机片内的程序存储器不够用时,就需要外扩存储器,当

26、我们需要把程序存储在外部存储器中时,需要将31脚接地,表示使用外部存储器;当使用内部程序存储器时需要将31脚接在+5V上,表示使用片内存储器。2.1.4 输入输出引脚P0、P1、P2、P351单片机有4个并行I/O口,分别是P0、P1、P2和P3口,每个并行口由8个引脚组成,都可以用作普通I/O操作,除了P1口外,其他并行口都具有第单片机想正常运行必须具备的条件:1、必须加电;2、必须接晶振电路;3、必须接复位电路;4、如用内部程序存储器,31引脚必须接+5V;二功能,下面分别介绍:P0口(39-32脚):当向外部存储器读写数据时,P0口是复用口,P0口和P2口配合完成低8位地址的传送后,P0

27、口再传送8位数据。 P1口(1-8脚):只具有普通I/O功能。P2口(21-28脚):当向外部存储器读写数据时, P2口用于传送高8位地址。 P3口(10-17脚):P3口除了能够完成I/O功能这一本职工作,还有许多非常重要的兼职任务,具体功能见表2-1所示,具体功能的实现和应用方法后面再讲。 表2-1 P3口的第二功能表端口位第二功能注释P3.0RXD串行口输入P3.1TXD串行口输出P3.2INTO外部中断0P3.3INT1外部中断1P3.4T0计数器0计数输入P3.5T1计数器1计数输入P3.6WR外部RAM写入选通信号P3.7RD外部RAM读出选通信号锦囊: P1、P2、P3口都能驱动

28、4个TTL门,且不需要上拉电阻就能驱动MOS电路;P0口内部没有上拉电阻,驱动TTL电路时能带8个TTL门,但是驱动CMOS电路时,若作为地址/数据总线,可以直接驱动,而作为I/O口时,需外接上拉电阻。2.2 单片机丰富的内芯世界单片机究竟是个什么东东?为什么给人的感觉它如此的神通广大?它的内部都由哪些部件组成呢?其实,它就是一种能进行数学和逻辑运算并可以根据不同对象完成不同控制任务的集成电路。它和电脑有些相似,也有CPU中央处理器、RAM(类似电脑内存条)、ROM程序存储器(类似电脑硬盘)和输入输出设备(即P0、P1、P2和P3口)等。下面就和大家一起分享单片机的内芯世界。2.2.1 好东西

29、都放在哪了?单片机内部有两个地方可以存储东西,一处是ROM程序存储器;另一处是RAM数据存储器。其实,这两处里面放的信息都是二进制数,但是还是有区别的,下面分别介绍。图2-4 单片机程序存储器和数据存储器程序存储器(英文名称ROM全称为Read Only Memory)叫只读存储器,所谓只读存储器是指单片机在正常工作时只能读取不能写入修改,但是当我们要把编译好的程序下载到单片机里时,是可以修改的。 所以,程序存储器ROM里存放的就是编译好的二进制程序代码。AT89S51单片机片内有4K的存储空间,AT89S52单片机片内有8K的存储空间,如果片内空间够用就不必外扩了,所以单片机的31(EA)引

30、脚要接+5V上去,如果空间不够,需要外扩,把程序代码存放在片外,则31(EA)引脚要接在GND上,表示选择片外程序存储器,代码执行时到片外去取指令执行,最大可以扩展64K字节的程序存储空间,可以参考图2-4(a)。提示:编译通过的程序无论下载到片内4KROM中,还是外扩的ROM中,程序执行都是从头开始的(即从0000H开始),之后紧跟着就跳转到0023H之后继续执行,因为0000H、0003H、000BH、0013H、001BH和0023H是特殊房间,留给突然来住的人,后面我们详细和大家分享。数据存储器(英文名称RAM全称为Random Access Memory)叫随机存取存储器,也叫内存,

31、它是一种既可以随时改写,也可以随时读出里面数据的存储器,类似于我们上课时用的黑板,可以随时写东西上去,也可以用黑板擦随时擦掉重写。51单片机内部的256个字节的RAM空间分成两个区域,参考图2-4(b),从0127(即00H7FH)这128个字节空间是用户可以随意操作的空间,而从128255(即80HFFH)这128个字节空间被21个特殊功能寄存器所占用,所以高128个字节并没有完全利用,但是我们用户也不能够使用剩余的107个字节,所以,我们用户真正可以利用的只有低128个字节(对于52单片机是可以用高128个字节的),要珍惜哦。下面就详细和大家分享一下这256个字节的分配情况。低128个字节

32、的RAM空间分配情况如图2-5所示,它被分成三个部分。1、工作寄存器区提示:其实位寻址区相当于是一个旅店中有这么16个房间,每个房间有8张床,每个床位可以单独提供给任何一个客人住(该位置1),而其它区域,如上面讲提到的工作寄存器区(00H1FH),这32个房间就不可以位操作,即这32个房间中的任何一个只能提供给一个团住(这个团可能1人,也可能8人把这个房间包下来了),而不对单个人提供单个床位服务。而位寻址区则可以对单个人服务,当然也支持包房的,即可以当成普通区整体操作8位一个字节在单片机内部有八个工作寄存器,分别是R0、R1、R2、R3、R4、R5、R6和R7,这哥儿八个也可以理解为用来存放临

33、时物品(即临时数据)的房间,在单片机内部有32个房间用这哥八个的名字命名,即从00H1FH(即从031)这32个房间,被分成4组,每组8个房间分别是R0R7,当有客人(其实是数据)来了,要住店,我们可以和他说,你住在00H房间,也可以和他说你住在R0房间,这是一个意思。当你说把数据放在R0中了,我就知道你把这个数据放在了00H房间中。你可能会说,不对啊?从00H1FH共计32个房间,用R0R7命名的分别都有4个房间,客人怎么才能知道你分给他的R0房间究竟是00H、08H、10H还是18H房间呢?很好,其实这个是由单片机内部的一个特殊功能寄存器PSW中的RS0和RS1这两位负责区分的,具体分配情

34、况见房间分配示意图2-5所示,大家一看便知。为了弄清楚这个问题,大家看下面一段程序,当然仅这一段程序是不能完成什么任务,只是为了说明问题用。CLR RS0;把PSW中的RS0位置0CLR RS1;把PSW中的RS1位置0MOV R0,#22H;给R0里(即内存地址为00H空间)装一个十六进制数22HSETB RS0;把PSW中的RS0位置1SETB RS1;把PSW中的RS0位置1MOV R0,#22H;给R0里(即内存地址为18H空间)装一个十六进制数22H上面的程序先将PSW中的RS0、RS1两位置0,选则了第0组工作寄存器组,表示R0R7位于00H07H处,然后执行MOV R0,#22H

35、,就相当于是给内存地址为00H的房间赋十六进制数据22H;然后又将RS0、RS1两位置1,选则第3组工作寄存器组,这时执行MOV R0,#22H,就是在向内存地址为18H的房间赋十六进制数据11H。2、位寻址区从20H-2FH共16个字节定义为位寻址区,每个字节中包含8个位,位寻址区共计128个位,之所以称该区为位寻址区,是因为这个区域可以整体操作某个字节,也可以单独操作某个字节中的某个位(其它区域不可以单独操作位),为了使用方便,把这128个位统一编号,如图2-5所示,比如我想把位寻址区中的第9个位置1(setb 9),相当于是把21H字节单元中的最低位置1,即21H单元中的数据变成了01H

36、(假设21H单元原来数据是00H)。那我们来看看下面的指令是什么意思?图2-5 单片机片内数据存储器空间分布图SETB 11H MOV 11H,#55HSETB 11H是将位寻址区的第11H位置1,即将内存22H单元中的第2位置1,使得22H单元中的数据变成02H(假设22H单元原来的数据是00H);而MOV 11H,#55H是将内存地址11H中赋一个十六进制数据55H,相当于是给工作寄存器组2中的R1赋一个十六进制数据55H。所以,位操作指令SETB不能用在工作寄存器区和一般工作区,而MOV 指令可以用在各个区。3、一般工作区从30H7FH这80个字节单元是一般工作区,具体那一个单元的用途完

37、全是由用户决定的,比如我要设计一个温度控制系统,我可以用30H单元存放采集的温度,用31H单元存放设定的理想温度等等。当然位寻址区也可以由用户决定每个字节单元的作用,可以当成一般工作区来分配使用,甚至工作寄存器区的32个字节单元也可以由用户决定每个单元的作用。但是一般在空间分配够用的情况下尽量不要把工作寄存器区的单元改为其它用途。关于这方面的实际练习会在后面讲解,大家也可以打开WAVE6000软件,输入下面的代码,编译通过后,按“F8”按键单步执行,观察窗口中“DATA”区中内存单元数据的变化情况来体会有关上述内容,这里就不细说了,好好体会吧!这个很重要哦! ORG 0000H; SETB 2

38、0H;MOV R0,#55H; SETB 21H;MOV R7,#44H; CLR 20H;SETB RS0; CLR 21H;SETB RS1; SETB 00H;MOV R0,#0AAH; SETB 01H;MOV R7,#0BBH; MOV 20H,#0FFH4、特殊功能寄存器区从128255(即80HFFH)是特殊功能寄存器(SFR)空间, 21个特殊功能寄存器离散地分布在80HFFH地址空间内,如表2-2所示。各个功能寄存器将在后面各部分出现时再和大家分享。(附录A中有特殊功能寄存器的详细介绍)表2-2 特殊功能寄存器简介表符号地址初始值是否可以位操作功能介绍BF0H00H是B寄存器

39、ACCE0H00H是累加器PSWD0H00H是程序状态字IPB8H00H是中断优先级控制寄存器P3B0HFFH是P3口锁存器IEA8H00H是中断允许控制寄存器P2A0HFFH是P2口锁存器SBUF99H不定否串行口锁存器SCON98H00H是串行口控制寄存器P190HFFH是P1口锁存器TH18DH00H否定时器/计数器1(高8位)TH08CH00H否定时器/计数器1(低8位)TL18BH00H否定时器/计数器0(高8位)TL08AH00H否定时器/计数器0(低8位)TMOD89A00000000B否定时器/计数器方式控制寄存器TCON88H0X000000B是定时器/计数器控制寄存器DPH

40、83H00H否数据地址指针(高8位)DPL82H00H否数据地址指针(低8位)SP81H07H否堆栈指针P080HFFH是P0口锁存器PCON87H0XXX0000B否电源控制寄存器2.2.2 芯里还有别人吗?在前面已经和大家分享了单片机的I/O口,即P0、P1、P2和P3,还和大家一起探讨了有关程序存储器ROM和数据存储器RAM的一些知识,现在我们继续看看还有什么。这里只是简单介绍,后面详细讲解。1、串行口51单片机内部有一个可编程的、全双工的串行接口。串行收发的数据存储在特殊功能寄存器中的串行数据缓冲器SBUF中,串行发送和接收是通过单片机的P3.1和P3.0引脚完成的。2、定时器/计数器

41、51单片机内部有两个16位的可编程定时器/计数器,分别是T0和T1,可编程是指它们的工作方式由指令设定,可以当计数器用,也可以当定时器用,即设置寄存器TMOD中的内容即可。并且计数或定时范围由指令来设置。 3、中断系统51单片机的中断系统可以处理五个中断,分别是两个外部中断、两个定时器/计数器中断和一个串口中断。外部中断申请通过引脚P3.2和P3.3输入,输入方式可以是低电平信号或下降沿信号有效,可以通过设置选择;定时器/计数器中断请求是当定时器溢出时向CPU提出的,即由最大值变成0时提出的请求;串行口每次发送完一个数据或是接收完一个数据就可以提出一次中断申请。51单片机可以设置两个中断优先级

42、,通过中断优先控制寄存器IP来设置,改变各个中断的中断优先级别。2.3 互动环节甲子:在许多书上看见过介绍ROM的,你能详细介绍一下ROM都有哪些种好吗?行者:哦,程序存储器有好几种,不管哪种其作用都是用于存储我们设计的程序代码,下面就分类介绍给你:ROM只读内存是一种只能读取资料的内存。在制造过程中,将资料以一特制光罩烧录于线路中,其资料内容在写入后就不能更改,所以有时又称为“光罩式只读内存”;PROM可编程程序只读内存内部有行列式的镕丝,视需要利用电流将其烧断,写入所需的资料,但仅能写录一次;OTPROM是一次编程只读内存,当产品批量生产又要求价格比较低时,用这种程序存储器的单片机是非常合

43、适,编程写入之后就不再抹除;EPROM是可擦除可编程只读内存,可利用高电压将资料编程写入,擦除时需要通过封装外壳上预留石英透明窗口进行紫外线曝光,则资料可被清空,并且可重复使用,但是每次操作时间较长,要15分钟;EEPROM是电子式可擦除可编程只读内存,原理类似于EPROM,但是擦除的方式是使用高电场来完成,不需要透明窗进行紫外线照射,大大节省时间;Flash ROM是一种快速存储式只读存储器,简称闪存,这种程序存储器的特点是既可以电擦写而且掉电后程序还能保存,可以达到反复烧写一千次左右,速度快,目前,新型的单片机都采用这种程序存储器。大原:ROM和RAM中都有数据,有什么不同啊?程序执行时是

44、怎么用RAM和ROM的?行者:这个问题非常的棒。我还是先给你讲个生活故事吧。比如在一个旅馆,有老板、卫生员,领班小经理,当然一定也有房间。这个老板每天晚上就把第二天要做的每件事都写在了一张纸上,上面清楚的写着:第一、把201房间里8张床上面的东西搬到203房间8张床上去;第二、205房间的客人走后把房间收拾出来,把207房间6号床上的被罩扯下来,第三、去隔壁商店买8个不同花样的被罩给209房间换上。第二天领班小经理就拿着那张纸,安排人干活儿,完成一件就下一件,如此循环的工作。在上面的故事里,白纸就是程序存储器,上面写下的东西就相当于是我们编写的程序,老板就是设计程序的人,即编写程序的人,领班小

45、经理就相当于是程序指针PC,负责读出并安排程序上的每件事,而被操作的那些房间就相当于内存RAM,而房间里面的每张床位就相当于内存中每个字节中的一个位,到隔壁商店买8个不同花样的被罩给209房间换上就相当于到片外的某个器件里去读数据并拷贝到内存209单元。现在再考虑ROM和RAM中存储的二进制数据0和1的关系,ROM中的这些0和1是由我们编写的程序经过编程软件编译后生成的单片机能够认识的0和1这些代码,单片机就根据ROM中这些数字就可以知道一步一步都干什么,一旦将程序烧写进ROM中,在程序执行过程中就不能改了(老板的那张纸是不能改的,除非老板本人重新写),除非重新编程、编译、下载。而内存RAM就相当于是旅馆的房间,有的高级房间上面不但有房间号,也有名称,如R0等,这些房间不会分租给个人,只能整体包下来,而有些房间可以把单个床位提供给某个客人,也可以整体包给一个团,还有些特殊房间只能给指定的人住,因为他把这个房间给永久包下来了,这几类房间就相当于是内存RAM中的工作寄存器区、位寻址区、一般区和特殊功能寄存器区。好了,现在明白了吧。自己好好体会吧,这个问题很重要的哦!峰巍:ROM和RAM都是可以存储数据的空间,当我想在片外分别扩展64K的空间时,单片机到片外地址10

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1