【课程设计】微机原理课程设计-洗衣机

仿真与实验箱

代码



SSTACK    SEGMENT STACK
DW 256 DUP(?)
SSTACK    ENDS

DATA    SEGMENT
led     db 6FH,7FH,07H,7DH,6DH,66H,4FH,5BH,06H,3FH   ;数码管倒计时序列9~0
ioporta equ 600h    ;端口A地址
ioportb equ 602h    ;端口B地址
ioportc equ 604h    ;端口C地址
TABDT    DB 01H,03H,02H,06H,04H,0CH,08H,09H  ;步进电机序列
DATA    ENDS

CODE    SEGMENT
ASSUME CS:CODE, DS:DATA

START:
;====================Begin===========================

MOV AX, DATA
MOV DS, AX
mov dx,606h
mov al,88H    ;方式0,A输出,B输出,C低四位输出
out dx,al

BEGIN:
CALL TUBE_STOP
MOV DX, 0604H
IN  AL, DX    ;读C口输入
MOV BL, AL

MOV CL, 4
SHR BL, CL    ;获取低四位
CMP BL, 0
JZ  BEGIN
CMP BL, 1    ;若开关1打开,甩干模式
JZ  FASTEST
CMP BL, 02H
JZ  FAST
CMP BL, 04H
JZ  SLOW
JMP BEGIN

FASTEST:
CMP DI,10    ;甩干模式出来停止
JZ  BEGIN
call meantime
;MOV DI, 1000H    ;约定使用DI来传递参数(延时长短)
;CALL SPEED  ;甩干模式,急速快
FAST:
MOV DI, 4000H    ;约定使用DI来传递参数(延时长短)
CALL SPEED    ;开关1被打开,速度1标准
SLOW:
MOV DI, 8000H    ;约定使用DI来传递参数(延时长短)
CALL SPEED    ;开关2被打开,速度2轻柔

;**************读取开关子程序**************
READ    PROC
PUSH DX
PUSH AX
PUSH BX
PUSH CX

MOV DX, 0604H
IN  AL, DX    ;读C口输入
MOV BL, AL
MOV CL, 4
SHR BL, CL    ;获取低四位
CMP BL, 0
JZ  BEGIN
;        CMP BL, 1    ;若开关1打开,甩干模式
;        JZ  Q1
;       CMP BL, 02H    ;若开关2打开,标准模式
;        JZ  FAST
;        CMP BL, 04H    ;若开关3打开,轻柔模式
;        JZ  SLOW
POP CX
POP BX
POP AX
POP DX

RET
READ    ENDP
;动态数码管停止;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TUBE_STOP PROC
PUSH AX
PUSH BX
PUSH DX
mov dx,606h
mov al,88H;方式0,A输出,B输出,C低四位输出
out dx,al        ;初始化8255
mov bx,offset led
mov al,11111001b    ;选择全部
mov dx,ioportc
out dx,al     ;出C口 选择个位
mov al,[bx+9]    ;
mov dx,ioporta
out dx,al    ;从a口输出
POP    DX
POP BX
POP    AX
RET
TUBE_STOP ENDP

;**************同步**************
meantime proc

mov dx,606h
mov al,10001000b;方式0,A输出,B输出,C输出
out dx,al        ;初始化8255
mov bx,offset led
mov si,0;个位
mov di,8;十位
mov cx,12

digit1:        ;动态刷新一次数码管数字
CALL GEW    ;从a口输出
call delay;1000
CALL TEN
CALL shuaigan
call read    ;读开关
loop digit1

digit3:
mov cx,12
inc si
cmp si,9
jbe  digit1

CMP  DI,9    ;只为判断最后一次00情况
Ja  DIGIT4

inc di    ;满十进一
;添加,刷新00之后,si=10,跳转到tube_stop
CMP  DI,9    ;只为判断最后一次00情况
Ja  DIGIT4
mov si,0;清零个位

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
digit2:            ;个位刷成0,十位刷成 原来-1

