文档详情

实验报告_八段数码管实验.doc

发布:2017-05-24约1.62千字共8页下载文档
文本预览下载声明
重 庆 理 工 大 学 实验报告 课程 汇编语言程序设计 题目 八段数码管实验 院系名称 计算机科学与工程学院 班 级 115030703 学生姓名 郭鑫 学号 11503070310 任课教师 但 远 宏 时 间 2016-12-06 0 实验任务描述 编程实现秒表计时器功能,其中数码管显示计时的时间,计时功能由定时器实现,显示功能由数码管实现,每分钟报时提醒由蜂鸣器实现,计时开始或停止由外部中断按键实现: (1)数码管高两位显示分钟数,低两位显示秒数。 (2)定时器T0工作在16位定时器状态,溢出产生中断进行响应。 (3)每满一分钟,蜂鸣器响一次,进行提醒。 (4)INT0工作在边沿触发模式,每按下一次进行“开始计时”与“停止计时”之间的来回切换。每次停止之后,重新从0开始计时。 1 数码管工作原理分析 1.0 什么是数码管?什么是共阴和共阳? Led数码管是由多个发光二极管封装在一起组成“8”字型的,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。led数码管常用段数一般为7段有的另加一个小数点 将数码管各笔划发光元件的负极连在一起称为共阴数码管,且该共电极连接电路电源的负极,而各笔划元件的正极连接驱动电路。它适用于高电平有效的驱动电路,当某一笔划的驱动电平为高电平时,该笔划发光。 解释和推导0,1,2的共阳的段码,并列举出0~9的段码。 由高到低位 dp g f e d c b a。因为共阳,低电平有效 0就是abcdef为0,其余为1.所以段码1100 0000 为C0H 1就是bc为0,其余为1,所以段码1111 1001 为 F9H 2就是abged为0,其余为1,所以段码 1010 0100 为A4H 3 B0H 4 99H 5 92H 6 82H 7 F8H 8 80H 9 90H 1.2 详细解释实验板上,P0口是如何进行分时复用,并和位选信号配合,实现多个数码管同时显示的。 每一个位选信号分别有对应的P0口的值,经过快速切换位选,并瞬间附上该位选的值,就能达到同时显示 2 算法设计与 2.2 程序设计与实现 变量定义 初始化 主函数循环 一直循环,display是显示当前时间(未开始为0000) 显示模块 CodeValue数组为0~9的段码 TimeC是根据time的值,算出4个数码管需要显示的数字,存放在timeCtrl数组中 4次循环,每次循环改变P0的值和改变位选 并延时。 改变P0的指通过timeCtrl中4个数字,代表codeValue所对应的段码的下标,选出对应的段码赋给P0 P2位选是有4个数码管,对应p2.0,p2.1,p2.2,p2.3。循环4次就通过codeCtrl数组访问了这4个数码管,由于蜂鸣器也是P2.4控制,所以数码管位选flag 就能通过改变flag的值来控制蜂鸣器的响。 时间计算模块 Time记录总秒数,前两个数码管显示分钟,后两个数码管显示秒,用timeCtrl来存这4位数字 按钮控制开始结束模块 每次按下按键 TR0反转,控制暂停和开始。 Flagtime标记是否开始计时,默认为0,没开始计时,如果按下,开始计时赋上初值,time起始为0,flagtime标记为1。 计时模块 一次中断50ms,每次中断赋初值。20次中断为1秒,每一秒time+1,如果满一分钟,蜂鸣器标志,位选1110 1111 就能控制p2.4为低电平。平时flag都为1111 1111, 不起控制作用 重庆理工大学实验报告 汇编语言程序设计 8
显示全部
相似文档