带修改暂停启动的动态数码管时钟
来源:互联网 发布:linux双网卡同时激活 编辑:程序博客网 时间:2024/06/04 21:06
#include <reg52.h>////////////////////////////////////////////////////////////////////////////////////////unsigned char code DIG_PLACE[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位选控制 查表的方法控制unsigned char DIG_CODE[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //段选控制 查表的方法控制//0、1、2、3、4、5、6、7、8、9的显示码///////////////////////////////////////////////////////////////////////////////////////char sec,min,hour;unsigned int i = 0,k = 0;unsigned char num = 0;unsigned char local = 0;unsigned char flag = 1;unsigned char KeyScan(void);void Delay(unsigned char t);sbit KEY1 = P1^0;sbit KEY2 = P1^1;sbit KEY3 = P1^2;sbit KEY4 = P1^3;sbit KEY5 = P1^4;sbit KEY6 = P1^5;sbit Beep = P1^6;void main(void){ TMOD = 0x01; TH0 = 0xfc; TL0 = 0x18; EA = 1; ET0 = 1; TR0 = 1; sec = 0; min = 0; hour = 0; while(1) { if(sec >= 60) { min++; sec = 0; } if(min >= 60) { hour++; min = 0; } if(hour >= 24) { hour = 0; min = 0; sec = 0; } P3 = ~DIG_CODE[local]; num = KeyScan(); if(num == 1) { local++; if(local == 6) { local =0; } //num = 0; } if(num == 2) { switch(local) { case 5:sec++; if(sec >= 60) { min++; sec = 0; }break; case 4:sec += 10; if(sec >= 60) { min++; sec = 0; } break; case 3:min++; if(min >= 60) { hour++; min = 0; }break; case 2:min += 10; if(min >= 60) { hour++; min = 0; }break; case 1:hour++; if(hour >= 24) { sec = 0; min = 0; hour = 0; }break; case 0:hour += 10; if(hour >= 24) { sec = 0; min = 0; hour = 0; }break; } //num = 0; } if(num == 3) { switch(local) { case 5:sec--; if(sec <= 0) { min--; sec = 0; }break; case 4:sec -= 10; if(sec <= 0) { min--; sec = 0; }break; case 3:min--; if(min <= 0) { hour--; min = 59; }break; case 2:min -= 10; if(min <= 0) { hour--; min = 59; }break; case 1:hour--; if(hour <= 0) { sec = 0; min = 0; hour = 0; }break; case 0:hour -= 10; if(hour <= 0) { sec = 0; min = 0; hour = 0; }break; } //num = 0; } if(num == 4) { sec = 0; min = 0; hour = 0; } if(num == 5) { flag = 0; } if(num == 6) { flag = 1; } if(sec == 0 && min == 30 && hour == 20) { Beep = !Beep; } }}void ISR_Timer0(void) interrupt 1{ TH0 = 0xfc; TL0 = 0x18; //i++; if(flag == 1) { i++; if(i == 1000) { i = 0; sec++; } } switch(k) { case 0:P0 = DIG_CODE[sec%10]; P2 = DIG_PLACE[7]; k = 1; break; case 1:P0 = DIG_CODE[sec/10]; P2 = DIG_PLACE[6]; k = 2; break; case 2:P0 = 0x40; P2 = DIG_PLACE[5]; k = 3; break; case 3:P0 = DIG_CODE[min%10]; P2 = DIG_PLACE[4]; k = 4; break; case 4:P0 = DIG_CODE[min/10]; P2 = DIG_PLACE[3]; k = 5; break; case 5:P0 = 0x40; P2 = DIG_PLACE[2]; k = 6; break; case 6:P0 = DIG_CODE[hour%10]; P2 = DIG_PLACE[1]; k = 7; break; case 7:P0 = DIG_CODE[hour/10]; P2 = DIG_PLACE[0]; k = 0; break; }}unsigned char KeyScan(void){ if(!KEY1) //如果检测到低电平,说明按键按下 { Delay(10); //延时去抖,一般10-20ms if(!KEY1) //再次确认按键是否按下,没有按下则退出 { while(!KEY1);//如果确认按下按键等待按键释放,没有则退出 { return 1; } } } else if(!KEY2) //如果检测到低电平,说明按键按下 { Delay(10); //延时去抖,一般10-20ms if(!KEY2) //再次确认按键是否按下,没有按下则退出 { while(!KEY2);//如果确认按下按键等待按键释放,没有则退出 { return 2; } } } else if(!KEY3) //如果检测到低电平,说明按键按下 { Delay(10); //延时去抖,一般10-20ms if(!KEY3) //再次确认按键是否按下,没有按下则退出 { while(!KEY3);//如果确认按下按键等待按键释放,没有则退出 { return 3; } } } else if(!KEY4) //如果检测到低电平,说明按键按下 { Delay(10); //延时去抖,一般10-20ms if(!KEY4) //再次确认按键是否按下,没有按下则退出 { while(!KEY4);//如果确认按下按键等待按键释放,没有则退出 { return 4; } } } else if(!KEY5) //如果检测到低电平,说明按键按下 { Delay(10); //延时去抖,一般10-20ms if(!KEY5) //再次确认按键是否按下,没有按下则退出 { while(!KEY5);//如果确认按下按键等待按键释放,没有则退出 { return 5; } } } else if(!KEY6) //如果检测到低电平,说明按键按下 { Delay(10); //延时去抖,一般10-20ms if(!KEY6) //再次确认按键是否按下,没有按下则退出 { while(!KEY6);//如果确认按下按键等待按键释放,没有则退出 { return 6; } } } else return 0;}void Delay(unsigned char t){ while(t--);}
0 0
- 带修改暂停启动的动态数码管时钟
- 利用数码管显示的时钟
- LCD1602时钟(暂停、开始、修改)
- 基于数码管的简单时钟系统
- 6.4 数码管的动态显示
- lesson4~数码管的动态扫描
- 动态修改带圆形背景的图标
- 单片机数码管时钟显示
- [51]数码管作时钟
- 数码管显示时钟
- DS1302时钟数码管显示
- 数码管显示时钟
- 动态数码管
- 动态数码管
- 利用单片机的数码管模拟时钟的显示时间
- 用单片机定时器和数码管实现的电子时钟
- CPLD 八段数码管时钟显示的VHDL实现
- 单片机之数码管秒表的动态显示
- 动态管
- PAT 1116. Come on! Let's C
- 一种基于轮廓的自由图像变形算法
- SiteMesh的使用
- 单例模式不是一件小事,快回来看看
- 带修改暂停启动的动态数码管时钟
- Android知识点总结
- SQL 中的语法顺序与执行顺序
- C51外部中断
- Android中的IPC机制
- 小熊吐槽JavaScript基础教程,Are you OK?
- javascript中对数据文本格式化的思考
- 从一般分布式设计看HDFS设计思想与架构
- C++中修改const变量问题