单片机实验V3.0_第1页
单片机实验V3.0_第2页
单片机实验V3.0_第3页
单片机实验V3.0_第4页
单片机实验V3.0_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

1、P1口实验实验题目实验题目1、P1口做输出口,接八只发光二极管,编写程序,使其循环点亮。 2、P1口低四位接四只发光二极管L0-L3, P1口高四位接开关K0-K3,编写程序,将开关的状态在发光二极管上显示出来。硬件原理图EA/VP31X119X218R ESET9R D17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11R XD1080

2、51A02A13A24A35A46A57A68A79B 018B 117B 216B 315B 414B 513B 612B 711E19DIR174HC 245L0L1P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7L2L3L4L5L6L7GNDVC C470470470470470470470470连线方法连线方法 题目1:89C51的P1.0P1.7分别接发光二极管L0L7 题目2:P1口的P1.0P1.3接L0-L3, P1口的P1.4P1.7接K0-K3参考程序-题目1 org 0000h ljmp start start:mov a,#01h loop:mov p1

3、,a lcall del rl a ljmp loop del:mov r1,#10 ;延时1秒,12MHz lp1:mov r2,#200 lp2:mov r3,#249 djnz r3,$ djnz r2,lp2 djnz r1,lp1 ret end参考程序-题目2 ORG 0000H LJMP START START: MOV A, P1 SWAP A ORL A, #0F0H MOV P1,A LJMP START END参考程序-题目1#include #define uchar unsigned char#define uint unsigned intvoid delay(un

4、signed int N) int i; for (i=0;iN;i+); main() uchar i,a; while(1) a=0 x01; for(i=0;i8;i+) P1=a; delay(50000); a=a1; 参考程序-题目2#include #define uchar unsigned char#define uint unsigned intmain() uchar i; while(1) i=P1; i=i4; P1=i|0 xf0; 流程图设置初值 输 出延时1秒循环左移 开 始读开关状态半字节交换高四位置1开 始输出题目1流程图题目2流程图外部中断实验 实验题目实

5、验题目 P1口做输出口,接八只发光二极管,编写程序,使其循环点亮。以单脉冲输出端做为中断申请,当第一次产生外部中断时,使发光二极管全亮,延时1秒后返回中断之前的状态;当第二次产生外部中断时,使发光二极管全灭,延时1秒后返回中断之前的状态;以后如上述一直循环下去。硬件原理图E A/VP31X119X218R E SE T9R D17W R16INT 012INT 113T 014T 115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P26

6、27P2728PSE N29AL E /P30T XD11R XD108051A02A13A24A35A46A57A68A79B 018B 117B 216B 315B 414B 513B 612B 711E19DIR174HC 245L 0L 1P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7L 2L 3L 4L 5L 6L 7GNDVC C470470470470470470470470单 脉 冲P3.2连线方法连线方法 P1.0P1.7分别接发光二极管L0L7, P3.2接单脉冲输出端参考程序-主程序 ORG 0000H LJMP START ORG 0003H LJMP

7、 PINT0 START: SETB EX0 SETB IT0 SETB EA MOV A,#01H MOV R4,#00H LOOP: MOV P1,A LCALL M1S RL A SJMP LOOP 参考程序-中断服务程序PINT0: PUSH ACC MOV A,P1 PUSH ACC CJNE R4,#00H,N01 INC R4 MOV P1,#0FFHDLAY: LCALL M2S POP ACC MOV P1,A POP ACC RETI N01: MOV R4,#00H MOV P1,#00H SJMP DLAY参考程序-延时子程序 M1S: MOV R1,#18DEL1:

8、MOV R2,#200DEL2: MOV R3,#126DEL3: DJNZ R3,DEL3 DJNZ R2,DEL2 DJNZ R1,DEL1 RET M2S: MOV R5,#18 DEI1: MOV R6,#200 DEI2: MOV R7,#126 DEI3: DJNZ R7,DEI3 DJNZ R6,DEI2 DJNZ R5,DEI1 RET END外部中断-C语言-中断处理#include #define uchar unsigned char#define uint unsigned intbit led=0;void delay(unsigned int N) int i; f

9、or (i=0;iN;i+); void pint0(void) interrupt 0 using 1 if(led=0) P1=0 xff; delay(50000); delay(50000); led=1; else P1=0 x00; delay(50000); delay(50000); led=0; 外部中断-C语言-主函数main() uchar i,a; led=0; IT0=1; EX0=1; EA=1; while(1) a=0 x01; for(i=0;i8;i+) P1=a; delay(50000); a=a1; 定时器实验 实验题目实验题目89C51内部定时器内部

