感悟网 导航

微机原理课程设计怎么做? 微机原理课程设计,他都没教过,的东西,让我们做菜单,您能帮个...

作者&投稿:雕宋 (若有异议请与网页底部的电邮联系)
微机原理课程设计心得体会~

通过对这程序的制作,使我对汇编语言的基本知识的使用更加熟练,同时也增加了我对汇编语言的一些认识,在作业完成过程中通过和同学的交流,也增加了合作的技巧。通过查阅以下资料也学到了一些课本上没有的东西,拓宽了自己的知识面,增加了学好汇编语言的信心。

;设计内容要求:
;1、菜单
;内容包括:①输入密码(字符串);②密码校验;③退出。
;2、输入字符串
;选择该项后,可以输入一个字符串。该字符串作为密码校验中的已;知密码。
;3、密码校验
;输入字符串,若所输入的字符串与密码不一致则提示:Password ;error!,并重新提示输入密码,当错误输入三次时;

退出软件返回;DOS。若所输入的字符串与密码一致则提示:Password correct!;,并返回主菜单。
;4、在主菜单中选择退出项,则结束程序返回DOS。


;用MASM5.0编译通过,以下是运行结果
;E:\masm>MENU
;
;1.Set Password 2.Input Password 3.Exit
;Set Password: 12333
;1.Set Password 2.Input Password 3.Exit
;Input Password: 11111
;Password error!
;
;1.Set Password 2.Input Password 3.Exit
;Input Password: 12334
;Password error!
;
;1.Set Password 2.Input Password 3.Exit
;Input Password: 12333
;Password correct!
;
;1.Set Password 2.Input Password 3.Exit
;E:\masm>
;


data segment

s0 db 0dh,0ah,'1.Set Password 2.Input Password 3.Exit $'
s1 db 0dh,0ah,'Set Password: $'
s2 db 0dh,0ah,'Input Password: $'
buff1 db 255,255 dup(0)
buff2 db 255,255 dup(0)
next_h db 0dh,0ah

s3 db 0dh,0ah,'Password error!',0dh,0ah,'$'
s4 db 0dh,0ah,'Password correct!',0dh,0ah,'$'
ERR_N DB 0
data ends
code segment
assume cs:code, ds:data
main proc far
start:
push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax
PUSH DS
POP ES
;-------------------------
menu:
mov ah,09
mov dx ,offset s0
int 21h
again:
mov ah,08
int 21h
cmp al,'1'
je set_p
cmp al,'2'
je in_p
cmp al,'3'
je exit_dos1
jmp again
exit_dos1:
ret
set_p:
mov ah,09
mov dx,offset s1
int 21h
mov ah,0ah
mov dx ,offset buff1
int 21h
MOV AL,0
MOV ERR_N,AL ;错误次数清零
jmp menu

in_p:
mov ah,09
mov dx,offset s2
int 21h
mov ah,0ah
mov dx ,offset buff2
int 21h



mov bx ,offset buff1+1
mov al,[bx]

mov bx ,offset buff2+1
mov ah,[bx]

xor ah,al ;设定的与输入的字符串长度相等吗?
jnz err ;不相等
MOV CH,0
MOV CL,AL
MOV SI,OFFSET BUFF1+2
MOV DI,OFFSET BUFF2+2
CLD
REPE CMPSB
JNZ ERR
MOV AH,09
MOV DX,OFFSET S4
INT 21H
JMP MENU

ERR:

MOV AH,09
MOV DX,OFFSET S3
INT 21H
INC ERR_N
MOV AL,ERR_N
CMP AL,3
JE EXIT_DOS


JMP MENU


;-------------------------
EXIT_DOS:
ret

main endp

code ends
end start

一、设计的目的:
掌握微机原理的基本应用方法。通过实验熟悉微机基本接口芯片的外型、引脚、编程结构,掌握汇编语言程序设计和微机基本接口电路的设计、应用方法,做到理论联系实际。

