可调时时钟单片机系统设计.doc
文本预览下载声明
可调时时钟单片机系统设计
[摘要] 要求走时准确,显示直观,并能够进行时、分的设置。当需要重置时间时按下重置键,此时可通过加、减按键调整分,重置键再次按下则可调整时,第三次按下重置键时钟从新设置的时间开始计数。
[关键词] 时钟 单片机
近年来随着计算机技术在社会领域的渗透和大规模集成电路的发展,单片机的应用正不断走向深入。单片机具有体积小、功能强、应用面广能优点,目前正以前所未有的速度取代传统电子线路构成的经典系统。现在,单片机的应用领域以十分广泛。智能仪表、家用电器、工业控制、计算机网络和通信和医疗设备等无处不见单片机的影子。数字钟作为最常见的电子产品,应用也最为广泛。
系统功能
电子钟是一种利用数字电路实现时、分、秒的计时装置。要求走时准确,显示直观,并能够进行时、分的设置。当需要重置时间时按下重置键,此时可通过加、减按键调整分,重置键再次按下则可调整时,第三次按下重置键时钟从新设置的时间开始计数。
系统设计
硬件设计
所需设备:装有Keil uVision2和Medwin的计算机一台,亚龙YL-236型单片机控制功能实训考核装置一台。
本程序用到得实验模块为:MCU22电源模块、MCU21单片机主机模块、MCU17单片机显示模块、MCU15单片机指令模块。
电源模块:提供±5V、±12V和24V电源
主机模块:主机采用AT89C51芯片,该芯片提供四个8位通用的并行I/O口(P0~P3),四个口均为准双向口,均可通过程序定义为输入或输出口
显示模块:8位数码管采用共阳极方式,并将数据口共用,分别采用CS1、CS2进行段选和位选。
指令模块:提供SP2键盘接口,8只独立按键
总体接线:
软件设计
本系统软件设计主要分为主程序、显示子程序、独立按键子程序、中断子程序。通过主程序对各子程序的调用实现时钟的功能。
主程序:初始化I/O口,开50HZ定时中断,进行数码管显示和按键扫描,判断按键功能并进行相应处理。如果设置键按下,时钟停止,加、减按键可对时钟进行分调整,再次按下设置键,则可进行时调整,第三次按下重置键时钟从新设置时间开始计时。
主程序代码:
#define SET P1_0
#define ADD P1_1
#define SUB P1_2
#define CS1 P2_6
#define CS2 P2_7
#define DATA P0 //定义各端口
unsigned int key2=25; //设置按键标识,有设置键按下,25表示无按键信号
unsigned int WORK; //定义工作方式,WORK=0为计时、WORK=1为调整分、
//WORK=2为调整时
unsigned char min,hour; //定义分钟和小时
void main()
{
TMOD=1; //设置定时器工作方式
EA=1;
ET0=1; //开定时中断
TH0=0XB0;
TL0=0X00; //设置定时时间
TR0=1; //开启定时器
while(1)
{
if(key2!=25) //若无按键值则返回25,不进行处理
{
if(key2==1) //若按下设置键,则进行工作方式选择
{
WORK++;
if(WORK==3)
{
WORK=0;
}
}
else if(key2==2) //若按下加,则时间加1
{
if(WORK==1) //若为分调整,则分钟加1
{
min++;
if(min==60) //若到60,则分归零
{
min=0;
}
}
else if(WORK==2) //若为时调整,则小时加1
{
hour++;
if(hour==24) //若到24,则小时归零
{
hour=0;
}
}
key2=25;
}
else if(key2==3) //若按下减,则时间减1
{
if(WORK==1) //若为分调整,则分钟减1
{
min--;
if(min==255) //若到0,则分置59
{
min=59;
}
}
else if(WORK==2) //若为时调整,则小时加1
显示全部