单片机课程设计报告高云_单片机课程设计报告
单片机课程设计报告高云由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“单片机课程设计报告”。
临沂师范学院信息学院07级电子信息科学与技术高云20070784011
1一、实验目的:
1.掌握在8031系统中扩展8279键盘显示接口的方法。
2.掌握8279的工作原理和编程方法。
3.进一步掌握中断处理程序的编程方法。
二、实验设备:
CPU挂箱、8031CPU模块
三、实验内容:
利用8279键盘显示接口电路和实验箱上提供的6个数码显示,做成一个电子钟。
四、实验原理:
利用8279可实现对键盘/显示器的自动扫描,以减轻CPU的负担,且具有显示稳定、程序简单、不会出现误动作等特点。本实验利用8279实现显示扫描自动化。
8279操作命令字较多,根据需要来灵活使用,通过本实验可初步熟悉其使用方法。
电子钟做成如下格式:
HHMMSS由左向右分别为时、分、秒的十位、个位。
五、实验原理图:
六、程序框图:
七、实验程序
NAMESHIZHONG
PORTEQU0CFE8H
BUFEQU23H;
SBFEQU22H;
MBFEQU21H;
HBFEQU20H;
CSEG AT 0000H
LJMP START
CSEG AT 401BH
LJMP CLOCK
CSEG AT 4100H
START:MOVR0,#40H;40H-45H
MOVA,#00H;
MOV@R0,A;
INCR0
MOV@R0,A
INCR0
MOV@R0,A
INCR0
MOV@R0,A存放计数值 存放秒值 存放分值 存放时值 是显示缓冲区,依次存放 时高位、时低位,分高位、分低位,以及秒高位、秒底位
MOV@R0,A
INCR0
MOV@R0,A
MOVTMOD,#10H;定时器1初始化为方式1MOVTH1,#3CH;置时间常数,延时0.1秒MOVTL1,#0B0H
MOVBUF,#00H
MOVSBF,#55H;
MOVMBF,#58H
MOVHBF,#23H
SETBET
1SETBEA
SETBTR1;
DS1:MOVR0,#45H;
MOVR2,#5H;
DS2:MOVDPTR,#PORT+1
MOVA,R
2ORLA,#80H
MOVX@DPTR,A
MOVDPTR,#PORT
MOVA,@R0;
ACALLTABLE
MOVX@DPTR,A
MOVR3,#0FFH;
DEL:NOP
DJNZR3,DEL
DECR0;
CLRC
DECR2
MOVA,R2;
INCA
JNZDS2;
MOVR0,#45H
MOVA,SBF;
ACALLGET
MOVA,MBF;置显示时间初值 计时开始置显示缓冲区首址 置扫描初值,点亮最左边的LED6 得到的段显码输出到段数据口 延时一小段时间 显示缓冲字节加一 最末一位是否显示完毕?,如无则继续往下显示 把秒值分别放于44H,45H中 把分值分别放入42H,43H中
MOVA,HBF;把时值分别放入40H,41H中ACALLGET
SJMPDS1;转DS1从头显示起
TABLE:INCA;取与数字对应的段码
MOVCA,@A+PC
RET
DB3FH,06H,5BH,4FH,66H,6DH,7DH, 07H, 7FH,6FH
GET:MOVR1,A;
ANLA,#0FH;
MOV@R0,A
DECR0
MOVA,R1;
SWAPA;
ANLA,#0FH
MOV@R0,A
DECR0;R0
RET
CLOCK:MOVTL1,#0B0H;
MOVTH1,#3CH
PUSHPSW
PUSHACC
INCBUF;
MOVA,BUF;
CJNEA,#0AH,QUIT
MOVBUF,#00H;
MOVA,SBF
INCA;
DAA;
MOVSBF,A
CJNEA,#60H,QUIT;
MOVSBF,#00H;
MOVA,MBF
INCA;
DAA;
MOVMBF,A
CJNEA,#60H,QUIT;
MOVMBF,#00H;
MOVA,HBF
INCA;
DAA;
MOVHBF,A
CJNEA,#24H,QUIT;把从时或分或秒字节中取来的值高 位屏蔽掉,并送入缓冲区 把从时或分或秒字节中取来的值低 位屏蔽掉,并送入缓冲区 指针下移一位 置时间常数 计数加一 计到10否?没有则转到QUIT退出中断置初值 秒值加一,经十进制调整后放入 秒字节 计到60否?没有则转到QUIT退中断是,秒字节清零 分值加一,经十进制调整后放入 分字节 分值为60否?不是则退出中断 是,清零 时值加一,经十进制调整后放入 时字节 时值为24否?不是则退出中断
MOVHBF,#00H;是,清零
QUIT:POPACC
POPPSW
RETI;中断返回
END
八、实验步骤:
本试验不必接线。运行shizhong.asm,观察数码管显示。
九、实验结果:
数码管上显示由左向右分别为时、分、秒的十位、个位。