欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    51单片机20个实验代码详细之欧阳体创编.docx

    • 资源ID:10241474       资源大小:510.54KB        全文页数:32页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    51单片机20个实验代码详细之欧阳体创编.docx

    1、51单片机20个实验代码详细之欧阳体创编第一章 单片机系统板说明时间:2021.02.03创作:欧阳体一、概述单片机实验开发系统是一种多功能、高配置、高品质的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、3)单片机板的四周是所有IO引脚的插孔,旁边标有I0引脚的脚引。(4)单片机板与各个模块配合使用时,可形成个完整的实验系统。三、 母板简介主要技术参数(1)实验系统电源实验系统内置了集成稳压电源,使整个电源具有短路保护、过流保护功能,提高了实验的稳定性。 主板的右上角为电源总开关,当把220V交流电源线插入主板后,打开电源开关,主板得电工作。为适用多种需要,配置了+5V,+12V,5V电压供主板和外设需要,通过右上角的插针排和插孔输出到外设。此外,还设有螺旋保险插孔保护实验箱。(2)RS232接口RS232接口通过MAX232芯片实现与计算机的串行通讯,通过接口引出信号。(3)单片机最小系统单

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

    5、压:REF+,REF -;读写信号:RD,WR;输出信号:D0D7;检测信号:I0;地址锁存允许:ALE。(7)8位拨动开关8位拨动开关由KlK8组成,每一位都有相应LED(DlD8)指示,当拨码开关拨上边时输出高电平,LED亮;拨下边时输出低电平,由插孔l8输出。(8)24位按键开关24位按键开关位于主板中下方,由按键KlK24组成,有六排,第一排按下时是高电平,弹上时是低电平,由插孔14输出;第二排按下时是低电平,弹上时高电平,由插孔14输出;第三到第六排是4*4的行列式键盘;由L1L4,H1H4输出。(9)静态显示数码管静态显示区由数码管DP1DP6组成,由插孔输出,供静态显示用。(10

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

    7、口为SCLK、I/O、RESET。(15)EEPROMEEPROM(AT24C16),用来保存数据信息,接口序号为:串行数据线:SDA;时钟线:SCL;写保护线:WP。(16)串行A/DAD转换器主要由MAX192组成,(8位)对应的接口序号为:模拟输入:IN0-IN7;片选信号:CS;输出信号:DOUT;时钟信号:SCLK;转换开始:SSTRB。(17)变频模块(18)直流斩波模块(19)红外模块四、 主要实验项目本实验系统由于采用模块化设计,各模块之间既相互独立,又可相互组合,完成各种类型实验。其中包括验证性基础实验,综合性、设计性、创新性实验以及研究开发性、创新性、及全国电子大赛赛前培训

    8、实验等。以下列举了本实验系统能做的部分单片机原理课程实验及课外开放性备选实验项目。单片机原理课程实验实验一 LED显示器指示实验二 软件延时及灯光控制实验实验三 多级外部中断实验实验四 脉冲频率的测量实验实验五 串行口扩展实验实验六 串行EEPROM的读出和写入实验实验七 8位A/D、D/A转换器的应用实验实验八 串行A/D、D/A的应用实验实验九 直流继电器的驱动及控制实验实验十 数据采集的软件抗干扰实验实验十一 密码锁控制器的设计实验十二 数字温度控制器的设计实验十三 8255扫描键盘显示实验实验十四 音乐编程实验实验十五 声光报警实验实验十六 可预置可逆计数器实验实验十七 DS1302时

    9、钟芯片的应用实验实验十八 红外通信接口实验实验十九 单片机变频调速实验实验二十 交通灯控制实验部分备选实验项目实验一 闪烁灯实验一 模拟开关灯实验一 多路开关状态指示实验一 广告灯的左移右移实验一 广告灯(利用取表方式)实验一 报警产生器实验一 I/O并行口直接驱动LED显示实验一 按键识别方法之一实验一 0099计数器实验一 定时计数器T0作定时应用技术(一)实验一 动态数码显示技术实验一 44矩阵式键盘识别技术实验一 定时计数器T0作定时应用技术(一)实验一 定时计数器T0作定时应用技术(二)实验一 “叮咚”门铃实验一 数字钟实验一 ADC0809A/D转换器基本应用技术第二章Keil C

    10、软件使用Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和 C 语言的程序设计,界面友好,易学易用。下面介绍Keil C51软件的使用方法进入 Keil C51 后,屏幕如下图所示。几秒钟后出现编辑界启动Keil C51时的屏幕进入Keil C51后的编辑界面简单程序的调试学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。下面通过简单的编程、调试,引导大家学习Keil C51软件的基本使用方法和基本的调试技巧。1)建立一个新工程单击Project菜单,在弹出的下拉菜单中选中New Project选项2)然后选择你要保存的路

    11、径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51如下图所示,然后点击保存. 3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keil c51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel 的89C51来说明,如下图所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定.4)完成上一步骤后,屏幕如下图所示到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个程序。5)在下图中,单击“File”菜单,再在下拉菜单中单击“New”选项新建文件后屏幕如下图所示此时光标在编辑窗口里闪烁,这时可以键入用户

    12、的应用程序了,但笔者建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。注意,如果用语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。然后,单击“保存”按钮。 6)回到编辑界面后,单击“Target 1”前面的“”号,然后在“Source Group 1”上单击右键,弹出如下菜单 然后单击“Add File to Group Source Group 1” 屏幕如下图所示 选中Test.c,然后单击“Add”屏幕好下图所示

    13、 注意到“Source Group 1”文件夹中多了一个子项“Text1.c”了吗?子项的多少与所增加的源程序的多少相同 7)现在,请输入如下的C语言源程序: #include /包含文件#include void main(void) /主函数SCON=0x52;TMOD=0x20;TH1=0xf3;TR1=1; /此行及以上3行为PRINTF函数所必须printf(“Hello I am KEIL. n”); /打印程序执行的信息printf(“I will be your friend.n”);while(1); 在输入上述程序时,读者已经看到了事先保存待编辑的文件的好处了吧,即Keil

    14、 c51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。程序输入完毕后,如下图所示 8)在上图中,单击“Project”菜单,再在下拉菜单中单击“Built Target”选项(或者使用快捷键F7),编译成功后,再单击“Project”菜单,在下拉菜单中单击“Start/Stop Debug Session”(或者使用快捷键Ctrl+F5),屏幕如下所示9)调试程序:在上图中,单击“Debug”菜单,在下拉菜单中单击“Go”选项,(或者使用快捷键F5),然后再单击“Debug”菜单,在下拉菜单中单击“Stop Running”选项(或者使用快捷键Es

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

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

    17、机内部ROM的内容全为FFH。(4)写器件:把代码区中的程序代码下载到单片机的内部ROM中。注意在编程之前,要对单片机芯片进行擦除操作。(5)效验数据:是经过编程之后,对下载到单片机内部ROM中的内容与代码区的内容相比较,若程序下载过程中完全正确,则提示校验正确,否则提示出现错误。那就得需要重新下载程序到ROM中。(6)自动:提供了从内部ROM从擦除到编程,最后到校验这三个过程。(7)读器件:从单片机内部ROM中读取内容到代码显示区中。第四章实验及实践课题1闪烁灯1实验任务如图4.1.1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。2电路原理

    18、图图4.1.13系统板上硬件连线把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。4程序设计内容(1)延时程序的设计方法作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢?下面具体介绍其原理:498*20+2*20+2=10002如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微秒 机器周期 微秒MOV R6,#20 2个 2D1: MOV R7,#248 2个 22224849820

    19、DJNZ R7,$ 2个 2248 (498 DJNZ R6,D1 2个2204010002因此,上面的延时程序时间为10.002ms。由以上可知,当R610、R7248时,延时5ms,R620、R7248时,延时10ms,以此为基本的计时单位。如本实验要求0.2秒200ms,10msR5200ms,则R520,延时子程序如下:DELAY: MOV R5,#20D1: MOV R6,#20D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET(2)输出控制如图1所示,当P1.0端口输出高电平,即P1.01时,根据发光二极管的单向导电性可知,这时发

    20、光二极管L1熄灭;当P1.0端口输出低电平,即P1.00时,发光二极管L1亮;我们可以使用SETBP1.0指令使P1.0端口输出高电平,使用CLRP1.0指令使P1.0端口输出低电平。5程序框图 如图4.1.2所示图4.1.26汇编源程序ORG 0000HSTART: CLR P1.0LCALL DELAYSETB P1.0LCALL DELAYLJMP STARTDELAY: MOV R5,#20 ;延时子程序,延时0.2秒D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RETEND7C语言源程序#include sbit

    21、L1=P10;void delay02s(void) /延时0.2秒子程序 unsigned char i,j,k; for(i=20;i0;i-) for(j=20;j0;j-) for(k=248;k0;k-);void main(void) while(1) L1=0; delay02s(); L1=1; delay02s(); 2模拟开关灯1实验任务如图4.2.1所示,监视开关K1(接在P3.0端口上),K1拨上为高电平,拨下为低电平。用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关拨上,L1亮,开关拨下,L1熄灭。2电路原理图图4.2.13系统板上硬件连线(1)把“

    22、单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上;(2)把“单片机系统”区域中的P3.0端口用导线连接到“八路拨动开关”区域中的K1端口上;4程序设计内容(1)开关状态的检测过程单片机对开关状态的检测相对于单片机来说,是从单片机的P3.0端口输入信号,而输入的信号只有高电平和低电平两种,当拨开开关K1拨上去,即输入高电平,相当开关断开,当拨动开关K1拨下去,即输入低电平,相当开关闭合。单片机可以采用JBBIT,REL或者是JNBBIT,REL指令来完成对开关状态的检测即可。(2)输出控制如图3所示,当P1.0端口输出高电平,即P1.01时,根据发光二极管

    23、的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.00时,发光二极管L1亮;我们可以使用SETBP1.0指令使P1.0端口输出高电平,使用CLRP1.0指令使P1.0端口输出低电平。5程序框图图4.2.26汇编源程序ORG 00HSTART: JB P3.0,LIG CLR P1.0 SJMP STARTLIG: SETB P1.0 SJMP START END7C语言源程序#include sbit K1=P30;sbit L1=P10;void main(void) while(1) if(K1=0) L1=0; /灯亮 else L1=1; /灯灭 3多路开关状

    24、态指示1实验任务如图4.3.1所示,AT89S51单片机的P1.0P1.3接四个发光二极管L1L4,P1.4P1.7接了四个开关K1K4,编程将开关的状态反映到发光二极管上。(开关闭合,对应的灯亮,开关断开,对应的灯灭)。2电路原理图图4.3.13系统板上硬件连线(1把“单片机系统”区域中的P1.0P1.3用导线连接到“八路发光二极管指示模块”区域中的L1L4端口上;(2把“单片机系统”区域中的P1.4P1.7用导线连接到“八路拨动开关”区域中的K1K4端口上;4程序设计内容(1开关状态检测对于开关状态检测,相对单片机来说,是输入关系,我们可轮流检测每个开关状态,根据每个开关的状态让相应的发光

    25、二极管指示,可以采用JBP1.X,REL或JNBP1.X,REL指令来完成;也可以一次性检测四路开关状态,然后让其指示,可以采用MOVA,P1指令一次把P1端口的状态全部读入,然后取高4位的状态来指示。(2输出控制根据开关的状态,由发光二极管L1L4来指示,我们可以用SETBP1.X和CLRP1.X指令来完成,也可以采用MOVP1,1111XXXXB方法一次指示。5程序框图图4.3.26方法一(汇编源程序)ORG 0000HSTART: MOV A,P1 ANL A,#0F0HRR A RR ARR A RR AORL A,#0F0H MOV P1,ASJMP START END7方法一(C语

    26、言源程序)#include unsigned char temp;void main(void) while(1) temp=P14; temp=temp | 0xf0; P1=temp; 8方法二(汇编源程序) ORG 00HSTART: JB P1.4,NEXT1 CLR P1.0SJMP NEX1NEXT1: SETB P1.0NEX1: JB P1.5,NEXT2 CLR P1.1SJMP NEX2NEXT2: SETB P1.1NEX2: JB P1.6,NEXT3 CLR P1.2SJMP NEX3NEXT3: SETB P1.2NEX3: JB P1.7,NEXT4 CLR P1

    27、.3SJMP NEX4NEXT4: SETB P1.3NEX4: SJMP START END9方法二(C语言源程序)#include void main(void) while(1) if(P1_4=0) P1_0=0; else P1_0=1; if(P1_5=0) P1_1=0; else P1_1=1; if(P1_6=0) P1_2=0; else P1_2=1; if(P1_7=0) P1_3=0; else P1_3=1; 4广告灯的左移右移1实验任务做单一灯的左移右移,硬件电路如图4.4.1所示,八个发光二极管L1L8分别接在单片机的P1.0P1.7接口上,输出“0”时,发光二

    28、极管亮,开始时P1.0P1.1P1.2P1.3P1.7P1.6P1.0亮,重复循环。2电路原理图图4.4.13系统板上硬件连线把“单片机系统”区域中的P1.0P1.7用8芯排线连接到“八路发光二极管指示模块”区域中的L1L8端口上,要求:P1.0对应着L1,P1.1对应着L2,P1.7对应着L8。4程序设计内容我们可以运用输出端口指令MOVP1,A或MOVP1,DATA,只要给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作。每次送出的数据是不同,具体的数据如下表1所示P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0说明L8L7L6L5L4L3L2L111111110L1亮11111101L2亮11111011L3亮11110111L4亮11101111L5亮11011111L6亮10111111L7亮01111111L8亮表15程序框图图4.4.26汇编


    注意事项

    本文(51单片机20个实验代码详细之欧阳体创编.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开