单片机实验指导书

上传人:无*** 文档编号:171547464 上传时间:2022-11-27 格式:DOC 页数:20 大小:294KB
收藏 版权申诉 举报 下载
单片机实验指导书_第1页
第1页 / 共20页
单片机实验指导书_第2页
第2页 / 共20页
单片机实验指导书_第3页
第3页 / 共20页
资源描述:

《单片机实验指导书》由会员分享,可在线阅读,更多相关《单片机实验指导书(20页珍藏版)》请在装配图网上搜索。

1、实验一 KEIL软件的使用及P1口控制一 实验目的1、学习KEIL软件的使用方法及单片机实验平台 2、学习P1口的控制方法 3、学习延时子程序的编写和单片机延时计算方法二 实验原理 1、KEIL软件是德国Keil公司开发的基于Windows平台的单片机集成开发环境软件。KEIL软件包括编译器、连接器、库管理器和仿真调试器,通过集成开发环境(Vision)将这些部分组合在一起。2、P1口是一个八位的准双向I/O口,其中一位的内部结构如图所示,输出驱动电路有一只场效应管和一个上拉电阻组成。每一根口线都可以分别定义成输入或输出线。做输出线时,写入“1”,则Q为“0”,T1截止,P1.X输出高电平,写

2、入“0”,则Q为“1”,T1导通,P1.X输出低电平。做输入线时,必须先向该口线写“1”,使T1截止。3、程序延时分析方法:延时=指令个数X机器周期机器周期=12nMHZ n为单片机时钟频率三 实验要求与步骤实验(一):用P1口做输出口,接八位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。1、使用单片机最小应用系统1模块。关闭该模块电源,用扁平数据线连接单片机P1口与八位逻辑电平显示模块。(并口线与右侧的8个插孔是串联等效的。)2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。3、打开Keil uVision2仿真软件,首先建立本实验

3、的项目文件,接着添加P1_A.ASM源程序,进行编译,直到编译无误。4、进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。5、(先接通仿真器电源再开启试验箱电源)打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,观察发光二极管显示情况。发光二极管单只从右到左轮流循环点亮。注:软件具体操作见附录实验(二):用P1.0、P1.1作输入接两个置位开关,P1.2、P1.3作输出接两个发光二极管。程序读取开关状态,并在发光二极管上显示出来。1、用导线分别连接P1.0、P1.1到两个置位开关,P1.2、P1.3到两个发光二极管。2、添加 P1_B.ASM源程序,编译无误后,运行

4、程序,拨动置位开关,观察发光二极管的亮灭情况。四 实验参考程序实验(一):ORG 0000HLJMP STARTORG 0030HSTART: MOV A, #0FEH MOV R2,#8OUTPUT: MOV P1,A RL A ACALL DELAY DJNZ R2,OUTPUT LJMP STARTDELAY: MOV R6,#0 MOV R7,#0DELAYLOOP: ;延时程序 DJNZ R6,DELAYLOOP DJNZ R7,DELAYLOOP RET END(二)实验二 仅供参考,需修正KEYLEFT BIT P1.0 ;定义 KEYRIGHT BIT P1.1LEDLEFT

5、BIT P1.2LEDRIGHT BIT P1.3ORG 0000HLJMP STARTORG 0030HSTART: MOV C,KEYLEFT MOV LEDLEFT,C MOV C,KEYRIGHT MOV LEDRIGHT,C LJMP START END五、附加要求 改变程序,使LED从左至右循环显示,并且使实验一中每个LED灯闪烁的间隔时间大约为5s左右。六、实验报告要求 1 对实验(一)程序抄写并注释 2 画出实验(一)程序流程图 3 找出实验(一)中延时子程序,并根据实验箱情况计算具体延时。实验二 外部中断实验一、实验目的1掌握外部中断技术的基本使用方法2掌握中断处理程序的编写