CALL GEW
call delay;1000
CALL TEN
CALL shuaigan
call read    ;读开关
loop digit2

mov  cx,12
CMP  DI,9
JBe  DIGIT3

DIGIT4:    ;输出为0结束程序
call tube_stop
jmp begin

meantime endp
;******************个位*******************
GEW PROC
PUSH AX
PUSH BX
PUSH DX
PUSH SI
mov bx,offset led
mov al,11111011b    ;选择个位
mov dx,ioportC
out dx,al     ;出C口 选择个位

mov al,[bx+SI]    ;
;NOT AL       ;这条指令与数码管共阴极或共阳极有关,具体可根据实际情况,添加或删除
mov dx,ioporta
out dx,al    ;从a口输出
POP SI
POP DX
POP BX
POP AX
RET
GEW ENDP
;******************十位*******************
TEN PROC
PUSH AX
PUSH BX
PUSH DX
PUSH DI

mov bx,offset led

mov al,11111101B    ;选择十位
mov dx,ioportC
out dx,al     ;出c口 选择十位

mov al,[bx+di];
;NOT AL    ;这条指令与数码管共阴极或共阳极有关,具体可根据实际情况,添加或删除
mov dx,ioporta
out dx,al    ;从a口输出

POP DI
POP DX
POP BX
POP AX
RET
TEN ENDP
;**************延时子程序*****************
delay proc
push cx
mov cx,500h
del:
;nop
nop
loop del
pop cx
ret
delay endp
;**************甩干子程序****************
shuaigan proc
push ax
push bx
push cx
push dx
MOV      BX, OFFSET TABDT
MOV      CX, 0008H
Q2:

call    gew

MOV    AL,[BX]
MOV      DX, 0602H        ; 写B口
OUT    DX, AL
INC    BX
call     delay        ; 控制步进电机的+转速1000
call     delay
call     delay
call     delay
CALL    TEN
call     delay
call     delay
call     delay
call     delay
LOOP     Q2

pop dx
pop cx
pop bx
pop ax
ret
shuaigan endp

;***************延时子程序****************
DALLY PROC
;            PUSH DI
PUSH CX
MOV  CX, DI
A3:        PUSH AX
POP     AX
LOOP A3
POP  CX
;            POP  DI
RET

DALLY    ENDP
;*************电机驱动子程序********************
SPEED PROC


MAIN:   MOV  AL, 88H            ; 控制B口工作于方式0,输出
MOV  DX, 0606H
OUT  DX, AL

MOV  SI, 0            ;SI用于计算反转时间
;***************正转*****************
A1:

MOV  BX, OFFSET TABDT
MOV  CX, 0008H
A2:        MOV     AL,[BX]
MOV  DX, 0602H        ; 写B口
OUT     DX, AL

CALL DALLY        ; 控制步进电机的+转速

INC     BX
LOOP A2

CALL READ

INC SI                ;SI用于计算反转时间
CMP SI, 8H            ;8次后反转
JB    A1

;PUSH DI
;MOV  DI, 0FFFFH
;CALL DALLY          ;正反转切换,需停止休息
;POP  DI

;PUSH DI
;MOV  DI, 0FFFFH
;CALL DALLY          ;正反转切换,需停止休息
;POP DI

;PUSH DI
;MOV  DI, 0FFFFH
;CALL DALLY          ;正反转切换,需停止休息
;POP  DI

JMP  A5
A8:        JMP  A1
;    CALL DALLY          ;正反转切换,需停止休息(模仿现实中洗衣机)
;    CALL DALLY          ;正反转切换,需停止休息
;***************反转***************
A5:
MOV  BX, OFFSET TABDT+7
MOV  CX, 0008H
A4:
MOV  AL,[BX]
MOV  DX, 0602H        ; 写B口
OUT     DX, AL
CALL DALLY        ; 控制步进电机的+转速
DEC  BX
LOOP A4

CALL READ

