文档详情

可调时时钟单片机系统设计.doc

发布:2017-08-18约3.94千字共6页下载文档
文本预览下载声明
可调时时钟单片机系统设计 [摘要] 要求走时准确,显示直观,并能够进行时、分的设置。当需要重置时间时按下重置键,此时可通过加、减按键调整分,重置键再次按下则可调整时,第三次按下重置键时钟从新设置的时间开始计数。 [关键词] 时钟 单片机 近年来随着计算机技术在社会领域的渗透和大规模集成电路的发展,单片机的应用正不断走向深入。单片机具有体积小、功能强、应用面广能优点,目前正以前所未有的速度取代传统电子线路构成的经典系统。现在,单片机的应用领域以十分广泛。智能仪表、家用电器、工业控制、计算机网络和通信和医疗设备等无处不见单片机的影子。数字钟作为最常见的电子产品,应用也最为广泛。 系统功能 电子钟是一种利用数字电路实现时、分、秒的计时装置。要求走时准确,显示直观,并能够进行时、分的设置。当需要重置时间时按下重置键,此时可通过加、减按键调整分,重置键再次按下则可调整时,第三次按下重置键时钟从新设置的时间开始计数。 系统设计 硬件设计 所需设备:装有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
显示全部
相似文档