实验一LED灯显示实验一、实验目的及要求1、掌握单片机软件开发平台Keilc51软件的使用步骤;2、掌握C语言、汇编语言在Keil平台上的使用方法。3、熟悉汇编语言与C语言的编程方法。4、掌握应用KEILC软件进行单片机汇编语言的编程和编译,对语法错误的修改,对程序运行结果的跟踪等,从而在没有硬件系统的情况下,实现对所编程序的调试;5、掌握P口的使用方法;6、掌握延时子程序的编写及调用。二、实验重点与难点重点:KEILC软件的使用,汇编程序仿真调试的方法;LED指示灯的工作原理,P口控制多个LED指示灯按规律亮、灭的方法。难点:汇编程序仿真调试的方法;P口控制LED指示灯按规律亮、灭的方法。三、实验环境硬件:单片机开发板,计算机一台;软件:KeiluVsion2。四、实验内容1、KEILC软件的使用及汇编程序仿真调试(1)新建工程选项,选择保存的路径,输入工程文件的名字;(2)选择单片机的型号;(3)新建文件(注意:如果用C语言编写程序,则扩展名为.c;如果用汇编语言编写程序,则扩展名必须为.asm);(4)将文件加入工程;(5)输入汇编语言源程序或c语言源程序(自编程序);(6)编译程序;(7)调试程序;(8)通过寄存器窗口、存储器窗口以及外围设备窗口等查看程序运行后的结果;(9)生成HEX文件,使程序编译后产生HEX代码供下载器软件使用,把程序下载到单片机实验箱中。输入如下程序:MOVR1,#20HMOVR0,#50HSTART:MOVA,@R1MOV@R0,AINCR1INCR0CJNER0,#5AH,STARTRET调试以上程序,描述出程序完成的功能,通过CPU窗口观测程序的执行情况,通过存储器窗口观察并分析涉及到的存储器单元中的数据变化情况。2、P0口做输出口,接八只发光二极管,如图1所示。编写程序,使发光二极管循环点亮,延时时间为0.5秒,晶振为11.0592Mhz,运行程序后,观察发光二极管闪亮移位情况。3、P0口和P2口做输出口,各接八只发光二极管,如图1所示。编写程序,实现花样流水灯的显示,变化花样可自行设计。图1流水灯实验电路图4、LED模拟交通灯如图2所示电路图中,12只LED分成东西向和南北向两组,各组指示灯均有相同的2只红色、2只黄色与2只绿色的LED。编写程序,要求程序运行结果模拟十字路口交通信号灯的切换过程与显示效果。具体要求是:东西向绿灯亮若干秒后,黄灯闪烁,闪烁5次后亮红灯,红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁,闪烁5次后亮红灯,东西向绿灯亮,如此重复。图2LED模拟交通灯实验电路图五、思考R2220R3220R4220R5220D1红D2黄D3绿D4红D5黄D6绿R6220R7220XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51C122pFC222pFC310uFX112MR110kp0.0p0.1p0.2p0.3p0.4p0.5p0.0p0.1p0.2p0.3p0.4p0.5R8220R9220R10220D7红D8黄D9绿p0.0p0.1p0.2R11220D10红D11黄D12绿R12220R13220p0.3p0.4p0.51243845678123567abcdefghabcdefghD1R3220XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51C122pFC222pFC310uFX112MR110kD2R4220D3R5220D4R6220D5R7220D6R8220D7R9220D8REDR10220D9GREEND10D11D12D13D14D15D16R11220R12220R13220R14220R15220R16220R17220R182201、改变延时常数,使发光二极管闪亮时间改变。2、修改程序,使发光二极管闪亮移位方向改变。实验二定时器实验一、实验目的及要求1、了解MCS-51单片机中定时器/计数器的基本结构、工作原理和工作方式;2、掌握工作在定时器模式下的编程方法;3、进一步掌握P口的应用。二、实验重点与难点重点:初值的计算,工作在定时器模式下的编程方法。难点:工作在定时器模式下的编程方法。三、实验环境硬件:PC机一台,单片机学习板;软件:keilC软件。四、实验内容1、如图1所示的电路图中,设单片机的晶振频率F=12Mhz,使用T0定时100ms,在P1.0引脚上产生周期为200ms的方波信号,并通过示波器观察P1.0口输出的波形。图1电路原理图2、假设单片机的晶振为11.0592Mhz,使用T1实现1秒定时,并将其秒值按二进制数形式在P0口驱动LED灯显示出来,如图2所示。图2定时器控制led灯显示实验电路图3、使用定时器控制交通指示灯,实验电路图与实验一的图2一致。要求如下:东西向绿灯亮5秒后,黄灯闪烁,闪烁5次后亮红灯,红灯亮后,南北向由红灯变为绿灯,5秒后南北向黄灯闪烁,闪烁5次后亮红灯,东西向绿灯亮,如此重复。五、实验步骤及要求1.定时器初始值的确定;2.初始化程序定时器初始化和中断系统初始化,主要是对IE、TCON、TMOD的相应位进行正确的设置,并将定时器初始值送入定时器中;3.设计中断服务程序和主程序中断服务程序要将初始值重新送入定时器中,为下一次中断做准备。主程序则用来控制发光二极管按要求顺序燃灭。实验三串行口通信实验一、实验目的及要求1、熟悉单片机对按键的控制原理,掌握通过单片机对按键信号的读取与识别;2、掌握根据按键状态控制LED指示灯的两灭。二、实验重点与难点重点:单片机对按键信号的读取与识别、根据按键状态控制LED指示灯的两灭。难点:单片机对按键信号的读取与识别。三、实验环境硬件:PC机一台,单片机学习板;软件:WAVE软件。四、实验内容1、甲机通过串口控制乙机LED闪烁7124536812345678R2220XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51C122pfC222pfC310ufX112MR110kD1R3220D2R4220D3R5220D4R6220D5R7220D6R8220D7R9220D8图1甲机通过串口控制乙机LED闪烁电路图如图1所示电路图。两片8051单片机串口都工作在模式1,甲机对乙机完成以下4项控制:(1)甲机发送“A”,控制乙机LED1闪烁;(2)甲机发送“B”,控制乙机LED2闪烁;(3)甲机发送“C”,控制乙机LED1、LED2同时闪烁;(4)甲机停止发送任何命令字符,则乙机的两只LED均停止闪烁。2、单片机向主机发送字符串单片机通过串口按一定时间间隔向主机发送字符串,Proteus仿真如图2所示,Proteus内置虚拟终端(VirtualTerminal)的RXD连接单片机TXD引脚,单片机所发送的字符可以在虚拟中断中显示出来。T1IN11R1OUT12T2IN10R2OUT9T1OUT14R1IN13T2OUT7R2IN8C2+4C2-5C1+1C1-3VS+2VS-6U2MAX232XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115U180C51(甲机)CLOCK=11.0592MHzC41uFC31uF162738495J1CONN-D9FC51nFC11nFT1IN11R1OUT12T2IN10R2OUT9T1OUT14R1IN13T2OUT7R2IN8C2+4C2-5C1+1C1-3VS+2VS-6U3MAX232XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115U480C51(乙机)CLOCK=11.0592MHzC21uFC61uFC71nFC81nFK1D2R1220R2220D1162738495J2CONN-D9MR3220D3D4R4220图2单片机向主机发送字符串电路图实验四按键控制数码管显示实验一、实验目的及要求1、熟悉MCS-51定时/计数器的初始化编程方法,掌握根据延时要求计算定时器初值的方法;2、理解定时器溢出中断的概念,掌握中断服务程序的编程方法;3、学习并行口的使用方法。二、实验重点与难点重点:定时器初始化,中断系统初始化,中断服务程序的设计。难点:中断服务程序的设计。三、实验环境硬件:单片机开发板,计算机一台;软件:KeiluVsion2。四、实验内容图1按键控制数码管显示实验1、按键控制数码管加减显示编写程序,在数码管上显示000-255范围内的任意整数。具体要求是:K1按下后加1计数,K2按下后减1计数,K3按下后清零,而且,在不松开按键时,数字会按一定时间间隔持续递增或递减。2、倒计时单片机控制定时器和数码管实现1~99秒倒计时。如图1所示,其中,K1键是模式选择键,按