AT89C51的矩阵键盘、跑马灯和呼吸灯设计

一、题目要求

1.使用8086,要求系统电路含有16个LED灯和按键,按键控制灯的不同闪烁方式(跑马灯),按键使用中断方式。使用定时器T1方式1实现1个心跳灯,中断方式。在PROTEUS上仿真实现,系统功能自定义。

二、设计思路

16个LED灯共阳极由P0口和P2口提供低电平信号,按键的信号由P1口采集,按键使用中断方式控制灯的不同闪烁方式。我们组采用的是先读取按键的键值,然后进入中断,运用外部中断0(中断号为0,P3.2引脚低电平或下降沿信号触发中断,ITO=0时为下降沿触发)在中断函数中根据不同的键值,执行不同的跑马灯函数。
2.使用定时器T1方式1(TMOD=0X10)实现1个心跳灯,采用定时器1中断(中断号为3,计数回0溢出中断)。
3.心跳灯每过一秒进行一次状态翻转。系统为12MHZ晶振,分频系数为12,则定时脉冲周期为1us。50ms=50000*1us。若给定时器赋初值65535-1000+1=15536=3CB0H,则定时器1定时50ms后触发中断。运用循环数j,定时器每触发一次中断j++,当j=20时,心跳灯状态翻转一次。
4.外部中断0的中断优先级比定时器1中断的中断优先级要高,因此在跑马灯时心跳灯的状态不会翻转。
AT89C51的矩阵键盘、跑马灯和呼吸灯设计_第1张图片
三、仿真电路图
只有P0口要接上拉电阻,我做的时候憨憨了
AT89C51的矩阵键盘、跑马灯和呼吸灯设计_第2张图片
附件:Proteus仿真+keil代码
https://download.csdn.net/download/alongiii/12441300

你可能感兴趣的:(单片机,其他,c语言)