10、定时器T1,按方式,按方式1工作、即做为工作、即做为十六位定时器使用每十六位定时器使用每0.05秒溢出一次。秒溢出一次。P1口的口的P1.0-P1.7分别接八只发光二极管。分别接八只发光二极管。 要求编写要求编写程序模拟一时序控制装置。开机后,第一秒钟程序模拟一时序控制装置。开机后,第一秒钟L0、L2亮,第二秒钟亮,第二秒钟L1、L3亮,第三秒钟亮,第三秒钟L4、L6亮,第四秒钟亮,第四秒钟L5、L7亮,第五秒钟亮,第五秒钟L0、L2、L4、L6亮,第六秒钟亮,第六秒钟L1、L3、L5、L7亮,第亮,第七秒钟全亮,第八秒钟全灭,以后又从头开始,七秒钟全亮,第八秒钟全灭,以后又从头开始,一直循环

11、下去。一直循环下去。实验原理说明 定时常数的确定 定时器/计数器的输入脉冲与机器周期一样,为振荡器频率的1/12。本实验系统中,时钟频率为12MHz。实现0.05秒的延时,要在定时器1中设置一个时间常数即计数初值,使其每隔0.05秒溢出一次,再用一个寄存器计溢出的次数,计20次即可实现1秒延时。时间常数按以下公式计算: 计算出X之后,换算成十六进制数将高八位放在TH1中,低八位放在TL1中。05. 012)2(16fX参考程序- 查询方式 ORG 0000H LJMP START START: MOV TMOD,#10H MOV TH1,#3CH ;12MHz,定时 50ms MOV TL1,

12、#0B0H MOV R2,#20 SETB TR1LOOP: MOV DPTR,#TAB MOV R7,#08H WAIT: JNB TF1,$ MOV TH1,#3CH MOV TL1,#0B0H CLR TF1 DJNZ R2,WAIT MOV R2, #20 CLR A MOVC A, A+DPTR INC DPTR MOV P1,A DJNZ R7,WAIT SJMP LOOP TAB: DB 05H,0AH,50H,0A0H,55H,0AAH,0FFH,00H END参考程序- 中断方式 org 0000h ;在数码管上显示0-9;P1.0P1.7 接AH;G0接+5V或接一个开关;

13、数码管右侧开关向上拨(外驱)! ljmp start org 001bh ljmp pit1 start: mov r4, #00h ; 显示的数字 mov th1,#3CH ;定时50ms mov tl1,#0B0H mov tmod,#10h setb tr1 setb et1 setb ea mov r5,#00h ;加1计数 loop: mov dptr,#seg mov a, r4 movc a,a+dptr mov p1,a mov r7,#00h ;延时 djnz r7,$ mov r7,#00h djnz r7,$ ljmp loop pit1: mov th1,#3ch mo

14、v tl1,#0B0h inc r5 cjne r5,#20,quit mov r5,#00h inc r4 cjne r4, #0ah,quit mov r4,#00h quit: reti seg:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh end参考程序-中断方式(C语言)#include #define uchar unsigned charuchar data t=0,m1s=0; uchar code seg=0 x05,0 x0a,0 x50,0 xa0,0 x55,0 xaa,0 xff,0 x00;void time1(void) i

15、nterrupt 3 TH1=0 x3C;/ T1 50ms/12MHz TL1=0 xB0;/设定T1计数初值 t+; if(t=20) t=0; m1s+; if(m1s=8)m1s=0; 参考程序-中断方式(C语言) main() TMOD=0 x10;/ T1方式1 TH1=0 x3C;/ T1 50ms/12MHz TL1=0 xB0;/设定T1计数初值 ET1=1;/允许定时器1中断 TR1=1;/允许定时器1计数 EA=1;/开中断 t=0; while(1) P1=segm1s; 串行口实验串并转换实验 利用8051单片机串行口,和并行输出串行移位寄存器74LS164,扩展输出

16、口,在数码显示器上循环显示09这10个数字。实验电路 EA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD108031A1B2Q03Q14Q25Q36Q410Q511Q612Q713CLK8MR974LS164P3.0P3.1P3.1P3.0abfcgdeDPYdpgfedcbadpQ0

17、Q1Q2Q3Q4Q5Q6Q7ABCDEFGHG0100abfcgdeDPYdpgfedcbadpG3dpgfedcbaabfcgdeDPYdpgfedcbadpG2dpgfedcbaabfcgdeDPYdpgfedcbadpG1dpgfedcbaabfcgdeDPYdpgfedcbadpG4dpgfedcbaG0abfcgdeDPYdpgfedcbadpG5dpgfedcbaG0dpgfedcba连线方法 8051的P3.1(TXD)端接74LS164的CLK端, P3.0(RXD)端接74LS164的AB端。 74LS164的Q0-Q7分别接数码显示的H-A,数码显示的G0接高电平(+5V

18、),G1-G5接低电平(GND)。数码管右侧的开关拨向“外驱外驱”方式。参考程序参考程序汇编语言汇编语言 ORG 0000H LJMP STARTSTART:MOV R1,#00H MOV SCON,#00H LOOP:MOV DPTR,#SEG MOV A,R1 MOVC A,A+DPTR MOV SBUF,A JNB TI,$ CLR TI LCALL M1S INC R1 CJNE R1,#0AH,LOOP MOV R1,#00H SJMP LOOP SEG: DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH END参考程序参考程序C语言语言-中

19、断函数中断函数#include #include #define uchar unsigned char#define uint unsigned int uchar data t=0, m1s=0; uchar code seg=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;bit s1s=0;void time1(void) interrupt 3 TH1=0 x3C;/ T1 50ms/12MHz TL1=0 xB0;/设定T1计数初值 t+; if(t=20) s1s=1; t=0; m1s+; if(m1s=1

20、0)m1s=0; 参考程序参考程序C语言语言-主函数主函数 main() SCON=0X00; TMOD=0 x10;/ T1方式1 TH1=0 x3C;/ T1 50ms/12MHz TL1=0 xB0;/设定T1计数初值 ET1=1; TR1=1;/使用定时器1, TR1为定时器1 EA=1;/CPU允许中断 t=0;s1s=1; while(1) if(_testbit_(s1s) SBUF=segm1s; while(TI=0); TI=0; 数码显示实验 利用实验台上的六个数码管,同时显示16或自己的学号后六位这6个数字,并让显示的数字循环移动起来。硬件原理图abfcgde51091

21、246dpgfedcb7adpcom3abfcgdedpgfedcbadpcom3abfcgdedpgfedcbadpcom3abfcgdedpgfedcbadpcom3abfcgdedpgfedcbadpcom3abfcgdedpgfedcbadpcom32008HGFEDCBAG4G5G2G3G0G1D03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE1CLK11U?74HC374D03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE1CLK1174HC374D0D

22、1D2D3D4D5D6D7D0D1D2D3D4D5D6D7VCCGND外 驱内 驱12374HC0245674HC0012374HC00A2A1WRKEY/LED CSD03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE1CLK11U?74HC374D03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE1CLK11U?74HC374VCC内 驱GND外 驱实验原理说明 注意:当用总线方式总线方式驱动八段显示管时,请将八段的驱动方式选择开关拨到“内驱内驱”位置;当用I/O

23、方式方式驱动八段显示管时,请将开关拨到“外驱外驱”位置。 本实验仪提供了6 位7段码LED显示电路,只要按地址输出相应数据,就可以实现对显示器的控制。显示共有6位,用动态方式显示。8位段码、6位位码是由两片74LS374输出。位码经MC1413或ULN2003倒相驱动后,选择相应显示位。 本实验仪中 8位段码输出地址为0X004H,位码输出地址为 0X002H。此处X是由KEY/LED CS 决定,参见地址译码。做键盘和LED实验时,需将KEY/LED CS 接到相应的地址译码上。以便用相应的地址来访问。例如,将KEY/LED CS 接到CS0上,则段码地址为8004H,位码地址为8002H。

24、连线方法 KEY/LED_CS-CS0参考程序-主程序 ORG 0000H LJMP START START:MOV 40H,#01H MOV 41H,#02H MOV 42H,#03H MOV 43H,#04H MOV 44H,#05H MOV 45H,#06H NEXT: LCALL DISP LJMP NEXT参考程序-显示子程序 DISP:MOV R0,#40H ;显示 MOV R2,#01H MOV R3,#06H LOOP: MOV DPTR,#TAB MOV A,R0 MOVC A,A+DPTR MOV DPTR,#8004H MOVX DPTR,A INC R0 MOV DPT

25、R,#8002H MOV A,R2 MOVX DPTR,A RL A MOV R2,A MOV R5,#200 ;延时2毫秒 DJNZ R5,$ DJNZ R3,LOOP RET TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H END数码显示C程序-T1中断函数#include #include #define uchar unsigned char#define uint unsigned int uchar data t=0,m1ms=0,m100ms=0;uchar data disbuf

26、6=0 x01,0 x02,0 x03,0 x04,0 x05,0 x06;bit s100ms=0; uchar code seg=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;void time1(void) interrupt 3 TH1=0 xFC;/ T1 1ms/12MHz TL1=0 x18;/设定T1计数初值 t+; m1ms=1; if(t=100)s100ms=1; t=0; m100ms+; if(m100ms=10)m100ms=0; 数码显示C程序-显示函数disp() uchar xdata

27、*p; uchar i,n=1,*ptr; uchar code seg=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f; for (i=0;i6;i+) ptr=seg; p=0 x8004; *p =*(ptr+disbufi); p=0 x8002; *p=n; n=n1; m1ms=0; while(m1ms=0) ; m1ms=0; *p=0 x00; 数码显示C程序-显缓函数 shf() uchar data a; a= disbuf0; disbuf0=disbuf1; disbuf1=disbuf2; di

28、sbuf2=disbuf3; disbuf3=disbuf4; disbuf4=disbuf5; disbuf5=a; 数码显示C程序-主函数 main() unsigned char i,*p; SCON=0 x00; TMOD=0 x10;/ T1方式1 TH1=0 xFC;/ T1 1ms/12MHz TL1=0 x18;/设定T1计数初值 ET1=1; TR1=1;/使用定时器1, TR1为定时器1 EA=1;/CPU允许中断 t=0;s100ms=0; while(1) disp(); if(_testbit_(s100ms) shf(); A/D转换实验 实验题目 利用实验台上的A

29、DC0809做A/D转换器,实验台上的电位器提供模拟量输入,编制程序,将模拟量转换成数字量,用发光二极管或数码管显示出来。实验原理说明 ADC0809是8通道八位逐次逼近型A/D 转换器,每采集一次需要100微秒。 START端为A/D转换启动信号,ALE端为通道地址锁存信号。实验电路中已将其相连,以便同时锁存通道地址并开始A/D转换,故启动A/D转换只需如下两条指令: MOV DPTR, #8000H MOVX DPTR, A A中内容是不重要的,这是一次虚拟写。 中断方式下,A/D转换结束后自动产生EOC信号,将其与8031 INT0(P3.2)相连。在EOC变高电平后或在中断处理程序中,

30、使用如下指令即可读取A/D转换结果。 MOV DPTR,#8000H MOVX A, DPTR硬件原理图L2L1IN-026msb2-1212-220IN-1272-3192-418IN-2282-582-615IN-312-714lsb2-817IN-42EOC7IN-53ADD-A25IN-64ADD-B24ADD-C23IN-75ALE22ref(-)16ENABLE9START6ref(+)12CLOCK10ADC0809D0D1D2D3D4D5D6D7EOCA0A1A2IN0IN1VCC12345674HC02CLKRDA/D_CSWRR1710kVCCGND参考程序-转换结果在发光

31、二极管上显示 ORG 0000H LJMP START START:MOV DPTR,#8000H MOVX DPTR,A JNB P3.2,$ MOVX A,DPTR MOV P1,A SJMP START ENDA/D转换参考程序-在数码管上显示 ORG 0000H LJMP STARTSTART:MOV DPTR,#8000H MOVX DPTR,A JNB P3.2,$ MOVX A,DPTR MOV B, A ANL A,#0FH MOV 40H,A MOV A, B SWAP A ANL A,#0FH MOV 41H, A LCALL DISP LJMP STARTA/D转换参考程

32、序-显示子程序 DISP:MOV R0,#40H ;显示 MOV R2,#01H MOV R3,#06H LOOP: MOV DPTR,#TAB MOV A,R0 MOVC A,A+DPTR MOV DPTR,#9004H MOVX DPTR,A INC R0 MOV DPTR,#9002H MOV A,R2 MOVX DPTR,A RL A MOV R2,A MOV R5,#200 ;延时2毫秒 DJNZ R5,$ DJNZ R3,LOOP RET TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71

33、H END连线方法 ADC0809的片选端AD_CS接CS0,EOC接P3.2; 电位器中间抽头电位器输出接IN0。 采用内驱方式时,数码显示片选KEY/LED CS 接到CS1。#include #include #define uchar unsigned char#define uint unsigned intsbit int0=P32; uchar disbuf6; void DelayMs(uchar time) uchar i,j; for(i=0;itime;i+) for(j=0;j111;j+); disp() uchar xdata *p; uchar i,n=1,*pt

34、r,a; uchar code seg=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f; for (i=0;i6;i+) p=0 x8004; ptr=seg; a=*(ptr+disbufi); *p=a; p=0 x8002; *p=n; n=n1; DelayMs(10); ad() uchar xdata *p; uchar i,n=1; p=0 x9000; *p=0 x00; while(int0=0); i=*p; disbuf2=i/100; n=i%100; disbuf1=n/10; disbuf0=n

35、%10; main() while(1) ad(); disp(); 数字秒表实验 利用串行口扩展I/O口,利用定时器T1实现延时0.5s,在数码管上循环显示0-30这31个数字。显示0时,使1个黄色发光二极亮,显示30时使1个红色发光二极管亮,否则使一个绿色发光二极管亮。以单脉冲输出端作为中断申请,第一次产生外部中断时,计数停止,显示当前计数值;第二次产生外部中断时,继续计数。 org 0000h ;在数码管上显示00-30 ljmp start org 001bh ljmp pit1start: mov p1,#00h mov r4, #00h ; 显示的数字 mov scon,#00h

36、mov th1,#3ch ;定时50ms mov tl1,#0b0h mov tmod,#10h setb tr1 setb et1 setb ea mov r5,#00h ;加1计数 loop: mov dptr,#tab mov a, r4 ; 秒 anl a ,#0fh movc a,a+dptr mov sbuf ,a setb p1.0 ;低位显示 clr p1.1 mov r7,#00h ;延时2毫秒 djnz r7,$ mov r7,#00h djnz r7,$ mov a, r4 ; 秒 swap a anl a ,#0fh movc a,a+dptr mov sbuf ,a

37、clr p1.0 serb p1.1 ;高位显示 mov r7,#00h djnz r7,$ mov r7,#00h djnz r7,$ ljmp loop 数字秒表-中断服务程序 pit1: mov th1,#3ch mov tl1,#0b0h inc r5 cjne r5,#20,quit mov r5,#00h mov a , r4 add a, #01h da a mov r4, a cjne a,#31h,quit mov r4,#00h quit: reti seg: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh end数字电子钟实验 利用实

38、验台上的六个数码管及单片机定时器,设计电子钟,在六位数码显示器上实时显示时分秒。数字电子钟-主程序 ORG 0000H LJMP START ORG 001BH LJMP PIT1 START:MOV R0,#40H MOV R7,#09 LP: MOV R0,#00H INC R0 DJNZ R7,LP MOV R4,#20 MOV TMOD,#10H MOV TH1,#3CH MOV TL1,#0B0H SETB TR1 SETB ET1 SETB EA数字电子钟-主程序 DIS: LCALL DISP MOV R0,#40H MOV R1,#46H MOV R2,#03H LPP: MO

39、V A,R1 MOV B,A ANL A,#0FH MOV R0,A INC R0 MOV A,B SWAP A ANL A,#0FH MOV R0,A INC R0 INC R1 DJNZ R2, LPP LJMP DIS 数字电子钟-显示子程序DISP: MOV R0,#40H ;显示 MOV R2,#01H MOV R3,#06H LOOP: MOV DPTR,#TAB MOV A,R0 MOVC A,A+DPTR MOV DPTR,#8004H MOVX DPTR,A INC R0 MOV DPTR,#8002H MOV A,R2 MOVX DPTR,A RL A MOV R2,A M

40、OV R5,#200 ;延时2毫秒 DJNZ R5,$ DJNZ R3,LOOP RETTAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H,71H数字电子钟-中断服务程序 PIT1:PUSH ACC PUSH PSW MOV TH1,#3CH MOV TL1,#0B0H DJNZ R4,QUIT MOV R4,#20 MOV A,46H ADD A,#1 DA A MOV 46H,A CJNE A,#60H,QUIT MOV 46H,#00H MOV A,47H ADD A,#1 DA A MOV 47H,A

41、 CJNE A,#60H,QUIT MOV 47H,#00H MOV A,48H ADD A,#1 DA A MOV 48H,A CJNE A,#24H,QUIT MOV 48H,#00H QUIT: POP PSW POP ACC RETI ENDD/AD/A转换实验转换实验 利用实验台上的DAC0832产生锯齿波、三角波、正弦波。三种波形轮流显示。实验原理说明 D/A转换是把数字量转换成模拟量的变换,从D/A转换输出的是模拟电压信号。产生锯齿波和三角波只需由A存放的数字量的增减来控制;要产生正弦波,较简单的手段是造一张正弦数字量表。取值范围为一个周期,采样点越多,精度越高。8位D/A转换器

42、的输入数据与输出电压的关系为 U(0-5V)=-Uref/256N U(-5V+5V)= 2Uref/256N-5V (这里 Uref为+5V)硬件原理图GND3GND10Vcc20Iout111lsbDI07Iout212DI16DI25Rfb9DI34DI416Vref8DI515DI614msbDI713ILE19WR218CS1WR12Xfer17DAC0832567LM324D0D1D2D3D4D5D610VCCVCCGND1098LM32410kR620k(-8V+8V)20k20k+12V-12VD7321411LM324(0-5V)36k10kVCCVCC20kR171010(

43、-5V+5V)20kD/A_CSVCCVCCGND连线方法 DAC0832片选端DA_CS接CS0,-5V-+5V输出端接示波器探头。编程提示本实验中,DAC0832工作在单缓冲方式。因而数据只要写入DAC0832,就立刻进行输出,典型程序段如下:MOV DPTR,#8000HMOV A,#DATAMOVX DPTR,A对于生成锯齿波,可通过给累加器A不断加1来实现;三角波要考虑累加器增加到某最大值时开始减一,减一到最小值时加一;而正弦波的生成,按如下公式计算出表中的数据:U(-5V+5V)=5*sin x; 5*sin x=5*(N/128-1);因此,N=128*(1+sin x);公式中

44、,x为角度,范围0-360,N为表中的数据,根据表中的数据个数(1个周期)或取得点数,比如取64个点,则公式变成:N=128*(1+sin x*360/64);x为0-63,计算出的N,变成要变成16进制数,即为表中的数据。参考程序 SIN: MOV R4,#40H ;64点 MOV DPTR,#SIN0 LPNX: CLR A MOVC A,A+DPTR PUSH DPL PUSH DPH MOV DPTR,#8000H MOVX DPTR,A POP DPH POP DPL INC DPTR DJNZ R4,LPNX RETSIN0:DB 80H,8CH,98H,0A5H,0B0H,0BC

45、H,0C7H,0D1H ;D=(1+SIN X)*128 DB 0DAH,0E2H,0EAH,0F0H,0F6H,0FAH,0FDH,0FFH ; X=0-360 DB 0FFH,0FDH,0FAH,0F6H,0F0H,0EAH,0E2H,0DAH DB 0D1H,0C7H,0BCH,0B0H,0A5H,98H,8CH,80H DB 7FH,73H,67H,5AH,4FH,43H,38H,2EH DB 25H,1DH,15H,0FH,09H,05H,02H,00H DB 00H,02H,05H,09H,0FH,15H,1DH,25H DB 2EH,38H,43H,4FH,5AH,67H,73H

46、,7FH8253定时器/计数器实验 实验目的与要求实验目的与要求 实验目的: 1、学习8088/86与8253的连接方法。 2、学习8088/86对8253的控制方法。 实验要求: 利用8088/86外接8253可编程定时器/计数器,可以实现对外部事件进行计数。设置断点读回计数器的值。实验电路及连线连线连接孔1连接孔218253_CSCS028253_OUT0L038253_GATE0VCC48253_CLK0单脉冲实验说明 本实验中计数器按方式0工作。即十六位二进制计数器。当计数设置好后,计数器就开始计数。如果要读入计数器的值,要先锁存计数值,才能读到计数值。本实验所设计数值为5,也就是外部5个脉冲,计数器值加1。同时OUT脚输出一个高电平。实验时,可以将OUT0接到LED上,观察计数器是否工作。程序框图开 始设置工作方式锁存计数值读回计数值源程序及分析CONTROL equ 08003hCOUNT0 equ 08000hCOUNT1 equ 08001hcode segment assume cs:codestart proc near mov al, 30h ; 通道0,方式0 mov dx, CONTROL out dx, al m

温馨提示

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

评论

0/150

提交评论