单片机实践报告

黑龙江科技学院

单片机综合设计性实验

实验项目名称 生产车间流水线自动控制模拟

所属课程名称           单片机              

实 验 日 期        2010.9.18~22       

班    级         电气08-6班       

姓    名           于安洲          

学    号            32号           

成    绩                           


 

第二篇:单片机实践报告 MC51

北 华 航 天 工 业 学 院

课程设计报告

实 践 地 点: 专 业 班 级: 姓 名: 学 号: 指 导 教 师: 完 成 时 间: 年日 实践课程名称:

北华航天工业学院电子工程系

课程设计任务书

单片机实践报告MC51

指导教师:李叶紫 教研室主任:李叶紫

20xx年 4 月22日

- 1 -

课程设计报告

一、功能分析

1

单片机实践报告MC51

二、硬件设计

1. 硬件电路图

单片机实践报告MC51

2

2. 元器件清单

伟福Lab6000综合实验/仿真系统一台套;微机一台;导线若干

三、程序设计

1.程序:

OUTBIT equ 08002h ; 位控制口 OUTSEG equ 08004h ; 段控制口 IN equ 08001h ; 键盘读入口 LEDBuf equ 60h ; 显示缓冲 Hour equ 40h

Minute equ 41h

- 2 -

Second equ 42h

C100us equ 43h

Speaker equ P1.2

Tick equ 200

T100us equ 256-50

ljmp Start

org 000bh

ljmp T0Int

T0Int:

push PSW

push ACC

mov a, C100us+1 jnz Goon0

dec C100us

Goon0:

dec C100us+1

mov a, C100us

orl a, C100us+1 jnz Exit

mov C100us, #high(Tick) mov C100us+1, #low(Tick) inc Second

mov a, Second

cjne a, #60, Exit

mov Second, #0 inc Minute

call lightup

mov a, Minute

cjne a, #60, Exit

mov Minute, #0 inc Hour

mov a, Hour

cjne a, #24, Exit

mov Hour, #0

Exit:

pop ACC

pop PSW

reti

Delay:

mov r7, #0

DelayLoop:

djnz r7, DelayLoop

- 3 -

djnz r6, DelayLoop

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 16h, 15h, 14h, 0ffh

db 13h, 12h, 11h, 10h

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, #6

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 Exit3

Goon1:

mov r1, a ; 键值 = 列 X 4 + 行 mov a, r2

dec a

rl a

rl a

- 4 -

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

mov a, r1 ; r1中为读入的行值 mov r1, #4

LoopC:

rrc a ; 移位找出所在行 jc Exit3

inc r2 ; r2 = r2+ 行值 djnz r1, LoopC

Exit3:

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

LEDMAP: ; 八段管显示码

db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h DisplayLED:

mov r0, #LEDBuf

mov r1, #6 ; 共6个八段管 mov r2, #00100000b ; 从左边开始显示 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

- 5 -

mov r2, a

inc r0

djnz r1, Loop

ret

LIGHTUP:

jb p1.3,lightstop

setb Speaker

mov b,#0ffh

LIGHTDELAY:

nop

nop

djnz b,lightdelay

clr speaker

LIGHTSTOP:

ret

ToLED:

mov dptr, #LEDMap movc a, @a+dptr ret

START:

mov LEDBuf+0, #07ch

mov LEDBuf+1, #03fh mov LEDBuf+2, #07fh mov LEDBuf+3, #05bh mov LEDBuf+4, #05bH mov LEDBuf+5, #05bH call displayled

call testkey

jz start

call getkey

cjne a,#0ah,start

START1:

mov TMOD, #02h mov TH0, #T100us mov TL0, #T100us mov IE, #10000010b mov Hour, #0

mov Minute, #0 mov Second, #0

mov C100us, #high(Tick) mov C100us+1, #low(Tick) setb TR0

MAIN:

JB P1.0,stop

- 6 - ; 模式2, 定时器

JB P1.1,clear Call testkey call getkey mov b,a

xrl a,#0bh jz stop0 mov a,b

cjne a,#0ch,main2 ljmp clear0 MAIN2:

mov a, Hour

mov b, #10 div ab call ToLED mov LEDBuf, a mov a, b

call ToLED orl a, #80h

mov LEDBuf+1, a mov a, Minute mov b, #10 div ab call ToLED

mov LEDBuf+2, a mov a, b call ToLED orl a, #80h

mov LEDBuf+3, a mov a, Second mov b, #10 div ab

call ToLED

mov LEDBuf+4, a mov a, b call ToLED

mov LEDBuf+5, a call DisplayLED ljmp MAIN STOP:

mov ie,#00000000b call displayled jb p1.0,stop

mov ie,#10000010b jnb p1.0,main2

- 7 -

STOP0:

mov ie,#00000000b

call displayled

call testkey call getkey mov b,a

xrl a,#0ch

jz clear0

mov a,b

cjne a,#0bh,stop0 mov ie,#10000010b jmp main2

CLEAR:

mov LEDBuf+0, #03fh mov LEDBuf+1, #03fh mov LEDBuf+2, #03fh mov LEDBuf+3, #03fh mov LEDBuf+4, #03fH mov LEDBuf+5, #03fH mov Hour, #0 mov Minute, #0 mov Second, #0 call displayled jb p1.1,clear

ljmp main2

CLEAR0:

mov LEDBuf+0, #03fh mov LEDBuf+1, #03fh mov LEDBuf+2, #03fh mov LEDBuf+3, #03fh mov LEDBuf+4, #03fH mov LEDBuf+5, #03fH mov Hour, #0 mov Minute, #0 mov Second, #0 call displayled call testkey

jz clear0

lcall getkey

xrl a,#0ah

cjne a,#0,clear0 ljmp start

end

- 8 -

2.硬件连接分配

单片机实践报告MC51

单片机实践报告MC51

由实验箱上的接线cs0接到键盘显示,我们可以得到段口,位口,列口及位口的地址。因为实验箱的接线中,列口和位口共用一个地址口,所以程序的端口说明就声明了三个地址。

- 9 -

四、软硬件调试

首先按照硬件连接图接线,连线完毕之后打开实验箱电源,在伟福6000里选择模拟器选项仿真器——仿真器设置,选择相应的参数,点击确定。打开程序,点击编译,再点击运行,之后在试验箱上进行硬件性能测试。

五、设计分析总结

为期一周的单片机课设已经结束了,在本次单片机课程中我组成员基本完成了应用mc51单片机和wave6000设计单片的任务,并且在原有要求上进行了一定的功能强化和改进。在初期,由于大家对单片机的了解并不是很深入,我们陷入了各种迷茫与困惑之中,虽然每天都有新的进展,但是进程缓慢,漏洞百出,经常是拆了东墙补西墙,在进行了单片机定时器和中断知识的进一步强化学习之后,我们组的进展明显加快,尤其是在老师的指导下,一些难以理解东西渐渐明朗,理清思路的我们在课设时间约一半的时候,顺利的完成了我们的课设要求。 在一周的课程设计与实践中,我们组的四位成员经历了从对单片机的基本了解到能独立完成简单程序设计的过程,并且深入巩固了单片机的定时器,中断等基础知识。为以后的学习和工作打下了一定的基础。

六、参考文献

1.《单片机原理与应用》 胡辉,李叶紫,胡丽平 主编 中国水利水电出版社 2.《单片机原理与接口技术》 牛昱光 主编 电子工业出版社

3.《单片机系统设计与应用实例》 韩志军 主编 机械工业出版社

- 10 -

成 绩 评 定 表

单片机实践报告MC51

- 11 -

相关推荐