51单片机20个试验,代码详细_第1页
51单片机20个试验,代码详细_第2页
51单片机20个试验,代码详细_第3页
51单片机20个试验,代码详细_第4页
51单片机20个试验,代码详细_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一章单片机系统板说明一、概述单片机实验开发系统是一种多功能、高配置、高品质的MCS-51单片机教学与开发设备。 适用于大学本科单片机教学、课程设计和毕业设计以及电子设计比赛。该系统釆用模块化设计思想,减小了系统面积,同时增加了可靠性,使得单片机实验 开发系统能满足从简单的数字电路实验到复杂的数字系统设计实验,并能一直延伸到综合电 子设计等创新性实验项目。该系统釆用集成稳压电源供电,使电源系统的稳定性大大提高, 同时又具备完备的保护措施。为适应市场上多种单片机器件的应用,该系统采用''单片机板 +外围扩展板"结构,通过更换不同外围扩展板,可实验不同的单片机功能,适应了

2、各院校 不同的教学需求。二、单片机板简介本实验系统因为自带了 MCS-51单片机系统,因此没有配置其他单片机板,但可以根据 教学需要随时配置。以单片机板为母板,并且有I/O接口引出,可以很方便的完成所有实验。 因此构成单片机实验系统。1、主要技术参数(1)MSC-51单片机板板上配有ATMEL公司的STC89C51芯片。STC89C51 资源:32 个 I/O 口;封装 DIP40。STC89C51 开发软件:KEIL C51。2、MSC-51单片机结构(1)单片机板中央放置一块可插拔的DIP封装的STC89C51芯片。(2)单片机板左上侧有一个串口,用于下载程序。(3)单片机板的四周是所有I

3、/O引脚的插孔,旁边标有I/O引脚的脚引。(4)单片机板与各个模块配合使用时,可形成一个完整的实验系统。三、母板简介主要技术参数(1)实验系统电源实验系统置了集成稳压电源,使整个电源具有短路保护、过流保护功能,提高了实验的 稳定性。主板的右上角为电源总开关,当把220V交流电源线插入主板后,打开电源开关,主板 得电工作。为适用多种需要,配置了 +5Y, +12V, 5V电压供主板和外设需要,通过右上角 的插针排和插孔输出到外设。此外,还设有螺旋保险插孔保护实验箱。(2)RS232 接口RS232接口通过MAX232芯片实现与计算机的串行通讯,通过接口引出信号。(3)单片机最小系统单片机最小系统

4、的核心是ATMEL公司的AT89S51单片机.AT89S51右边的按键是复位键, 按下时单片机复位,单片机的放两排插孔,分别是:P1.0-P1.7, P0.0-P1.7, P3. 0-P3.7, P2.0-P2.7,它们可以实现单片机实验和开发。(4)模拟量接口一个模拟量接口,由ICL8038产生,通过插孔引出。(5)D/A转换器D/A转换器由DA0832, LM324芯片组成,(8位,0 5V电压输岀),对应的接口序号为: 数据信号:D0-D7;片选信号:/CS;读有效信号/0E。(6)A/D转换器A/D转换器和D/A转换器相临,主要由ADC0809组成,(8位)对应的接口序号为:模 拟输入

5、:IN0-IN7;基准电压:REF+, REF-;读写信号:/RD, /WR;输出信号:DOD7; 检测信号:I/O;地址锁存允许:ALEo(7)8位拨动开关8位拨动开关由K1-K8组成,每一位都有相应LED(D1-D8)指示,当拨码开关拨上边时 输出高电平,LED亮;拨下边时输出低电平,由插孔1一8输出。(8)24位按键开关24位按縫开关位于主板中下方,由按键K1-K24组成,有六排,笫一排按下时是高电 平,弹上时是低电平,由插孔14输出;第二排按下时是低电平,弹上时高电平,由插孔 1一4输出;第三到第六排是4*4的行列式键盘;由LIL4, HlH4输出。(9)靜态显示数码管靜态显示区由数码