DEC SI                ;SI用于计算反转时间
CMP SI, 0            ;0后正转
JA  A5

;PUSH DI
;MOV  DI,0FFFFH
;CALL DALLY          ;正反转切换,需停止休息
;POP  DI

;PUSH DI
;MOV  DI,0FFFFH
;CALL DALLY          ;正反转切换,需停止休息
;POP  DI

;PUSH DI
;MOV  DI,0FFFFH
;CALL DALLY          ;正反转切换,需停止休息
;POP  DI

;    CALL DALLY          ;正反转切换,需停止休息
;    CALL DALLY          ;正反转切换,需停止休息
JZ  A8

RET
SPEED    ENDP

CODE    ENDS
END START

含步进电机

代码改进后


 
SSTACK	SEGMENT STACK
		DW 256 DUP(?)
SSTACK	ENDS
 
DATA	SEGMENT
led 	db 6FH,7FH,07H,7DH,6DH,66H,4FH,5BH,06H,3FH   ;????????9~0
ioporta equ 600h    ;??A??
ioportb equ 602h    ;??B??
ioportc equ 604h    ;??C??
TABDT	DB 01H,03H,02H,06H,04H,0CH,08H,09H  ;??????
DATA	ENDS
 
CODE	SEGMENT
		ASSUME CS:CODE, DS:DATA
 
START:  
;====================Begin===========================
 
	    MOV AX, DATA
        MOV DS, AX
        mov dx,606h
		mov al,88H    ;??0,A??,B??,C?????
		out dx,al	
		
BEGIN:	
		CALL TUBE_STOP
		MOV DX, 0604H
        IN  AL, DX	;?C???
        MOV BL, AL
        
        MOV CL, 4
        SHR BL, CL	;?????
        CMP BL, 1000
        JZ  BEGIN
        CMP BL, 1001B	;???1??,????
        JZ  FASTEST
        CMP BL, 1010B
		JZ  FAST
		CMP BL, 1100B
		JZ  SLOW
		JMP BEGIN	
		
FASTEST:
 		CMP DI,10	;????????
        JZ  BEGIN
		call meantime
		;MOV DI, 1000H	;????DI?????(????)
		;CALL SPEED  ;????,???
FAST:
		MOV DI, 4000H	;????DI?????(????)
        CALL FAST1	;??1???,??1??
SLOW:        
		MOV DI, 8000H	;????DI?????(????)
        CALL SLOW1	;??2???,??2??        
 
;**************???????**************
READ	PROC
		PUSH DX
		PUSH AX
		PUSH BX
		PUSH CX
		
		MOV DX, 0604H
        IN  AL, DX	;?C???
        MOV BL, AL
        MOV CL, 4
        SHR BL, CL	;?????
        CMP BL, 0
        JZ  BEGIN
;        CMP BL, 1	;???1??,????
;        JZ  Q1
;       CMP BL, 1010B	;???2??,????
;		JZ  FAST
;		CMP BL, 04H	;???3??,????
;		JZ  SLOW
        POP CX
        POP BX
        POP AX
        POP DX
        
        RET
READ	ENDP
						;???????;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TUBE_STOP PROC
	PUSH AX
	PUSH BX
	PUSH DX
	mov dx,606h
	mov al,88H;??0,A??,B??,C?????
	out dx,al		;???8255
	mov bx,offset led
	mov al,11111001b	;????
	mov dx,ioportc
	out dx,al 	;?C? ????	
	mov al,[bx+9]	;
	mov dx,ioporta
	out dx,al	;?a???	
	POP	DX
	POP BX
	POP	AX		
	RET
TUBE_STOP ENDP						
 
;**************??**************
meantime proc
	
	mov dx,606h
	mov al,10001000b;??0,A??,B??,C??
	out dx,al		;???8255
	mov bx,offset led
	mov si,0;??
	mov di,8;??
	mov cx,12
	
digit1:		;???????????
	CALL GEW	;?a???
	call delay;1000
	CALL TEN
	CALL shuaigan
	call read	;???
    loop digit1
        
