题目要求:
一、基本要求
1.1
使用
CT107D
单片机竞赛板,完成“电子钟”功能的程序设计与调试;
1.2
设计与调试过程中,可参考组委会提供的“资源数据包”;
1.3 Keil
工程文件以准考证号命名,保存在以准考证号命名的考生文件夹中。
二、硬件框图

三、功能描述
3.1 初始化
1
)关闭蜂鸣器、继电器等无关外设;
2
)设备初始化时钟为
23
时
59
分
50
秒,闹钟提醒时间
0
时
0
分
0
秒。
3.2 显示功能
1)
时间显示格式
2)
温度显示格式
3.3 按键功能
1
)按键
S7
定义为“时钟设置”按键,通过该按键可切换选择待调整的
时、分、秒,当前选择的显示单元以
1
秒为间隔亮灭,时、分、秒
的调整需注意数据边界属性。
2
)按键
S6
定义为“闹钟设置”按键,通过该按键可进入闹钟时间设置
功能,数码管显示当前设定的闹钟时间。
3
)按键
S5
定义为“加”按键,在“时钟设置”或“闹钟设置”状态下,
每次按下该按键当前选择的单元(时、分或秒)增加
1
个单位。
4
)按键
S4
定义为“减”按键,在“时钟设置”或“闹钟设置”状态下,
每次按下该按键当前选择的单元(时、分或秒)减少
1
个单位。
5
)按键功能说明:
按键
S4
、
S5
的“加”、“减”功能只在“时钟设置”或“闹钟设置”
状态下有效;
在 “时钟显示”状态下,按下
S4
按键,显示温度数据,松开按键,
返回“时钟显示”界面。
3.4 闹钟提示功能
1
)指示灯
L1
以
0.2
秒为间隔闪烁,持续
5
秒钟;
2
)闹钟提示状态下,按下任意按键,关闭闪烁提示功能。
底层函数内容:
1.初始化底层驱动专用文件
比如先用3个IO口控制74HC138译码器,控制Y4为低电平;当Y4为低电平时,或非门74HC02控制Y4C为高电平,使74HC573的OE端口有效,OE端口有效时,可使用P0口控制LED的亮灭。
可以去多了解74HC138译码器,74HC02或非门,74HC573八路输出透明锁存器的相关内容会更好理解
#include <Init.h>
//关闭外设
void System_Init()
{
P0 = 0xff;
P2 = P2 & 0x1f | 0x80;
P2 &= 0x1f;
P0 = 0x00;
P2 = P2 & 0x1f | 0xa0;
P2 &= 0x1f;
}
//头文件
#include <STC15F2K60S2.H>
void System_Init();
2.Led底层驱动专用文件
与初始化底层驱动专用文件同理,需要了解对应的锁存器控制,可以在使用的芯片数据手册查看
#include <Led.h>
void Led_Disp(unsigned char addr,enable)
{
static unsigned char temp = 0x00;
static unsigned char temp_old = 0xff;
if(enable)
temp |= 0x01 << addr;
else
temp &= ~(0x01 << addr);
if(temp != temp_old)
{
P0 = ~temp;
P2 = P2 & 0x1f |0x80;
P2 &= 0x1f;
temp_old = temp;
}
}
//头文件
#include <STC15F2K60S2.H>
void Led_Disp(unsigned char addr,enable);
3.按键底层驱动专用文件
(板子上的按键从按键4开始到按键19,可根据实际硬件修改)
#include "Key.h"
unsigned char Key_Read()
{
unsigned char temp = 0;
if(P33 == 0)temp = 4;
if(P32 == 0)temp = 5;
if(P31 == 0)temp = 6;
if(P30 == 0)temp = 7;
return temp;
}

最低0.47元/天 解锁文章





