凌阳十位单片机电子时钟程序

上传人:cl****1 文档编号:497141623 上传时间:2023-01-13 格式:DOC 页数:34 大小:303KB
返回 下载 相关 举报
凌阳十位单片机电子时钟程序_第1页
第1页 / 共34页
凌阳十位单片机电子时钟程序_第2页
第2页 / 共34页
凌阳十位单片机电子时钟程序_第3页
第3页 / 共34页
凌阳十位单片机电子时钟程序_第4页
第4页 / 共34页
凌阳十位单片机电子时钟程序_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《凌阳十位单片机电子时钟程序》由会员分享,可在线阅读,更多相关《凌阳十位单片机电子时钟程序(34页珍藏版)》请在金锄头文库上搜索。

1、/ / The information contained herein is the exclusive property of/ Sunnnorth Technology Co. And shall not be distributed, reproduced,/ or disclosed in whole in part without prior written permission./ (C) COPYRIGHT 2003 SUNNORTH TECHNOLOGY CO./ ALL RIGHTS RESERVED/ The entire notice above must be rep

2、roduced on all authorized copies. /=/=/工程名称:ex3_Clock/功能描述 :实验指导书综合实验/电子时钟/通过按键设置时钟,按确认键后,时钟运行。/IDE 环境:SUNPLUS unSPTM IDE 1.8.0 ( or later)/涉及的库:CMacro1016.lib/组成文件:main.c/isr.asm/Dig.asm/Key.asm/system.asm/Dig.inc/SPCE061A.inc/Key.inc/Dig.h/SPCE061A.h/Key.h/硬件连接:IOA 口低 8 位连接 1*8 数码管的段选/IOB 口 IOB15

3、、 IOB14 、 IOB13 、 IOB12 、 IOB2 、 IOB1 、 IOB0 连接位选/IOA 口高 8 位连接 4*4 键盘/日期:2005-10-14 v1.0/=/=/ 文件名称:main.c/功能描述:时钟时间设置和显示/维护记录:2005-10-14 v1.0/=#include Key.h#include Dig.h#include SPCE061A.h typedef unsigned char uchar;#define KEY_DEL11#define KEY_ENT12#define YESCarryFlag 1#define ClearCarryFlag 0#

4、define YESIntFlag 1#define ClearIntFlag 0#define true 1#define false 0unsigned int INTflag;unsigned int KeyVal;unsigned int KeyDownTimes;unsigned int KeycodeLED6 ; unsigned int EnterFg ;下 0 无确认键按下unsigned int secFlag,minFlag,hourFlag; void clockPro(void);/保存按键次数/ 保存显示的 LED 数字/ 按确认键标识 1、有确认键按/ 时钟处理函数

5、unsigned int SetKeyValPro(void);unsigned int KeyDataChange(unsigned int Key_Data); 值转换成程序所需要的/设置时钟值的合法性检测函数/键值转换子程序, 把 4X4 键盘的键unsigned int g_Data11 0x003f,0x0006,0x005b,0x004f,0x0066,0x006d,0x007d,0x0007,0x007f,0x006f;/0, 1, 2, 3, 4, 5, 6,7,/8,9/=/语法格式:int main(void)/实现功能:时钟设置及显示/参数:无/返回值:无/= int m

6、ain()unsigned int i;KeyDownTimes = 0;INTflag = 0;EnterFg = 0;i = 0;Key_Init();括 IRQ6 的 TMB2 128Hz 中断 DIG_Init();口以及 IRQ4 的 1KHz 中断/键盘扫描初始化,包/显示初始化,初始端while(1)if(EnterFg = 0)/ 判断是否已按下过 确认 键? KeyVal = Key_Get();/获取键值/转换键值,无键按下/返回 0xffswitch(KeyVal)case KEY_DEL:/删除键处理if(KeyDownTimes0) KeyDownTimes-; br

7、eak;case 0xff:/无效的键值break;case KEY_ENT: if(KeyDownTimes=6)SP_INT_IRQ5();EnterFg = true; break; default:if(KeyDownTimes6) KeycodeLEDKeyDownTimes = KeyVal; if(SetKeyValPro()= true) KeyDownTimes+;break;/确认键处理/数字键处理for(i=0;i6;i+)DIG_Set(i+1,g_DataKeycodeLEDi);/ 显示所有键值即时钟clockPro();F_ClearWatchdog();/=/时

8、钟数据处理/清看门狗/语法格式:unsigned int KeyDataChange(unsigned int Key_Data)/实现功能:键值转换子程序/参数: Key_Data- 机器码/返回值: 012,其中 09 为数字键, 10、 11、 12 为功能键; / 0xff ,不合法的键输入KeyVal = KeyDataChange(KeyVal);或对于本程序无用的键按下时/ unsigned int KeyDataChange(unsigned int Key_Data) switch(Key_Data) case KEY_0Key_Data =7;break;case KEY_

9、1Key_Data =8;break;case KEY_2Key_Data =9;break;case KEY_3Key_Data =0xff;break;case KEY_4Key_Data =4;break;case KEY_5Key_Data =5;break;case KEY_6Key_Data =6;break;case KEY_7Key_Data =0xff;break;case KEY_8Key_Data =1;break;case KEY_9Key_Data =2;break;case KEY_A: Key_Data = 3;break; case KEY_B: Key_Dat

10、a = 0xff;break; case KEY_C: Key_Data = 11;break;case KEY_D: Key_Data = 0;break; case KEY_E: Key_Data = 0xff;break;case KEY_F: Key_Data = 12;break; default: Key_Data = 0xff;break; return Key_Data;/ /语法格式: void SetKeyValPro(void)/实现功能: 设置时钟数据和发行检测函数名称/参数: 无/返回值:1-合法;/0-不合法;/= unsigned int SetKeyValPro

11、(void)uchar flag; switch(KeyDownTimes)/小时高位case 0 : if(KeycodeLEDKeyDownTimes3) flag = true;else flag = false;break;case 1: if(KeycodeLEDKeyDownTimes-1=2 )if(KeycodeLEDKeyDownTimes5) flag = true;elseflag = false;else flag = true;break;case 2:case 4:if(KeycodeLEDKeyDownTimes6)位flag = true;else flag = false;break;case 3:case 5:flag = true;break;位default: flag = false;break;return(flag);/小时低位/秒和分的高/秒和分的地/= /语法格式: void clockPro()/描述功能: 时钟处理函数/参数: 无/返回值: 无/= void clockPro(void)/秒处理while(INTflag=1)INTflag = ClearIntFlag;if(KeycodeLED4 = 5 & KeycodeLED5 = 9) 否需回零KeycodeLED4 = 0; 回零Key

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号