文档介绍:《单片机系统综合设计与实践》
课程设计实验报告
(第5组)
设计题目:仪表参数的设定(任务一)
指导教师:刘伟裴岩杨永胜韩海波
班级: 计算机02-2
组长: 张胜利(020201050)
组员: 王敏(020201042)
试验时间:---- ---
1、设计目的:
1 锻炼同学们的实际动手及互助合作的能力。使学生能具备从课本到实践的有机转换。
2 提高学生对汇编语言的熟悉程度,能进行简单的程序设计及对于错误的修改。
3 提高学生对于MCS—51单片机的认识程度,及对于看门狗,A/D转换器,LED及键盘的自检,设计程序的编写。
4 使学生对于伟福软件能够熟练应用。提高学生的上机调试和硬件的检查能力。
2、设计任务:
(1)完成键盘、七段LED 显示器、蜂鸣器、A\D及X25045的自检程序设计
(2)利用拨盘、键盘和七段LED 显示器,实现-19999至+19999任意数字的输入和存储。
3 任务分工
组长:键盘及X25045的自检程序设计,主任务的设计及其所有的程序实现
组员:七段LED 显示器、蜂鸣器、A\D的自检程序设计(由于特殊原因组员没有参加主任务的实现)
4 主任务的键定义:
K1  位选/进入编辑状态
K2 增数/增减小数点
K3 撤消/进入读状态
K4 确认/进入写状态
5 程序流程图
主程序流程图
设键拨下
Sw3&sw2?
Sw3&sw1?
Sw3?
Sw1&sw2?
键盘自检
Sw2?
蜂鸣器自检
Sw1?
主任务
LED自检
A/D自检
X25045自检
时钟
采样拨盘开关
初始化
开始
主任务流程图
开始
启动T0 中断
Y
K1? I 位闪烁
N
Y
K2? 闪烁位加数
N
Y
K3? 显示组号
N Y
K1?
显示组号 K4? N
Y N 读出 Y
加1 K4?
K2? 返回
N N
N Y
K3? 是组号吗? K2?
N Y N
写入组号加1
K4
N
T0中断:
保护现场
#0àp0, weiàr0
Y
R0=#VW? SEL1
N
R0=#VQ? Y 灭零 N
吗? SEL2
N
Y
R0=#VB? 灭零 N
吗? SEL3
Y N
R0=#VS? 灭零 SEL4
N 吗?
SEL5
***@R0àa
***@a+dptràa
aàp0
p2àsavep2
换位
重装定时常数
恢复现场
T1中断:
N
整秒?
Y
调整秒单元
N
整分?
Y
调整分单元
N
分满60吗?
Y
清零
N
需闪烁吗?
Y
N
=1? 闪烁位亮
Y
闪烁位灭
重装定时常数
恢复现场
闪烁位加1子程序:
(Increase) 需要处理 Y Y
小数点? 有小数点吗?
N N
N
闪烁位为万位? 加小数点
Y
Y
闪烁位灭 为-1吗? 去小数点
为灭吗?
闪烁位变1
闪烁位变-1
闪烁位加1
为10?
闪烁位清零
调整闪烁位子程序(SPARK):
有闪烁位吗? 万位闪
万位闪烁吗? 千位闪
千位闪烁吗? 百位闪
百位闪烁吗? 十位闪
十位闪烁吗? 个位闪
个位闪烁吗? 去闪烁
溢出?
结束
蜂鸣器报警
缓冲区数据清0
a中数据送缓冲区
读低位送a中
R0增1
屏蔽a中高2位送缓冲区
读高位送a中
R0指向缓冲区BUF
开始
入栈保护,选择工作区
A/D:主程序 INT0中断服务程序
显示子程序
开INT0中断
将缓冲区置0
80H->SP
开始
=0?
延时2ms
SEL5
查表送P0口
屏蔽高四位
b->a
延时2ms
SEL4
查表送P0口
屏蔽低四位(a)
交换a中高四位与低四位
a->b
***@R1->a
R1增1
R1指向缓冲区
开始
***@R1->a
SEL3
查表送P0口
延时2ms
屏蔽a中高4位
b->a
延时2ms
SEL2
80h->a->p0
a->b
AD Display:
显示数增1
读看门狗
恢复全亮
写看门狗
仅点亮十/个位(编辑)
K2?
K1?
K3?
K4?
K2?
K