6、方法二、实验原理1外部中断的初始化设置的三项内容:中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断方式设置。中断方式设置一般有两种方式:电平方式和脉冲方式.2中断服务的关键:(1)保护进入中断时的状态。堆栈有保护断点和保护现场的功能使用PUSH,在转中断服务程序之前把单片机中有关寄存单元的内容保护起来。注:中断程序自动保护PC,对其做入栈操作 (2)用POP指令恢复中断时的现场。(先进后出)3中断控制原理:中断控制是提供给用户使用的中断控制手段。实际上就是控制一些寄存器,51系列用于此目的的控制寄存器有四个:TCON 、IE 、SCON 及IP。TF1TR1TF0TR0IE1

7、IT1IE0IT0TCON格式(中断控制字)TF1、TF0:定时器/计数器T的溢出中断请求标志位;TR1、TR0:计数器控制位TR1(TR0)=1启动定时器TR1(TR0)=0停止计数器IE1:外部中断请求1标志位;IT1:选择外部请求1;IE0:外部中断请求0标志位;IT0:IT0=0为低电平触发IT0=1为负跳变有效;复位后TCON被清零,中断请求被禁止。SCON格式(触发方式中断控制字)TI:串行口的发送中断请求标志位。发送1帧串行数据后,硬件自动为TI置1。注:CPU不会为T1清零,需要在中断程序中用软件为TI清零RI:串行口接受中断请求标志位。接收完1帧串行数据后,硬件自动为RI置1

8、。注:CPU不会为R1清零,需要在中断程序中用软件为RI清零三、实验内容参考实验程序(主程序为P1口输出跑马灯程序),编写中断子程序使得发生外部中断0,且为下降沿触发时,LED灯全亮。中断结束后LED继续接上次状态进行跑马灯闪烁。注:注意保护现场。且编译器不支持工作组寄存器名(R0-R7)入栈,需要对栈地址操作。例:PUSH 06H (累加器支持左移右移不支持压栈出栈; 工作组寄存器不支持左移右移支持压栈出栈);把R6入栈 等同 PHSHU R6四、实验步骤1使用单片机最小应用系统1模块,P1接发光二极管,INTO接单次脉冲输出端。2用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插

9、座中,请注意仿真器的方向:缺口朝上。3打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加*.ASM源程序,进行编译,直到编译无误。4打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序。五、参考程序ORG 0000HLJMP STARTORG 0003HLJMP INTORG 0030HINT: PUSH 05H PUSH 06H PUSH 07H MOV P1,#00H ACALL DELAYPOP 07H POP 06H POP 05H RETISTART: MOV IE,#81H MOV TCON,#01HMOV A, #0FEHOUTPUT: MOV

10、P1,A RL A ACALL DELAY LJMP OUTPUTDELAY: MOV R6,#0 MOV R7,#0 MOV R5,#5DELAYLOOP: ;延时程序 DJNZ R6,DELAYLOOP DJNZ R7,DELAYLOOP DJNZ R5,DELAYLOOP RET END六、附加要求: 将中断内容变为前五个灯进行一次跑马灯,然后中断结束。实验三 定时器/计数器一 实验目的1 学习定时器/计数器的工作原理2 掌握定时器/计数器的控制方法3 掌握定时器/计数器各种工作模式和工作方式下的编程方法二 实验原理MCS-51单片机内有两个可编程的定时器/计数器T0、T1,可分别工作在

11、定时器或计数器模式下。每种工作模式下有四种工作方式。1、计数器工作模式:外部脉冲进行计数,输入引脚(T0、T1即P3.4和P3.5)产生负跳变脉冲则计数器加12、定时器工作模式:内部脉冲计数,每个机器周期产生一个计数脉冲,如外接12MHZ时钟则每隔1s计数器加13、工作方式控制寄存器TMODD7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0 T1方式字段 T0方式字段 当INTX为高电平且RTRX为1时启动定时器/计数器GATE 只要 TR0 (或 TR1)置 1, 定时器/计数器就被选通 0为定时器模式C/T 1为计数器模式M1M0工作方式选择控制4、定时器/计数器