二、系统的主要功能、作用及主要性能指标
按照时间控制原则,利用并行接口和定时器,采用时间中断方式设计一套十字路口的交通灯管理系统,通行时间(或禁止时间)30秒,准备时间3秒,在准备时间里黄灯闪烁3次,闪烁频率为0.5秒,周而复始。可利用8255、8253、8259等接口电路。

总体设计
1、基本工作原理 设有一个十字路口,1、3为南,北方向,
2、4为东,西方向。 初始化之后, 1、3路口的绿灯亮, 2、4路口的红灯亮, 1、路口方向通车。 延迟一段时间(30秒)后, 1、3路口的绿灯熄灭,而1、3路口的黄灯开始闪烁。闪烁3次(延时3秒)后, 1、3路口的红灯亮, 同时2、4路口的绿灯亮, 2、4路口方向开始通车。 延迟一段时间(30秒)后, 2、4路口的绿灯熄灭,而黄灯开始闪烁。闪烁3次(延时3秒)后,再切换到1、3路口方向。 之后,重复上述过程

2 、硬件总体设计
(1)硬件电路设计
各芯片主要管脚的功能如下: 8255A PC0:和8253的OUT0端相与后得到黄灯信号,其中1表示 2 亮,0表示暗 PC1:表示绿灯信号,其中1表示亮,0表示暗 PC2:表示红灯信号,其中1表示亮,0表示暗 PC3:和8253GATE1端相连,为时器1的门控型号 PC4: 和8253GATE2端相连,为时器2的门控型号 PA0~PA7,PB0~PB7:可接两个8段LED显示器,用于显示当前等亮时间 8253: 定时器0:输入信号设为10KHZ,工作在方式3,输出为1HZ方波,OUT0和PC0相与得到黄灯信号。 定时器1:输入信号为OUT0,工作站方式2,计数初值为30,实现延迟30S后产生中断。控制字为:01010100 定时器2:输入信号为OUT0,工作站方式2,计数初值为3,实现延迟3S后产生中断。控制字为:10010100 8259: 采用边沿触发,没有级联,需要设ICW1,ICW2,ICW4,不用ICW3。

三、设计要求

1、预习要求:
1)预习《STAR ES598PCI实验仪微机原理实验指导书》附录三:
2) 预习《STAR ES598PCI实验仪 微机原理实验指导书》附录二之2.7 B2区;2.9 B4
区;2.15 C5区;2.36 G5区;2.37 G6区。
3)预习《STAR ES598PCI实验仪微机原理实验指导书》之“实验九8255控制交通实验”和“实验十8253方波实验”。
4)预习本任务书,根据设计任务,预先画出电路原理图、程序流程图,编写出实验程序。

2、设计报告要求:
1)画出接口部分电路原理图,并阐述系统工作原理。
2)绘制程序流程图和源程序清单。
3)调试过程和结果。
4)要求用WORD撰写课程设计报告,上交打印版和电子稿。