6、管DP1-DP6组成,由插孔输出,供靜态显示用。(10)发光二极管显示区8位红色发光二极管,高电平亮,可作为状态指示用;另一部分是交通灯,由东西南北 四组红绿黄发光二极管构成,高电平亮。(11)动态扫描显示区系统的显示采用8位8段共阴或共阳数码管(高电平有效),所对应的接口序号为:段码: a, b, c, d, e, f, g, h;位选:LI, L2, L3, L4, L5, L6, L7, L8。(12)蜂鸣器蜂鸣器(高电平TTL驱动)从其下方对应输入口,会产生lKHz的信号响声。(13)继电器控制区继电器控制区主要由KJ1-KJ3三个继电器及其驱动电路组成,高电平TTL驱动,输出 接口

7、分别为 JJ1, JJ2, JJ3O(14)数字温度计数字温度计使用DS1302温度传感器,输出接口为SCLK、I/O、RESET。(15)EEPROMEEPR0M(AT24C16),用来保存数据信息,接口序号为:串行数据线:SDA;时钟线:SCL; 写保护线:WP.(16)串行 A/DA/D转换器主要由MAX192组成,(8位)对应的接口序号为:模拟输入:IN0-IN7;片 选信号:/CS;输出信号:DOUT;时钟信号:SCLK;转换开始:SSTRB。(17)变频模块(18)直流斩波模块(19)红外模块四、主要实验项目本实验系统由于采用模块化设计,各模块之间既相互独立,又可相互组合, 完成各

8、种类型实验。其中包括验证性基础实验,综合性、设计性、创新性实验以 及研究开发性、创新性、及全国电子大赛赛前培训实验等。以下列举了本实验系 统能做的部分单片机原理课程实验及课外开放性备选实验项目。单片机原理课程实验实验一 LED显示器指示实验二软件延时及灯光控制实验实验三多级外部中断实验实验四脉冲频率的测量实验实验五串行口扩展实验实验六 串行EEPROM的读出和写入实验实验七8位A/D、D/A转换器的应用实验实验八串行A/D、D/A的应用实验实验九直流继电器的驱动及控制实验 实验十数据采集的软件抗干扰实验 实验十一密码锁控制器的设计 实验十二数字温度控制器的设计 实验十三8255扫描键盘显示实验

9、 实验十四音乐编程实验 实验十五声光报警实验 实验十六可预置可逆计数器实验实验十七DS1302时钟芯片的应用实验实验十八 红外通信接口实验实验十九单片机变频调速实验实验二十交通灯控制实验 部分备选实验项目实验一闪烁灯实验一模拟开关灯实验一多路开关状态指示实验一广告灯的左移右移实验一广告灯(利用取表方式)实验一报警产生器实验一 I/O并行口直接驱动LED显示实验一按键识别方法之一实验一 00-99计数器实验一定时计数器T0作定时应用技术(一)实验一动态数码显示技术实验一 4X4矩阵式键盘识别技术实验一定时计数器T0作定时应用技术(一)实验一定时计数器T0作定时应用技术(二) 实验一 “叮咚”门铃

10、实验一数字钟实验一 ADC0809A/D转换器基本应用技术第二章Keil C软件使用KeilC51软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体, 支持汇编,PLM语言和C语言的程序设计,界面友好,易学易用。下面介绍Keil C51软件的使用方法进入Keil C51后,屛幕如下图所示。几秒钟后出现编辑界Mi crocontrol1 erThis program is protected by U.S. and in ternational copyright laws.启动Keil C51时的屏躱进入Keil C51后的编辑界面简单程序的调试学习程序设计语言、学习某种程序软

11、件,最好的方法是直接操作实践。下面通过简单的编 程.调试,引导大家学习Keil C51软件的基本使用方法和基本的调试技巧。1)建立一个新工程单击Project菜单,在弹出的下拉菜单中选中New Project选项® 1 3 ®IOs | S I® |6File Edit View Project Debug Peripherals Tools SVCS Window Help2)然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名 字为C51如下图所示,然后点击保存.3)这时会弹出一个对话框要求你选择单片机的型号你可以根据你使用的单片机

