单片机个必做实验_第1页
单片机个必做实验_第2页
单片机个必做实验_第3页
单片机个必做实验_第4页
单片机个必做实验_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

第一部分 软件实验实验一 二进制到BCD码转换一、实验目的1、掌握简单的数值转换算法2、基本了解数值的各种表达方法二、实验说明单片机中的数值有各种表达方式,这是单片机的基础 .掌握各种数制之间的转换是一种基本功.我们将给定的一个二进制数,转换成二十进制 <BCD)码.将累加器 A的值拆为三个 BCD码,并存入 RESULT开始的三个单元,例程 A 赋值#123.EKO7sEcVR7b5E2RGbCAP三、实验内容及步骤1、启动计算机,打开伟福仿真软件,进入仿真环境 .首先进行仿真器的设置,选择使用伟福软件模拟器 .2、打开 TH2.ASM源程序进行编译,编译无误后,全速运行程序,打开数据窗口(DATA>,点击暂停按钮,观察地址 30H、31H、32H的数据变化, 30H更新为 01,31H更新为02,32H更新为 03.用键盘输入改变地址 30H、31H、32H的值,点击复位按钮后,可再次运行程序,观察其实验效果 .修改源程序中给累加器 A的赋值,重复实验,观察实验效果.EKO7sEcVR7p1EanqFDPw3、打开 CPU窗口,选择单步或跟踪执行方式运行程序,观察 CPU窗口各寄存器的变化,可以看到程序执行的过程,加深对实验的了解 .EKO7sEcVR7DXDiTa9E3d四、流程图及源程序源程序RESULTEQU 30HORG 0000HLJMPSTARTBINTOBCD:MOV B ,#1001/20DIVABMOVRESULT,A;除以100得百位数MOVA,BMOVB,#10DIVABMOVRESULT+1,A;余数除以10得十位数MOVRESULT+2,B;余数为个位数RETSTART:MOVSP,#40HMOVA,#123CALLBINTOBCDLJMP$END流程图EKO7sEcVR7RTCrpUDGiT给出要转换的二进制数实验四 程序跳转表一、实验目的 将数除以 100,得百位数1、了解程序的多分支结构保存百位数2、掌握多分支结构程序的编程方法二、实验说明 将余数再除以 10,得十位多分支结构是程序中常见的结构,在多分支结构的程序中,能够按调用号执行相应保存十位数的功能,完成指定操作 .若给出调用号来调用子程序,一般用查表方法,查到子程序的余数为个位数,将其保存地址,转到相应子程序 .EKO7sEcVR75PCzVD7HxA三、实验内容及步骤 结束1、启动计算机,打开伟福仿真软件,进入仿真环境 .首先进行仿真器的设置,选择使用伟福软件模拟器 .2/202、打开 TH4.ASM源程序进行编译,编译无误后,全速运行程序,打开数据窗口(DATA>,点击暂停按钮,观察地址30H、31H、32H、33H的数据变化,30H更新为0,31H更新为1,32H更新为2,33H更新为3.用键盘输入改变地址30H、31H、32H、33H的值,点击复位按钮后,可再次运行程序,观察其实验效果 .修改源程序中给 30H~33H的赋值,重复实验,观察实验效果 .EKO7sEcVR7jLBHrnAILg3、打开 CPU窗口,选择单步或跟踪执行方式运行程序,观察 CPU窗口各寄存器的变化,可以看到程序执行的过程,加深对实验的了解 .EKO7sEcVR7xHAQX74J0X四、流程图及源程序设置调用号1、流程图2.源程序根据调用号查表ORG0LJMPSTART跳转到相应程序段FUNC0:MOV30H,#0RET调用返回FUNC1:MOV31H,#1RETFUNC2:MOV32H,#2RETFUNC3:MOV33H,#3RETFUNCENTER:ADDA,ACC;AJMP为二字节指令,调用号×2MOVDPTR ,#FUNCTABJMP@A+DPTRFUNCTAB:AJMPFUNC0AJMPFUNC13/20AJMPFUNC2AJMPFUNC3START:MOV A ,#0CALLFUNCENTERMOV A ,#1CALLFUNCENTERMOV A ,#2CALLFUNCENTERMOV A ,#3CALLFUNCENTERLJMP$END第二部分 硬件基础实验实验七 P1口输入、输出实验一、实验目的1、学习P1口的使用方法2、学习延时子程序的编写和使用二、实验说明P1口是准双向口 ,它作为输出口时与一般的双向口使用方法相同 .由准双向口结构可知当P1口用为输入口时,必须先对它置“ 1”.若不先对它置“ 1”,读入的数据是不正确的.EKO7sEcVR7LDAYtRyKfE三、实验内容及步骤实验(一>:用P1口做输出口,接八位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮.1、使用单片机最小应用系统1模块.关闭该模块电源,用扁平数据线连接单片机4/20P1口与八位逻辑电平显示模块 .EKO7sEcVR7Zzz6ZB2Ltk2、安装好仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,打开仿真器电源 .EKO7sEcVR7dvzfvkwMI13、启动计算机,打开伟福仿真软件,进入仿真环境 .首先进行仿真器的设置,选择仿真器型号、仿真头型号、 CPU类型.选择通信端口,点击测试串行口,通信成功既可退出设置,进行仿真 .EKO7sEcVR7rqyn14ZNXI4、打开 TH7A.ASM源程序,进行编译 .编译无误后,点击全速执行按钮运行程序,观察发光二极管显示情况 .发光二极管单只从右到左轮流循环点亮 .EKO7sEcVR7EmxvxOtOco5、把源程序编译成 OBJ文件,再烧录到 89C51芯片中.实验(二>:用P1.0、P1.1 作输入接两个拨断开关, P1.2、P1.3 作输出接两个发光二极管 .程序读取开关状态,并在发光二极管上显示出来 .EKO7sEcVR7SixE2yXPq51、用导线连接 P1.0、P1.1到两个拨断开关, P1.2、P1.3到两个发光二极管 .2、打开TH7B.ASM源程序,编译无误后,全速运行程序,拨动拨断开关,观察发光二极管的亮灭情况 .向上拨为点亮,向下拨为熄灭 .EKO7sEcVR76ewMyirQFL3、把源程序编译成 OBJ文件,再烧录到 89C51芯片中.四、流程图及源程序1.流程图开始EKO7SEC 开始设置初始值 VR7KAVU42VRUS