; 本程序在MASMPlus 1.2集成环境下通过编译,经过调试,运行正确。
Code Segment
Assume CS:Code,DS:Code
; -------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
; 用法: Output Str_Addr
; 用法举例:Output PromptStr
Output MACRO Str_Addr
push ax
lea dx,Str_Addr
mov ah,9
int 21h
pop ax
EndM
; -------------------------------------
; 功能:输出回车换行
Output_CTLF proc Near
push ax
push dx
mov ah,02h
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
pop ax
ret
Output_CTLF endp
; -------------------------------------
; 功能:延时指定的时钟嘀嗒数
; 入口:
; Didas=时钟嘀嗒数(1秒钟约嘀嗒18.2次,10秒钟嘀嗒182次。若延时不是秒的10数次倍,误差稍微大点)
Delay Proc Near
push dx
push cx
push ax
xor ax,ax
int 1ah
mov cs:@@Times,dx
mov cs:@@Times[2],cx
Read_Time: xor ax,ax
int 1ah
sub dx,cs:@@Times
sbb cx,cs:@@Times[2]
cmp dx,Didas
jb Read_Time
pop ax
pop cx
pop dx
ret
@@Times dw 0,0
Delay EndP
; -------------------------------------
; 功能:键盘输入字符串
Input_String Proc Near
Output Prompt_Str ;提示输入字符串
lea dx,Buffer
@@Input_Str: mov ah,0ah
int 21h
mov cl,Buffer[1] ;取字符串长度
cmp cl,2
jb @@Input_Str ;要求输入的字符串最少2个字符,否则,重新输入字符串
xor ch,ch
mov Str_Lenth,cx ;字符串字符数
ret
Input_String EndP
; -------------------------------------
; 功能:字符显示方式下,画一个矩形框
Rectangler Proc Near
mov di,160*17+10*2
mov al,201 ;左上角字符
mov ah,9 ;LightBlue
stosw
mov al,205 ;横线符
mov cx,58
rep stosw
mov al,187 ;右上角字符
stosw
mov di,160*18+10*2
mov al,186 ;竖线符
stosw
mov Screen_Buffer,di ;矩形框左边界显示缓冲区地址
mov cx,58
mov al,20h ;空格符
rep stosw
mov Screen_Buffer[2],di ;矩形框右边界显示缓冲区地址
mov al,186 ;竖线符
stosw
mov di,160*19+10*2
mov al,200 ;左下角字符
stosw
mov al,205 ;横线符
mov cx,58
rep stosw
mov al,188 ;右下角字符
stosw
ret
Rectangler EndP
; -------------------------------------
Disp_Str Proc Near
push di
@@Disp_Str: lodsb
stosw
loop @@Disp_Str
pop di
ret
Disp_Str EndP
; -------------------------------------
; 所显示字符串在一矩形框内从无到有,从右至左移动,完全从框内移出后,又从
; 右至左移动,直到有任意键按下,停止字符串动画显示返回到主菜单。
Dynamic_Disp Proc Near
call Rectangler ;画矩形框
mov bx,Str_Lenth ;字符串长度
mov Buffer[bx][2],20h
@@Moving_0: mov di,Screen_Buffer[2]
dec di
dec di
mov cx,Str_Lenth ;字符串长度
mov bx,cx
inc bx
@@Moving_1: lea si,Buffer[2]
mov ah,14 ;字符显示属性:黄色字符
push cx
mov dx,cx
mov cx,bx
sub cx,dx
call Disp_Str ;写字符串到显示缓冲区
dec di
dec di
pop cx
call Delay ;延时
mov ah,1
int 16h
jz $+3
ret
loop @@Moving_1
mov cx,Str_Lenth ;字符串长度
inc cx
mov bx,cx
@@Moving_2: lea si,Buffer[2]
mov ah,14 ;字符显示属性:黄色字符
mov cx,bx
call Disp_Str ;写字符串到显示缓冲区
call Delay ;延时
mov ah,1
int 16h
jz $+3
ret
dec di
dec di
cmp di,Screen_Buffer
jae @@Moving_2
inc di
inc di
lea si,Buffer[3]
mov cx,Str_Lenth ;字符串长度
@@Moving_3: push cx
push si
mov ah,14 ;字符显示属性:黄色字符
call Disp_Str ;写字符串到显示缓冲区
pop si
inc si
pop cx
call Delay ;延时
mov ah,1
int 16h
jz $+3
ret
loop @@Moving_3
jmp @@Moving_0
ret
Dynamic_Disp EndP
; -------------------------------------
Didas equ 1 ;延时1个嘀嗒时间
Prompt_Menu db 4 dup(10)
db 35 dup(20h),'Main Menu',13,10
db 30 dup(20h),201,17 dup(205),187,13,10
db 30 dup(20h),186,' Input a String ',186,13,10
db 30 dup(20h),186,' Dynamic Display ',186,13,10
db 30 dup(20h),186,' Return to DOS ',186,13,10
db 30 dup(20h),200,17 dup(205),188,13,10
db 32 dup(20h),'Choice(I,D,R):$'
Cursor_Tmp dw ?
Str_Lenth dw ? ;字符串字符数
Screen_Buffer dw 2 dup(?) ;显示缓冲区左右边界地址
Prompt_Str db 13,10,10,'Please input a string:$'
Press_Key db 7,13,12 dup(10),'The complated. Press any key to exit...$'
Start: push cs
pop ds ;使数据段与代码段同段
push cs
pop es ;使附加段与代码段同段
mov ax,3 ;设置25*80字符显示方式
int 10h
Output Prompt_Menu ;显示主菜单
xor bx,bx
mov ah,3
int 10h
mov Cursor_Tmp,dx
mov ax,0b800h
mov es,ax ;设置字符显示方式缓冲区段地址
mov di,160*4+35*2+1
mov al,13 ;LightMagenta
mov cx,10
cld
Attribute: stosb
inc di
loop Attribute
mov di,160*6+32*2+1
stosb
add di,159
stosb
add di,159
stosb
mov di,160*10+39*2+1
stosb
add di,3
stosb
add di,3
stosb
Choice_Func: mov dx,Cursor_Tmp
xor bx,bx
mov ah,2
int 10h
mov ah,1
int 21h
and al,0dfh
cmp al,'R'
jz Exit_Proc
cmp al,'I'
jnz $+7
call Input_String
jmp Choice_Func
cmp al,'D'
jnz Choice_Func
call Dynamic_Disp
jmp Choice_Func
; -------------------------------------
Exit_Proc: Output Press_Key ;提示操作完成,按任意键结束程序
mov ah,1
int 21h
mov ah,4ch ;结束程序
int 21h
Buffer db 25 ;输入字符串缓冲区
Code ENDS
END Start ;编译到此结束

