MCS-51单片机系统设计指导书.doc
《MCS-51单片机系统设计指导书.doc》由会员分享,可在线阅读,更多相关《MCS-51单片机系统设计指导书.doc(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流MCS-51单片机系统设计指导书.精品文档.一、 单片机开发系统应用初步 基本I/O口赋值1. 内容提要:a KEIL C软件对程序进行编译调试及烧录软件的使用方法。b 单片机基本I/O口的驱动方式、特点等。c 汇编语句的基本用法;对基本I/O口的赋值方法;程序的具体流程等。2实验目的及要求:a 课前预习好编程的基本知识。程序的基本概念、*.asm、*.c、*.hex、*.uv2所表示的文件类型等。b 熟练掌握不同数据类型之间的相互转换,不同类型的数据在程序中的表示方法等。c 课前弄清楚单片机I/O口的基本驱动方式,理解何谓上拉及下拉方式,单
2、片机驱动电流、灌入电流等概念。d 复习数码管的相关知识,弄清数码管需显示某个字符应如何对其进行控制等。对P0口赋值跳转至主程序开始结束3实验源程序及流程图: ORG 0000H AJMP MAINMAIN: MOV P0,#0FH JMP MAIN END4实验步骤:a. 通过读程序,弄懂程序对哪个口进行赋初值,通过发光管亮或灭的情况反映出单片机输出数据的情况(注意区分数据的高低位)。b. 通过KEIL C软件对以上程序进行编译,正确后生成*.HEX机器语言文件,随即打开烧录软件,将生成的*.HEX文件烧录到单片机芯片中,完成后点击运行按钮便可脱机运行编写好的程序。c. 观察发光管亮灭情况,最
3、终得出硬件的实际连接情况。d. 修改程序中的输出数据,重复以上编译烧录步骤,再次观察LED发光情况是否与数据对应。例: ORG 0000H AJMP MAINMAIN: MOV P0,#65H JMP MAIN ENDe. 修改单片机输出数据的I/O口(如改为P2口输出),观察其余口是否能正确输出数据。例: ORG 0000H AJMP MAINMAIN: MOV P2,#0FH JMP MAIN END5发挥部分:将I/O口通过8芯排线接至独立两位数码管处,通过I/O口赋值能使数码管显示出本人学号最后一位(注意数据高位统一用来控制数码管的a笔段,低位控制h笔段)。6. 电路原理图:提示:1.
4、 由于单片机芯片烧录时需用到P1口,故在烧录过程中P1.5、P1.6、P1.7口不应有导线连接,否则易引起实验台初始化失败等错误(烧录完成后可以进行连接)。7C语言编程:#include void main(void) while(1) P0=0x0f;二、基本控制语句应用 简单广告牌霓虹灯设计1. 内容提要:a 汇编语言控制语句应用。b 程序的循环、子程序调用、程序跳转等。c 单片机基本I/O口的驱动方式、特点等。2实验目的及要求:a 理解左移RL、右移RR概念。b 延时程序DELAY的具体执行过程、延时量控制等。c 掌握通过设置程序的跳转来实现程序循环的方法。开始P0及累加器A初始化化A内
5、容赋予P0A内容左移跳转至LOOP结束3实验源程序及流程图:ORG 0000H AJMP MAINMAIN: MOV P0,#00H MOV A,#01HLOOP: MOV P0,A RL A JMP LOOP END4实验步骤:a. 读懂程序,分析程序中哪一句为控制语句,起到什么控制作用以及最终能实现何功能。b. 运行程序,观察结果是否与程序一致,分析出现问题的原因所在。c. 试着向源程序中加入延时语句,观察现象是否有所改变。 ORG 0000H AJMP MAINMAIN: MOV P0,#00H MOV A,#01HLOOP: MOV P0,A RL A ACALL DELAY JMP
6、LOOP;*延时子程序*;DELAY:MOV R2,#10HLOOP1:MOV R1,#0FFHLOOP2:DJNZ R1,LOOP2 DJNZ R2,LOOP1 RET ENDd. 适当修改延时量,使LED闪烁更为明显,易于肉眼观察。e. 适当修改程序,使程序最终实现一只LED作流水状移动。5发挥部分:能自左向右自右向左自左向右反复循环来控制一只发光管如反弹状移动。6. 电路原理图:7. C语言编程: #include unsigned char i,c,d,temp=0xfe;void delay(void) unsigned char a,b; for(a=0;a255;a+) for(
7、b=0;b200;b+);void main(void) while(1) for(i=0;i8;i+) c=temp(8-i); P0=c|d; delay();三、单片机I/O口输入 独立按键识别1. 内容提要:a 独立式按键的连接。b 汇编语句对按键的是否按下的具体判断、按键按下后所执行的跳转等。c 按键抖动对单片机所造成的影响以及如何消除抖动对单片机在执行程序上的影响。2实验目的及要求:a 掌握JB、CPL语句的具体使用方法。b 延时程序的具体执行过程、延时量控制等。c 掌握通过设置程序的跳转来执行相应语句的方法。开始P0及累加器A初始化化A内容赋予P0判断是否有键按下结束对A取反NY
8、d 体会按键抖动对单片机系统所造成的影响,以及如何通过软件延时去抖动方法来消除按键抖动。3实验源程序及流程图:ORG 0000H AJMP MAIN;*主程序*;MAIN: MOV P0,#0FFH MOV A,#0FFHWAIT: MOV P0,A JB P3.0,WAIT CPL A JMP WAIT END4实验步骤:a. 运行以上程序,同时反复按下连接至P3.0口的独立式轻触开关(平时按键抬起时为高电平,按下按键时为低电平),观察LED发光情况。5发挥部分:由于按键抖动,使LED的亮灭情况无法通过按键准确控制,试着通过前面一节的实验,在程序适当的位置加入延时程序,实现软件去抖动。6.
9、电路原理图:(K2应接在P3.0)7. C语言编程:#include sbit key=P30;unsigned char a=0;void main(void) while(1) P0=a; if(key=0) a=a;四、外部中断应用 按键计数器1. 内容提要:a 单片机中断系统基本功能、中断控制字定义以及外中断触发方式等。b 中断服务程序入口地址、中断断点及中断返回。c 按键抖动对中断所造成的影响。2实验目的及要求:a 理解中断服务程序的入口地址及熟记各中断服务程序入口地址。b 掌握中断控制字TCON、IE、IP的具体含义及正确定义等。c 掌握中断服务程序的具体执行过程。d 体会按键抖动
10、对单片机系统所造成的影响及如何消除按键抖动。开始外中断及数据初始化化死循环判断是否有中断结束对A累加计数NY3实验源程序及流程图:ORG 0000H AJMP MAIN ORG 0003H AJMP DEALMAIN:SETB EA SETB EX0 SETB IT0 MOV A,#00H MOV P0,#0FFHWAIT:SJMP WAITDEAL:INC A CPL A MOV P0,A CPL A RETI END4实验步骤:a. 阅读并理解程序,理解程序第三行的“ORG 0003H”及“MAIN”程序中初始化部分的具体含义。b. 运行程序,通过反复按下P3.2独立式按键(INT0),观
11、察LED显示结果。5发挥部分:通过以上实验结果得出:由于按键抖动,导致P3.2/INT0口频繁出现高低变化的电平,致使单片机多次执行中断服务程序。能否在程序的适当部分加入延时程序并更改触发方式,成功解决按键抖动问题?6. 电路原理图:7. C语言编程:#include unsigned char a=0;void int0(void) interrupt 0 using 0 a+;a=a;P0=a;a=a;void main(void) EA=1;EX0=1;IT0=1; while(1);五、数码管显示基础 数显按键计数器1. 内容提要:a 数码管内部结构、引脚定义及驱动。b 数码管段代码表
12、具体含义。c 变址寻址在单片机查表中的意义所在。2实验目的及要求:a 掌握数码管与单片机的连接方法。b 掌握段代码表的推算及变址寻址的具体含义。c 掌握判断语句的具体用法。开始外中断及数据初始化化循环显示R0内容判断是否有中断结束对R0累加计数NY3实验源程序及流程图: ORG 0000H AJMP MAIN ORG 0003H AJMP DEAL ORG 0030HMAIN: SETB EA SETB EX0 SETB IT0 MOV P0,#00H MOV R0,#00H MOV DPTR,#TABDISPLAY:MOV A,R0 MOVC A,A+DPTR MOV P0,A JMP DI
13、SPLAYDEAL: INC R0 RETITAB: DB 0FCH,60H,0DAH,0F2H,66H DB 0B6H,0BEH,0E0H,0FEH,0F6H DB 0EEH,3EH,9CH,7AH,9EH,8EH,00H END4实验步骤:a. 阅读并理解程序,重点掌握数码管“TAB”段代码表以及段代码表查表过程。b. 根据程序定义,将P0口通过8芯排线连接至静态二位数码管的其中一位(注意将拨码开关拨至断开状态,以免PO口与74LS164输出发生冲突),注意数据高位控制a笔段;P3.2/INT0端仍接独立式按键。c. 运行以上程序,通过按下按键观察数码管显示情况。d. 解决按键抖动问题,同
14、时分析数码管显示完“F”字符后为何会出现乱码。5发挥部分:使程序实现16进制计数,即按下按键时能从09AF0循环显示。6. 电路原理图:7. C语言编程:#include unsigned char a=0;/*数码管代码表(共阳且高位接a笔段)*/unsigned char Tab=0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F, 0x01,0x09,0x11,0xC1,0x63,0x85,0x61,0x71,0xFF;void int0(void) interrupt 0 using 0 a+;P0=Taba;void main(void) EA=1;EX0
15、=1;IT0=1; while(1);六、矩阵式键盘应用 矩阵键盘识别1. 内容提要:a 矩阵式键盘优点、具体结构、连接方式等。b 单片机C语言基础编程应用。2实验目的及要求:a 掌握矩阵式键盘的内部构架以及键盘与单片机之间的连接方式。b 掌握矩阵键盘扫描识别的编程方法。c 掌握C语言常用语句如if、for、switch、while的具体用法等。开始初始化各列线循环置低电平判断P3口数据是否改变结束进入Switch得出最终键值NY3实验源程序及流程图: #include unsigned char key;/按键延时程序void ys()unsigned char aaa,bbb; for(a
16、aa=200;aaa0;aaa-) for(bbb=0;bbb200;bbb+);void main(void)key=0; while(1) P3=0x7f; if(P3!=0x7f) ys(); if(P3!=0x7f) switch(P3)case 0x77:key=7;break; case 0x7b:key=4;break; case 0x7d:key=1;break; case 0x7e:key=0;break; P0=key; P3=0xbf; if(P3!=0xbf) ys(); if(P3!=0xbf) switch(P3) case 0xb7:key=8;break; ca
17、se 0xbb:key=5;break; case 0xbd:key=2;break; case 0xbe:key=13;break; P0=key; P3=0xdf; if(P3!=0xdf) ys(); if(P3!=0xdf) switch(P3) case 0xd7:key=9;break; case 0xdb:key=6;break; case 0xdd:key=3;break; case 0xde:key=14;break; P0=key; P3=0xef; if(P3!=0xef) ys(); if(P3!=0xef) switch(P3) case 0xe7:key=10;br
18、eak; case 0xeb:key=11;break; case 0xed:key=12;break; case 0xee:key=15;break; P0=key;4实验步骤:a. 理解矩阵键盘的结构及硬件连接。 b. 运行程序,按下44键盘上的按键,观察P0口的LED显示情况。5发挥部分:发挥部分:通过加入数码管段代码表,使键值能通过数码管显示出来,依次对应09AF。C语言中数码管段代码表可参考如下(共阴数码管,高位接a笔段):unsigned char Tab=0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0, 0xFE,0xF6,0xEE,0x3E,0x
19、9C,0x7A,0x9E,0x8E,0x00;如要将key值通过查表赋予P0,可直接定义为:P0=Tabkey。6. 电路原理图(实际电路板中的键盘行与列接P3口):发挥部分原理图(实际电路板中的键盘行与列接P3口):七、单片机定时/计数器 秒脉冲定时器1. 内容提要:a 定时/计数器控制字定义。b 中断服务程序入口地址、中断断点及中断返回。c 单片机定时时长计算方法、间接定时获取长时间定时方法。2实验目的及要求:a 理解中断服务程序的入口地址及熟记各中断服务程序入口地址。b 掌握定时/计数控制字TMOD、TCON的具体含义及正确定义等。c 掌握不同工作方式下定时时间初值的具体算法。开始系统初
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCS 51 单片机 系统 设计 指导书
限制150内