跪求微型计算机技术及应用(接口)课程设计 谁来帮帮我啊....微型计算机接口技术课程设计

作者&投稿:倚蓓 (若有异议请与网页底部的电邮联系)

1、设置数据段,以及端口地址分配

   data segment

        pb db ?

        porta equ 218h

        portb equ 219h

        portc equ 21Ah

        ptcon equ 21Bh

        mess db 'ENTER ANY KEY CAN EXIT TO DOS!',0dh,0ah,'$'

data ends

2、设置堆栈段和代码段

stack segment stack

        sta dw 50 dup(?)

        top equ length sta

   stack ends

 code segment

       assume cs:code,ds:data,es:data,ss:stack

3、主程序

start:       mov ax,data

                mov ds,ax

                mov es,ax

                mov ah,09h          ;显示

                mov dx,offset mess

                int 21h

                mov dx,ptcon         ;输入控制字

                mov al,80h      ;工作在方式0

                out dx,al ;A、B、C口都为输出

初始化设置

mov dx,portb          ;控制4个黄灯灭

mov al,0f0h

out dx,al

mov dx,portc         ;控制4个绿灯灭

mov al,0f0h           ;4个红灯亮

out dx,al

   call delay5            ;延时

mov pb,10100101b     ;控制交通灯灯正常运行的控制字

 lll:      mov al,pb

            mov dx,portc          ;控制红绿灯

            out dx,al

            call delay10

            or al,0f0h             ;红灯亮灭不变

            out dx,al   ;绿灯全灭

            mov cx,0004h       ;黄灯闪烁次数

 ttt:      mov ah,06h          

            mov dl,0ffh

             int 21h

             jnz ppp               ;判断是否有键按下

           mov dx,portb       ;绿灯亮的相应位置黄灯亮

            mov al,pb

            out dx,al

            call delay5

            or  al,0f0h       ;绿灯灭,红灯亮灭不变

             out dx,al

             call delay5

             loop ttt   ;黄灯闪烁4次

             not pb           ;pb取反,红绿灯亮灭互换

              mov ah,06h

              mov dl,0ffh

               int 21h

               jnz ppp           ;判断是否有键按下

               jmp lll      ;继续控制红绿灯

ppp:    mov ax,4c00h     ;退出,回到DOS

            int 21h

      4、延时程序

       delay1  proc near       ;延时子程序

                push cx

                mov cx,0ffffh

      ccc:    loop ccc

                 pop cx

                 ret

    delay1  endp

delay5    proc near      ;延时程序

                push ax

                push cx

                mov cx,0060h

     uuu:    call delay1 ;调用延时子程序

                loop uuu

                pop cx

                pop ax

                ret

delay5  endp               返回



你是要交通灯还是要电子时钟还是要计算器啊?随便挑,我这都有。
格式都对,而且名字都给你写好!

基于单片机简易计算器
一、设计要求
1.设计4*4的键盘,其中10个数字键0~9,其余6个为“+” “-” “*”“/” “=”和“C”
2.设计2位LED接口电路
3.实现1位数的简单运算
二、硬件系统设计
1、LED接口电路
简易计算器需要2位8段码LED显示电路。用8031单片机经8255A扩展2位8段码LED显示器,用8255A的A口作为段码(字形代码)数据口,PB0和PB1作为位控制端口。在位控制口加集电极开路的反相高压驱动器74LS06以提供驱动LED显示器所需的足够大的电流,然后接至各数码显示器的共阴极端。同理,在段码数据口集电极开路的正相高压驱动器74LS07提供足够大的电流,然后接到数码显示器的各段。逻辑电路结构如下:

2、键盘接口电路
简易计算器需要4*4的行列式键盘。用8031单片机经8255A扩展4*4行列式键盘,8255A的B口和C口用于扩展键盘接口,B口高4位作为输出口,C口低4位作为输入口。逻辑电路结构如下:

3、计算器逻辑电路图
将LED接口电路和键盘接口电路结合到一起就是简易计算器的逻辑电路图,如下:
三、软件设计
1、LED显示程序设计
LED显示器由七段发光二极管组成,排列成8字形状,因此也成为七段LED显示器,器排列形状如下图所示:

为了显示数字或符号,要为LED显示器提供代码,即字形代码。七段发光二极管,再加上一个小数点位,共计8段,因此提供的字形代码的长度正好是一个字节。简易计算器用到的数字0~9的共阴极字形代码如下表:
0~9七段数码管共阴级字形代码
显示字型 g f e d c b a 段码
0 0 1 1 1 1 1 1 3fh
1 0 0 0 0 1 1 0 06h
2 1 0 1 1 0 1 1 5bh
3 1 0 0 1 1 1 1 4fh
4 1 1 0 0 1 1 0 66h
5 1 1 0 1 1 0 1 6dh
6 1 1 1 1 1 0 1 7dh
7 0 0 0 0 1 1 1 07h
8 1 1 1 1 1 1 1 7fh
9 1 1 0 1 1 1 1 6fh
2位LED显示的程序框图如下:

2、读键输入程序设计
为了实现键盘的数据输入功能和命令处理功能,每个键都有其处理子程序,为此每个键都对应一个码——键码。为了得到被按键的键码,现使用行扫描法识别按键。其程序框图如下:
3、主程序设计
(1)数值送显示缓冲程序设计
简易计算器所显示的数值最大位两位。要显示数值,先判断数值正负,如果是负值,则符号位显示“-”,然后将数值除以10,余数送显最最低位,判断商是否为0,若为0则返回,若不为0,则将商除以10,将余数送显高位。程序框图如下:

(2)运算主程序设计
首先初始化参数,送LED低位显示“0”,高位不显示。然后扫描键盘看是否有键输入,若有,读取键码。判断键码是数字键、清零键还是功能键(“+”“-”“*”“/”“=” ),是数值键则送LED显示并保存数值,是清零键则做清零处理,是功能键则又判断是“=”还是运算键,若是“=”则计算最后结果并送LED显示,若是运算键则保存相对运算程序的首地址。运算主程序框图如下所示:

4、简易计算器源程序
OUTBIT equ 07FFDh ; 位控制口
OUTSEG equ 07FFCh ; 段控制口
IN equ 07FFEh ; 键盘读入口
data1 equ 70h
data2 equ 71h
dizhi1 equ 72h
dizhi2 equ 73h

LEDBuf equ 60h ; 显示缓冲

ljmp Start

LEDMAP: ; 八段管显示码
db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h
db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h

Delay: ; 延时子程序
mov r7, #0
DelayLoop:
djnz r7, DelayLoop
djnz r6, DelayLoop
ret

DisplayLED:
mov r0, #LEDBuf
mov r1, #2 ; 共2个八段管
mov r2, #00000010b ; 从左边开始显示
Loop:
mov dptr, #OUTBIT
mov a, #0
movx @dptr, a ; 关所有八段管

mov a, @r0
mov dptr, #OUTSEG
movx @dptr, a

mov dptr, #OUTBIT
mov a, r2
movx @dptr, a ; 显示一位八段管

mov r6, #1
call Delay

mov a, r2 ; 显示下一位
rr a
mov r2, a

inc r0

djnz r1, Loop

ret

TestKey:
mov dptr, #OUTBIT
mov a, #0
movx @dptr, a ; 输出线置为0
mov dptr, #IN
movx a, @dptr ; 读入键状态
cpl a
anl a, #0fh ; 高四位不用

ret

KeyTable: ; 键码定义

db 0dh, 0ch, 0bh, 0ah
db 0eh, 03h, 06h, 09h
db 0fh, 02h, 05h, 08h
db 00h, 01h, 04h, 07h

GetKey:
mov dptr, #OUTBIT
mov P2, dph
mov r0, #Low(IN)
mov r1, #00100000b
mov r2, #4
KLoop:
mov a, r1 ; 找出键所在列
cpl a
movx @dptr, a
cpl a
rr a
mov r1, a ; 下一列

movx a, @r0
cpl a
anl a, #0fh
jnz Goon1 ; 该列有键入

djnz r2, KLoop

mov r2, #0ffh ; 没有键按下, 返回 0ffh
sjmp Exit
Goon1:
mov r1, a ; 键值 = 列 X 4 + 行

mov a, r2
dec a
rl a
rl a
mov r2, a ; r2 = (r2-1)*4

mov a, r1 ; r1中为读入的行值
mov r1, #4
LoopC:
rrc a ; 移位找出所在行
jc Exit
inc r2 ; r2 = r2+ 行值
djnz r1, LoopC
Exit:
mov a, r2 ; 取出键码
mov dptr, #KeyTable
movc a, @a+dptr
mov r2, a

WaitRelease:
mov dptr, #OUTBIT ; 等键释放
clr a
movx @dptr, a

mov r6, #10
call Delay
call TestKey
jnz WaitRelease

mov a, r2
ret

Start:
mov sp, #40h
mov LEDBuf+0, #0
mov LEDBuf+1, #03fh
mov dptr, #7FFFh
mov a, #89h
movx @dptr, a

