电子闹钟系统

利用汇编语言做的电子闹钟系统

可能计算机专业的学生学过汇编语言就会看到过这个题目,确实,这也算是学校里面比较常用的课设题目了,主要还是为了让我们更能了解硬件编程与软件编程的区别,再有就是更好的学习8259、8254、8255这三个芯片。由于这个课设在编写过程中主要是利用学校的实验箱做的,所以也没留下什么图片,那为了方便自己今后查看,也为了方便学弟学妹们学习,在这里对自己所做的系统中用到的一些硬件知识原理做一些简要的介绍。
ps:本人做的系统中大概包括功能如下:
LED点阵显示欢迎界面、小键盘设定闹钟时间、响铃功能、整点报时。

一、时间显示技术

通过对计数器8254设定计数值对脉冲进行比较,初始化8254使其工作于计数器0,方式3。接入CLK为1MHz,设计数初值为10000,每100次中断计数一次,产生的计数时间刚好是时钟每秒走过的时间(1s=1Hz)。

通过对中断控制器8259设置初始化命令字初值来控制中断。实现时间存储时可以通过移位指令来实现时、秒、分的个位和十位的独自存储,将分、秒的个位十位分别存入指定的寄存器中。比较转移指令来完成秒和分的累加。

七段数码管由8255并行接口的A口进行位的选择,通过B口输出要显示的段码。这样就在6个七段数码管上分别显示时、分和秒。当1S时间到时,修改当前数码管数值,10秒时将秒的低位清零,高位加1,分和时亦是如此;到达60秒时,将秒清零,分加1,到达60分时,将分清零,小时加1,到达24小时则全部清零。

二、响音乐原理

一个音符对应一个频率,将对应一个音符频率的方波通到扬声器上,就可以发出这个音符的声音。将一段乐曲的音符对应频率的方波依次送到扬声器,就可以演奏出这段乐曲。利用8254的方式3——“方波发声器”,将相应一种频率的计数初值写入计数器,就可产生对应频率的方波。计数初值的计算如下:

计数初值 = 输入时钟 ÷ 输出频率

三、点阵显示原理

实验系统中的 16x16 LED点阵由4块 8x8 LED点阵组成,如下图所示,当行为“1”,列为“0”时,对应行、列上的LED点亮。
在这里插入图片描述
在这里插入图片描述
四、键盘扫描原理
为了便于区分,可将 4x4 矩阵键盘划分为1、2、3、4 共四列和 A、B、C、D 共四行,四列接8255PB口的高四位,四行接8255PB口的低四位。
在这里插入图片描述
首先将高四位置1,低四位置 0。 如果没有按键按下则返回 11110000 即 0XF0。 如某列有按键按下则对应得到如图所示的值。
在这里插入图片描述
将高四位置0, 低四位置1。 如果没有按键按下则返回 00001111 即 0X0F。 如某行有按键按下则对应得到如图所示的值。
在这里插入图片描述
行列表汇总后得到下图:
在这里插入图片描述

在这个课设中还是遇到了一些问题的,但是通过查资料以及向老师同学寻求帮助还是可以解决的。下面简单配一张LED点阵显示的效果图吧。
在这里插入图片描述

最后用一句鸡汤结束这篇文章吧—就算路不坦荡,也要做自己的太阳!

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值