12、来选 择,keil c51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel的 89C51来说明,如下图所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击 确定.4)完成上一步骤后,屏慕如下图所示到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个程序。5)在下图中,单击“File”菜单,再在下拉菜单中单击“New”选项新建文件后屏幕如下图所示此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但笔者建议首先保存该 空白的文件,单击菜单上的“F订e”,在下拉菜单中选中"Save As”选项单击,屏幕如下 图所示,在'文件名”栏右

13、侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩 展名。注意,如果用C语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展 名必须为(.asm)。然后,单击“保存”按钮。6)回到编辑界面后,单击“Target 1"前面的“ + ”号,然后在“Source Group 1”上单 击右键,弹出如下菜单自 C: WIlTDOWSDe sktopC51 Text 1. cEl & Target 1;Select Device for Target "Target 1"Opti oits for Group ? Source Group VurO

14、pen File11 Rebuild target (Xi Build t:argetTrarislate FileS Stop buildAdd Files to Group ' Source Group VTargets, Group% Piles.Remove Group ? Source Group V and it' s Files然后单击"Add F订e to Group Source Group 1 * 屏慕如下图所示Add Files to Group JSource Group :T查找范运ic5iTextl.c选中Test, c,然后单击"

15、;Add ”屏慕好下图所示注意到uSource Group 1 M文件夹中多了一个子项"Textl. cM 了吗?子项的多少与所增加 的源程序的多少相同/包含文件/主函数7)现在,请输入如下的C语言源程序:廿include <reg52.h> #include <stdio.h> void main(void)SCON二0x52;TMOD=0x20;THl=0xf3;TR1=1;/此行及以上3行为PRINTF函数所必须printf ( aHello I am KEIL. n”);/打印程序执行的信息printf( "I will be your fr

16、iendn” );while(l);在输入上述程序时,读者已经看到了事先保存待编辑的文件的好处了吧,即Keil c51会 自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高 编程效率。程序输入完毕后,如下图所示8)在上图中,单击“Project"菜单,再在下拉菜单中单击"Built Target"选项(或者 使用快捷键F7),编译成功后,再单击“Project”菜单,在下拉菜单中单击“Stsrt/StopDebug Session” (或者使用快捷键Ctrl+F5),屏慕如下所示亠回凶殛CM - (RiMonS C WTHIOr矶D“

17、上“八C51T”ll e)=| £il« (di t Jieir 住ojectF«£iph«rdLs £ocls 01CS Jindwr Jjelp適Q Gl 0 | 您匕O沪氓z4 %戈比9b|3 A祐14 O ? ? ? o發处戲册审期 = 7<erlr2r3Mr6r7 S rLLrL.LLL-»!finclude <reg$2.h> finclude <stdio.h> void aain(wid)0x52;TBOI>-Ox20; THl-0xf3;TF1-Uprintf (,rHe

18、llo I an KEIL. n*);/包苕文件比行及以上3行为PMWTF西数所必须 打印核胛执行的沽JRprlntf(,rI will ke your: friend.n,r); while (1);)|L:SC:1IUJLoad nC:WWINDarfSWDesktopWCS 1WC5F«r Xelp, prtss Fl9)调试程序:在上图中,单击"Debug"菜单,在下拉菜单中单击“Go”选项,(或者使用 快捷键F5),然后再单击''Debug”菜单,在下拉菜单中单击“Stop Running”选项(或者 使用快捷键Esc);再单击"

19、;View"菜单,再在下拉菜单中单击"Serial Windows #1”选 项,就可以看到程序运行后的结果,其结果如下图所示至此,我们在K“1 C51上做了一个完整工程的全过程。但这只是纯软件的开发过程, 如何使用程序下载器看一看程序运行的结果呢?10)单击"Project"菜单,再在下拉菜单中单击“kmWWWM沆翻在下图中,单击“Output”中单击“Create HEX File”选项,使程序编译后产生HEX代码, 供下载器软件使用。把程序下载到AT89S51单片机中。第三章 AT89S51单片机下载器软件使用AT89S51单片机下载器是专门用于下