MLoop:
call DisplayLED ; 显示
call TestKey ; 有键入?
jz MLoop ; 无键入, 继续显示
call GetKey ; 读入键码

Jisuan:
mov r3, a
cjne r3, #0fh, Qita ;判断是否为清零键?
mov r3, #00h ;清零
mov r4, #00h
mov r5, #00h
mov data1, #00h
mov data2, #00h
mov dizhi1, #00h
mov dizhi2, #00h
mov LEDBuf+0, #0
mov LEDBuf+1, #03fh
ljmp MLoop

Qita: clr c
cjne r3, #0ah ,follow ;判断是数字键还是功能键?
follow:
jc Shuzi
ljmp Gn

Shuzi: mov a, r4 ;判断是否已有运算符输入,没有就将数值存在
jnz Shuzi2 data1,有就将数值存在data2
mov a, r3
mov data1, a
ljmp Xs ;显示第一次输入的数值
Shuzi2:
mov a, r3
mov data2, a
ljmp Xs ;显示第二次输入的数值

Gn: mov r4, #01h ;将01h给r4,说明已有运算符输入
cjne r3, #0eh, Ja ;判断键值是否为“=”?
mov r4, #00h ;将r4清零
mov a, dizhi1 ;执行“=”
mov dph, a
mov a, dizhi2
mov dpl, a
mov a, #00h
jmp @a+dptr ;转到本次输入的算法程序

Ja: cjne r3, #0ah, Jn ;若键值为“+”则将“+”的程序首地址存在
mov dptr, #Jia dizhi1和dizhi2中
mov a, dph
mov dizhi1, a
mov a, dpl
mov dizhi2, a
ljmp MLoop

Jn: cjne r3, #0bh, Ce ;若键值为“-”则将“-”的程序首地址存
mov dptr, #Jian dizhi1和dizhi2中
mov a, dph
mov dizhi1, a
mov a, dpl
mov dizhi2, a
ljmp MLoop

Ce: cjne r3, #0ch, Cu ;若键值为“*”则将“*”的程序首地址存在
mov dptr, #Cheng dizhi1和dizhi2中
mov a, dph
mov dizhi1, a
mov a, dpl
mov dizhi2, a
ljmp MLoop

Cu: cjne r3, #0dh, Zhuan ;若键值为“/”则将“/”的程序首地址存在
mov dptr, #chu dizhi1和dizhi2中
mov a, dph
mov dizhi1, a
mov a, dpl
mov dizhi2, a
Zhuan: ljmp MLoop

Jia: mov a, data1 ;加法程序
add a, data2
ljmp Xs

Jian: mov a, data1 ;减法程序
subb a, data2
ljmp Xs

Cheng: mov a, data1 ;乘法程序
mov b, data2
mul ab
ljmp Xs

Chu: mov a, data1 ;除法程序
mov b, data2
div ab

Xs: mov b, #10 ;显示个位数字
div ab
mov r5, a
mov a, b
mov dptr,#LEDMap
movc a, @a+dptr
mov LEDBuf+1,a
mov a, r5
First:
cjne a,#0,Next
ljmp MLoop ;运算完后继续扫描键盘

Next:
mov b,#10 ;显示十位数字
div ab
mov r5, a
mov a, b
mov dptr, #LEDMap
movc a, @a+dptr
mov LEDBuf+0, a
mov a, r5
ljmp First

end

四、系统调试与存在的问题
1.在打开一个程序要进行编译运行时,要在项目中打开它,而不是单单以一个文件的形式打开。
2.打开WAVE6000后,需要对仿真器进行设置,然后才能用其对所编程序进行编译并执行。
3.试验箱上提供的6位的LED显示器和4*6的键盘,而简易计算器只用两位LED显示器和4*4键盘,所以必须用软件方法把前4位LED和键盘后2列屏蔽掉。
4. 十位上的LED显示管有数字时才显示,没有数字时不显示,而不是显示“0”,做清零操作后LED显示器个位显示“0”,而全部关闭不显示。

五、心得体会
课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为电子信息工程专业的学生来说掌握单片机的开发技术是十分重要的。
我的题目是简易计算器,对于我们这些实践中的新手来说,这是一次考验。怎么才能找到课堂所学与实际应用的最佳结合点?怎样让自己的业余更接近专业?怎样让自己的计划更具有序性,而不会忙无一用?这都是我们所要考虑和努力的。这次课程设计我学到很多很多的东西,学会了怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识,掌握了一种系统的研究方法,可以进行一些简单的编程。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,对单片机汇编语言掌握得不够好。
这次课程设计通过我们小组的努力终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于迎刃而解,在此我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!