digit3:	
	mov cx,12
	inc si
	cmp si,9
	jbe  digit1
	
	CMP  DI,9	;????????00??
	Ja  DIGIT4
 
	inc di	;????   
	;??,??00??,si=10,???tube_stop
	CMP  DI,9	;????????00??
	Ja  DIGIT4
	mov si,0;????
	
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
digit2:			;????0,???? ??-1
 
	CALL GEW
	call delay;1000
	CALL TEN
	CALL shuaigan
	call read	;???
	loop digit2
	
	mov  cx,12
	CMP  DI,9
	JBe  DIGIT3
 
DIGIT4:	;???0????
	call tube_stop
	jmp begin
	
meantime endp
;******************??*******************
GEW PROC
		PUSH AX
		PUSH BX
		PUSH DX
		PUSH SI
			mov bx,offset led
			mov al,11111011b	;????
			mov dx,ioportC
			out dx,al 	;?C? ????
			
			mov al,[bx+SI]	;
			;NOT AL       ;?????????????????,?????????,?????
			mov dx,ioporta
			out dx,al	;?a???
		POP SI
		POP DX
		POP BX
		POP AX
		RET
GEW ENDP
;******************??*******************
TEN PROC
		PUSH AX
		PUSH BX
		PUSH DX
		PUSH DI
			
			mov bx,offset led	
		
			mov al,11111101B	;????
			mov dx,ioportC
			out dx,al 	;?c? ????
			
			mov al,[bx+di];
			;NOT AL    ;?????????????????,?????????,?????
			mov dx,ioporta
			out dx,al	;?a???
			
		POP DI
		POP DX
		POP BX
		POP AX
		RET
TEN ENDP	
;**************?????*****************
delay proc
		push cx
		mov cx,500h
	del:
		;nop
		nop
		loop del	
		pop cx
		ret
delay endp
;**************?????****************
shuaigan proc
		push ax
		push bx
		push cx
		push dx
		MOV  	BX, OFFSET TABDT
		MOV  	CX, 0008H                          	
	Q2:	
		
		call    gew
			
		MOV	AL,[BX]   
		MOV  	DX, 0602H		; ?B?       
		OUT	DX, AL
		INC	BX
		call 	delay		; ???????+??1000 
		call 	delay
		call 	delay
		call 	delay
		CALL    TEN
		call 	delay
		call 	delay
		call 	delay
		call 	delay
		LOOP 	Q2
		
		pop dx
		pop cx
		pop bx
		pop ax
		ret
shuaigan endp			
				
;***************?????****************
DALLY PROC
;			PUSH DI
			PUSH CX
			MOV  CX, DI
	A3:		PUSH AX
			POP	 AX
			LOOP A3
			POP  CX
;			POP  DI
			RET
			
DALLY	ENDP


FAST1 proc
		MOV  AL, 88H			; ??B??????0,??
		MOV  DX, 0606H              
		OUT  DX, AL
		mov dx,ioportc
		mov al,11111011b

		out dx,al
		mov dx,ioporta
		mov al,06h
		;not al
		out dx,al
		call speed
		ret
		
FAST1 endp

SLOW1 proc
		MOV  AL, 88H			; ??B??????0,??
		MOV  DX, 0606H              
		OUT  DX, AL
		mov dx,ioportc
		mov al,11111011b
		out dx,al
		mov dx,ioporta
		mov al,5bh
		;not al
		out dx,al
		call speed
		ret
			
SLOW1 endp
;*************???????********************      
SPEED PROC
				 
		
MAIN:  
			
		MOV  SI, 0			;SI????????
;***************??*****************	
A1:		
			
		MOV  BX, OFFSET TABDT
	    MOV  CX, 0008H                          	