12、控制寄存器TCOND7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0ITX 外部中断请求触发方式选择0为电平触发1为负跳沿触发IEX 外部中断请求标志位TFX 定时器/计数器溢出标志位 1启动相应的定时器/计数器TRX 0停止相应的定时器/计数器注:上述X代表1或05、定时器/计数器控制寄存器IED7D6D5D4D3D2D1D0位标志EAET2ESET1EX1ET0EX0 其中与中断有关的控制位共7位:EA: 中断允许总控制位。EA=0时,中断总禁止,禁止一切中断;EA=1时,中断总允许,而每个中断源允许与禁止,分别由各自的允许位确定。EX0和EX1:外部中断允许

13、控制位。EX0(或EX1)=0,禁止外部中断(或);EX0(或EX1)=1,允许外部中断(或)。ET0和ET1:定时器中断允许控制位。ET0(ET1)=0,禁止定时器0(或定时器1)中断;ET0(ET1)=1,允许定时器0(或定时器1)中断。ES: 串行中断允许控制位。ES=0,禁止串行(TI或RI)中断;ES=1,允许串行(TI或RI)中断。ET2: 定时器2中断允许控制位。ET2=0,禁止定时器2(TF2或EXF2)中断;ET2=0,禁止定时器2(TF2或EXF2)中断;在单片机复位后,IE各位被复位成“0”状态,CPU处于关闭所有中断的状态。所以,在单片机复位以后,用户必须通过程序中的指

14、令来开放所需中断。6、各种工作方式最大定时时间(以6MHZ外接时钟频率计算) 方式0 最长定时16.384ms 方式1 最长定时 131.072ms 方式2 最长定时 512s 方式3 最长定时512s7、定时初始值计算 n为不同工作方式计数器计数位数,A为机器周期所占时间,M为所需定时时间,X为对定时器/计数器所需设置的初始值例:工作方式1下外接6MHZ晶振,要定时100ms则初始值X为: X=15536=3CBOH TH0=3CH TL0=0B0H三 实验内容1、 编程实现以定时器/计数器T0做为定时器,使得P1.0每隔一秒钟取反一次,并用LED灯显示。可参考实验程序(一)2、 在内容1的

15、基础上实现以T1做计数器,当P1.0取反20次后关闭所有中断,并点亮8个LED灯。四 实验步骤内容一,P1口连接8位逻辑电平输出.内容二,P1口连接8位逻辑电平输出,P1.0连接T1即P3.5.五 参考程序 说明:本程序以工作方式1定时50ms,定时中断20次为一秒为例。程序省略部分需补充才可完成实验要求。ORG0000HLJMPSTARTORG000BHLJMPT0INTT0INT:PUSHPSWMOVTL0 ;装入初始值MOVTH0DJNZR7G1CPLP1.0MOV R7,#14HG1:POPPSWRETISTART:MOV IE,#82HMOVTMOD,# ;设置工作方式MOVTCON

16、,#MOVTL0 ;装入初始值MOVTH0MOVR7,#14HSETBP1.0LJMP$END六 附加内容(1)要求以定时器控制延时的方法对P1口做跑马灯控制,当跑马灯循环5次时点亮8个LED灯。(2)T0方式定时,外部中断后反向跑马亮五个灯。实验四 单片机驱动数码管显示一 实验目的1 学习单片机驱动数码管动态显示的电路设计和编程方法2 学习单片机驱动数码管串行静态显示的电路设计和编程方法二 实验原理1、单片机系统中常用的显示器有:发光二极管LED(Light Emitting Diode)显示器、液晶LCD(Liquid Crystal Display)显示器、CRT显示器等。LED、LCD

17、显示器有两种显示结构:段显示和点阵显示。七段数码管显示为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。字母一般用米字型。编码表:0x3f0x060x5b0x4f0x660x6d0123450x7d0x070x7f 0x6f 0x770x7c6789AB0x390x5e 0x790x710x00CDEF无显示七段数码管对应八位由低到高:a,b,c,d,e,f,g,dp例:数码管显示2则要点亮a,b,g,e,d段,对应的八位是2、 数码管动态显示方式是将所有显示位的段选择线并联在一起,有统一的I/O资源来控制。各个数码管

