




已阅读5页,还剩62页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理综合实验实 验指 导书长春工业大学计算机与信息技术实验中心目录第一章 实验箱说明1.1 功能介绍1.2 核心处理器简介1.3 硬件布局1.4 资源端口分配第二章 实验环境及工具介绍2.1 Keil C51安装及使用2.2 USB驱动安装及下载软件的使用第三章 单片机基础实验实验一 循环彩灯实验二 动态数码显示实验三 44矩阵键盘实验四 液晶显示实验五 D/A转换实验六 A/D转换实验七 LED点阵显示实验八 串口通信附录1 常见问题解答第一章 实验箱说明1.1 功能介绍JSJDZ-型实验箱是一款具有实验仪、编程器、ISP下载线三种功能合一的综合学习开发系统,适用于EDA技术及应用和单片机原理课程的基础实验及其他有关EDA和单片机设计的综合实验。实验箱的特点有:l 集成ISP编程功能,支持USB2.0在线下载编程l 可以支持EDA与单片机两种芯片的编程与开发l 模块种类丰富多样,适用于课本上的所有实验l 使用74LS244外扩I/O口,驱动能力强l 用三档开关控制各模块与MCU的连接与断开,电路连接方便l 外扩引脚,适用于其他各种电子设计l 各模块之间可同时启用,方便综合调试l 内置开关电源在传统的控制系统中,人们常用单片机作为控制核心,单片机在端口数目、内部定时器和中断源的个数都有限,在实际工程应用中不得不外部扩展其它芯片才能满足需要,这就使得硬件电路连线的复杂度增加,出现问题的概率增加。 随着电子工艺和技术的迅猛发展,可编程逻辑器件越来越来多的出现子在人们的生活中,它将复杂的数字电路集中于一块芯片上,通过不同的配制文件使其产生不同的控制逻辑,FPGA和CPLD就是典型的可编程器件,虽然在结构上不同,但是在实际中的作用很相似。现在许多系统采用可编程器件作为控制核心,与传统设计相比较,它被称为数字系统设计,由于内部有丰富的数字逻辑单元,芯片的I/O引脚也较多,方便了电路的接口控制,提高了系统的整体性能及工作可靠性,也为系统的集成创造了条件。对于时序要求较高的电路采用FPGA作为控制器能使电路工作在较高的频率,而CPLD则适合控制组合逻辑电路。CPLD/FPGA工作方式与单片机的相比,单片机的指令有固定的执行方式,至少需要四个时钟周期且时钟频率,而CPLD/FPGA的运算执行方式会根据实现该运算的硬件电路方式的不同而不同,采用硬件描述语言以并行的方式来控制外围器件,在同一时刻实现对多个器件的控制,工作完全由硬件完成不需要顺序执行软件指令,所以其运算的速度会远高于单片机。 由于可编程器件与单片机在应用中各有优点和不足,为了能将两者的优点结合起来,ALTERA公司提出了一种SOC的解决方案,它将处理器、存储器、I/O、LVDS等系统设计需要的功能模块集成到一个可编程的器件上,构成了一个可编程的片上系统,SOPC是PLD和ASIC技术结合的结果,有人认为SOPC代表了半导体产业的未来发展方向,但是该项新技术的发展有着不足,目前能够实现SOPC技术的FPGA芯片价格仍然很高,通过SOPC技术把FPGA芯片配制成单片机实现C语言对器件的编程控制,虽然避免了大量VHDL代码的编写,编程的工作量减少了很多,却占用了大量的硬件资源用于各种形成不同功能的寄存器 不能有效的去完成更多的工作,C语言的顺序执行使得芯片无法发挥同一时刻并行完成多项任务的优点。在实际应用中完成相同功能的单片机的价格却相当便宜,在市场中想使自己的产品有优势,性价比是一个必须要考虑的因素。在价格和开发难度上来说,SOPC并不适合大多数人的要求,我们需要一种经济、实用的解决方案。 可编程器件与单片机构成的双核控制器采用价格较低的EPM7128和AT89S52实现联合设计开发,既利用了两类控制器件的优势,还降低开发的技术难度,适应不同的开发人员。在设计中开发人员可以单独使用单片机或CPLD来控制外围器件,也可以相互通信配合使用来完成工作。 通过该双核控制器来实现一些基础实验和高级实验,基础实验包括:独立按键控制、阵列按键控制、LED灯的控制、蜂鸣器的控制;高级实验包括:温度采集实验、光照度采集实验、存储器EEPROM的使用。在通信方面完成RS232串口通信、RS485通信、红外通信、无线数字通信实验。 现在许多开发板都将程序下载器单独作为一部分,一头是通过排线将它们与开发板连在一起,另一头通过并口线或串口线与PC机相连。不仅使用时插拔比较麻烦,还可能由于多次的连接损坏电路连接部分造成开发板无法被写入程序,而该双核控制器的程序下载由并口线来完成,CPLD和单片机的下载电路都做在开发板上,开发人员只需要用一根并口线将开发板和PC机连接在一起就能顺利实现程序的写入,下载程序时只要通过跳冒连接就可以工作,平时可以作为普通的I/O引脚使用。 现在许多外围器件的工作速度很高,使用CPLD来控制就能使其有效的工作,既实现了高速,还可以利用CPLD的丰富I/O引脚实现多个外围器件的同时控制,充分发挥了CPLD的优势,得到的数据会有8位、10位、 12位、16位等。同过串行线将数据送给单片机,由单片机内有特殊功能的寄存器,在数据传输和数据的算术运算优于CPLD ,适合完成对工作频率要求不高的整体任务分配和数据后期处理,这样就能发挥双方的优势更好的完成设计和实验。图1 单片机与CPLD芯片图 2 实验开发板CPLD与单片机的双向串行通信原理1. 1单片机到CPLD的串行通信单片机到CPLD的串行通信接口电路是利用VHDL语言在CPLD设计一个串行输入并行输出的八位移位寄存器,其端口与单片机的P01-P03相连,如图2所示。CS为片选信号,当其为低电平时使能八位寄存器,当DCLOCK的信号的上升沿到达CLK端口时,八位移位寄存器就会将单片机输出到EXIN的一位数据移入;当单片机A寄存器中的八位数据欲传给CPLD时,就在P02连续产生八次上升沿,单片机便顺次将数据移到EXIN,八次后A中的数据段就会出现在CPLD的CXOUT中。 图2 单片机到CPLD的串行通信接口电路1.2 CPLD到单片机的串行通信CPLD到单片机的串行通信与单片机到CPLD串行通信类似,只不过八位寄存器改为并入串出,其端口入图3所示。当单片机的CS=1时,待发的数据被加载到BXIN上,当CLK上升沿到来时,将数据一位一位移出至BXOUT上,与此同时,单片机一位一位地接收来自BXOUT上的数据。在CLK八个上升沿后,加载到BXIN的数据便被传送至单片机的A寄存器中。图3 由CPLD到单片机的并入串出移位寄存器由于单片机端口有限,所以大部分外围器件连线靠CPLD来连接,而对时序要求较高的确那些外围器件则靠单片机来间接控制。所谓间接控制就是指应用者自定义很多命令字,每个命令字对应着CPLD的一项或多项操作。当单片机想让某外部器件实现某种功能时,可以通过串行通信把命令字传送给CPLD;CPLD接收到命令后并判断该命令字,便在EN上升沿到来后执行相应的工作,值得注意的是:命令字送到CPLD后,只有在EN的上升沿到来后,CPLD才能执行相应的操作。这是为了防止命令字在传送其间使CPLD引起误动作。当外部器件有中断信息反馈到控制器时,也可将特定的命令字由CPLD传送至单片机,使单片机产生产生中断进行处理,。但无论有多少个外围器件需产生中断控制,都应由CPLD在单片机的INT0处产生中断。在单片机的中断子程序中,运行由CPLD向单片机的串行通信子程序,将特定的命令字读到A寄存器中,从而可知是那个外围器件产生中断(由应用者自行定义),进而可知需何种外部操作。 本双核控制器开发板将控制芯片CPLD和单片机的I/O引脚都引出来,与外围器件的连接由跳冒短接,开发人员如果想利用该芯片完成外部其它的模块控制,可以使用杜邦线将相应的引脚相连,大大方便了用户的创新开发。在项目训练和应用开发中非常灵活方便,这里采用的是八位命令字,最多可定义256个命令字。由于同时采用了单片机和CPLD,因此编程非常方便灵活,工程人员可根据自身特点而相应选择。例如,有些人的单片机的编程能力要比VHDL语言的编程要好一些,那他便可在VHDL语言中把对命令字的操作定义的简单一些;若是想简化单片机的编程,则可使VHDL语言编程中特定的命令字对应的操作复杂一些。单片机的编程过程就是对A寄存器写不同的命令字,然后调用串行通信子程序的过程。若是VHDL的命令字对应的程序简单些,则要完成对某特定外围器件的操作所需要的命令字调用就会多一些。反之亦然。总之,用单片机与CPLD构成的双控制器,在学习与项目开发中要比用它们各自独立开发项目要容易的多。1.2核心处理器简介二实验板上的单片机芯片简介本实验板采用的是AT89s52单片机,它是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得at89s52单片机为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 AT89s52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。P0 口: P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1 口: P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。在flash编程和校验时,P1口接收低8位地址字节。P2 口: P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3 口: P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,P3口也接收一些控制信号。RST: 复位输入。晶振工作时,RST脚持续2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96 个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/PROG: 地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置 “1”,ALE操作将无效。这一位置 “1”,ALE 仅在执行MOVX 或MOVC指令时有效。否则,ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。PSEN: 外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。EA/VPP: 访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。XTAL1: 振荡器反相放大器和内部时钟发生电路的输入端。XTAL2: 振荡器反相放大器的输出端。1.3 硬件布局串口通信模块LCD显示模块数码管显示模块CPLD程序下载模块电源模块单片机程序下载模块测温模块CPLD I/O扩展独立按键及开关PTR2000彩灯指示模块蜂鸣器CPLD主控芯片(EPM7128)单片机主控芯片AT89S52PWM电机控制模块微型打印机点阵显示模块A/D转换模块D/A转换模块44矩阵键盘模块单片机I/O口扩展图1 JSJDZ-型实验箱各模块布局1.4 资源端口分配表一:单片机端口分配端口资源1资源2资源3资源4资源5P0.0彩灯D0数码管段aLCD D0点阵 LOADD/A D0P0.1彩灯D1数码管段bLCD D1点阵 CLKD/A D1P0.2彩灯D2数码管段cLCD D2点阵 DID/A D2P0.3彩灯D3数码管段dLCD D3点阵 MXD/A D3P0.4彩灯D4数码管段eLCD D4点阵 HXD/A D4P0.5彩灯D5数码管段fLCD D5D/A D5P0.6彩灯D6数码管段gLCD D6D/A D6P0.7彩灯D7数码管段hLCD D7D/A D7P1.04*4键盘L4A/D OUTPWM P2+P1.14*4键盘L3A/D EOCPWM P2P1.24*4键盘L2A/D CLKPWM P2-P1.34*4键盘L1A/D ESPWM P1+P1.44*4键盘H4A/D CSPWM P1P1.54*4键盘H318B20PWM P1-P1.64*4键盘H2独立按键P1.74*4键盘H1独立按键P2.0数码管 ALCD RS点阵 AP2.1数码管 BLCD R/W点阵 BP2.2数码管 CLCD E点阵 CP2.3P2.4P2.5P2.6独立按键蜂鸣器P2.7独立按键P3.0串口 ROPTR2000 ROP3.1串口 RIPTR2000 DIP3.2串口 DIP3.3P3.4PTR2000 TX电机测速 D/A CSP3.5P3.6P3.7第二章 实验环境及工具介绍2.2 Keil C51安装及使用2.2.1 安装1)打开Keil,双击setup文件夹,再双击Setup.exe。2) 选择。3) 之后按默认的即可。4)安装成功。2.2.2建立您的第一个项目开始程序运行Keil uVision2几秒后,出现如图31的屏幕。图31启动时的屏幕接着按下面的步骤建立您的第一个项目:(1)新建工程。点击Project菜单,选择弹出的下拉式菜单中的New Project,如图32。接着弹出一个名为“Create New Project”的对话框,如图33,先选择一个合适的文件夹准备来存放工程文件,如“C51” 是新建的文件夹。在文件名中输入您的第一个程序项目名称,这里我们用test,保存后的文件扩展名为uv2,这是KEIL uVision2项目文件扩展名,以后我们可以直接点击此文件以打开先前做的项目。我们建议:今后每新建一个工程都要在适当的磁盘位置新建一个文件夹用来保存工程文件,以方便管理,并养成良好的习惯。图32New Project菜单图33文件窗口(2)选择单片机。紧接着,Keil C51 提示您选择CPU 器件。8051 内核单片机最早是由鼎鼎大名的Intel 公司发明的,后来其他厂商如Philips、Atmel、Winbond 等先后推出其兼容产品,并在8051 的基础上扩展了许多增强功能。在这里我们选择Atmel公司的AT89S51。此时屏幕如图34所示。图14选取芯片接下来弹出一个如图3-5 所示的对话框。该对话框提示您是否要把标准8051 的启动代码添加到工程中去。Keil C51 既支持C 语言编程也支持汇编语言编程。如果打算用汇编语言写程序,则应当选择“否(N)”;如果打算用C 语言写程序,一般也选择“否(N)”,但是,如果用到了某些增强功能需要初始化配置时,则可以选择“是(Y)”。在这里,我们选择“否(N)”,即不添加启动代码。图35 选择是否要添加启动代码至此,一个空的Keil C51 工程建立完毕。(3)首先我们要在项目中创建新的程序文件或加入旧程序文件。点击图36中1的新建文件的快捷按钮,在2中出现一个名为“Text n”(其中n 表示序号)的文档,或通过菜单FileNew或快捷键Ctrl+N来实现。图16 新建程序文件 点击图36中的3保存新建的程序,也可以用菜单FileSave或快捷键Ctrl+S进行保存。因是新文件所以保存时会弹出如图37的文件操作窗口,我们把第一个汇编语言编写的程序命名为test1.asm,保存在项目所在的目录中。注意:扩展名“.asm”不可省略。图3-7 保存新建的源程序文件(4)添加源程序文件到工程中。现在,一个空的源程序文件“test1.asm”已经建立,但是这个文件与刚才新建的工程之间并没有什么内在联系。我们需要把它添加到工程中去。单击Keil C51 软件左边项目工作窗口“Target 1”上的“”,将其展开。然后右击“Source Group 1”文件夹,会弹出如图3-8 所示的选择菜单。单击其中的“Add Files to Group Source Group 1”项,将弹出如图3-9 所示的对话框。图38 把文件加入到项目文件组中图39 选择文件请在文件类型下拉列表中选择Asm source file源文件,再选择刚刚保存的文件“test1.asm”,按ADD按钮(请不要多次点击“Add”按钮),最后按“Close”按钮,程序文件已加到项目中了。这时可以点击Source Group1文件夹图标左边的“+” 展开后查看。 (5) 现在开始输入源程序。先最大化“test1.asm”源程序窗口,然后请按实验一程序清单输入程序代码。;-入口程序 -ORG 0000H ;程序执行开始地址LJMP START ;跳到标号START执行;- 主 程 序 -START:MOVP0,#01111111B; 点亮最下面的LED,即P1_7口低电平 LCALL DELAY50;延时50毫秒 MOV P0,#10111111B; 点亮下面第二个LED,即P0_6口低电平 LCALL DELAY50;延时50毫秒 MOV P0,#11011111B;LED依次点亮 (以下省略) LCALL DELAY50;延时50毫秒 MOV P0,#11101111B LCALL DELAY50;延时50毫秒 MOV P0,#11110111B LCALL DELAY50;延时50毫秒 MOV P0,#11111011B LCALL DELAY50;延时50毫秒 MOV P0,#11111101B LCALL DELAY50;延时50毫秒 MOV P0,#11111110B LCALL DELAY50;延时50毫秒 MOV P0,#11111111B;完成第一次循环点亮,延时约0.25秒 LCALL DELAY50;延时50毫秒 AJMP START;反复循环;-延时子程序,12M晶振延时约50毫秒-DELAY50:MOV R4,#5L3: MOV R2,#20L1: MOV R3,#248 DJNZ R3 ,$DJNZ R2 ,L1DJNZ R4 ,L3 RET END(6)单击Keil C51 工具栏的“”图标,弹出名为“Options for Target Target 1”的对话框。单击“Output”标签页,选中“Create HEX File”项,然后“确定”。参见图3-10。图3-10 编译环境设置(7)我们先来看图311,图中1、2、3都是编译按钮,不同是1是用于编译单个文件;2是编译当前项目,如果先前编译过一次之后文件没有做动编辑改动,这时再点击是不会再次重新编译的;3是重新编译,每点击一次均会再次编译链接一次,不管程序是否有改动。在3右边的是停止编译按钮,只有点击了前三个中的任一个,停止按钮才会生效。5是菜单中的它们。这个项目只有一个文件,你按123中的一个都可以编译。在4中可以看到编译的错误信息和使用的系统资源情况等,以后我们要查错就靠它了。单击工具栏的按钮“”编译当前源程序。编译结果会显示在输出窗口4内。如果是“0 Error(s), 0 Warning(s).”就表示程序没有问题了(至少是在语法上不存在问题了)。如果存在错误或警告,双击错误,在源程序的错误行前会出现,修改后,再编译,直到通过为止。图311 编译程序(8)编译后的结果会生成Intel HEX 格式的程序文件“test1.hex”,如图1-12。该文件可以被专门的芯片烧写工具(例如Top2004 编程器)载入并最终烧录到具体的芯片中。芯片安装到自己的电路板上,通电,就可以运行里面的程序了。图312编译信息窗口至此,您可以把编译好的文件烧到了芯片上。2.3 USB驱动安装及使用2.3.1 USB驱动安装(1) 将USBasp 插入到USB 口,电脑右下脚会找到新硬件提示。(2) 找到新硬件后,电脑会弹出新硬件向导。(3) 选择驱动程序所在的文件夹。(4) 安装驱动。(5) 完成驱动安装。(6) 完成并可以使用。(7) 大家可以查看一下设备管理器,是不是电脑多了一个设备。2.3.2 使用progisp1.66下载(1) 打开progisp1.66.exe,选择下载线、下载端口、目标芯片。 (2)点击“RD”按钮,可以验证芯片。如果目标芯片和USBasp 下载线没有问题的话,软件没有反映,而USBasp 板上的灯闪一下。如果目标芯片或USBasp 下载线有问题,则常会出现的问题提示对话框如下:(a) (b) (c) (a)表示找不到USBasp 下载线,此时请检查USBasp 下载线是否插上,USBasp 下载线是否有电路问题。 (b)表示找不到目标芯片,此时请检查目标电路板是否插上,目标电路板是否有电路问题。(c)表示找到了芯片,但不是选中的芯片,此时请检查选择的芯片是否与实际的芯片相同。(3)调入*.hex 文件,完成烧写。 (4)其它。第三章 单片机基础实验实验一 循环彩灯一、 实验目的1. 熟悉单片机实验板、Keil C51软件使用2. 学习简单程序的调试方法3学习延时子程序的编写和使用4学习P0口的使用方法二、 实验内容P0口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。三、 实验原理八个发光二极管D0D7 分别接在单片机的P0.0P0.7接口上,输出“0”时,发光二极管亮,按P0.0P0.1P0.2P0.3P0.7P0.6P0.0 逐一点亮,重复循环。硬件电路如图1-1所示。 图1-1 我们可以运用输出端口指令MOV P0,A或MOV P0,DATA,只要给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作。每次送出的数据是不同,具体的数据如下表1-1 所示。表1-1:P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0说明D7D6D5D4D3D2D1D011111110D0亮11111101D1亮11111011D2亮11110111D3亮11101111D4亮11011111D5亮10111111D6亮01111111D7亮四、 实验步骤1.将三档开关K29拨到最下(指向89S51),其它开关都拨到中间,插上USB下载线,打开电源。2打开KEIL软件,在所建的项目文件中输入源程序,进行编译,编译无误后,将生成的.HEX文件用Proisp下载到单片机中。3.观察实验板上小灯的现象,看是否符合实验要求。如果未到达实验要求,修改程序,重复2操作,直至达到实验要求。五、 程序代码1 汇编程序代码: ORG 0000H AJMP START ORG 0030HSTART: MOV SP,#60H MOV R2,#8 MOV A,#0FEH SETB CLOOP: MOV P0,A ;左移 LCALL DELAY RLC A DJNZ R2,LOOP MOV R2,#8 RRC ALOOP1: MOV P0,A ;右移 LCALL DELAY RRC A DJNZ R2,LOOP1 LJMP STARTDELAY: MOV R5,#20 ;延时D1: MOV R6,#20D2: MOV R7,#200 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END2 C编程序代码:#includevoid delay10ms(unsigned int count);zy_a1();yy_a1();/-主函数- main() while(1) zy_a1(); yy_a1(); /-左移模块 逐渐点亮- zy_a1() unsigned char i,temp,a; /声明无符号型变量i,temp,a temp=0xfe; /左移初始值 for(i=0;i8;i+) /设置移动位数 a=tempi; /灯左移i位 P0=a; /输出 delay10ms(50); /延时 /-右移模块 逐渐点亮- yy_a1() unsigned char i,temp,a; /声明无符号型变量i,temp,a temp=0xff; /左移初始值 for(i=0;ii; /灯左移i位 P0=a; /输出 delay10ms(50); /延时 /-延时-void delay10ms(unsigned int count) /延时函数 int i,j,k; for(i=0;icount;i+) for(j=0;j10;j+) for(k=0;k120;k+); 六、 实验思考1. 改用查表法实现上述功能。2. 改动程序实现循环速度的变化。3. 改动程序实现其他形式的循环彩灯。4. 试着用PWM方式,改变小灯的亮度。实验二 动态数码显示一、 实验目的1. 了解数码管动态显示原理2. 了解74LS138译码器的原理3. 了解数码管编码的原理二、 实验内容利用实验仪提供的数码管显示电路,动态显示“09-10-01”字样。三、 实验原理 本实验仪提供了8 位8段码LED显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。电路原理图如图2-1所示。系统板上硬件连线说明如下:(1)单片机的P0.0-P0.7连接到8位数码管的a-h段上。显示内容与单片机P0口输出数据对应关系如表2-1所示。(2)单片机的P2.0-P2.2连接到74LS138译码器的A-C上。74LS138译码的输出端Y0-Y7连接到数码管的COM0-COM7上。单片机P2.0-P2.1输出数据与数码管选通位的对应关系如表2-2所示。图2-1表2-1:P0口输出数据与数码管显示对应关系对应数据线P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0对应显示段Dpgfedcba0C0110000001F9111110012A4101001003B0101100004991001100159210010010682100000107F8111110008801000000099010010000-BF10111111表2-2:P2.0-P2.2输出与数码管位选通对应关系P2.2P2.1P2.0数码管位0通000数码管位1通001数码管位2通010数码管位3通011数码管位4通100数码管位5通101数码管位6通110数码管位7通111四、 实验步骤1将三档开关LED拨到最下(指向89S51),其它开关都拨到中间,插上USB下载线,打开电源。2打开KEIL软件,在所建的项目文件中输入源程序,进行编译,编译无误后,将生成的.HEX文件用Proisp下载到单片机中。3观察实验板上数码管显示的现象,看是否符合实验要求。如果未到达实验要求,修改程序,重复2操作,直至达到实验要求。五、 程序代码1汇编程序代码 ORG 0000H AJMP START ORG 0030HSTART: MOV SP,#60HMAIN: MOV R2,#8 ;主程序 LOOP: MOV DPTR,#TAB1 MOV A,R2 MOVP2,A MOVCA,A+DPTR MOV DPTR,#TAB0 MOVC A,A+DPTR MOV P0,A LCALL DELAY DEC R2 CJNE R2,#0FFH,LOOP AJMP MAINDELAY: MOV R6,#20 ;延时NEXT: MOV R7,#50 DJNZ R7,$ DJNZ R6,NEXT RETTAB0: DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H,0BFH ;共阳码 0,1,2,3,4,5,6,7,8,9,-TAB1: DB 01H,00H,0AH,00H,01H,0AH,09H,00H ;09-10-01 3 C编程序代码#include#define uchar unsigned charuchar code table0=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf;uchar code table1=0x01,0x00,0x0a,0x00,0x01,0x0a,0x09,0x00;void delay();main() /主函数 uchar i,j,d; for(i=0;i9;i+) j=table1i; d=table0j; P2=i; P0=d; delay(); void delay() /延时函数 uchar m,n; for(m=0;m5;m+) for(n=0;n5;n+); 六、 实验思考1 更改程序,改变显示内容。2 不用查表法,试用其他方法编写程序。3 只显示其中一部分,不完全显示8位。实验三 44矩阵键盘一、 实验目的1掌握键盘和显示器的接口方法和编程方法2掌握矩阵键盘的使用及键盘扫描程序的设计方法3掌握软件法按键消抖的原理二、 实验内容在上一个实验的基础上,利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在数码管上显示出来。 三、 实验原理1.实验箱上有一个16键的矩阵键盘,分为4行4列。4行作为输入线分别连接到单片机的P1.0P1.3,4列输出线分别连接到单片机的P1.4P1.7。行列式键盘结构如图3-1所示。图3-1图中键盘的行线X0X3通过电阻接+5V,当键盘没有键闭合时,所有的行线和列线断开,行线X0X3均呈高电平。当键盘上某一键闭合时,该键所对应的行线与列线短路,此时该行线的电平将由被短路的列线电平所决定。如果将行线接至单片机的输入端口,列线接至单片机的输出端口,则在单片机的控制下使列线Y0为低电平,其余三根列线Y1、Y2、Y3均为高电平,然后单片机读输入口状态(即键盘行线状态),若X0、X1、X2、X3均为高电平,则Y0这一列上没有键闭合,如果读出的行线状态不全为高电平,则为低电平的行线和0相交的键处于闭合状态。如果Y0这一列没有键闭合,紧接着使列线Y1为低电平,其余列线为高电平,用同样的方法检查Y1这一列有无键闭合,如此类推。这种逐行逐列地检查键盘状态的过程称为对键盘的扫描。CPU对键盘的扫描可以采取程序控制的随机方式,CPU空闲时才扫描键盘;也可以采取定时控制方式,每隔一段时间,CPU对键盘扫描一次;还可以采用中断方式,当键盘上有键闭合时,向CPU请求中断,CPU响应键盘发出的中断请求,对键盘进行扫描,以识别哪一个键处于闭合状态,并对键输入信息作相应处理。CPU对键盘上闭合键号的确定,可以根据行线的状态计算求得,也可以查表求得。键盘布置及键值如表3-1所示。 表3-1:第4列第3列第2列第1列行输入P1.300H01H02H03H第4行行P1.204H05H06H07H第3行P1.108H09H0AH0BH第2行P1.00CH0DH0EH0FH第1行P1.7P1.6P1.5P1.4列输出表3-1 键盘布置及键值2.键盘接口及程序设计键输入程序的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 户外早教活动策划方案
- 关于智能开关的营销方案
- 海底捞店面营销方案设计
- 青海规划馆设计施工方案
- 徐州胶粘石施工方案审批
- 心理健康咨询方案
- 商城代金券营销方案策划
- 船营区装修方案咨询
- 建筑穿墙螺杆处理方案设计
- 余姚社团活动策划方案
- 公司兼职人员劳务合同4篇
- 制造过程质量追溯系统设计
- 2025年能源行业新能源产业风险管理可行性研究报告
- 2.1 认识平均分(课件)数学苏教版二年级上册(新教材)
- 井盖安全常识培训课件
- 半导体器件专用设备零部件制造项目可行性研究报告
- 2025年中国铁路总公司校招笔试备考手册
- 2025社会工作员考试(社会工作基础知识)综合能力测试题及答案
- 卫生院支委会补选书记会议记录范文
- 酸洗作业安全知识培训
- 沥青混凝土面层和沥青碎砾石面层分项工程质量检验评定表新城
评论
0/150
提交评论