20、载程序到单片机系统中,该软件使用方便。启动软件之后进入下面的界面(如图3.1所示):图3. 1在上图中:1. 界面右边为操作状态显示区;2 界面左上为下载芯片选择区,该软件支持多种芯片的程序在线下载,对系统板上的单 片机AT89S51是其中一种,软件默认情况下为AT89S51单片机。3.界面左边为在线下载的操作区,它可以提供如下的操作(1).初始化:启动AT89S51单片机进入ISP下载状态,若启动成功,则状态显示区 就会显示如图3. 2所示的文字。否则,不成功会有“初始化失败”的字样提示。初始化并口完成.图3.2(2).特征字:点击一下检测器件,会读出单片机的芯片的特征字,对于AT89S51

21、单片机的特征字为:1E 51 06。(3).擦除器件:是把单片机的容擦除干净,即单片机部ROM的容全为FFH。(4).写器件:把代码区中的程序代码下载到单片机的部ROM中。注意在编程之前,要对单片机芯片进行擦除操作。(5).效验数据:是经过编程之后,对下载到单片机部ROM中的容与代码区的容相比较,若程序下载过程中完全正确,则提示校验正确,否则提示出现错误。那就 得需要重新下载程序到ROM中。(6).自动:提供了从部ROM从擦除到编程,最后到校验这三个过程。(7).读器件:从单片机部ROM中读取容到代码显示区中。第四章实验及实践课题f.闪烁灯1. 实验任务如图4.1.1所示:在P1.0端口上接一

22、个发光二极管L1,使L1在不停地一亮一灭, 一亮一灭的时间间隔为0.2秒。2. 电路原理图VCC卜R12-20U134S678LOL 1LN2L4L0L<517P3 O/RXD P3.irrn> P3/fbTTOP3 .3/IbTTTl P3.4rroP3.srri ps P3.-7rRT2屋 Qd.2.3.4-:6-7 EEplEF'lF'lF'laPO .O/AOO PO.1/AE31 PO.2ZAD2 PO 3ZAD3 FO .4-/AD4 FO -5XAD5 PO .-5/AD6 PO V/A.D9 ALE PSEW P2/7/A IS P2.6/A

23、 14- P2.S/A 13 P2.4/A12 P2.3/A1 1 P2.2/A1O P2.1,AS> F.O/JkS日r535:373-53334-33329029282-7加2024-2322213PVL12MH»AT39S5L;C33OpFeoC2 30 pF图 4. 1. 13系统板上硬件连线把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块"区 域中的L1端口上。4.程序设计容(1) .延时程序的设计方法作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时 间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在执行某

24、一指令时,插入 延肘程序,来达到我们的要求,但这样的延时程序是如何设计呢?下面具体介绍其 原理:如图4. 1. 1所示的石英晶体为12MHz,因此,1个机器周期为1微秒机器周期微秒MOV R6,#202个O-乙DI:MOV R7.S2482个_ o J-O V 9/1R AQQ乙Z十/入470DJNZ R7$2个O V O/1QZ A Z4t5DJNZ R6,D12个2X20=40 -498*20+2*20+2=1000220 X(49810002因此,上面的延时程序时间为10. 002mso由以上可知,当R6=10. R7 = 248时,延时5ms, R6=20、R7=248时,延时10ms

25、.DELAY:MOV R5,#20以此为基本的计时单位。如本实验要求02秒=200ms, 10msXR5 = 200ms,则R5 =20,延时子程序如下:DI:D2:MOV R6,#20MOV R7,#248DJNZ R7.SDJNZ R6.D2DJNZ R5tDlRET输出控制如图1所示,当Pl0端口输出高电平,即P1.0 =1时,根据发光二极管的单向导 电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发 光二极管L1亮;我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLRP1.0指令使P1.0端口输出低电平。5.程序框图图 4. 1.26.汇

26、编源程序ORG OOOOHSTART:CLR P1.0LCA1-L DELAYSETB P1.0LCALL DELAYLJHP STARTDELAY:MOV R5.#20DI:MOV R6.#20D2:MOV R7.#248DJNZ R7.$DJNZ R6.D2DJNZ R5.D1RETEND7.C语言源程序#include <AT89X51.H>sbit Ll=Pro;;延时子程序,延时02秒如图4. 1.2所示void delay02s(void)/延时0.2秒子程序unsigned char i.jk; foi(i 二 20;i0;i) for(j=20; j>0; j