18、公共端也有I/O资源来控制,分时的选通各个数码管进行动态显示。每个瞬间只能选通一个数码管,人眼的暂留时间为0.1s,每个数码管的选通时间必须在0.1s以内,通常选择15ms20ms。电路图见实验附图。3、 静态显示方式是指当数码管显示某个字符时,相应的段恒定的导通。静态显示的特点是每个数码管的段选必须单独接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高,占用I/O资源较多。参考电路见下图:三 实验内容1、 理解动态显示电路图,参考驱动程序,单片机P0口作段码输

19、出控制,P1口作位码控制,使单片机驱动6个7段数码管输出实验当天年、月、日六位数字。2、比较动态显示和静态显示的优缺点,根据串行管静态显示电路,设计该电路驱动程序实现LDE串行静态显示,显示“89C51”五个字符。四、实验步骤内容1:(1)单片机最小应用系统1的P0口接段码口ah,P1口接位码口S1S6。(2)在KEIL软件下编写程序并调试,完成实验内容要求。(3)下载程序,通过实验箱验证设计电路和编写的程序是否达到实验要求。内容2:单片机的P1.0作数据串行输出,P1.1作移位脉冲输出,当然用户也可以用其他I/O口。(1)使用单片机最小应用系统1模块,用导线连接P1.0、P1.1到串行静态显

20、示模块的DIN、CLK端。(2) 根据串行静态显示电路,参照实验内容一参考程序,在KEIL下设计程序,完成实验内容要求。(3) 下载程序,通过实验箱验证设计电路和编写的程序是否达到实验要求。五 参考程序与电路实验内容一参考程序: ORG 0000HLJMP STARTORG 0030HSTART: MOV 30H, #9 ;要显示的数据 MOV 31H, #0 MOV 32H, #5 MOV 33H, #0 MOV 34H, #0 MOV 35H, #1 MOVR0, #30HDISP: MOV R1, #6 ;6位显示器 MOV DPTR, #SEGTAB ;置段码表首址 MOV R2, #

21、01H DP01: MOV A, R0 ;将段码存入缓冲区 MOVC A, A+DPTR ;查表取段码 MOV P0, A ;段码输出 MOV A, R2 ;取位码 MOV P1, A ;位码输出 ACALL DELAY ;调用延时 MOV A, R2 RL A MOV R2, A INC R0 DJNZ R1, DP01 SJMP DISPSEGTAB:DB 3FH,06H,5BH,4FH,66H,6DH ;0,1,2,3,4,5 DB 7DH,07H,7FH,6FH,77H,7CH ;6,7,8,9,A,b DB 58H,5EH,7BH,71H,00H,40H ;C,d,E,F, ,-DE

22、LAY: ;延时子程序 MOV R4, #03H AA1: MOV R5, #0FFHAA: DJNZ R5, AA DJNZ R4, AA1 RETEND实验内容二参考电路: 实验内容一电路图:实验一电路图中显示器由6个共阴极LED数码管构成。单片机的P0口输出显示段码,经由一片74LS245驱动输出给LED管,由PB口输出位码,经由74LS06输出给LED管。实验二电路图中,显示器由5个共阴极数码管组成。输入只有两个信号,它们是串行数据线DIN和移位信号CLK。5个串/并移位寄存器芯片74LS164首尾相连。每片的并行输出作为LED数码管的段码。74LS164为8位串入并出移位寄存器,1、

23、2为 串行输入端,Q0Q7为并行输出端,CLK为移位时钟脉冲,上升沿移入一位;MR为清零端,低电平时并行输出为零实验五 键盘驱动实验一 实验目的1 学习和了解用扫描法驱动键盘2 学习和了解用全反法驱动键盘二 实验原理 阵列式键盘按键设置在行、列线交点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接到+5V上。无按键按下时,行线处于高电平,而当有按键按下时,行线电平状态将由与此行线相连的列线的电平决定。 扫描法即先把某一列置低电平,其余各列置为高电平,检查各行线电平的变化,如果某行线电平为低电平,则可确定此行此列交叉点处的按键被按下。 全反法即先让行线编程为输入线,列线编程为输出线,并使