A2:		MOV	 AL,[BX]   
		MOV  DX, 0602H		; ?B?       
		OUT	 DX, AL
		
		CALL DALLY		; ???????+??  
					       
		INC	 BX                                      
		LOOP A2
			
		CALL READ
			
		INC SI				;SI????????
		CMP SI, 0CH	    	;8????
		JB	A1
			
		;PUSH DI
		;MOV  DI, 0FFFFH
		;CALL DALLY  		;?????,?????
		;POP  DI
 
		;PUSH DI
		;MOV  DI, 0FFFFH
		;CALL DALLY  		;?????,?????
		;POP DI
		
		;PUSH DI
		;MOV  DI, 0FFFFH
		;CALL DALLY  		;?????,?????
		;POP  DI
		
		JMP  A5
A8:		JMP  A1	
		;	CALL DALLY  		;?????,?????(????????)
		;	CALL DALLY  		;?????,?????
;***************??***************			
A5:		
		MOV  BX, OFFSET TABDT+7
	    MOV  CX, 0008H                          	
A4:		
	    MOV  AL,[BX]   
		MOV  DX, 0602H		; ?B?       
		OUT	 DX, AL
		CALL DALLY		; ???????+??                
		DEC  BX                                      
		LOOP A4
			
		CALL READ
			
		DEC SI				;SI????????
		CMP SI, 0			;0???
		JA  A5
						
		;PUSH DI
		;MOV  DI,0FFFFH
		;CALL DALLY  		;?????,?????
		;POP  DI
		
		;PUSH DI
		;MOV  DI,0FFFFH
		;CALL DALLY  		;?????,?????
		;POP  DI
		
		;PUSH DI
		;MOV  DI,0FFFFH
		;CALL DALLY  		;?????,?????
		;POP  DI
		
		;	CALL DALLY  		;?????,?????
		;	CALL DALLY  		;?????,?????
		JZ  A8
		
		RET
SPEED	ENDP	
 
CODE	ENDS
		END START

 连线不变

现象KEY2

电路板

OFDM(正交频分复用)是一种高效的多载波通信技术,它将高速数据流拆分为多个低速子流,并通过多个并行的低带宽子载波传输。这种技术具有高频谱效率、强抗多径衰落能力和灵活的带宽分配优势。 OFDM系统利用大量正交子载波传输数据,子载波间的正交性可有效避免码间干扰(ISI)。其数学表达为多个离散子载波信号的线性组合,调制和解调过程通过FFT(快速傅立叶变换)和IFFT(逆快速傅立叶变换)实现。其关键流程包括:数据符号映射到子载波、IFFT转换为时域信号、添加循环前缀以减少ISI、信道传输、接收端FFT恢复子载波数据和解调原始数据。 Matlab是一种广泛应用于科研、工程和数据分析的高级编程语言和交互式环境。在OFDM系统设计中,首先需掌握Matlab基础,包括编程语法、函数库和工具箱。接着,根据OFDM原理构建系统模型,实现IFFT/FFT变换、循环前缀处理和信道建模等关键算法,并通过改变参数(如信噪比、调制方式)评估系统性能。最后,利用Matlab的绘图功能展示仿真结果,如误码率(BER)曲线等。 无线通信中主要考虑加性高斯白噪声(AWGN),其在频带上均匀分布且统计独立。通过仿真OFDM系统,可在不同信噪比下测量并绘制BER曲线。分析重点包括:不同调制方式(如BPSK、QPSK)对BER的影响、循环前缀长度选择对性能的影响以及信道估计误差对BER的影响。 OFDM技术广泛应用于多个领域,如数字音频广播(DAB)、地面数字电视广播(DVB-T)、无线局域网(WLAN)以及4G/LTE和5G移动通信,是这些通信标准中的核心技术之一。 深入研究基于Matlab的OFDM系统设计与仿真,有助于加深对OFDM技术的理解,并提升解决实际通信问题的能力。仿真得到的关键性能指标(如BER曲线)对评估系统可靠性至关重要。未来可进一步探索复杂信道条件下的OFDM性能及系统优化,以适应不同应用场景
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值