MCS-51单片机系统设计指导书学习资料.doc
《MCS-51单片机系统设计指导书学习资料.doc》由会员分享,可在线阅读,更多相关《MCS-51单片机系统设计指导书学习资料.doc(72页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Good is good, but better carries it.精益求精,善益求善。MCS-51单片机系统设计指导书-一、单片机开发系统应用初步基本I/O口赋值1.内容提要:aKEILC软件对程序进行编译调试及烧录软件的使用方法。b单片机基本I/O口的驱动方式、特点等。c汇编语句的基本用法;对基本I/O口的赋值方法;程序的具体流程等。2实验目的及要求:a课前预习好编程的基本知识。程序的基本概念、*.asm、*.c、*.hex、*.uv2所表示的文件类型等。b熟练掌握不同数据类型之间的相互转换,不同类型的数据在程序中的表示方法等。c课前弄清楚单片机I/O口的基本驱动方式,理解何谓上拉及下
2、拉方式,单片机驱动电流、灌入电流等概念。d复习数码管的相关知识,弄清数码管需显示某个字符应如何对其进行控制等。对P0口赋值跳转至主程序开始结束3实验源程序及流程图:ORG0000HAJMPMAINMAIN:MOVP0,#0FHJMPMAINEND4实验步骤:a.通过读程序,弄懂程序对哪个口进行赋初值,通过发光管亮或灭的情况反映出单片机输出数据的情况(注意区分数据的高低位)。b.通过KEILC软件对以上程序进行编译,正确后生成*.HEX机器语言文件,随即打开烧录软件,将生成的*.HEX文件烧录到单片机芯片中,完成后点击运行按钮便可脱机运行编写好的程序。c.观察发光管亮灭情况,最终得出硬件的实际连
3、接情况。d.修改程序中的输出数据,重复以上编译烧录步骤,再次观察LED发光情况是否与数据对应。例:ORG0000HAJMPMAINMAIN:MOVP0,#65HJMPMAINENDe.修改单片机输出数据的I/O口(如改为P2口输出),观察其余口是否能正确输出数据。例:ORG0000HAJMPMAINMAIN:MOVP2,#0FHJMPMAINEND5发挥部分:将I/O口通过8芯排线接至独立两位数码管处,通过I/O口赋值能使数码管显示出本人学号最后一位(注意数据高位统一用来控制数码管的a笔段,低位控制h笔段)。6.电路原理图:提示:1.由于单片机芯片烧录时需用到P1口,故在烧录过程中P1.5、P
4、1.6、P1.7口不应有导线连接,否则易引起实验台初始化失败等错误(烧录完成后可以进行连接)。7C语言编程:#includevoidmain(void)while(1)P0=0x0f;二、基本控制语句应用简单广告牌霓虹灯设计1.内容提要:a汇编语言控制语句应用。b程序的循环、子程序调用、程序跳转等。c单片机基本I/O口的驱动方式、特点等。2实验目的及要求:a理解左移RL、右移RR概念。b延时程序DELAY的具体执行过程、延时量控制等。c掌握通过设置程序的跳转来实现程序循环的方法。开始P0及累加器A初始化化A内容赋予P0A内容左移跳转至LOOP结束3实验源程序及流程图:ORG0000HAJMPM
5、AINMAIN:MOVP0,#00HMOVA,#01HLOOP:MOVP0,ARLAJMPLOOPEND4实验步骤:a.读懂程序,分析程序中哪一句为控制语句,起到什么控制作用以及最终能实现何功能。b.运行程序,观察结果是否与程序一致,分析出现问题的原因所在。c.试着向源程序中加入延时语句,观察现象是否有所改变。ORG0000HAJMPMAINMAIN:MOVP0,#00HMOVA,#01HLOOP:MOVP0,ARLAACALLDELAYJMPLOOP;*延时子程序*;DELAY:MOVR2,#10HLOOP1:MOVR1,#0FFHLOOP2:DJNZR1,LOOP2DJNZR2,LOOP1
6、RETENDd.适当修改延时量,使LED闪烁更为明显,易于肉眼观察。e.适当修改程序,使程序最终实现一只LED作流水状移动。5发挥部分:能自左向右自右向左自左向右反复循环来控制一只发光管如反弹状移动。6.电路原理图:7.C语言编程:#includeunsignedchari,c,d,temp=0xfe;voiddelay(void)unsignedchara,b;for(a=0;a255;a+)for(b=0;b200;b+);voidmain(void)while(1)for(i=0;i8;i+)c=temp(8-i);P0=c|d;delay();三、单片机I/O口输入独立按键识别1.内容
7、提要:a独立式按键的连接。b汇编语句对按键的是否按下的具体判断、按键按下后所执行的跳转等。c按键抖动对单片机所造成的影响以及如何消除抖动对单片机在执行程序上的影响。2实验目的及要求:a掌握JB、CPL语句的具体使用方法。b延时程序的具体执行过程、延时量控制等。c掌握通过设置程序的跳转来执行相应语句的方法。开始P0及累加器A初始化化A内容赋予P0判断是否有键按下结束对A取反NYd体会按键抖动对单片机系统所造成的影响,以及如何通过软件延时去抖动方法来消除按键抖动。3实验源程序及流程图:ORG0000HAJMPMAIN;*主程序*;MAIN:MOVP0,#0FFHMOVA,#0FFHWAIT:MOV
8、P0,AJBP3.0,WAITCPLAJMPWAITEND4实验步骤:a.运行以上程序,同时反复按下连接至P3.0口的独立式轻触开关(平时按键抬起时为高电平,按下按键时为低电平),观察LED发光情况。5发挥部分:由于按键抖动,使LED的亮灭情况无法通过按键准确控制,试着通过前面一节的实验,在程序适当的位置加入延时程序,实现软件去抖动。6.电路原理图:(K2应接在P3.0)7.C语言编程:#includesbitkey=P30;unsignedchara=0;voidmain(void)while(1)P0=a;if(key=0)a=a;四、外部中断应用按键计数器1.内容提要:a单片机中断系统基
9、本功能、中断控制字定义以及外中断触发方式等。b中断服务程序入口地址、中断断点及中断返回。c按键抖动对中断所造成的影响。2实验目的及要求:a理解中断服务程序的入口地址及熟记各中断服务程序入口地址。b掌握中断控制字TCON、IE、IP的具体含义及正确定义等。c掌握中断服务程序的具体执行过程。d体会按键抖动对单片机系统所造成的影响及如何消除按键抖动。开始外中断及数据初始化化死循环判断是否有中断结束对A累加计数NY3实验源程序及流程图:ORG0000HAJMPMAINORG0003HAJMPDEALMAIN:SETBEASETBEX0SETBIT0MOVA,#00HMOVP0,#0FFHWAIT:SJ
10、MPWAITDEAL:INCACPLAMOVP0,ACPLARETIEND4实验步骤:a.阅读并理解程序,理解程序第三行的“ORG0003H”及“MAIN”程序中初始化部分的具体含义。b.运行程序,通过反复按下P3.2独立式按键(INT0),观察LED显示结果。5发挥部分:通过以上实验结果得出:由于按键抖动,导致P3.2/INT0口频繁出现高低变化的电平,致使单片机多次执行中断服务程序。能否在程序的适当部分加入延时程序并更改触发方式,成功解决按键抖动问题?6.电路原理图:7.C语言编程:#includeunsignedchara=0;voidint0(void)interrupt0using0
11、a+;a=a;P0=a;a=a;voidmain(void)EA=1;EX0=1;IT0=1;while(1);五、数码管显示基础数显按键计数器1.内容提要:a数码管内部结构、引脚定义及驱动。b数码管段代码表具体含义。c变址寻址在单片机查表中的意义所在。2实验目的及要求:a掌握数码管与单片机的连接方法。b掌握段代码表的推算及变址寻址的具体含义。c掌握判断语句的具体用法。开始外中断及数据初始化化循环显示R0内容判断是否有中断结束对R0累加计数NY3实验源程序及流程图:ORG0000HAJMPMAINORG0003HAJMPDEALORG0030HMAIN:SETBEASETBEX0SETBIT0
12、MOVP0,#00HMOVR0,#00HMOVDPTR,#TABDISPLAY:MOVA,R0MOVCA,A+DPTRMOVP0,AJMPDISPLAYDEAL:INCR0RETITAB:DB0FCH,60H,0DAH,0F2H,66HDB0B6H,0BEH,0E0H,0FEH,0F6HDB0EEH,3EH,9CH,7AH,9EH,8EH,00HEND4实验步骤:a.阅读并理解程序,重点掌握数码管“TAB”段代码表以及段代码表查表过程。b.根据程序定义,将P0口通过8芯排线连接至静态二位数码管的其中一位(注意将拨码开关拨至断开状态,以免PO口与74LS164输出发生冲突),注意数据高位控制a笔
13、段;P3.2/INT0端仍接独立式按键。c.运行以上程序,通过按下按键观察数码管显示情况。d.解决按键抖动问题,同时分析数码管显示完“F”字符后为何会出现乱码。5发挥部分:使程序实现16进制计数,即按下按键时能从09AF0循环显示。6.电路原理图:7.C语言编程:#includeunsignedchara=0;/*数码管代码表(共阳且高位接a笔段)*/unsignedcharTab=0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09,0x11,0xC1,0x63,0x85,0x61,0x71,0xFF;voidint0(void)interrup
14、t0using0a+;P0=Taba;voidmain(void)EA=1;EX0=1;IT0=1;while(1);六、矩阵式键盘应用矩阵键盘识别1.内容提要:a矩阵式键盘优点、具体结构、连接方式等。b单片机C语言基础编程应用。2实验目的及要求:a掌握矩阵式键盘的内部构架以及键盘与单片机之间的连接方式。b掌握矩阵键盘扫描识别的编程方法。c掌握C语言常用语句如if、for、switch、while的具体用法等。开始初始化各列线循环置低电平判断P3口数据是否改变结束进入Switch得出最终键值NY3实验源程序及流程图:#includeunsignedcharkey;/按键延时程序voidys()
15、unsignedcharaaa,bbb;for(aaa=200;aaa0;aaa-)for(bbb=0;bbb200;bbb+);voidmain(void)key=0;while(1)P3=0x7f;if(P3!=0x7f)ys();if(P3!=0x7f)switch(P3)case0x77:key=7;break;case0x7b:key=4;break;case0x7d:key=1;break;case0x7e:key=0;break;P0=key;P3=0xbf;if(P3!=0xbf)ys();if(P3!=0xbf)switch(P3)case0xb7:key=8;break;c
16、ase0xbb:key=5;break;case0xbd:key=2;break;case0xbe:key=13;break;P0=key;P3=0xdf;if(P3!=0xdf)ys();if(P3!=0xdf)switch(P3)case0xd7:key=9;break;case0xdb:key=6;break;case0xdd:key=3;break;case0xde:key=14;break;P0=key;P3=0xef;if(P3!=0xef)ys();if(P3!=0xef)switch(P3)case0xe7:key=10;break;case0xeb:key=11;break;
17、case0xed:key=12;break;case0xee:key=15;break;P0=key;4实验步骤:a.理解矩阵键盘的结构及硬件连接。b.运行程序,按下44键盘上的按键,观察P0口的LED显示情况。5发挥部分:发挥部分:通过加入数码管段代码表,使键值能通过数码管显示出来,依次对应09AF。C语言中数码管段代码表可参考如下(共阴数码管,高位接a笔段):unsignedcharTab=0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6,0xEE,0x3E,0x9C,0x7A,0x9E,0x8E,0x00;如要将key值通过查表赋予P0,
18、可直接定义为:P0=Tabkey。6.电路原理图(实际电路板中的键盘行与列接P3口):发挥部分原理图(实际电路板中的键盘行与列接P3口):七、单片机定时/计数器秒脉冲定时器1.内容提要:a定时/计数器控制字定义。b中断服务程序入口地址、中断断点及中断返回。c单片机定时时长计算方法、间接定时获取长时间定时方法。2实验目的及要求:a理解中断服务程序的入口地址及熟记各中断服务程序入口地址。b掌握定时/计数控制字TMOD、TCON的具体含义及正确定义等。c掌握不同工作方式下定时时间初值的具体算法。开始系统初始化进入死循环有无定时中断请求结束进入中断重装值并对P1.0取反NY3实验源程序及流程图:ORG
19、0000HLJMPMAINORG000BHLJMPINTT0MAIN:MOVTMOD,#01HMOVTL0,#0B0HMOVTH0,#3CHSETBEASETBET0SETBTR0SJMP$INTT0:MOVTL0,#0B0HMOVTH0,#3CHCPLP1.0RETIEND4实验步骤:a.运行以上程序,观察P1.0口的LED闪烁情况。5发挥部分:精确定义一秒钟时间,并结合前面学过的知识,能通过数码管显示出秒钟的个位信息(注意秒钟个位为十进制)(结合实验五电路图连接)。6.电路原理图:八、单片机显示初步数码管动态扫描1.内容提要:a人眼有视觉暂留效应。b数码管动态扫描的硬件连接特点。c单片机C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCS 51 单片机 系统 设计 指导书 学习 资料
限制150内