27、) for(k=248;k>0;k); void main(void)while(l)Ll=0;delay02s();Ll=l;delay02s(); 2模拟开关灯1. 实验任务如图4.2.1所示,监视开关K1 (接在P3.0端口上),K1拨上为高电平,拨下为低电平。用发光二极管L1 (接在单片机P1.0端口上)显示开关状态,如果开关拨上,L1亮,开 关拨下,L1熄灭。2. 电路原理图cor oM-io6cor - 91O*-|O-'iO-'ic-.GJGJGJGJeeeGJV.JL4031CllOuFW19匚KIR12202Xw mmQXH二Qxwo.£R21

28、0KIGNDD1 NA G8Y5.cd 6<Jmcd 二黑总 med Kwed MWL.ed tzi总 L£F 9QW9 SQWS 寸QV7寸 戶2 QV72 1QV71 0QV70 vcco i a z 寸 s 9R3vcc|IZZ4.7KGND20C21918fF"cdh_30pF GNDU1AT89S51图 4. 2. 13系统板上硬件连线(I).把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上;(2) 把“单片机系统”区域中的P3.0端口用导线连接到“八路拨动开关”区域中的K1端口上;4程序设计容(1).开关状态的检

29、测过程单片机对开关状态的检测相对于单片机来说,是从单片机的P3.0端口输入信号, 而输入的信号只有高电平和低电平两种,当拨开开关K1拨上去,即辙入高电平,相当开关断开,当拨动开关K1拨下去,即输入低电平,相当开关闭合。单片机可 以采用JB BIT, REL或者是J7B BIT, REL指令来完成对开关状态的检测即可。(2) .输出控制如图3所示,当P1.0端口输出高电平,即P1.0 =1时,根据发光二极管的单向导 电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使

30、P1.0端口输出低电平。5. 程序框图图 4. 2.26. 汇编源程序ORG OOHSTART:P3.O.LIGCLR P1.0SJMP STARTLIG:SETB P1.0SJMP STARTEND7. C语言源程序#include <AT89X51.H>sbit KUP3'0;sbit Ll=Pro;void main(void)while(l)if(Kl=O)Ll=0;/灯亮 else/灯灭(Ll=l;3.多路开关状态指示1. 实验任务如图4. 3. 1所示,AT89S51单片机的Pl. 0-P1. 3接四个发光二极管L1L4, Pl. 4-P1. 7 接了四个开关K

31、1-K4,编程将开关的状态反映到发光二极管上。(开关闭合,对应的灯 亮,开关断开,对应的灯灭)。2. 电路原理图VCC40316 onuzd 2aA :祜 rw寸 uws bi SF NZSd Ldx znwgd bCTWOd ZQWZ.Od EV二od Krwuodc cVud 9 = S.Id 寸mid Z.Id 二 d CHd0匕寸.Ed Llw QlwEdCOG20C219ffF土 Y1tJ12Mr乓I上.30pF GNDoLIL2 L3 L4RS4永反4|R3R44.7KU1AT89S51 VCCR14.7K八GNDVCCTR6|R7|R8220220220R9220图 4. 3.