给你大概写写吧,毕竟学习的事情还是要自己搞定的。
完成软件的关键技术“1,使用了dos的0AH号功能(字符串输入)、2号功能(字符显示)等,如果想显示彩色字符,也可以在此基础上加以调整,包括调用BIOS中断;2,利用子程序反复调用,减少代码量,增加程序可读性;3,矩形框采用ASCII字符绘制,提高程序效率,当然同样可以再次基础上加以调整,调用BIOS中断在绘图模式下绘制”。
程序设计流程图仅表示大概意思
清屏幕→屏幕初始化→绘制矩形框→动画显示提示语等→初始菜单待输入字符串或者退出命令→绘制矩形框→以多个字符动画显示字符串→等待输入→根据输入返回到初始菜单

很麻烦,手头没有protel,画不了图,简单跟你说下思路,上了课也应该多少明白点的……

使用74161异步4位计数器做个8位的计数器,然后输入时钟CLK,DA0832使用直通模式,接在8位计数器上,随着计数输出电压会逐渐升高,如果是锯齿波就计数多少然后清零就可以了,有了锯齿波,正弦波和方波均可以用运放使用模拟的方法实现

题目: 字符串动画显示
设计内容要求:
1、菜单
内容包括:①输入字符串;②字符串动画显示;③退出。
2、输入字符串
选择该项后,可以输入一个字符串。该字符串即为动画显示时所显示的字符串。
3、字符串动画显示
所显示字符串在一矩形框内从无到有,从右至左移动,完全从框内移出后,又从右至左移动,直到有任意键按下,停止字符串动画显示返回到主菜单。
4、在主菜单中选择退出项,则结束程序返回DOS。
内容要求:以下几项必不可少:
1、完成软件的关键技术(如:使用了什么DOS功能)
2、程序设计流程图,如有必要可有多个,可包括主程序流程图,关键部分程序流

《微机原理课程设计 编写程序,不差分,解决后还会加分,谢谢帮忙》
答:以上是我按题目要求编写的源程序,编译链接后生成EXE文件运行结果如截图所示.若提问者采纳,我再提供有详细注释的汇编程序。

