首页 8051单片机实验指导书

8051单片机实验指导书

举报
开通vip

8051单片机实验指导书实验指导 实验一 keil C51的应用 一、项目的建立 1、建立项目 选择Project菜单下的New Project命令,创建新工程,在对话框中设定新工程的位置,输入新工程名字保存即可,这里输进domo,然后点击保存,将新的工程保存在预先创建好的文件夹中。如图1-1所示: 图 1-1 2、选择CPU 在出现的为新工程选择CPU的界面,在“data base”栏下选择所使用的CPU,这里选择了Atmel公司的AT89S52。如图 1-2所示: 图 1-2 确定后,会弹出一“Copy Standard 8051 S...

8051单片机实验指导书
实验指导 实验一 keil C51的应用 一、项目的建立 1、建立项目 选择Project菜单下的New Project命令,创建新 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 ,在对话框中设定新工程的位置,输入新工程名字保存即可,这里输进domo,然后点击保存,将新的工程保存在预先创建好的文件夹中。如图1-1所示: 图 1-1 2、选择CPU 在出现的为新工程选择CPU的界面,在“data base”栏下选择所使用的CPU,这里选择了Atmel公司的AT89S52。如图 1-2所示: 图 1-2 确定后,会弹出一“Copy Standard 8051 Startup Code to Project Folder and Add File to Project”信息, 一般选择“否”即可。如图 1-3所示: 图 1-3 二、编写程序文件 1、执行file菜单下的new命令,创建一个新的程序文本文档,也可以直接单击工具栏上的Create a new file工具。 2、在新的文本文档里面编写程序,程序可以是C语言程序,也可以是汇编语言程序,我们在这里输进了汇编语言程序,如图 1-4所示: 图 1-4 程序写完后点击保存,在弹出的对话框中输进要保存文件的名字,如果是C语言程序的,后缀为.C,如果是汇编语言的,后缀为.ASM。这里用的是汇编程序,我们输进domo.asm,然后选择要保存的地方点击保存。 三、给项目加入程序文件 加入的文件可以是C文件,也可以是汇编文件。加入程序文件的过程如下。 1)在项目管理器窗口中展开Target1文件夹,可以看到Source Group1。 2)向Source Group1添加文件。在Source Group1点击鼠标右键,会弹出一菜单,其中有一“Add Files to Group‘Source Group1’”命令,点击后会弹出一对话框,选择需要加入的程序文件,并且一次可以加入多个文件。如图 1-5所示。 3)移走项目:在欲移走的文件上点击鼠标右键,会弹出一菜单,执行其中的“Remove File ‘***’”命令即可。 图 1-5 四、项目的编译链接 设置输出.hex文件:在Target1上点击鼠标右键,出现类似图1-5所示的菜单,点击执行“Options for Target ‘Target1’”命令,或者直接点击工具栏中对应的按钮。在弹出的会话界面选择“Output”标签,选中“Create HEX File”项即可。 编译链接 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 :使用Project菜单下的Build target命令或Rebuild all target Files命令,或者直接点击工具栏中对应的按钮。 编译链接结果:若有错误则不能通过,并且会在信息窗口给出相应的错误信息。编译链接通过后,会产生一.hex目标文件。 实验二KeilC与Proteus相结合的仿真 一、进入Proteus ISIS 双击桌面上的ISIS 7 Professional图标或者单击屏幕左下方的“开始”→“程序”→“Proteus 7 Professional” →“ISIS 6 Professional”,出现如图2-1所示屏幕,表明进入Proteus ISIS集成环境。 图 2-1 二、工作界面 Proteus ISIS的工作界面是一种 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 的Windows界面,如图2-2所示。包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。 图 2-2 三、设计实例 (一)、 电路 模拟电路李宁答案12数字电路仿真实验电路与电子学第1章单片机复位电路图组合逻辑电路课后答案 图的绘制 1、将所需元器件加入到对象选择器窗口。Picking Components into the Schematic 单击对象选择器按钮 ,如图 2-3所示: 图 2-3 弹出“Pick Devices”页面,在“Keywords”输入AT89C51,系统在对象库中进行搜索查找,并将搜索结果显示在“Results”中,如图2-4所示: 图 2-4 在“Results”栏中的列表项中,双击“AT89C51”,则可将“AT89C51”添加至对象选择器窗口。 接着在“Keywords”栏中重新输入MINRES1K,如图所示。双击“MINRES1K”,则可将“MINRES1K”(1K电阻)添加至对象选择器窗口。如图2-5所示: 图 2-5 最后在“Keywords”栏中重新输入LED-GREEN,如图所示。双击“LED-GREEN”,则可将“LED-GREEN”(绿色发光二极管)添加至对象选择器窗口。如图2-6所示。 图 2-1 在protues中,单片机已经具有默认的最小系统,因此不必再画单片机的最小系统电路。 2、放置元器件至图形编辑窗口Placing Components onto the Schematic在对象选择器窗口中,选中“AT89C51”,将鼠标置于图形编辑窗口该对象的欲放位置、单击鼠标左键,该对象被完成放置。同理,将其他元件放置到图形编辑窗口中。如图2-7所示。 图 2-7 若对象位置需要移动,将鼠标移到该对象上,单击鼠标右键,此时我们已经注意到,该对象的颜色已变至红色,表明该对象已被选中,按下鼠标左键,拖动鼠标,将对象移至新位置后,松开鼠标,完成移动操作。若对象需要旋转,将鼠标移到该对象上,单击鼠标右键,此时我们已经注意到在右键弹出的菜单中会有顺时针旋转,逆时针旋转,1800旋转,我们根据情况选择。 3、放置电源与地线。在绘图工具栏选择终端模式,然后在对象选择框里选择POWER和GROUND,在这里没有选择GROUND。如图2-8所示: 图 2-8 4、元器件之间的连线Wiring Up Components on the Schematic Proteus的智能化可以在你想要画线的时候进行自动检测。下面,我们来操作将LED-GREEN的右端连接到AT89C51的1脚。当鼠标的指针靠近LED-GREEN右端的连接点时,跟着鼠标的指针就会出现一个“×”号,表明找到了LED-GREEN的连接点,单击鼠标左键,移动鼠标(不用拖动鼠标),将鼠标的指针靠近AT89C51的1脚时,跟着鼠标的指针就会出现一个“×”号,表明找到了AT89C51的1脚,同时屏幕上出现了粉红色的连接,单击鼠标左键,粉红色的连接线变成了深绿色,同时,线形由直线自动变成了90º的折线,这是因为我们选中了线路自动路径功能。 Proteus具有线路自动路径功能(简称WAR),当选中两个连接点后,WAR将选择一个合适的路径连线。WAR可通过使用标准工具栏里的“WAR”命令按钮 来关闭或打开,也可以在菜单栏的“Tools”下找到这个图标。 同理,我们可以完成其它连线。在此过程的任何时刻,都可以按ESC键或者单击鼠标的右键来放弃画线。 最终电路如图2-9所示, 图 2-9 (二)KeilC与Proteus连接调试 1、双击AT89C51,打开编辑元件对话框,在Program file栏目添加已编译好的.HEX文件,然后点确定。如图2-10所示: 图 2-1 2、单击仿真运行开始按钮 ,我们能清楚地观察到每一个引脚的电平变化,红色代表高电平,蓝色代表低电平,LED一闪一闪的。 实验三 点亮一个LED 一、实验任务 点亮P01端口的LED 二、实验电路 图 3-1 RP9、RP10、RP11、RP12为发光二极管的限流电阻。用P0和P2端口作输出口,每个端口接8位用作逻辑电平显示的发光二极管。D00~D07为发红色光的发光二极管,D20~D27为发绿色光的发光二极管。共有16个发光二极管,ME850上用的是贴片封转的。当P0和P2端口输出低电平时,D00~D07和D20~D27正向导通发光。当P0和P2口输出高电平时,D00~D07和D20~D27截止不发光 三、程序流程图 图 3-2 四、汇编源程序 ORG 0000H AJMP START ORG 0050H START: SETB P0.0 LOOP: CLR P0.0 JMP LOOP END 五、实验步骤 1、利用Protues进行仿真。 2、连接好ME850,将USB线的扁头连接至计算机的USB口,方头连接到ME850的USB插座上。将电源开关SW1拨到USB端,电源指示灯“PWR”(红色)亮,表明ME850已经正常接通电源。 注意:因ME850固定安装了1602LCD,任何时候不用1602LCD时候须将1602液晶模块上方的JP24短路帽短接在“OFF”端可以禁用1602LCD,避免液晶模块对其他共用P0/P2口的外设(数码管、LED)产生干扰。 3、将JP1的跳线帽接在“51”的位置,将AT89S52单片机放进锁紧插座,缺口位置对着箱子内部。 4、①打开keil软件,执行keil软件的菜单project/new project,弹出一个名为“create new project”的对话框,如图1.3所示。输进工程的文件名,我们这里命名为LED1,选择要保存的路径,我们这里选择D:\DEMO。击保存。 图3-3 ②紧接着弹出“select Device for target ‘target 1’,如图1.4所示。要求你为刚才的项目选择一个CPU,我们选择atmel公司的AT89S52,选择后点击确定。 图 3-4 ③接着下来弹出一个如图 1.5所示的对话框,该对话框提示你是否把标准8051的启动代码添加到项目中去。在这里,我们选择(N),即不选择添加代码。 图 3-5 ④执行菜单“file/new…”出现一个名为“text 1”的文档。接着执行菜单“file/save”,弹出一个“save as”的对话框。将文件改名为“LED1.ASM”,点击保存。 图 3-6 ⑤添加源程序文件到工程中,单击keil软件左边项目工作窗口“target 1”上的“+”,将其展开。然后右击“source group 1”文件夹,会弹出如图所示的选择菜单。单击其中的“Add File to group ‘source group 1’”项,将弹出如图 1.6所示对话框。 图 3-7 ⑥选择文件类型为“Asm Source file(*.s*;*.src;*.a*)”,这时,对话框内将出现刚才保存过的“LED1.ASM”。单击文件“LED1.ASM”,再按一次“Add”按钮。这时,源程序文件“LED1.ASM”已经出现在项目工作窗口的“source group 1”文件夹内,可以单击左边的“+”展开查看。 图 3-8 ⑦现在开始出入源程序,双击“LED1.ASM”,打开源程序输入窗口,然后按程序清单输入程序代码(注意:输入代码是在英文状态下输入,勿使用中文标点符号),输入完成后再点击一次保存。 ⑧点击工具栏“Options for target”按钮,如图 1.9所示。 图 3-9 这时会弹出“Options for Target ‘Target 1’”对话框,如图 1.10。 图 3-10 点击Output对话框,选中“Create HEX File”,见图 1.11 图3-11 ⑨单击工具栏的按钮编译当前源程序,编译结果会显示在输出窗口内。如果是“0 Error(s),0 Warning(s)”,就表示程序没有问题了(至少是在语法上没有问题了)参见图 1.12,如果存在错误或警告,请仔细检查你的程序与程序清单是否一致。修改后再编译,直到编译通过为止。 图 3-12 5、下载编程: 1)启动MEFLASH软件,正常打开后软件右下角会显示实验仪器的型号和连接状态。如不能连接,请检查USB驱动是否正常安装,供电电压是否为正常的5V。在软件中点击“器件”按钮,选择型号“ATT89S52”。在软件中点击“加载”按钮,定位到产品光盘D:\DEMO\LED1.hex,点击“打开”,弹出“加载文件”对话框,按默认点击确定即可;在软件中点击“擦除”按钮,再点击“编程”按钮,编程完毕,即可看到D00所对应的二极管发光了。 2)①在keil中烧写芯片,先关闭MEflash软件,点击工具栏按钮,弹出“Options for Target ‘target 1’然后点击“Utilities”选项页,按图 1.13进行设置: ②最后一步点击“SOFI ICE52 Emulator/program”右边的“setting”按钮,打开ICE51的仿真/编程设置对话框,图 1.14所示。在对话框的“下载编程选项”中分别选择相应的器件厂商和芯片型号,我们这里选择的是ATMEL公司的AT89S52单片机。 ③点击keil工具栏的按钮,或者是菜单【Flash】→【Download】即可将当前Project内已经编译好的程序烧写到ME850的实验芯片(AT89S52)内。Keil的窗口内会显示如图 1.15所示的 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 ,下载完成实验仪上的单片机便开始运行当前程序。 六、延伸练习 点亮D00~D07、D20~27共16个LED。 实验四 LED闪烁 一、实验任务 P0、P2端口的LED亮300毫秒,灭300毫秒,如此循环。 二、实验线路 见实验三图3-1 三、实验流程图 图 4-1 四、实验汇编源程序 ORG 0000H AJMP MAIN ORG 0050H MAIN: MOV P0,#0FFH ;端口初始化 MOV P2,#0FFH LOOP: MOV P0,#00H ;LED显示 MOV P2,#00H ACALL DELAY ;延时300ms MOV P0,#0FFH ;关闭LED显示 MOV P2,#0FFH ACALL DELAY ;延时300MS AJMP LOOP ;延时子程序 ; 延时300ms (11.0592MHz) ;************************************************ DELAY: MOV R5,#3 DEL1: MOV R6,#200 DEL2: MOV R7,#230 DEL3: DJNZ R7,DEL3 ;第一层循环 DJNZ R6,DEL2 ;第二层循环 DJNZ R5,DEL1 ;第三层循环 RET ;************************************************ END ;结束 五、实验步骤 1、利用Protues进行仿真。 2、将JP9的9个短接子全部用短路帽短接,使P20~P27与P2口连接,VCC向发光二极管模块供电;1602LCD上端的JP4接在OFF端,避免1602干扰。 3、其他步骤参照实验三。 六、延伸练习 1、P0口、P2口对应的LED实现交互闪烁。 实验五 单灯左移 一、实验任务 LED D00~D07从右到左循环点亮 二、实验线路 见实验三图3-1 三、实验流程图 图5-1 四、实验汇编源程序 ORG 0 SJMP MAIN ORG 0030H MAIN: MOV A,#0FEH ;载入11111110到累加器A LOOP: MOV P1,A ;将A累加器內容移入P1 ACALL DELAY ;延时300ms RL A ;将累加器內容向左一位 SJMP LOOP ;跳至LOOP位址执行 DELAY: MOV R5,#3 DEL1: MOV R6,#200 DEL2: MOV R7,#230 DEL3: DJNZ R7,DEL3 ;第一层循环 DJNZ R6,DEL2 ;第二层循环 DJNZ R5,DEL1 ;第三层循环 RET END 五、实验步骤 1、利用Protues进行仿真。 2、VCC向发光二极管模块供电;1602LCD上端的JP4接在OFF端,避免1602干扰。 3、其他步骤参照实验三。 六、延伸练习 1、LED D00~D07从右到左循环点亮。 2、LED D00~D07从右到左循环点亮,再从左到右点亮。 实验六 LED流水灯 一、实验任务 P0、P2端口的LED先从右至左方向点亮,再从左至右方向点亮,如此循环,形成流水灯。 二、实验线路 参照图 1.1 三、实验流程图 图 6-1 四、实验汇编源程序 ORG 0000H AJMP MAIN ORG 0050H ;************************************************ MAIN: MOV P0,#0FFH ;端口初始化 MOV P2,#0FFH LOOP: MOV A,#0FEH ;赋初始值 MOV R0,#08H ;移动次数 LOOPL: ;左移显示 MOV P0,A ;送数显示 MOV P2,A RL A ;左移一位 ACALL DELAY ;延时300ms DJNZ R0,LOOPL ;是否左移8次? MOV P0,#0FFH ;关闭显示 MOV P2,#0FFH ACALL DELAY ;延时300ms MOV A,#7FH ;赋初始值 MOV R0,#08H ;移动次数 LOOPR: ;右移显示 MOV P0,A ;送数显示 MOV P2,A RR A ;右移一位 ACALL DELAY ;延时300ms DJNZ R0,LOOPR ;是否右移8次? MOV P0,#0FFH ;关闭显示 MOV P2,#0FFH ACALL DELAY ;延时300ms AJMP LOOP ;************************************************ ; 延时子程序 ; 延时300ms (11.0592MHz) ;************************************************ DELAY: MOV R5,#3 DEL1: MOV R6,#200 DEL2: MOV R7,#230 DEL3: DJNZ R7,DEL3 ;第一层循环 DJNZ R6,DEL2 ;第二层循环 DJNZ R5,DEL1 ;第三层循环 RET ;************************************************ END ;结束 五、实验步骤 1、利用Protues进行仿真。 2、将JP9的9个短接子全部用短路帽短接,使P20~P27与P2口连接,VCC向发光二极管模块供电;1602LCD上端的JP4接在OFF端,避免1602干扰。 3、其他步骤参照实验三。 六、延伸练习 1、P0、P2端口的LED先从左至右方向点亮,再从右至左方向点亮,如此循环,形成流水灯。 实验七 独立按键识别 一、实验任务 按压K1,D00亮。按压K2,D00灭。 二、实验线路 图 7-1 三、实验流程图 图 7-2 四、实验汇编源程序 ORG 000H AJMP START ORG 30H START: MOV P0,#0FFH MOV P1,#0FFH L1: JNB P1.4,L2 ;按下按键开关K1,点亮D00 JNB P1.5,L3 ;按下按键开关K2,熄灭D00 LJMP L1 L2: CLR P0.0 ;P0.0清零,点亮D00 LJMP L1 L3: SETB P0.0 ;P0.0置1,熄灭D00 LJMP L1 END 五、实验步骤 1、利用Protues进行仿真。 2、将JP8的八个短接子全部用短接帽短接,使独立按键与相应的接口接通; 3、将JP9的VCC-VCC3短接子用短接帽短接,使VCC向发光二极管供电; 4、如果PS2接口插了键盘,请拔下键盘插头或取下JP12的短接帽。 5、其他步骤参照实验三。 六、延伸练习 当有按键按下,对应的LED亮, K1-K8对应P0端口的LED D00-D07, K1按下,LED D00亮, . . . K8按下,LED D07亮, 在确认有按键按下时,蜂鸣器会响一声。 实验八 继电器驱动电路 一、实验任务 继电器吸合,LED DL11亮, 继电器释放,LED DL11灭。 二、实验线路 图 8-1 三、实验流程图 图 8-2 四、实验汇编源程序 org 0000h LOOP: SETB P3.6 ;使P3.6输出高,关闭继电器21F吸合线圈 LCALL DELAY ;调用延时子程序DELAY LCALL DELAY ;调用延时子程序DELAY LCALL DELAY ;调用延时子程序DELAY LCALL DELAY ;调用延时子程序DELAY CLR P3.6 ;使P3.6输出低,打开继电器21F吸合线圈 LCALL DELAY ;调用延时子程序DELAY LCALL DELAY ;调用延时子程序DELAY LCALL DELAY ;调用延时子程序DELAY LCALL DELAY ;调用延时子程序DELAY AJMP LOOP ;重复循环执行整个程序,整个程序的名字为LOOP DELAY: MOV R7,#250 ;延时子程序开始,子程序名字为 DELAY D1: MOV R6,#250 D2: DJNZ R6,D2 DJNZ R7,D1 RET END 五、实验步骤 1、利用Protues进行仿真。 2、短接JP16的短接子,使继电器接口电路使能。 3、其他步骤参考实验三。 六、延伸练习 1、用按键控制继电器的工作状态: K1-吸合键,K2-释放键 按K1键,继电器吸合,LED DL11亮, 按K2键,继电器释放,LED DL11灭。 实验九 蜂鸣器控制 一、实验任务 使蜂鸣器发出鸣响声,响300ms,停300ms。 二、实验线路 图 9-1 三、实验流程图 图 9-2 四、实验汇编源程序 BEEP BIT P3.7 ORG 0000H AJMP LOOP1 ORG 0030H ;********************************************************** LOOP1: MOV R2,#10 ;响300ms LOOP2: MOV R3,#49 LOOP3: CPL BEEP ;输出频率800Hz ACALL DELAY ;延时615us DJNZ R3,LOOP3 DJNZ R2,LOOP2 MOV R2,#10 ;关300ms LOOP4: MOV R3,#49 LOOP5: SETB BEEP ;关闭蜂鸣器 ACALL DELAY ;延时615us DJNZ R3,LOOP5 DJNZ R2,LOOP4 SJMP LOOP1 ;********************************************************** ; 延时615us ;********************************************************** DELAY: MOV R7,#189 DEL: NOP DJNZ R7,DEL RET ;********************************************************** END ;结束 五、实验步骤 1、利用Protues进行仿真。 2、短接JP15短接子,使蜂鸣器接口电路使能。 3、将JP9的VCC-VCC3的短接子用短接冒短接,VCC向发光二极管模块供电。 4、其他步骤参照实验三。 六、延伸练习 蜂鸣器响300ms,P0对应的LED D00~D07点亮, 蜂鸣器停300ms,P0对应的LED D00~D07熄灭。 蜂鸣器在不停的一响一停,发光二极管也在不停的一亮一灭,间隔为300ms,形成声光报警效果。 实验十 数码管循环显示0~9 一、实验任务 一位数码管显示,开机时,数码管显示0,然后递增显示,到10重新为0,如此循环,两个数的时间间隔为1s。 二、实验线路 图 10-1 三、实验流程图 图 10-2 四、实验汇编源程序 A_BIT EQU 20H ;个位数存放处 TEMP EQU 22H ;计数器寄存处 STAR: MOV TEMP,#0 ;初始化计数器 STLOP: ACALL DISPLAY ; INC TEMP CALL DELAY MOV A,TEMP CJNE A,#10,NEXT ;等于100重来 MOV TEMP,#0 NEXT: LJMP STLOP ;显示子程序 DISPLAY: MOV A,TEMP MOV B,#10 DIV AB MOV A_BIT,B MOV DPTR,#NUMTAB MOV R0,#4 DPL1: MOV R1,#5 DPLOP: MOV A,A_BIT MOVC A,@A+DPTR MOV P0,A CLR P2.0 ACALL D1MS SETB P2.0 DJNZ R1,DPLOP DJNZ R0,DPL1 RET D1MS: MOV R7,#50 D1: MOV R6,#20 D2: DJNZ R6,$ DJNZ R7,D1 DELAY: MOV R7,#100 ;延时子程序开始,子程序名字为 DEKAY L1: MOV R6,#250 L2: DJNZ R6,L2 DJNZ R7,L1 RET NUMTAB: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H ;013456789字形码 END 五、实验步骤 1、利用Protues进行仿真。 2、将JP21的八个短接子用短路帽短接,使数码管的位控制线与P2端口接通。 3、将JP22的九个短接子用短路帽短接,是数码管的数据线与P0口接通,并使VCC向数码管电路供电。 4、其他步骤参照实验三。 六、延伸练习 1、两位数码管显示,开机时,数码管显示00,然后递增显示,到100重新为00,如此循环,两个数的时间间隔为1s。 实验十一 外部中断 一、实验任务 利用单片机外部中断功能进行计数,然后将计数值输到数码管上显示。 K5键-计数值加1(外部中断0) K6键-计数值减1(外部中断1) 3位数码管显示,最大计数值255。 二、实验线路 参照实验九、实验十实验线路图 三、实验流程图 图11-1 四、实验汇编源程序 K5 BIT P3.2 K6 BIT P3.3 DISSTART EQU 40H ;显示单元首地址 LED_DATA EQU P0 ;数码管数据口定义 COUNT EQU 30H ;计数单元 ;******************************************************************* ORG 0000H AJMP MAIN ORG 0003H AJMP INT0_EX0 ORG 0013H AJMP INT1_EX1 ORG 0050H ;********************************************************* ; 主程序 ;********************************************************* MAIN: MOV SP,#60H MOV P0,#0FFH MOV P2,#0FFH MOV COUNT,#00H ;计数单元清零 MOV R0,#DISSTART CLR1: MOV @R0,#00H ;清显存单元 INC R0 CJNE R0,#DISSTART+3,CLR1 CLR IT0 ;INT0为电平触发 ; SETB IT0 ;INT0为下降沿触发 CLR IT1 ;INT1为电平触发 ; SETB IT1 ;INT1为下降沿触发 SETB EA SETB EX0 SETB EX1 MAIN1: ACALL CONVT ACALL PLAY AJMP MAIN1 ;********************************************************* ; INT0 外部中断服务子程序 (加计数) ;********************************************************* INT0_EX0: PUSH ACC ;入栈保护 PUSH PSW SETB RS0 ;更换寄存器组 CLR RS1 CLR EX0 ;关闭INT0中断 INC COUNT ;计数值加1 MOV R4,#70 EX0_PLAY: MOV A,COUNT ;用显示程序进行延时 ACALL CONVT ACALL PLAY DJNZ R4,EX0_PLAY SETB EX0 ;开启INT0中断 POP PSW ;出栈 POP ACC RETI ;********************************************************* ; INT1 外部中断服务子程序 (减计数) ;********************************************************* INT1_EX1: PUSH ACC ;入栈保护 PUSH PSW SETB RS0 ;更换寄存器组 CLR RS1 CLR EX1 ;关闭INT1中断 DEC COUNT ;计数值减1 MOV R4,#70 EX1_PLAY: MOV A,COUNT ;用显示程序进行延时 ACALL CONVT ACALL PLAY DJNZ R4,EX1_PLAY SETB EX1 ;开启INT1中断 POP PSW ;出栈 POP ACC RETI ;********************************************************* ;数据转换 (HEX TO BCD) ;********************************************************* CONVT: MOV A,COUNT ;计数值处理 MOV B,#100 DIV AB MOV DISSTART+2,A ;百位存放在DISSTART+2 MOV A,#10 XCH A,B DIV AB MOV DISSTART+1,A ;十位存放在DISSTART+1 MOV DISSTART,B ;个位存放在DISSTART MOV A,DISSTART+2 ;高位为0,不显示 CJNE A,#00H,CONVT1 MOV DISSTART+2,#0AH MOV A,DISSTART+1 CJNE A,#00H,CONVT1 MOV DISSTART+1,#0AH CONVT1: RET ;********************************************************* ; 数码管显示子程序 ;********************************************************* PLAY: MOV R0,#DISSTART ;获得显示单元首地址 MOV R1,#0FEH ;从第一个数码管开始 MOV R2,#03H ;共显示3位数码管 DISP1: MOV A,@R0 ;获得当前位地址 MOV DPTR,#TAB_NU ;获得表头 MOVC A,@A+DPTR ;查表获得显示数据 MOV LED_DATA,A ;送段码 MOV P2,R1 ;送位码 MOV A,R1 ;准备下一位的位码 RL A MOV R1,A INC R0 ;取下一个显存单元地址 ACALL DELAY1MS ;延时 1 MS DJNZ R2,DISP1 ;重复显示下一个 MOV P2,#0FFH ;关闭显示 RET ;显示完成,返回 ;********************************************************* ;延时子程序 ;********************************************************* DELAY1MS: MOV R6,#5 DEL1: MOV R7,#93 DJNZ R7,$ DJNZ R6,DEL1 RET ;********************************************************* TAB_NU: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H DB 080H,090H,0FFH ;********************************************************* END ;结束 五、实验步骤 1、利用Protues进行仿真。 2、将JP21的八个短接子全部用短路帽短接,使DG0~DG7与P2端口接通。 3、将JP22的九个短接子全部用短路帽短接,使A~DP与P0口接通,VCC向数码管模块供电。 4、将JP8的八个短接子全部用短接帽短接,使独立按键与相应的端口接通。 5、将1602LCD的是能跳线JP24短接在OFF端以禁用1602LCD,避免1602LCD干扰数码管。 6、其他步骤参考实验三。 六、延伸练习 实验十二 矩阵键盘识别 一、实验任务 1位数码管显示矩阵键盘的按下键的键值。 开机时,数码管显示“-”,当按键按下时,数码管显示。 二、实验线路 图 12-1 三、实验流程图 图 12-2 四、实验汇编源程序 BEEP BIT P3.7 KEYNUM EQU 30H ORG 0000H AJMP MAIN ORG 0050H ;********************************************************** ; 主程序 ;********************************************************** MAIN: MOV SP,#60H MOV KEYNUM,#10H ;开机时显示"-" ACALL KEY_PLAY LOOP: ACALL KEY_SCAN AJMP LOOP ;********************************************************** ;矩阵键盘键值查找程序 ;键值存入30H单元 ;********************************************************** KEY_SCAN: MOV P1,#0F0H ;置列线为0,行线为1 MOV A,P1 ;读入P1口状态 ANL A,#0F0H ;保留高4位 MOV B,A ;保存数据 MOV P1,#0FH ;置列线为1,行线为0 MOV A,P1 ;读入P1口状态 ANL A,#0FH ;保留低4位 ORL A,B ;高四位与低四位重新组合 CJNE A,#0FFH,KEY_IN1 ;0FFH为末按键 AJMP KEY_END KEY_IN1: MOV B,A ;保存键值 MOV DPTR,#KEYTABLE ;置键编码表首址 MOV R3,#0FFH ; KEY_IN2: INC R3 ;查表次数加1 MOV A,R3 MOVC A,@A+DPTR ;取出键码 CJNE A,B,KEY_IN3 ;比较 MOV A,R3 ;找到,取次数值 MOV KEYNUM,A ;送显示单元 ACALL KEY_PLAY ;显示键值 ACALL BEEP_BL ;蜂鸣器响一声 AJMP KEY_END KEY_IN3: CJNE A,#00H,KEY_IN2 ;继续查 ;00H为结束码 KEY_END: RET ;********************************************************** ; 键编码表 ;********************************************************** KEYTABLE: DB 0EEH,0EDH,0EBH,0E7H,0DEH DB 0DDH,0DBH,0D7H,0BEH,0BDH DB 0BBH,0B7H,07EH,07DH,07BH DB 077H,00H ;00H为结束码 ;********************************************************** ;蜂鸣器响一声子程序 ;********************************************************** BEEP_BL: MOV R6,#200 BL1: ACALL BL2 CPL BEEP ;蜂鸣器取反产生驱动脉冲 DJNZ R6,BL1 SETB BEEP ;关闭蜂鸣器 MOV R5,#25 ACALL DELAY RET BL2: MOV R7,#220 BL3: NOP DJNZ R7,BL3 RET ;********************************************************** ; 延时子程序 ;********************************************************** DELAY: ;延时R5×10MS MOV R6,#50 DEL1: MOV R7,#100 DJNZ R7,$ DJNZ R6,DEL1 DJNZ R5,DELAY RET ;********************************************************** ;键值显示子程序 ;********************************************************** KEY_PLAY: MOV A,KEYNUM ;要显示的数据 MOV DPTR,#TABLE ;置段码表地址 MOVC A,@A+DPTR ;查显示数据段码 MOV P0,A ;输出段码至P0 CLR P2.0 ;第一个数码管亮 RET ;********************************************************** ; 数码管段码表 ;********************************************************** TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 80H,90H,88h,83h,0c6h,0a1h,86h,8eh,0BFH ;0-F,- ;********************************************************** END ;结束 五、实验步骤 1、利用Protues进行仿真。 2、将JP21的八个短接子全部用短路帽短接,使DG0~DG7与P2端口接通。 3、将JP22的九个短接子全部用短路帽短接,使A~DP与P0口接通,VCC向数码管模块供电。 4、将JP7的八个短接子全部用短接帽短接,使矩阵键盘与相应的端口接通。 5、将1602LCD的是能跳线JP24短接在OFF端以禁用1602LCD,避免1602LCD干扰数码管。 6、将JP6(步进电机)的短接帽全部取掉,否则矩阵键盘不能正常工作。 7、其他步骤参照实验三。 六、延伸练习 实验十三 步进电机控制 一、实验任务 采用单双八拍工作方式,控制电机正(顺时针)、反(逆时针)方向转动。 步进电机正转360度,反转180度,如此循环。 二、实验线路 图 13-1 三、实验流程图 图 13-2 四、实验汇编源程序 ORG 0000H AJMP MAIN ORG 0050H ;********************************************************** MAIN: MOV P0,#0FFH ;端口初始化 MOV P2,#0FFH MOV P1,#0F0H LOOP: MOV R3,#12 ;正转360度,30*12=360度 FFW: ACALL MOTOR_F DJNZ R3,FFW MOV P1,#0F0H ;使步进电机掉电 ACALL DELAY1 ;延时2s MOV R3,#6 ;反转180度,30*6=180度 REV: ACALL MOTOR_R DJNZ R3,REV MOV P1,#0F0H ;使步进电机掉电 ACALL DELAY1 ;延时2s AJMP LOOP ;********************************************************** ; 步进电机正转30度子程序 ; 一个脉冲转3.75度,8个脉冲转30度。 ;********************************************************** MOTOR_F: MOV R0,#00H FFW1: MOV A,R0 MOV DPTR,#TABLE_F MOVC A,@A+DPTR MOV P1,A ACALL DELAY INC R0 CJNE R0,#08H,FFW1 RET ;********************************************************** ; 步进电机反转30度子程序 ; 一个脉冲转3.75度,8个脉冲转30度。 ;********************************************************** MOTOR_R: MOV R0,#00H REV1: MOV A,R0 MOV DPTR,#TABLE_R MOVC A,@A+DPTR MOV P1,A ACALL DELAY INC R0 CJNE R0,#08H,REV1 RET ;********************************************************** ; 延时子程序 (步进电机的转速) ;********************************************************** DELAY: MOV R7,#14 DEL1: MOV R6,#230 DEL2: DJNZ R6,DEL2 DJNZ R7,DEL1 RET ;********************************************************** ; 2s延时子程序 ;********************************************************** DELAY1: MOV R5,#20 DEL3: MOV R7,#200 DEL4: MOV R6,#230 DJNZ R6,$ DJNZ R7,DEL4 DJNZ R5,DEL3 RET ;********************************************************** 单双八拍工作方式编码 ;********************************************************** TABLE_F: DB 0F1H,0F3H,0F2H,0F6H,0F4H,0FCH,0F8H,0F9H ;正转表 DB 00 ;正转结束 TABLE_R: DB 0F9H,0F8H,0FCH,0F4H,0F6H,0F2H,0F3H,0F1H ;反转表 DB 00 ;反转结束 ;********************************************************** END ;结束 五、实验步骤 1、利用Protues进行仿真。 2、将JP6短接子全部用短路帽短接,使步进电机驱动芯片的输入脚与P1端口接通,VCC向步进电机模块供电。 3、其他步骤参考实验三。 注意:不做电机实验时,JP6短接子的短路帽要全部拿掉,否则将影响其他使用P1.0-P1.3模块的正常工作。 六、延伸练习 附录1:Protues元件中英文对照表(仅供参考) 元件名称 中文名 说明 7407 驱动门 1N914 二极管 74Ls00 与非门 74LS04 非门 74LS08 与门 74LS390 TTL 双十进制计数器 7SEG 4针BCD-LED 输出从0-9 对应于4根线的BCD码 7SEG 3-8译码器电路BCD-7SEG[size=+0]转换电路 ALTERNATOR 交流发电机 AMMETER-MILLI mA安培计 AND 与门 BATTERY 电池/电池组 BUS 总线 CAP 电容 CAPACITOR 电容器 CLOCK 时钟信号源 CRYSTAL 晶振 D-FLIPFLOP D触发器 FUSE 保险丝 GROUND 地 LAMP 灯 LED-RED 红色发光二极管 LM016L 2行16列液晶 可显示2行16列英文字符,有8位数据总线D0-D7,RS,R/W,EN三个控制端口(共14线),工作电压为5V。没背光,和常用的1602B功能和引脚一样(除了调背光的二个线脚) LOGIC ANALYSER 逻辑分析器 LOGICPROBE 逻辑探针 LOGICPROBE[BIG] 逻辑探针 用来显示连接位置的逻辑状态 LOGICSTATE 逻辑状态 用鼠标点击,可改变该方框连接位置的逻辑状态 LOGICTOGGLE 逻辑触发 MASTERSWITCH 按钮 手动闭合,立即自动打开 MOTOR 马达 OR 或门 POT-LIN 三引线可变电阻器 POWER 电源 RES 电阻 RESISTOR 电阻器 SWITCH 按钮 手动按一下一个状态 SWITCH-SPDT 二选通一按钮 VOLTMETER 伏特计 VOLTMETER-MILLI mV伏特计 VTERM 串行口终端 Electromechanical 电机 Inductors 变压器 Laplace Primitives 拉普拉斯变换 Memory Ics Microprocessor Ics Miscellaneous 各种器件 AERIAL-天线;ATAHDD;ATMEGA64;BATTERY;CELL;CRYSTAL-晶振;FUSE;METER-仪表; Modelling Primitives 各种仿真器件 是典型的基本元器模拟,不表示具体型号,只用于仿真,没有PCB Optoelectronics 各种发光器件 发光二极管,LED,液晶等等 PLDs & FPGAs Resistors 各种电阻 Simulator Primitives 常用的器件 Speakers & Sounders Switches & Relays 开关,继电器,键盘 Switching Devices 晶阊管 Transistors 晶体管(三极管,场效应管) TTL 74 series TTL 74ALS series TTL 74AS series TTL 74F series TTL 74HC series TTL 74HCT series TTL 74LS series TTL 74S series Analog Ics 模拟电路集成芯片 Capacitors 电容集合 CMOS 4000 series Connectors 排座,排插 Data Converters ADC,DAC Debugging Tools 调试工具 ECL 10000 Series 附录2:PROTEUS原理图元器件库详细说明 Device.lib 包括电阻、电容、二极管、三极管和PCB的连接器符号 ACTIVE.LIB 包括虚拟仪器和有源器件 DIODE.LIB 包括二极管和整流桥 DISPLAY.LIB 包括LCD、LED BIPOLAR.LIB 包括三极管 FET.LIB 包括场效应管 ASIMMDLS.LIB 包括模拟元器件 VALVES .LIB 包括电子管 ANALOG.LIB 包括电源调节器、运放和数据采样IC CAPACITORS.LIB 包括电容 COMS.LIB 包括 4000系列 ECL.LIB 包括ECL10000系列 MICRO.LIB 包括 通用微处理器 OPAMP.LIB 包括 运算放大器 RESISTORS.LIB 包括 电阻 FAIRCHLD .LIB 包括FAIRCHLD 半导体公司的分立器件 LINTEC.LIB 包括 LINTEC公司的运算放大器 NATDAC.LIB 包括 国家半导体公司的数字采样器件 NATOA.LIB 包括
本文档为【8051单片机实验指导书】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_845445
暂无简介~
格式:doc
大小:2MB
软件:Word
页数:50
分类:工学
上传时间:2014-02-19
浏览量:23