去北京邮电大学的图书看看,里面很多你需要的资料!

还是找上届的同学吧。。他们做过的。。

跪求微型计算机原理与接口技术课程设计 电子密码锁 邮箱986493732@qq.com~

楼主能不能帮我发一下这个课程设计

MINUTE EQU 41H ;存放分信息的单元
SECOND EQU 42H ;存放秒信息的单元
NUM EQU 43H ;存放T0溢出次数的单元
ORG 0000H ;程序入口
AJMP MAIN
ORG 0030H ;主程序入口
MAIN:MOV SP,#60H ;指定堆栈栈底
MOV HOUR,#00H
MOV MINUTE,#00H
MOV SECOND,#00H ;将时、分、秒分别清零
MOV NUM,#0
MOV TMOD,#01H ;设T0工作于方式1,用于定时
MOV TH0,#4CH ;设置T0的初始值
MOV TL0,#00H
MOV IE,#00H ;关中断
SETB TR0 ;开启定时器T0
LOOP:NOP
NOP
ACALL DISPLAY ;调用显示子程序
NOP
NOP
LOOP1:JB TF0,TIME ;等待定时溢出
LJMP LOOP1
TIME:CLR TR0 ;关闭定逼?
PUSH DPL ;保护现场
PUSH DPH
PUSH ACC
MOV TH0,#4CH ;重新设置T0的值
MOV TL0,#00H
SETB TR0 ;开启T0
MOV A,NUM
INC A ;溢出次数+1
MOV NUM,A
CJNE A,#0AH,TT1 ;检测键盘
MOV P1,#0FH ;设键盘初值
MOV R0,#04H ;延时消抖
LCALL DELAY
JNB P1.0,T0C1 ;为0表示P1.0按下,转T0C1调整秒
JNB P1.1,T0C2 ;为0表示P1.1按下,转T0C2调整分
JNB P1.2,T0C3 ;为0表示P1.2按下,转T0C3调整时
TT1: CJNE A,#140,RR4
MOV NUM,#00H
T0C1:MOV A,SECOND
INC A ;秒单元内容加1
DA A ;调整为BCD码
MOV SECOND,A
CJNE A,#60H,RR4 ;不为60秒继续等待
setb flag:
clr flag
RR1: MOV SECOND,#00H ;为60秒将秒单元清零
T0C2:MOV A,MINUTE
INC A ;分单元内容加1
DA A ;调整为BCD码
MOV MINUTE,A
CJNE A,#60H,RR4 ;不为60分继续等待
RR2: MOV MINUTE,#00H ;为60分,分单元清零
T0C3:MOV P1,#0F0H ; 1小时闪一次
LCALL DELAY ;延时
MOV P1,#0FH
MOV A,HOUR
INC A ;时单元内容加1
DA A ;调整为BCD码
MOV HOUR,A
CJNE A,#24H,RR4 ;不为24小时继续等待
RR3: MOV HOUR,#00H ;为24小时,时单元清零
RR4: POP ACC ;恢复现场
POP DPH
POP DPL
LJMP LOOP
DELAY:MOV R1,#10H ;延时子程序
DELAY1:MOV R2,#20H
DJNZ R2,$
DJNZ R1,DELAY1
DJNZ R0,DELAY
RET
DISPLAY:MOV DPTR,#TAB ;送表头基地址
MOV A,HOUR
ANL A,#0FH ;屏蔽时高位
MOVC A,@A+DPTR ;查时高位
MOV P0,A
CLR P2.6 ;开显示
MOV R0,#1 ;延时消除鬼影
LCALL DELAY
SETB P2.6 ;关显示
MOV A,HOUR
ANL A,#0F0H
SWAP A
MOVC A,@A+DPTR
MOV P0,A
CLR P2.7
MOV R0,#1
LCALL DELAY
SETB P2.7
MOV A,MINUTE
ANL A,#0FH
MOVC A,@A+DPTR
MOV P0,A
CLR P2.4
MOV R0,#1
LCALL DELAY
SETB P2.4
MOV A,MINUTE
ANL A,#0F0H
SWAP A
MOVC A,@A+DPTR
MOV P0,A
CLR P2.5
MOV R0,#1
LCALL DELAY
SETB P2.5
MOV A,SECOND
ANL A,#0FH
MOVC A,@A+DPTR
MOV P0,A
CLR P2.2
MOV R0,#1
LCALL DELAY
SETB P2.2
MOV A,SECOND
ANL A,#0F0H
SWAP A
MOVC A,@A+DPTR
MOV P0,A
CLR P2.3
MOV R0,#1
LCALL DELAY
SETB P2.3
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
setb flag: clr flag