32、13. 系统板上硬件连线(1. 把“单片机系统"区域中的Pl0-PL 3用导线连接到“八路发光二极管指示模 块”区域中的L1-L4端口上;(2.把"单片机系统”区域中的Pl.4P1.7用导线连接到“八路拨动开关”区域中的K1-K4端口上;4程序设计容(1.开关状态检测对于开关状态检测,相对单片机来说,是输入关系,我们可轮流检测每个开关 状态,根据每个开关的状态让相应的发光二极管指示,可以采用JB Pl.X, REL 或JNB Pl.X, REL指令来完成;也可以一次性检测四路开关状态,然后让其指 示,可以采用MOV A, Pl指令一次把Pl端口的状态全部读入,然后取高4位

33、的状态来指示。(2. 输出控制根据开关的状态,由发光二极管L1-L4来指示,我们可以用SETB P1.X和CLR P1.X指令来完成,也可以采用MOV Pl, #1111XXXXB方法一次指示。5. 程序框图图 4. 3.26. 方法一(汇编源程序)ORG 000011START:MOV A.PlANL A.ttOI-OHRR ARR ARR ARR AORL A.ttOFOH MOV Pl.A SJMP STARTEND7. 方法一 (C语言源程序)include <AT89X51.H>unsigned char temp;void main(void)while(l) temp

34、-Pl»4; temp二tempOxfO;Pl二temp;8. 方法二(汇编源程序)ORG OOHSTART:P1.4.NEXT1CLR P1.0SJMP NEX1NEXT1:SETB PLONEX1:PL5.NEXT2CLR Pl. 1SJMP NEX2NEXT2:SETB Pl.1NEX2:PL6.NEXT3CLR Pl. 2SJMP NEX3NEXT3:SETB Pl. 2NEX3:PL7.NEXT4CLR Pl. 3SJMP NEX4NEXT4:SETB Pl.3NEX4:SJMP STARTEND9. 方法二(C语言源程序)include <AT89X51.H>

35、void main(void)while(l)if(PU4=0)Pl_0=0;else Pl_0=l;if(Pl_5=0) Pl_l二0;else Pl_l=l;if(P1.6=0)Pl_2=0;else Pl_2=l;if(Pl_7=0)Pl_3=0;elsePl_3=l;广告灯的左移右移1. 实验任务做单一灯的左移右移,硬件电路如图4.4.1所示,八个发光二极管L1-L8分别接在单 片机的P1.0 - P1.7接口上,输出"0”时,发光二极管亮,开始时 Pl. 0-Pl. 1-Pl. 2-Pl. 3- Pl. 7Pl. 6- P1. 0 亮,重复循环。2. 电路原理图VCC图 4

36、. 4. 13. 系统板上硬件连线把“单片机系统”区域中的Pl. 0-P1. 7用8芯排线连接到“八路发光二极管指示模块” 区域中的L1-L8端口上,要求:P1.0对应着LI, P1.1对应着L2, ,P1.7对应着L8。4. 程序设计容我们可以运用输出端口指令MOV Pl, A或MOV Pl, #DATA,只要给累加器值或常数值, 然后执行上述的指令,即可达到输出控制的动作。每次送出的数据是不同,具体的数据如下表1所示P1.7P1.6P1.5P1.4P1.3P1.2Pl. 1P1.0说明L8L7L6L5L4L3L2L111111110L1亮11111101L2亮11111011L3亮1111

37、0111L4亮11101111L5亮11011111L6亮10111111L7亮01111111L8亮5.程序框图图 4. 4.26.汇编源程序ORG 0START:MOV R2#8MOV A.80FEHSETB CLOOP:MOV Pl.A LCALL DELAYRLC ADJNZ R2.LOOPMOV R2#8LOOP1:MOV Pl.A LCALL DELAYRRC ADJNZ R2.L00P1LJMP STARTDELAY:MOV R5.#20DI:MOV R6.S20D2:MOV R7.S248DJNZ R7$DJNZ R6.D2DJNZ R5.D1RETEND7.C语言源程序#in

38、clude <AT89X51.H>unsigned char i; unsigned char temp; unsigned char a.b;void delay(void) unsigned char m.n.s; for(m=20;m>0;m-) for(n=20;n>0;n) for(s=248;s>0;s);void main(void)while(l)temp-Oxfe; Pl=temp; delay (); for(i=l;i< &i+) a=temp«i; b=temp»(8-i); Pl=a b; delay (

39、); for(i=l;i<8; i+) a-temp»i; b=temp«(8-i); Pl=a b; delay ();使端口 PI做单一灯的变化:左移2次,右移2次,闪烁2次(延时R1R3d220 附A220 RS1220K6JK7 I220R8-4220R9 1 220LS1O62312 Ts 14 ls 1£T7£ 二屋OEPI.OPO.O/ADOP1.1P0.1/AD1P1.2PO.2JAD2P1.3P0.3/AD3P1.4P0.4/AD4PL.5P0.5/AD5P1.6P0.6/AD6PL.7PO.7/AD7ALE PSEWP3.0/R

40、XDP2.7/AL5P3.1/TXDF2.6ZA14P3.2HMTOP2 -S/A L3P3.3HHT1P2.4/A12P3.4/TOF2 3/A11P3.5/T1P2.2/AL0P3.6/WRP2.1/A9P3.7/RDP 2.OJAS艮口旦XCD导YI<3>,二T尸3837丸333433323029282?26仝24N32221U139AT89S51C2 =30 pFC35广告灯(利用取表方式)1实验任务 利用取表的方法, 的时间0.2秒)。2.电路原理图VCCGNQ图 4. 5. 13. 系统板上硬件连线把“单片机系统”区域中的Pl. 0-P1. 7用8芯排线连接到“八路发光

41、二极管指示模块”区域中的L1-L8端口上,要求:P1.0对应着LI, P1.1对应着L2, ,P1.7对应着L8。4.程序设计容在用表格进行程序设计的时候,要用以下的指令来完成(1) .利用MOV DPTR, #DATA 16的指令来使数据指针寄存器指到表的开头。(2) .利用MOVC A, A+DPTR的指令,根据累加器的值再加上DPTR的值,就可以 使程序计数器PC指到表格所要取出的数据。因此,只要把控制码建成一个表,而利用MOVC工,A+DPTR做取码的操作, 就可方便地处理一些复杂的控制动作,取表过程如下图所示:5.程序框图图 4. 5.26.START:LOOP:LOOP1:DELA

42、Y:DI:TABLE:汇编源程序ORG 0MOV DPTR.STABLECLR AMOVC A.A+DPTRCJNE A#01H.LOOPIJMP STARTMOV PLAMOV R3.#20LCALL DELAYINC DPTRJMP L(X)PMOV R4.#20MOV R5.tt248DJNZ R5.$DJNZ R4tDlDJNZ R3.DELAYRETDB 0FEH,0FDH.0FBH.0F7HDB 0EFH.0DFH.0BFH.07FHDB 0FEH.0FDH,0FBH.0F7HDB 0EFH.0DFH,0BFH.07FHDB 07FH.0BFH.0DFH.0EFHDB 0F7H.0

43、FBH.0FDH.0FEHDB 07FH.0BFH.0DFH.0EFHDB 0F7H.0FBH.0FDH.0FEHDB 0011. OFTH.OOH. OFFH DB 0111END7. C语言源程序include <AT89X51.H>unsigned char code table=0xfe,0xfd.0xfb.0xf7r Oxeft OxdftOxbf, 0x7f.Oxfe,Oxfd.Oxfb.0xf7.Oxef,Oxdf»Oxbf, 0x7f.0x7f,Oxbf»Oxdf, Oxef.0xf7,Oxfb.Oxfd.Oxfe. 0x7f.Oxbf,Oxdf

44、.Oxef.0xf7.0xfb.0xfd.Oxfe,0x00.Oxff,0x00.Oxff, 0x01; unsigned char i;void delay(void)unsigned char m.n.s;for(m-20;m>0;m-)for(n=20;n>0;n-)for(s=248;s>0;s);void main(void)while(l) if(tablei!=0x01)Pl-tablei:i+;delay (); else(i=0;6.报警产生器10K R1E47QvccCl%GNDLlv386Wl(S)VS N+ VOUT 恥 GAIN BYPASS GAI

45、N GHDR19aitC1847uF10047uFGNDo 2 e f 八 g lddddddddU1AT89S51GNDI,八-Icik il. H. s4031RJ2 10K1GND2X口 XJJ 一 E QrHs£iold swCJd ONA.Zd 二2<azd 一厶曙ulTfLoqp.od S3 £ s.£ gwz £svccqgcnd 眉g sd § E EKcnd| VCCCGND20C2萄HL30pF GND1. 实验任务用P1.0输出lKHz和500Hz的音频信号驱动扬声器,作报警信号,要求lKHz信号响100ms, 50

46、0Hz信号响200ms,交替进行,P1. 7接一开关进行控制,当开关合上响报警信号,当开 关断开告警信号停止,编出程序。2. 电路原理图CHJOuFU7VCCC8图 4. 6. 13系统板上硬件连线(1.把“单片机系统”区域中的Pl.o端口用导线连接到“扬声器模块”区域中的MIC-IN端口上;(2. 把"单片机系统”区域中的P1.7/RD端口用导线连接到'八路拨动开关"区域 中的K1端口上;4. 程序设计容(1. 信号产生的方法500Hz信号周期为加s,信号电平为每1ms变反1次,lKHz的信号周期为1ms, 信号电平每500us变反1次;5. 程序框图图 4. 6

47、.26. 汇编源程序FLAGBIT OOHORG OOHSTART:PL 7.STARTJNB FLAG.NEXTMOV R2.S200DY:CPL P1.0LCALL DELY500LCALL DELY500DJNZ R2.DVCPL FLAGNEXT:MOV R2.#200DV1:CPL P1.0LCALL DELY500DJNZ R2.DV1CPL FLAGSJMP STARTDELY500:MOV R7,#250LOOP:NOPDJNZ R7.LOOPRETEND7. C语言源程序衣include <AT89X51.H> #include <INTRINS. H>

48、; bit flag;unsigned char count; void delv500(void)unsigned char i: for(i=250;i>0;i)_nop_();void main(void)while(l)if(PL7=0)for (count-200;count>0:count一-)P1_OP1 一 0; de ly500();for (count-200;count>0;count)P1_O='P1_O; dely500(); de ly500();7.I/O并行口直接驱动LED显示1. 实验任务如图13所示,利用AT89S51单片机的P0端

49、口的P0.0-P0.7连接到一个共阴数码管的 a-h的笔段上,数码管的公共端接地。在数码管上循环显示09数字,时间间隔0.2 秒。2. 电路原理图R1VCC n lOuF1OKiriL23456781011121314IS1617P1.0PO.O/ADOP1.1P0.1JAD1P1.2P0.2/AD2P1.3P0.3/AD3P1.4P0.4/AD4P1.5P0.5/AD5P1.6P0.6/AD6P1.7P0.7/AD7ALE PSEUP3.0HtXDP2.7/A15P3.1/TXDP2.6/A14P3.2/INT0P2.SZA13P3.3/IMTLP2.4/A12P34rroP2 3/A11P

50、3.25/T1P2.2/A10P3.<5/WRP2.1/A9P3.7/RPP2.0/A81OA39353736353433323029282726252423222?方孩g霍舅U2 匚 EDS 1AT89S51GND- “ 612MH图 4. 7. 13. 系统板上硬件连线把“单片机系统”区域中的PO. O/ADO-PO. 7/AD7端口用8芯排线连接到“四路动态数 码显示模块”区域中的数码管的a-h端口上;要求:PO. O/ADO与a相连,PO. 1/AD1 与b相连,PO. 2/AD2与c相连,PO. 7/AD7与h相连。然后选任一位选端接地。4. 程序设计容(1. LED数码显示原

51、理七段LED显示器部由七个条形发光二极管和一个小圆点发光二极管组成,根 据各管的极管的接线形式,可分成共阴极型和共阳极型。LED数码管的g'a七个发光二极管因加正电压而发亮,因加零电压而不以发 亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给 出共阴极的字形码见表2“0”3FH“8”7FH“ 9906H“9”6FH“2”5BH“A”77H“3”4FH“b”7CH“4”66H“c”39H6DH“d”5EH“6*7DH79H“ 7 ”07H“F”71H(2.由于显示的数字09的字形码没有规律可循,只能釆用查表的方式来完成我们所需的要求了。这样我们按着数字09的顺序,把每个数字的笔段代 码按顺序排好!建立的表格如下所示:TABLE DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH5.程序框图图 4. 7.26. 汇编源程序0RG 0START:MOV Rl.ttOOHNEXT:MOV A.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论