P1.0,P1.1置一设移位次数(A>P1口循环点灯程序框图(B>P1口输入输出程序框图读入P1.0口数据输出将读入的值输出到P1.2左一位2.源程序:读入P1.1口值延时<一)实是否5/20将读入的值输出到P1.3移位次数完成?验一ORG 0LOOP: MOV A,#0FEHMOV R2,#8OUTPUT:MOV P1,ARL AACALLDELAYDJNZ R2,OUTPUTLJMP LOOPDELAY:MOV R6,#0MOV R7,#0DELAYLOOP: ;延时程序DJNZ R6,DELAYLOOPDJNZ R7,DELAYLOOPRETEND<二)实验二KEYLEFT BIT P1.0 ;定义KEYRIGHTBIT P1.1LEDLEFT BIT P1.2LEDRIGHTBIT P1.3ORG 0SETB KEYLEFT ;欲读先置一SETB KEYRIGHTLOOP: MOV C,KEYLEFTMOV LEDLEFT,CMOV C,KEYRIGHT6/20MOV LEDRIGHT,CLJMP LOOPEND五、思考题<1)对于本实验延时子程序Delay: MOV R6 ,0MOV R7,0DelayLoop:DJNZ R6,DelayLoopDJNZ R7 ,DelayLoopRET本模块使用 12MHz晶振,粗略计算此程序的执行时间为多少?六、电路图VCC270*831392Q0D0P10P0054238Q1D1P11P0167337Q2D2P12P0298436Q3D3P13P031213535Q4D4P14P041514634Q5D5P15P051617733Q6D6P16P061918832Q7D7P17P07OE113INT1P2021111222LEINT0P2123P2274LS373VCC1524T1P231425T0P2426P25VCC3127EA/VPP2633pF2812MHzP2719X118X210033pF9RESETRXD101117TXD30RDALE/P1629WRPSEN10uFAT89C51RESET1K7/20实验十 8255输入、输出实验一、实验目的1、了解8255芯片结构及接口方式2、掌握8255输入、输出的编程方法二、实验说明了解用到的芯片引脚及功能:8255是可编程的并行输入 输出接口芯片,通用性强且使用灵活 .8255 按功能可分为三个部分,即:总线接口电路,口电路和控制逻辑电路 EKO7sEcVR7y6v3ALoS891、口电路: 共有三个八位口,其中 A口和 口是单纯的数据口,供数据 I/O口使用.8255的引脚图 74LS373的引脚图2、总线接口电路:它用于实现 8255和单片机芯片的信号连接 .(1>CS——片选信号 .(2>RD——读信号.(3>WR——写信号.(4>A0、A1——端口选择信号 .8255 共有四个可寻址的端口,用二位编码可以实现 .3、控制逻辑电路:它是控制寄存器,用于存放各口的工作方式控制字 .本实验是利用 8255可编程并行口芯片,实现数据的输入、输出 .可编程通用接口芯片8255A有三个八位的并行的 I/O 口,它有三种工作方式 .本实验采用的方式为 0:PA口输出,PB口输入.工作方式 0是一种基本的输入输出方式 .在这种方式下,三个端口都可以由程序设置为输入或输出,其基本功能可概括如下: EKO7sEcVR7M2ub6vSTnP1、可具有两个八位端口 <A、B)和两个 4位端口<C口的上半部分和下半部) .2、数据输出时可以锁存,输入时不需锁存 .本实验中,8255的端口地址由单片机的 P2.0、P2.1和P2.7决定.控制口的地址为 7FFFH;A口的地址为 7CFFH;B 口的地址为 7DFFH;C口的地址为7CFFH.EKO7sEcVR70YujCfmUCw8/20三、内容及步骤本实验分两种情况来进行: (一>PA口作为输出口 .( 二>PA口作为输出口, PB口作为输入口.(一>PA口作为输出口,接 8位发光二极管,程序功能使发光二极管单只从右到左轮流循环点亮.1、单片机最小应用系统 1的P0口接8255的D0~D7口,8255的PA0~PA7接八位逻辑电平显示,单片机最小应用系统 1的P2.0、P2.1、P2.7、RD、WR分别接 8255的A0、A1、CS、RD、WR,RESET接上复位电路 .EKO7sEcVR7eUts8ZQVRd2、安装好仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,打开仿真器电源 .EKO7sEcVR7sQsAEJkW5T3、启动计算机,打开伟福仿真软件,进入仿真环境 .选择仿真器型号、仿真头型号、CPU类型;选择通信端口,测试串行口 .EKO7sEcVR7GMsIasNXkA4、打开TH10A.ASM源程序,编译无误后,全速运行程序.发光二极管单只从右到左轮流循环点亮.5、可把源程序编译成 OBJ文件,烧录到 89C51芯片中.(二>PA口作为输出口,PB口作为输入口,PA口读入键信号送八位逻辑电平显示模块显示.1、8255的PA0~PA7接八位逻辑电平显示, PB0~PB7口接查询式键盘模块,单片机最小应用系统 1的P2.0、P2.1、P2.7、RD、WR分别接8255的A0、A1、CS、RD、WR,RESET接上复位电路 .EKO7sEcVR7TIrRGchYzg2、打开TH10B.ASM源程序,编译无误后,全速运行程序.按查询式键盘各键,观察发光开始二极管的亮灭情况,发光二极管与按键相对应,按下为点亮,松开为熄灭.EKO7sEcVR77EqZcWLZNX置8255工作方式3、可把源程序编译成OBJ文件,烧录到89C51芯片中.四、置8255PA口流程图及源程序EKO7sEcVR7lzq7IGf02E数据左移9/20开始延时 置8255工源程序如下:<一)PA口输出:ORG 0HPORTA EQU 7CFFH ;A口PORTB EQU 7DFFH ;B口PORTC EQU 7EFFH ;C口CADDR EQU 7FFFH ;控制字地址MOV A,#80H ;方式0MOV DPTR,#CADDRMOVX @DPTR,ALOOP:MOV A,#0FEHMOV R2,#8OUTPUT:MOV DPTR,#PORTAMOVX @DPTR,ACALL DELAYRL ADJNZ R2,OUTPUTLJMP LOOPDELAY:MOV R6,#0MOV R7,#0DELAYLOOP:DJNZ R6,DELAYLOOPDJNZ R7,DELAYLOOPRETEND<二)PA口输出,PB口输入ORG 010/20PORTAEQU7CFFH;A口PORTBEQU7DFFH;B口PORTCEQU7EFFH;C口CADDREQU7FFFH;控制字地址SJMPSTARTSTART:ORG 30HMOVA,#82H;方式0,PA,PC输出,PB输入MOVDPTR,#CADDRMOVX@DPTR,AMOVDPTR,#PORTBMOVXA,@DPTR;读入B口MOVDPTR,#PORTAMOVX@DPTR,A;输出到A口CALLDELAYSJMPSTARTEND五、思考题试用8255PA口作为输出口,PB作为输入口,PC作为输入口完成8255的输入、输出实验<其中PA口LED数码显示,PB接拨断开关,PC接查询式键盘实验模块).EKO7sEcVR7zvpgeqJ1hk六、电路图11/201P10/TP003934D0PA04238333P11/TP01D1PA1337322P12P02D2PA2436311P13P03D3PA35353040P14P04D4PA46342939P15P05D5PA57332838P16P06D6PA68322737P17P07D7PA713INT1P20215RDPB01812223619INT0P21WRPB1239208051P22A0PB21524821P23A1PB314T1253522T0P24RESETPB42662320pFP25CSPB5312724EA/VPP26PB6282512MHzP27PB719X11814X2PC015PC19101620pFRESETRXDPC21117TXDPC3173013RDALE/PPC41629825512WRPSENPC511PC610PC7VCCRESET10010uF1K实验十二 5LED静态串行显示一、实验目的1、掌握数字、字符转换成显示段码的软件译码方法2、静态显示的原理和相关程序的编写二、实验电路1、静态显示,电路中图所示 .显示器由 5个LED数码管组成.输入只有两个信号,它们是串行数据线 DIN和移位信号 CLK.5个串/并移位寄存器芯片 74LS164首尾相连.每片的并行输出作为 LED数码管的段码 .EKO7sEcVR7NrpoJac3v174LS164的引脚图如图所示;74LS164为8位串入并出移位寄存器,1、2为串行输入端,Q0~Q7为并行输出端,CLK为移位时钟脉冲,上升沿移入一位;MR为清零端,低电平时并行输出为零.EKO7sEcVR71nowfTG4KI三、实验内容及步骤单片机的P3.0作数据串行输出,P3.1作移位脉冲输出,可参考74LS164实验十一串行数转换并行数 .1 、使用单片机最小应用系统 1模块,用导线连接 RXD、TXD到串行静态显示模块的12/20DIN、CLK端.2、安装好仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,打开仿真器电源 .EKO7sEcVR7fjnFLDa5Zo3、启动计算机,打开伟福仿真软件,进入仿真环境 .选择仿真器型号、仿真头型号、CPU类型;选择通信端口,测试串行口.EKO7sEcVR7tfnNhnE6e54、打开TH12.ASM源程序,编译无误后,全速运行程序.5LED显示“89C51”.程序停止运行时,显示不变,说明静态显示模块具有数据锁存功能 .EKO7sEcVR7HbmVN777sL5、可把源程序编译成 OBJ文件,烧录到 89C51芯片中.四、流程图及源程序1、流程图开始地址指针设置N取段码2、源程序DBUF0EQU30H段码左移一位TEMPEQU40HDINBIT0B0H;输出一位段码CLKBIT0B1H;ORG0输出一个移位脉冲MOV30H,#8MOV31H,#9取段码结束MOV32H,#CYMOV33H,#5取段码结束MOV34H,#1Y

;置存储区首址;置缓冲区首址;置串行输出口;置时钟输出口;存入显示数据N13/20DISP:MOVR0,#DBUF0MOVR1,#TEMPMOVR2,#5DP10:MOVDPTR,#SEGTAB;表头地址MOVA,@R0MOVCA,@A+DPTR;查表指令MOV@R1,AINCR0INCR1DJNZR2,DP10MOVR0,#TEMP;段码地址指针MOVR1,#5;段码字节数DP12:MOVR2,#8;输出子程序MOVA,@R0;取段码DP13:RLCA;段码左移MOVDIN,C;输出一位段码CLRCLK;发送移位脉冲一位SETBCLKDJNZR2,DP13INCR0DJNZR1,DP12SJMP$SEGTAB:DB3FH,06H,5BH,4FH,66H,6DH;0,1,2,3,4,5EKO7sEcVR7V7l4jRB8HsDB7DH,07H,7FH,6FH,77H,7CH;6,7,8,9,A,B14/20DB58H,5EH,7BH,71H,00H,40H ;C,D,E,F,,-DELAY: MOV R4,#03H ;延时子程序AA1: MOV R5,#0FFHDJNZR5,AADJNZR4,AA1RETEND五、电路图15/20bcpYagdPdDfeabdfpcedg12345678bcpYagddDfepabcdefdg12345678bcpYagdPdDfebdfpacedg12345678bcpYagdPdDfebdfpacedg12345678bcpYagdPdDfepabcdefdg12345678

00000

3450123611110123456774LS164QQQQQQQQ02KRABMC12893450123611110123456774LS164QQQQQQQQ02KRABLCM12893450123611110123456774LS164QQQQQQQQ02KRABCM12893450123611110123456774LS164QQQQQQQQ02KRABLCM12893450123611110123456774LS164QQQQQQQQ02KRABLCM1289N KI LD C实验十四 查询式键盘一、实验目的1、掌握键盘和显示器的接口方法和编程方法2、掌握键盘和八段码显示器的工作原理3、静态显示的原理和相关程序的编写二、实验说明本实验提供了 8个按钮的小键盘,落如果有键盘按下,则相应输出为低,如果没有16/20键按下,则输出为高 .通过这样可以判断按下什么键 .在有键按下后,要有一定的延时,防止键盘抖动 .EKO7sEcVR783lcPA59W9三、实验步骤及内容、用一根扁平数据线插头连接查询式键盘实验模块与八位逻辑电平显示模块,无键按下时,键盘输出全为“ 1”发光二极管全部熄灭,有键按下,对应发光二极管点亮 .此种电路的程序要判断是否有 2个或2个以上的键盘同时按下,以免键盘分析错误 .阵列式键盘的编程同样也有这样的问题要注意 .EKO7sEcVR7mZkklkzaaP2、一根扁平 8线插头连接查询式键盘实验模块与扫描显示实验模块 .无键按下时,LED数码显示八段全部熄灭,有键按下时,则对应 LED段点亮.EKO7sEcVR7AVktR43bpw3、使用静态串行显示模块显示键值 .单片机最小应用系统 1的P1口接查询式键盘输出口,RXD接静态数码显示 DIN,TXD接CLK.EKO7sEcVR7ORjBnOwcEd4、安装好伟福仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,插上仿真器电源插头 .EKO7sEcVR72MiJTy0dTT5、启动计算机,打开伟福仿真软件,进入仿真环境 .选择仿真器型号、仿真头型号、CPU类型;选择通信端口,测试串行口 .EKO7sEcVR7gIiSpiue7A6、打开 TH14.ASM源程序,编译无误后运行程序,在键盘上按下某个键,观察数显是否与按键值一致,键值从左至右为 0~7.EKO7sEcVR7uEh0U1Yfmh7、可把源程序编译成 OBJ文件,烧录到 89C51芯片中.五、流程图及源程序开始1、流程图 EKO7sEcVR7IAg9qLsgBX显示缓冲区初始2、源程序LED显示ORG0000HNDBUFEQU30H有键输入?TEMPEQU40HMOV30H,#16读取键值MAIN:ACALLDISP键值转换为显示数17/20

开初始化键去查表主程序框ACALLKEYAJMP MAINKEY: MOV P1 ,#0FFH ;输入

温馨提示

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

评论

0/150

提交评论