啊啦啊啦.老大.继续时钟.

自考微型计算机及接口技术?
答:微型计算机的组成部件2、微型计算机的外部设备三、微型计算机的特性1、微型计算机的优点2、微型计算机的缺点四、微型计算机的应用1、微型计算机在自动控制系统中的应用2、微型计算机在计算机网络中的应用五、微型计算机接口技术1、接口技术的分类2、接口设备的特性3、接口设备的应用4、接口编程方法六、结论本文...

跪求微型计算机技术及应用(接口)课程设计
答:1、设置数据段,以及端口地址分配 data segment pb db ?porta equ 218h portb equ 219h portc equ 21Ah ptcon equ 21Bh mess db 'ENTER ANY KEY CAN EXIT TO DOS!',0dh,0ah,'$'data ends 2、设置堆栈段和代码段 stack segment stack sta dw 50 dup(?)top equ length sta stack ends...

微机原理什么是接口?接口的功能有哪些
答:微机I/O接口是CPU与外设直接进行数据传输的桥梁。功能:1、信号的形式变换 。2、电平的转换和放大。3、锁存及缓冲。4、I/O定向。5、并行及串行的I/O转换。微型计算机系统从全局到局部存在三个层次:微型计算机系统、微型计算机、微处理器(CPU)。单纯的微处理器和单纯的微型计算机都不能独立工作,只...

自考02205微型计算机原理与接口技术?
答:介绍自考02205微型计算机原理与接口技术自考02205微型计算机原理与接口技术是自考计算机专业课程,是一门学习微型计算机原理、接口技术和微处理器技术的基础课程。该课程的主要学习内容有:微型计算机的结构,微处理器,微机系统,I/O技术,存储器,微机接口技术,编程技术等。课程框架自考02205微型计算机原理与接口...

单片微型计算机原理与接口技术
答:全书由原理及接口两部分组成,共10章。介绍51单片微型计算机硬件结构、汇编语言程序设计方法、输入/输出接口应用、可编程定时/计数器设计、串行接H应用、单片机系统扩展、可编程接口芯片、单片机人机接口技术和模数技术,以达到学习了解微机原理的目的。为了配合教学在附录部分添加了实验指导,以加深学习者对相关概念的理解。

微型计算机原理及接口技术的详细目录
答:运行程序——微型计算机的工作原理六、控制矩阵习题第二章 8086微处理器第一节 8086微处理器的内部结构一、执行部件(EU)二、总线接口部件(BIU)的组成和工作特点三、存储器的分段和物理地址的形成四、8086内存的组织和CPU对存储器的访问第二节 8086微处理器(CPU)的引脚功能一、地址线、数据线和状态线...

微机原理与接口技术
答:“微机原理与接口技术”是电子信息类专业的核心课程。“微机原理与接口技术”课程包括X86微机系统原理、汇编以及通过接口芯片原理与应用。理解微型计算机硬件系统的基本组成和工作原理,具备输入/输出接口控制系统软硬件初步开发设计能力。以微型计算机的关键技术(如微处理器、cache、存储管理、中断、DMA和系统...

微机原理与接口技术
答:微机原理与接口技术,是掌握微型计算机的硬件组成及使用;学会运用指令系统和汇编语言进行程序设计;熟悉各种类型的接口及其应用,树立起微型计算机体系结构的基本概念。在微机中,最基础的语言是汇编语言。汇编语言是一个最基础最古老的计算机语言。语言总是越基础越重要,在重大的编程项目中应用最广泛。汇编是...

微机原理与接口技术
答:您好,微机原理与接口技术包含:1)微机原理是搞电子工程,计算机等学科的基础的基础;2)单片机,DSP等芯片都需要编程,都需要对其各种内置寄存器的操作方式进行熟悉,才能具有微型机应用系统分析能国力和初步设计能力,对计算机或仪表仪器开发的人有用,对非专业的工作也很有用。在信息时代,要想能理解信息...

微型计算机原理与接口技术的编程题都有哪些?
答:本书是与《微型计算机原理与接口技术》配套的教学参考书。全书内容分为两部分。第一部分是针对主教材各章的大纲要求、重点内容与考核要求、习题分析与解答,主要内容包括Intel 80X86/Pentium系列CPU的微处理器、寻址方式和指令系统、汇编语言程序设计、半导体存储器、中断处理技术、输入输出接口、定时计数技术、并行/串行...