首页 试验八8255可编程并行接口试验二

试验八8255可编程并行接口试验二

举报
开通vip

试验八8255可编程并行接口试验二 计算机与电子信息工程系 二〇一二年三月 目    录 实验一  P1口实验一    1 实验二  P1口实验二    4 实验三  简单I/O扩展实验(交通灯控制)    7 实验四  简单I/O扩展实验二    10 实验五  定时器实验(循环彩灯)    12 实验六  8255A可编程并行接口实验1    15 实验七  8255可编程并行接口实验2    17 实验八  数码显示实验    22 实验九  D/A转换实验    26 实验十  8253定时器实验    30 实验一  P1口实验一 【实验...

试验八8255可编程并行接口试验二
计算机与电子信息工程系 二〇一二年三月 目    录 实验一  P1口实验一    1 实验二  P1口实验二    4 实验三  简单I/O扩展实验(交通灯控制)    7 实验四  简单I/O扩展实验二    10 实验五  定时器实验(循环彩灯)    12 实验六  8255A可编程并行接口实验1    15 实验七  8255可编程并行接口实验2    17 实验八  数码显示实验    22 实验九  D/A转换实验    26 实验十  8253定时器实验    30 实验一  P1口实验一 【实验目的】 ⒈ 学习P1口的使用 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 。 ⒉ 学习延时子程序的编写和使用。 【实验设备】 EL-8051-III型单片机实验箱 【实验内容】 ⒈ P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 ⒉ P1口做输入口,接八个按纽开关,以实验箱上74LS273做输出口,编写程序读取开关状态,在发光二极管上显示出来。 【实验原理】 P1口为准双向口,P1口的每一位都能独立地定义为输入位或输出位。作为输入位时,必须向锁存器相应位写入“1”,该位才能作为输入。8031中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写过“0”,在需要时应写入一个“1”,使它成为一个输入。 可以用第二个实验做一下实验。先按要求编好程序并调试成功后,可将P1口锁存器中置“0”,此时将P1做输入口,会有什么结果。 再来看一下延时程序的实现。现常用的有两种方法,一是用定时器中断来实现,一是用指令循环来实现。在系统时间允许的情况下可以采用后一种方法。 本实验系统晶振为6.144MHZ,则一个机器周期为12÷6.144us即1÷0.512us。现要写一个延时0.1s的程序,可大致写出如下: MOV R7,#X (1) DEL1:MOV R6,#200 (2) DEL2:DJNZ R6,DEL2 (3) DJNZ R7,DEL1 (4) 上面MOV、DJNZ指令均需两个机器周期,所以每执行一条指令需要1÷0.256us,现求值:1÷0.256+X(1÷0.256+200×1÷0.256+1÷0.256)=0.1×10? 指令(1) 指令(2) 指令(3) 指令(4)所需时间 所需时间 所需时间 所需时间=(0.1××10?-1÷0.256)/(1÷0.256+200×1÷0.256+1÷0.256)=127D=7FH 经计算得X=127。代入上式可知实际延时时间约为0.100215s,已经很精确了。 【实验原理图】 【实验步骤】 执行程序1(T1_1.ASM)时:P1.0~P1.7接发光二极管L1~L8。 执行程序2(T1_1.ASM)时:P1.0~P1.7接平推开关K1~K8;74LS273的O0~O7接发光二极管L1~L8;74LS273的片选端CS273接CS0。 【程序框图】 【参考程序】 ⒈循环点亮发光二极管 NAME T1_1 CSEG AT 0000H LJMP START CSEG AT 4100H START: MOV A,#0FEH LOOP: RR A MOV P1,A LCALL DELAY JMP LOOP DELAY: MOV R1,#127 DEL1: MOV R2,#200 DEL2: DJNZ R2,DEL2 DJNZ R1,DEL1 RET END ⒉通过发光二极管将P1口的状态显示 NAME T1_2 ;P1口输入实验 OUT_PORT EQU 0CFA0H CSEG AT 0000H LJMP START CSEG AT 4100H START: MOV P1,#0FFH ;复位P1口为输入状态 MOV A,P1 ;读P1口的状态值入累加器A MOV DPTR,#OUT_PORT ;将输出口地址赋给地址指针DPTR MOVX @DPTR,A ;将累加器A的值赋给DPTR指向的地址 JMP START ;继续循环监测端口P1的状态 END 实验二  P1口实验二 【实验目的】 ⒈ 学习P1口既做输入又做为输出的使用方法。 ⒉ 学习数据输入、输出程序的设计方法。 【实验设备】 EL-8051-III型单片机实验箱 【实验原理】 P1口的使用方法这里不讲了。有兴趣者不妨将实验例程中的“SETB P1.0, SETB P1.1”中的“SETB”改为“CLR”看看会有什么结果。 另外,例程中给出了一种N路转移的常用设计方法,该方法利用JMP@A+DPTR的计算功能,实现转移。该方法的优点是设计简单,转移表短,但转移表大小加上各个程序长度必须小于256字节。 【实验原理图】 【实验步骤】 平推开关的输出K1接P1.0;K2接P1.1; 发光二极管的输入L1接P1.2;L2接P1.3;L5接P1.4;L6接P1.5。 运行实验程序,K1做为左转弯开关,K2做为右转弯开关。L5、L6做为右转弯灯,L1、L2做为左转弯灯。 结果显示: ⒈ 1接高电平K2接低电平时,右转弯灯(L5、L6)灭,左转弯灯(L1、L2)以一定频率闪烁; ⒉ K2接高电平K1接低电平时,左转弯灯(L1、L2)灭,右转弯灯(L5、L6)以一定频率闪烁; ⒊ K1、K2同时接低电平时,发光二极管全灭; ⒋ K1、K2同时接高电平时,发光二极管全亮。 【程序框图】 【参考程序】 NAME T2 ;P1口输实验 CSEG AT 0000H LJMP START CSEG AT 4100H START: SETB P1.0 SETB P1.1 ;用于输入时先置位口内锁存器 MOV A,P1 ANL A,#03H ;从P1口读入开关状态,取低两位 MOV DPTR,#TAB ;转移表首地址送DPTR MOVC A,@A+DPTR JMP @A+DPTR TAB: DB PRG0-TAB DB PRG1-TAB DB PRG2-TAB DB PRG3-TAB PRG0: MOV P1,#0FFH ;向P1口输出0,发光二极管全灭;此时K1=0,K2=0 JMP START PRG1: MOV P1,#0F3H ;只点亮L1、L2,表示左转弯 ACALL DELAY ;此时K1=1,K2=0 MOV P1,#0FFH ;再熄灭0.5秒 ACALL DELAY ;延时0.5秒 JMP START PRG2: MOV P1,#03FH ;只点亮L5、L6,表示右转弯 ACALL DELAY ;此时K1=0,K2=1 MOV P1,#0FFH AALL DELAY JMP START PRG3: MOV P1,#00H ;发光二极管全亮,此时K1=1,K2=1 JMP START DELAY: MOV R1,#5 ;延时0.5秒 DEL1: MOV R2,#200 DEL2: MOV R3,#126 DEL3: DJNZ R3,DEL3 DJNZ R2,DEL2 DJNZ R1,DEL1 RET END 实验三  简单I/O扩展实验(交通灯控制) 【实验题目】 扩展实验箱上的74LS273做为输出口,控制八个发光二极管燃灭,模拟交通灯。 【实验目的】 ⒈ 学习在单片机系统中扩展简单I/O接口的方法。 ⒉ 学习数据输出程序的设计方法。 ⒊ 学习模拟交通灯控制的实现方法。 【实验原理】. 要完成本实验,首先必须了解交通路灯的燃灭规律。本实验需要用到实验箱上八个发光二极管中的六个,即红、黄、绿各两个。不妨将L1、L3、L5做为东西方向的指示灯,将L2、L4、L6做为南北方向的指示灯。而交通灯的燃灭规律为:初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。闪烁若干次后,东西路口的红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁,闪烁若干次后,再切换到东西路口方向,重复上述过程。各发光二极管共阳极,阴极接有与非门,因此使其点亮使相应输入端为高电平。 【实验原理图】 【实验步骤】 74LS273的输出O0~O7接发光二极管L1~L8,74LS273的片选CS273接片选信号CSO,此时74LS273的片选地址为CFA0H~CFA7H之间任选。 运行实验程序,观察LED显示情况是否与实验内容相符。 【程序框图】 【参考程序】 NAME T3 ;I/O口扩展实验一 PORT EQU 0CFA0H ;片选地址CS0 CSEG AT 0000H LJMP START CSEG AT 4100H START: MOV A,#11H ;两个红灯亮,黄灯、绿灯灭 ACALL DISP ;调用273显示单元(以下雷同) ACALL DE3S ;延时3秒 LLL:  MOV A,#12H ;东西路口绿灯亮;南北路口红灯亮 ACALL DISP ACALL DE10S ;延时10秒 MOV A,#10H ;东西路口绿灯灭;南北路口红灯亮 ACALL DISP MOV R2,#05H ;R2中的值为黄灯闪烁次数 TTT: MOV A,#14H ;东西路口黄灯亮;南北路口红灯亮 ACALL DISP ACALL DE02S ;延时0.2秒 MOV A,#10H ;东西路口黄灯灭;南北路口红灯亮 ACALL DISP ACALL DE02S ;延时0.2秒 DJNZ R2,TTT ;返回TTT,使东西路口;黄灯闪烁五次 MOV A,#11H ;两个红灯亮,黄灯、绿灯灭 ACALL DISP ACALL DE02S ;延时0.2秒 MOV A,#21H ;东西路口红灯亮;南北路口绿灯亮 ACALL DISP ACALL DE10S ;延时10秒 MOV A,#01H ;东西路口红灯亮;南北路口绿灯灭 ACALL DISP MOV R2,#05H ;黄灯闪烁五次 GGG: MOV A,#41H ;东西路口红灯亮;南北路口黄灯亮 ACALL DISP ACALL DE02S ;延时0.2秒 MOV A,#01H ;东西路口红灯亮;南北路口黄灯灭 ACALL DISP ACALL DE02S ;延时0.2秒 DJNZ R2,GGG ;返回GGG,使南北路口;黄灯闪烁五次 MOV A,#03H ;两个红灯亮,黄灯、绿灯灭 ACALL DISP ACALL DE02S ;延时0.2秒 JMP LLL ;转LLL循环 DE10S: MOV R5,#100 ;延时10秒 JMP DE1 DE3S: MOV R5,#30 ;延时3秒 JMP DE1 DE02S: MOV R5,#02 ;延时0.2秒 DE1: MOV R6,#200 DE2: MOV R7,#126 DE3: DJNZ R7,DE3 DJNZ R6,DE2 DJNZ R5,DE1 RET DISP: MOV DPTR,#PORT ;273显示单元 CPL A MOVX @DPTR,A RET END 实验四  简单I/O扩展实验二 【实验题目】 利用74LS244做为输入口,读取开关状态,并将此状态通过发光二极管显示出来。 【实验目的】 ⒈ 学习在单片机系统中扩展简单I/O口的方法。 ⒉ 学习数据输入,输出程序的编制方法。 【实验原理】 MCS-51外部扩展空间很大,但数据总线口和控制信号线的负载能力是有限的。若需要扩展的芯片较多,则MCS-51总线口的负载过重,74LS244是一个扩展输入口,同时也是一个单向驱动器,以减轻总线口的负担。程序中加了一段延时程序,以减少总线口读写的频繁程度。延时时间约为0.01秒,不会影响显示的稳定。 【实验原理图】 【实验步骤】 ⒈ 74LS244的IN0~IN7接开关的K1~K8,片选信号CS244接CS1。 ⒉ 74LS273的O0~O7接发光二极管的L1~L8,片选信号CS273接CS2。 ⒊ 编程、全速执行。 ⒋ 拨动开关K1~K8,观察发光二极管状态的变化。 【程序框图】 【参考程序】 NAME T4 ;I/O口扩展实验 CSEG AT 0000H LJMP START CSEG AT 4100H INPORT EQU 0CFA8H ;74LS244端口地址 OUTPORT EQU 0CFB0H ;74LS273端口地址 START: MOV DPTR,#INPORT LOOP: MOVX A,@DPTR ;读开关状态 MOV DPTR,#OUTPORT MOVX @DPTR,A ;显示开关状态 MOV R7,#10H ;延时 DEL0: MOV R6,#0FFH DEL1: DJNZ R6,DEL1 DJNZ R7,DEL0 JMP START END 实验五  定时器实验(循环彩灯) 【实验题目】 由8031内部定时器1按方式1工作,即作为16位定时器使用,每0.1秒钟T1溢出中断一次。P1口的P1.0~P1.7分别接发光二极管的L1~L8。要求编写程序模拟一循环彩灯。 【实验目的】 ⒈ 学习8031内部计数器的使用和编程方法。 ⒉ 进一步掌握中断处理程序的编写方法。 【有关说明】 P彩灯变化花样可自行设计。例程给出的变化花样为:①L1、L2、…L8依次点亮;②L1、L2、…L8依次熄灭;③L1、L2、…L8全亮、全灭。各时序间隔为0.5秒。让发光二极管按以上规律循环显示下去。 【连线方法】 P1.0~P1.7分别接发光二极管L1~L8。 【实验电路】 【程序框图】 (中断程序框图) (主程序框图) 【参考程序】 NAME T6 ;定时器实验 OUTPORT EQU 0CFB0H CSEG AT 0000H LJMP START CSEG AT 401BH ;定时器/计数器1中断程序入口地址 LJMP INT CSEG AT 4100H START: MOV A,#01H ;首显示码 MOV R1,#03H ;03是偏移量,即从基址寄存器到表首的距离 MOV R0,#5H ;05是计数值 MOV TMOD,#10H ;计数器置为方式1 MOV TL1,#0AFH ;装入时间常数 MOV TH1,#03CH ORL IE,#88H ;CPU中断开放标志位和定时器 ;1溢出中断允许位均置位 SETB TR1 ;开始计数 LOOP1: CJNE R0,#00,DISP MOV R0,#5H ;R0计数计完一个周期,重置初值 INC R1 ;表地址偏移量加1 CJNE R1,#31H,LOOP2 MOV R1,#03H ;如到表尾,则重置偏移量初值 LOOP2: MOV A,R1 ;从表中取显示码入累加器 MOVC A,@A+PC JMP DISP DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,0FEH,0FCH DB 0F8H,0F0H,0E0H,0C0H,80H,00H,0FFH,00H,0FEH DB 0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH,0BFH,0DFH DB 0EFH,0F7H,0FBH,0FDH,0FEH,00H,0FFH,00H DISP: ;MOV DPTR,#OUTPORT  MOVX @DPTR,A MOV P1,A ;将取得的显示码从P1口输出显示 JMP LOOP1 INT:  CLR TR1 ;停止计数 DEC R0 ;计数值减一 MOV TL1,#0AFH ;重置时间常数初值 MOV TH1,#03CH SETB TR1 ;开始计数 RETI ;中断返回 END 实验六  8255A可编程并行接口实验1 【实验题目】 利用8255A可编程并行接口芯片,重复实验四的内容。实验可用B通道作为开关量输入口,A通道作为显示输出口。 【实验目的】 ⒈ 了解8255A芯片的结构及编程方法。 ⒉ 掌握通过8255A并行口读取开关数据的方法。 【有关说明】 设置好8255A各端口的工作模式。实验中应当使三个端口都工作于方式0,并使A口为输出口,B口为输入口。 【连线方法】 8255A的PA0~PA7接发光二极管L1~L8;PB0~PB7接开关K1~K8;片选信号8255CS接CS0。 【实验电路】 【程序框图】 【参考程序】 NAME T7 ;8255A实验一 CSEG AT 0000H LJMP START CSEG AT 4100H PA EQU 0CFA0H PB EQU 0CFA1H PCTL EQU 0CFA3H START: MOV DPTR,#PCTL ;置8255A控制字,A、B、C口均工作 ;方式0,A、C口为输出,B口为输入 MOV A,#082H MOVX @DPTR,A LOOP: MOV DPTR,#PB ;从B口读入开关状态值 MOVX A,@DPTR MOV DPTR,#PA ;从A口将状态值输出显示 MOVX @DPTR,A MOV R7,#10H ;延时 DEL0: MOV R6,#0FFH DEL1: DJNZ R6,DEL1 DJNZ R7,DEL0 JMP LOOP END 实验七  8255可编程并行接口实验2 【实验目的】 ⒈ 掌握8255A编程原理。 ⒉ 了解键盘电路的工作原理。 ⒊ 掌握键盘接口电路的编程方法。 【实验设备】 EL-8051-III型单片机实验箱 【实验原理】 ⒈ 识别键的闭合,通常采用行扫描法和行反转法。 行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如所读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。 本实验例程采用的是行反转法。 行反转法识别键闭合时,要将行线接一并行口,先让它工作于输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口往各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上的输入值,那么,在闭合键所在的行线上的值必定为0。这样,当一个键被按下时,必定可以读得一对唯一的行线值和列线值。 ⒉ 程序设计时,要学会灵活地对8255A的各端口进行方式设置。 ⒊ 程序设计时,可将各键对应的键值(行线值、列线值)放在一个表中,将要显示的0~F字符放在另一个表中,通过查表来确定按下的是哪一个键并正确显示出来。 【实验题目】 利用实验箱上的8255A可编程并行接口芯片和矩阵键盘,编写程序,做到在键盘上每按一个数字键(0~F),用发光二极管将该代码显示出来。 【实验步骤】 将键盘RL10~RL17接8255A的PB0~PB7;KA10~KA12接8255A的PA0~PA2;PC0~PC7接发光二极管的L1~L8;8255A芯片的片选信号8255CS接CS0。 【实验电路】 【程序框图】 【参考程序】 NAME t8 ;8255键盘实验 PA EQU 0CFA0H PB EQU PA+1 PC0 EQU PB+1 PCTL EQU PC0+1 CSEG AT 4000H LJMP START NAME t8 ;8255键盘实验 PA EQU 0CFA0H PB EQU PA+1 PC0 EQU PB+1 PCTL EQU PC0+1 CSEG AT 4000H LJMP START CSEG AT 4100H START: MOV 42H,#0FFH ;42H中放显示的字符码,初值为0FFH STA1:   MOV DPTR,#PCTL ;设置控制字,ABC口工作于方式0; AC口输出而B口用于输入 MOV A,#82H MOVX @DPTR,A LINE: MOV DPTR,#PC0 ;将字符码从C口输出显示 MOV A,42H CPL A MOVX @DPTR,A MOV DPTR,#PA ;从A口输出全零到键盘的列线 MOVX @DPTR,A MOV DPTR,#PB ;从B口读入键盘行线值 MOVX A,@DPTR MOV 40H,A ;行线值存于40H中 CPL A ;取反后如为全零; 表示没有键闭合,继续扫描 JZ LINE MOV R7,#10H ;有键按下,延时10MS去抖动 DL0: MOV R6,#0FFH DL1: DJNZ R6,DL1 DJNZ R7,DL0 MOV DPTR,#PCTL ;重置控制字,让A为输入,BC为输出 MOV A,#90H MOVX @DPTR,A MOV A,40H MOV DPTR,#PB ;刚才读入的行线值取出从B口送出 MOVX @DPTR,A MOV DPTR,#PA ;从A口读入列线值 MOVX A,@DPTR MOV 41H,A ;列线值存于41H中 CPL A ;取反后如为全零 JZ STA1 ;表示没有键按下 MOV DPTR,#TABLE ;TABLE表首地址送DPTR MOV R7,#18H ;R7中置计数值16 MOV R6,#00H ;R6中放偏移量初值 TT: MOVX A,@DPTR ;从表中取键码前半段字节,行线值与实 CJNE A,40H,NN1 ;际输入的行线值相等吗?不等转NN1 INC DPTR ;相等,指针指向后半字节,即列线值 MOVX A,@DPTR ;列线值与实际输入的列线值 CJNE A,41H,NN2 ;相等吗?不等转NN2 MOV DPTR,#CHAR ;相等,CHAR表基址和R6中的偏移量 MOV A,R6 ;取出相应的字符码 MOVC A,@A+DPTR MOV 42H,A ;字符码存于42H BBB: MOV DPTR,#PCTL ;重置控制字,让AC为输出,B为输入 MOV A,#82H MOVX @DPTR,A AAA: MOV A,42H ;将字符码从C口送到二极管显示 MOV DPTR,#PC0 CPL A MOVX @DPTR,A MOV DPTR,#PA ;判断按下的键是否释放 CLR A MOVX @DPTR,A MOV DPTR,#PB MOVX A,@DPTR CPL A JNZ AAA ;没释放转AAA MOV R5,#2 ;已释放则延时0.2秒,减少总线负担 DEL1: MOV R4,#200 DEL2: MOV R3,#126 DEL3: DJNZ R3,DEL3 DJNZ R4,DEL2 DJNZ R5,DEL1 JMP START ;转START NN1: INC DPTR ;指针指向后半字节即列线值 NN2: INC DPTR ;指针指向下一键码前半字节即行线值 INC R6 ;CHAR表偏移量加一 DJNZ R7,TT ;计数值减一,不为零则转TT继续查找 JMP BBB TABLE: DW 0FE06H,0FD06H,0FB06H,0F706H;TABLE为键值表,每个键位占 DW 0BF06H,07F06H,0FE05H,0FD05H; 两个字节,第一个字节为行 DW 0EF05H,0DF05H,0BF05H,07F05H ;线值,第二个为列线值 DW 0FB03H,0F703H,0EF03H,0DF03H; CHAR: DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H ;字符码表 DB 0AH,0BH,0CH,0DH,0EH,0FH,10H,11H,12H,13H DB 14H,15H,16H,17H END 实验八  数码显示实验 【实验目的】 ⒈ 进一步掌握定时器的使用和编程方法。 ⒉ 了解七段数码显示数字的原理。 ⒊ 掌握用一个段锁存器,一个位锁存器同时显示多位数字的技术。 【实验设备】 EL-8051-III型单片机实验箱 【实验原理】 本试验采用动态显示。动态显示就是一位一位地轮流点亮显示器的各个位(扫描)。将8031CPU的P1口当作一个锁存器使用,74LS273作为段锁存器。 【实验题目】 利用定时器1定时中断,控制电子钟走时,利用实验箱上的六个数码管显示分、秒,做成一个电子钟。显示格式为: 分 秒定时时间常数计算方法为: 定时器1工作于方式1,晶振频率为6MHZ,故预置值Tx为:(2e+16-Tx)x12x1/(6x10e+6)=0.1s  Tx=15535D=3CAFH,故TH1=3CH,TL1=AFH 【实验电路】 . 【实验接线】 将P1口的P1.0~P1.5与数码管的输入LED6~LED1相连,74LS273的O0~O7与LEDA~LEDDp相连,片选信号CS273与CS0相连。去掉短路子连接。 【程序框图】 . 【实验接线】 将P1口的P1.0~P1.5与数码管的输入LED6~LED1相连,74LS273的O0~O7与LEDA~LEDDp相连,片选信号CS273与CS0相连。去掉短路子连接。 【参考程序】 NAME T9 ;数码显示实验 PORT EQU 0CFA0H BUF EQU 23H ;存放计数值 SBF EQU 22H ;存放秒值 CSEG AT 0000H LJMP START CSEG AT 401BH LJMP CLOCK CSEG AT 4100H START: MOV R0,#40H ;40H-45H是显示缓冲区,依次存放 MOV A,#00H ;分高位、分低位,0A,0A(横线) MOV @R0,A ;以及秒高位、秒底位 INC R0 MOV @R0,A INC R0 MOV A,#0AH MOV @R0,A INC R0 MOV @R0,A INC R0 MOV A,#00H MOV @R0,A INC R0 MOV @R0,A MOV TMOD,#10H ;定时器1初始化为方式1 MOV TH1,#38H ;置时间常数,延时0.1秒 MOV TL1,#00H MOV BUF,#00H ;置0 MOV SBF,#00H MOV MBF,#00H SETB ET1 SETB EA SETB TR1 DS1: MOV R0,#40H ;置显示缓冲区首址 MOV R2,#20H ;置扫描初值,点亮最左边的LED6 DS2: MOV DPTR,#PORT MOV A,@R0 ;得到的段显码输出到段数据口 ACALL TABLE MOVX @DPTR,A MOV A,R2 ;向位数据口P1输出位显码 CPL A MOV P1,A MOV R3,#0FFH ;延时一小段时间 DEL: NOP DJNZ R3,DEL INC R0 ;显示缓冲字节加一 CLR C MOV A,R2 RRC A ;显码右移一位 MOV R2,A ;最末一位是否显示完毕?,如无则 JNZ DS2 ;继续往下显示 MOV R0,#45H MOV A,SBF ;把秒值分别放于44H,45H中 ACALL GET DEC R0 ;跳过负责显示"-"的两个字节 DEC R0 MOV A,MBF ;把分值分别放入40H,41H中 ACALL GET SJMP DS1 ;转DS1从头显示起 TABLE: INC A ;取与数字对应的段码 MOVC A,@A+PC RET DB 3FH,06H,5BH,4FH,66H,6DH,7DH, 07H, 7FH,6FH, 40H GET: MOV R1,A ;把从分或秒字节中取来的值的高 ANL A,#0FH ;位屏蔽掉,并送入缓冲区 MOV @R0,A DEC R0 MOV A,R1 ;把从分或秒字节中取来的值的低 SWAP A ;位屏蔽掉,并送入缓冲区 ANL A,#0FH MOV @R0,A DEC R0 ;R0指针下移一位 RET CLOCK: MOV TL1,#0AFH ;置时间常数 MOV TH1,#3CH PUSH PSW PUSH ACC INC BUF ;计数加一 MOV A,BUF ;计到10否?没有则转到QUIT退出中断 CJNE A,#0AH,QUIT MOV BUF,#00H ;置初值 MOV A,SBF INC A ;秒值加一,经十进制调整后放入 DA A ;秒字节 MOV SBF,A CJNE A,#60H,QUIT ;计到60否?没有则转到QUIT退出中断 MOV SBF,#00H ;是,秒字节清零 MOV A,MBF INC A ;分值加一,经十进制调整后放入 DA A ;分字节 MOV MBF,A CJNE A,#60H,QUIT ;分值为60否?不是则退出中断 MOV MBF,#00H ;是,清零 QUIT: POP ACC POP PSW RETI ;中断返回 END 实验九  D/A转换实验 【实验目的】 ⒈ 了解D/A转换的基本原理。 ⒉ 了解D/A转换芯片0832的性能及编程方法。 ⒊ 了解单片机系统中扩展D/A转换的基本方法。 【实验设备】 EL-8051-III型单片机实验箱 【实验内容】 利用DAC0832,编制程序产生锯齿波、三角波、正弦波。三种波形轮流显示。 【实验原理】 D/A转换是把数字量转换成模拟量的变换,从D/A输出的是模拟电压信号。产生锯齿波和三角波只需由A存放的数字量的增减来控制;要产生正弦波,较简单的手段是造一张正弦数字量表。取值范围为一个周期,采样点越多,精度就越高。 本实验中,输入寄存器占偶地址端口,DAC寄存器占较高的奇地址端口。两个寄存器均对数据独立进行锁存。因而要把一个数据通过0832输出,要经两次锁存。典型程序段如下: MOV DPTR,#PORT MOV A,#DATA MOVX @DPTR,A INC DPTR MOVX @DPTR,A 其中第二次I/O写是一个虚拟写过程,其目的只是产生一个WR信号。启动D/A。 【实验电路】 【实验步骤】 ⒈ DAC0832的片选CS0832接CS0,输出端OUT接示波器探头。 ⒉ 将短路端子DS的1、2短路。 【程序框图】 【参考程序】 实验接线:DAC0832的片选CS0832接CS0,输出端OUT接示波器探头。 NAME T92 ;0832数模转换实验 PORT EQU 0CFA0H CSEG AT 4000H LJMP START CSEG AT 4100H START: MOV R1,#02H ;置计数初值于R1 ACALL PRG1 ;显示锯齿波 MOV R1,#01H ;置计数初值于R1 ACALL PRG2 ;显示三角波 MOV R1,#01H ;置计数初值于R1 ACALL PRG3 ;显示正弦波 LJMP START ;转START循环显示 PRG1: MOV DPTR,#PORT+1 ;DAC寄存器端口地址送DPTR MOV A,#00H ;初值送ACC LOOP: MOV B,#0FFH LOOP1: MOV DPTR,#PORT ;DAC输入寄存器端口地址 MOVX @DPTR,A ;送出数据 INC DPTR ;加一,为DAC寄存器端口地址 MOVX @DPTR,A ;启动转换 INC A ;数据加一 CJNE A,#0FFH,LOOP1 MOV A,#00H DJNZ B,LOOP1 DJNZ R1,LOOP ;计数值减到40H了吗?没有则继续 RET ;产生锯齿波 PRG2: MOV DPTR,#PORT+1 MOV A,#00H LP0: MOV B,#0FFH LP1: MOV DPTR,#PORT ;LP1循环产生三角波前半周期 MOVX @DPTR,A INC DPTR MOVX @DPTR,A INC A CJNE A,#0FFH,LP1 ;数据为FFH吗?不等则转LP1 MOV R2,#0FEH LP2: MOV DPTR,#PORT ;LP2循环产生三角波后半周期 MOV A,R2 MOVX @DPTR,A INC DPTR MOVX @DPTR,A、 JNZ R2,LP2 DJNZ B,LP1 DJNZ R1,LP0 ;计数值到80H则退出执行下一步 RET PRG3: MOV B,#00H LP3: MOV DPTR,#DATA0 MOV R4,#0FFH ;FFH为DATA0表中的数据个数 LP4: MOVX A,@DPTR ;从表中取数据 MOV R3,DPH MOV R5,DPL MOV DPTR,#PORT MOVX @DPTR,A INC DPTR MOVX @DPTR,A MOV DPH,R3 MOV DPL,R5 INC DPTR ;地址下移 DJNZ R4,LP4 DJNZ B,LP3 DJNZ R1,PRG3 RET DATA0: DB 80H,83H,86H,89H,8DH,90H,93H,96H DB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH DB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H DB 0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8H DB 0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9H DB 0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5H DB 0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDH DB 0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDH DB 0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6H DB 0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAH DB 0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAH DB 0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7H DB 0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1H DB 0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CH,99H DB 96H,93H,90H,8DH,89H,86H,83H,80H DB 80H,7CH,79H,76H,72H,6FH,6CH,69H DB 66H,63H,60H,5DH,5AH,57H,55H,51H DB 4EH,4CH,48H,45H,43H,40H,3DH,3AH DB 38H,35H,33H,30H,2EH,2BH,29H,27H DB 25H,22H,20H,1EH,1CH,1AH,18H,16H DB 15H,13H,11H,10H,0EH,0DH,0BH,0AH DB 09H,8H,7H,6H,5H,4H,3H,2H DB 02H,1H,0H,0H,0H,0H,0H,0H DB 00H,0H,0H,0H,0H,0H,1H,2H DB 02H,3H,4H,5H,6H,7H,8H,9H DB 0AH,0BH,0DH,0EH,10H,11H,13H,15H DB 16H,18H,1AH,1CH,1EH,20H,22H,25H DB 27H,29H,2BH,2EH,30H,33H,35H,38H DB 3AH,3DH,40H,43H,45H,48H,4CH,4EH DB 51H,51H,55H,57H,5AH,5DH,60H,63H DB 69H,6CH,6FH,72H,76H,79H,7CH,80H END 实验十  8253定时器实验 【实验目的】 ⒈ 习8253扩展定时器的工作原理。 ⒉ 习8253扩展定时器的使用方法。 【实验设备】 EL-8051-III型单片机实验箱 【实验内容】 向8253定时控制器写入控制命令字,通过示波器观察输出波形。 【实验接线】 ⒈ 8253的片选CS8253与CS0相连;8253CLK0与CLK3相连;OUT0与8253CLK1相连 ⒉ 示波器的信号探头与OUT0相连;OUT1与发光二极管的输入L8相连 【实验原理图】 【程序框图】 【实验提示】 8253是自动控制系统中经常使用的可编程定时器/计数器,其内部有三个相互独立的计数器,分别称为T0,T1,T2。8253有多种工作方式,其中方式3为方波方式。当计数器设好初值后,计数器递减计数,在计数值的前一半输出高电平,后一半输出低电平。实验中,T0的时钟由CLK3提供,其频率为750KHz。程序中,T0的初值设为927CH(37500十进制),则OUT0输出的方波周期为(37500*4/3*10-6=0.05s)。T1采用OUT0的输出为时钟,则在T2中设置初值为n时,则OUT2输出方波周期为n*0.05s。n的最大值为FFFFH,所以OUT2输出方波最大周期为3276.75s(=54.6分钟)。可见,采用计数器叠加使用后,输出周期范围可以大幅度提高,这在实际控制中是非常有用的。 【参考程序】 NAME T17 ;8253实验 CSEG AT 4000H AJMP START CSEG AT 4030H START: MOV DPTR,#0CFA3H MOV A,#36H ;计数器0为模式3 MOVX @DPTR,A MOV DPTR,#0CFA0H MOV A,#7CH ;计数值 MOVX @DPTR,A MOV A,#92H MOVX @DPTR,A MOV DPTR,#0CFA3H ;计数器1为模式3 MOV A,#76H MOVX @DPTR,A MOV DPTR,#0CFA1H MOV A,#5H ;计数值 MOVX @DPTR,A MOV A,#05H MOVX @DPTR,A START1: NOP SJMP START1 END
本文档为【试验八8255可编程并行接口试验二】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_650122
暂无简介~
格式:doc
大小:108KB
软件:Word
页数:0
分类:互联网
上传时间:2019-04-23
浏览量:19