《汇编语言高手:微机原理课程设计---显示日期或时间》
答:; 题目名称:显示系统日期和时间 ; 题目来源:http://zhidao.baidu.com/question/130808124.html ; 程序特点:本程序未使用常规的BIOS中断调用和DOS功能调用的方法接收按键,而是直接判断键盘缓冲区的方法接收按键,; 避免了在接收按键期间日期或时间停止显示(不更新)的重要弊端,尤其是时间秒的更新,...

《微机原理实验与课程设计指导书内容提要》
答:本书作为“十一五”普通高等教育规划教材,专为配合《微机原理及应用》课程的学习而编撰,旨在提供实验与课程设计的全面指导。以LAB6000改进型伟福微机实验系统作为核心设备,书中详尽涵盖了课程所需的各类实验项目。实验内容紧密结合理论教学进度,特别在接口和应用领域进行了适当的扩展,确保实验内容的实用性...

《微机原理课程设计 在显示屏中央开一个窗口显示自己的名字(英文) 帮帮忙...》
答:建一个数据段 存入你英文名对应点的 ascii码以 $结尾 然后 用那 10号调用指令(显示一段的那个指令 以21h结尾的那个 好像是这样 记不太清了)

《微机原理课程设计代码?》
答:CODE SEGMENT ASSUME CS:CODE START: PUSH CS POP DS MOV CX,8 PUSH CX 0:MOV AL,0 MOV CX,10 1:PUSH AX MOV AX,18 CALL DELAY_PROC POP AX MOV DL,AL MOV AH,2 OR DL,30H INT 21H INC AL LOOP @1 POP CX LOOP @...

《微机原理课程设计 计算字符长度》
答:如下即可:DATAS SEGMENT MSG1 DB 'Input the string : ', 13, 10, '$'MSG2 DB 13, 10, 'The string lenth is : $'STR DB 100, ?, 100 DUP(?)DATAS ENDS CODES SEGMENT ASSUME CS:CODES, DS:DATAS START:MOV AX, DATAS MOV DS, AX ;--- LE...

《微机原理及接口技术实验指导书章节目录》
答:实验三:电子钟(CLOCK)第4部分,课程设计项目包括:设计题目一:带时间显示的十字路口交通信号模拟装置设计 设计题目二:交通信号灯模拟控制系统的设计二 设计题目三:全自动洗衣机微机控制器设计 设计题目四:电子钟程序设计 最后,附录部分提供:附录A:汇编语言上机实验基础 附录B:星研实验仪介绍 ...

《微机原理题,求大神解答》
答:你要是能给“文库”的分,我就帮你解决这个问题。解决方案2:这个网上有很多啊 你可以到网上看看 微机原理大神 帮忙做一下这道题 答:我会做,但是得花时间,我可以给你参考。我们课程设计就做这个。有菜单选择,选后有动画,有电子时钟,当然你要的排序和查找也不难,更容易。我回 ...

《关于课程设计心得5篇集锦》
答:"微机原理与系统设计"作为电子信息类本科生教学的主要基础课之一,课程紧密结合电子信息类的专业特点,围绕微型计算机原理和应用主题,以Intelx86CPU为主线,系统介绍微型计算机的基本知识,基本组成,体系结构和工作模式,从而使学生能较清楚地了解微机的结构与工作流程,建立起系统的概念。 这次微机原理课程设计历时两个星期,在...

《微机原理汇编语言课程设计 中的LED 灯显示控制代码怎么写?》
答:data segment io8255a equ 288H io8255b equ 289H io8255c equ 28AH io8255t equ 28BH data ends7 code segment assume cs:code,ds:data start:mov ax,data mov ds,ax mov dx,io8255t ;控制端口 mov al,81H ;设置8255为A口输出 out dx,al mov dx,io8255a mov al,00H ;设置8...

   

返回顶部
本页内容来自于网友发表,若有相关事宜请照下面的电邮联系
感悟网