24、输出线输出全为低电平,则行线中电平由高变低的所在行为按键所在行。再把行线编程为输出线,列线编程为输入线,并使输出线输出为全低电平,则列线中电平由高变低所在列为按键所在列。三 实验步骤及内容1用一根8位数据线连接阵列式键盘实验模块与LED与单片机接口模块。无键按下或有键按下,发光二极管全亮。若将A1A4接地,则发光二极管显示0000XXXX;B1线上有键按下,则发光二极管显示0000XXXX,B2线上有键按下,则发光二极管显示0000X0XX,B1和B2均有键按下,则发光二极管显示XX 同样可将B1与B4接地,按键与发光二极管显示情况,用户可以自行判断,自由操作。2. 用一根8位数据线连接阵列式

25、键盘实验模块与扫描显示实验模块。无键按下或有键按下,八段LED全亮。用户参照1,观察键盘与八段LED亮熄的关系。3. 使用静态串行显示模块显示键值。单片机最小应用系统1的P1口接阵列式键盘的A1-A4口,P3.6接静态数码显示DIN,P3.7接CLK。4.用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。5.打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加阵列KEY.ASM源程序,进行编译,直到编译无误。6.进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。在键盘上按下某个键,观察数显是否与按键值一致。16位

26、键盘的键值从左至右、从上至下依次为0-F(16进制数)。四 参考程序DBUF EQU 30HTEMP EQU 40HDIN BIT P3.6CLK BIT P3.7 ORG 0000H LJMP START ORG 0030HSTART: MOV A,#16 MAIN: ACALL DISP MOV 30H,A ACALL KEY1 AJMP MAINKEY1: MOV P1,#0FH MOV A,P1 CJNE A,#0FH,K11K10: AJMP KEY1K11: ACALL DELAY MOV P1,#0FH MOV A,P1 CJNEA,#0FH,K12SJMPK10K12:MOVB

27、,AMOVP1,#0EFHMOVA,P1CJNEA,#0EFH,K13MOVP1,#0DFHMOVA,P1CJNEA,#0DFH,K13MOVP1,#0BFHMOVA,P1CJNEA,#0BFH,K13MOVP1,#7FHMOVA,P1CJNEA,#7FH,K13AJMPK10K13:ANLA,#0F0HORLA,BMOVB,AMOVR1,#16MOVR2,#0MOVDPTR,#K1TABK14:MOVA,R2MOVCA,A+DPTRCJNEA,B,K16MOVP1,#0FHK15:MOVA,P1CJNEA,#0FH,K15ACALLDELAYMOVA,R2RETK16:INCR2DJNZR1

28、,K14AJMPK10K1TAB:DB0EEH,0DEH,0BEH,07EHDB0EDH,0DDH,0BDH,07DHDB0EBH,0DBH,0BBH,07BHDB0E7H,0D7H,0B7H,077HDISP:MOVDBUF,AMOVDBUF+1,#16MOVDBUF+2,#16MOVDBUF+3,#16MOVDBUF+4,#16MOVR0,#DBUFMOVR1,#TEMPMOVR2,#5DP10:MOVDPTR,#SEGTABMOV A,R0MOVCA,A+DPTRMOVR1,AINCR0INCR1DJNZR2,DP10MOVR0,#TEMPMOVR1,#5DP12:MOVR2,#8MOVA,R0DP13:RLCAMOV0B0H,CCLR0B1HSETB0B1HDJNZR2,DP13INCR0DJNZR1,DP12RETSEGTAB:DB3FH,06H,5BH,4FH,66H,6DHDB7DH,07H,7FH,6FH,77H,7CHDB58H,5EH,79H,71H,00H,40HDELAY:MOVR4,#02HAA1:MOVR5,#0F8HAA:NOPDJNZR5,AADJNZR4,AA1RETEND五、附加要求1字符与段码的软件实验程序已很清楚,问LED数码显示器是共阴极还是共阳极,对SEGTAB的影响如何?2程序如何确保每按一次键,只处理一次。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!