清翔电子51单片机小结——可调表时钟
/*******************************/
//让后4位数码管以0.01秒速度从0到9999显示
//按下S2开始跑数 按下S3停止跑数
//按下S4选择时钟的时分秒哪一位 按下S5对应时分秒进行加一操作
//需要在停止跑数时候才可以进行S4 和 S5 操作;
/*******************************/
#include "reg52.h"
sbit WE=P2^7;
sbit DU=P2^6;
sbit S2=P3^0;
sbit S3=P3^1;
sbit S4=P3^2;
sbit S5=P3^3;
#define uchar unsigned char
#define uint unsigned int
uchar shi_h = 0,shi_l = 0,fen_h = 0,fen_l = 0,miao_h = 0,miao_l = 0;
uchar code leddata[]={ 0x3F, //"0"0x06, //"1"0x5B, //"2"0x4F, //"3"0x66, //"4"0x6D, //"5"0x7D, //"6"0x07, //"7"0x7F, //"8"0x6F, //"9"0x77, //"A"0x7C, //"B"0x39, //"C"0x5E, //"D"0x79, //"E"0x71, //"F" 150x76, //"H"0x38, //"L"0x37, //"n"0x3E, //"u"0x73, //"P"0x5C, //"o"0x40, //"-"0x00, //熄灭0x00 //自定义};void delay(uchar y)
{uchar i,j; for(i=y;i>0;i--) for(j=114;j>0;j--);
}void display_22(uchar wei_count)
{if(wei_count == 1){P0 = 0xff;WE = 1;P0 = 0xfe; // shihWE = 0;DU = 1;P0 = leddata[22];DU = 0;delay(5);}if(wei_count == 2){P0 = 0xff;WE = 1;P0 = 0xfd; // shil WE = 0;DU = 1;P0 = leddata[22];DU = 0;delay(5);}if(wei_count == 3){P0 = 0xff;WE = 1;P0 = 0xf7; // WE = 0;DU = 1;P0 = leddata[22];DU = 0;delay(5);}if(wei_count == 4){P0 = 0xff;WE = 1;P0 = 0xef; //WE = 0;DU = 1;P0 = leddata[22];DU = 0;delay(5);}if(wei_count == 5){P0 = 0xff;WE = 1;P0 = 0xbf; //WE = 0;DU = 1;P0 = leddata[22];DU = 0;delay(5);}if(wei_count == 6){P0 = 0xff;WE = 1;P0 = 0x7f; //WE = 0;DU = 1;P0 = leddata[22];DU = 0;delay(5);}
} void display_heng()
{P0 = 0xff;WE = 1;P0 = 0xfb; // 0x40 -WE = 0;DU = 1;P0 = leddata[22];DU = 0;delay(5);P0 = 0xff;WE = 1;P0 = 0xdf; //WE = 0;DU = 1;P0 = leddata[22];DU = 0;delay(5);}void display_shi_h(uchar shi_h)
{ P0 = 0xff;WE = 1;P0 = 0xfe; // shihWE = 0;DU = 1;P0 = leddata[shi_h];DU = 0;delay(5);}
void display_shi_l(uchar shi_l)
{ P0 = 0xff;WE = 1;P0 = 0xfd; // shil WE = 0;DU = 1;P0 = leddata[shi_l];DU = 0;delay(5);}
void display_fen_h(uchar fen_h)
{ P0 = 0xff;WE = 1;P0 = 0xf7; // WE = 0;DU = 1;P0 = leddata[fen_h];DU = 0;delay(5);}
void display_fen_l(uchar fen_l)
{ P0 = 0xff;WE = 1;P0 = 0xef; //WE = 0;DU = 1;P0 = leddata[fen_l];DU = 0;delay(5);}
void display_miao_h(uchar miao_h)
{ P0 = 0xff;WE = 1;P0 = 0xbf; //WE = 0;DU = 1;P0 = leddata[miao_h];DU = 0;delay(5);}
void display_miao_l(uchar miao_l)
{ P0 = 0xff;WE = 1;P0 = 0x7f; //WE = 0;DU = 1;P0 = leddata[miao_l];DU = 0;delay(5);}void display( )
{P0 = 0xff;WE = 1;P0 = 0xfe; // shihWE = 0;DU = 1;P0 = leddata[shi_h];DU = 0;delay(5);P0 = 0xff;WE = 1;P0 = 0xfd; // shil WE = 0;DU = 1;P0 = leddata[shi_l];DU = 0;delay(5);P0 = 0xff;WE = 1;P0 = 0xf7; // WE = 0;DU = 1;P0 = leddata[fen_h];DU = 0;delay(5);P0 = 0xff;WE = 1;P0 = 0xef; //WE = 0;DU = 1;P0 = leddata[fen_l];DU = 0;delay(5);P0 = 0xff;WE = 1;P0 = 0xbf; //WE = 0;DU = 1;P0 = leddata[miao_h];DU = 0;delay(5);P0 = 0xff;WE = 1;P0 = 0x7f; //WE = 0;DU = 1;P0 = leddata[miao_l];DU = 0;delay(5);
} void time_init()
{TMOD = 0x01; //time0 16TH0 =(65536 - 46336) / 256;TL0 =(65536 - 46336) % 256; // 定时50ms
}int main()
{uchar time_count;uchar wei_count;time_init();while(1){display_heng();if(TF0 == 1) //50ms coming and push S2{TF0 = 0;TH0 = (65536 - 46336) / 256;TL0 = (65536 - 46336) % 256; time_count++;if(time_count == 20) //1s到{time_count = 0;++miao_l;if(miao_l > 9){miao_l = 0;++miao_h;if(miao_h == 6){miao_h = 0;++fen_l;if(fen_l == 0xa){fen_l = 0;++fen_h;if(fen_h == 6){fen_h = 0;++shi_l;if(shi_l == 9){shi_l = 0;++shi_h; }if((shi_h == 2)&&(shi_l == 4)){shi_h = 0;shi_l = 0;}}}}}}}if(S2 == 0) {delay(5);if(S2 == 0){TR0 = 1; //开始运行定时器while(!S2) ;} }if(S3 == 0) {delay(5);if(S3 == 0){ TR0 = 0; //停止运行定时器 while(!S3);} }if(S4 == 0) //choose wei{delay(5);if(S4 == 0 && TR0 == 0){ wei_count++;if(wei_count > 6)wei_count -= 6;display_22(wei_count);while(!S4);}}if(S5 == 0) {delay(5);if(S5 == 0 && TR0 == 0){ switch(wei_count) {case 1:shi_h += 1;if(shi_h > 2)shi_h = 0;display_shi_h(shi_h);break;case 2:shi_l += 1;if(shi_l > 9)shi_l = 0;if((shi_h == 2) && (shi_l > 4)){shi_l = 0;}display_shi_l(shi_l);break;case 3:fen_h += 1;if(fen_h == 6)fen_h = 0;display_fen_h(fen_h);break;case 4:fen_l += 1;if(fen_l == 0xa)fen_l = 0;display_fen_l(fen_l);break;case 5:miao_h += 1;if(miao_h == 6)miao_h = 0;display_miao_h(miao_h);break;case 6:miao_l += 1;if(miao_l > 9)miao_l = 0;display_miao_l(miao_l); break; default:;}while(!S5);} } display(); }return 1;
}
清翔电子51单片机小结——可调表时钟相关推荐
- 清翔电子51单片机PWM理解
/********************************************************************************* * [编写时间]: 2014年3月 ...
- 两位动态数码管电子秒表c语言,清翔电子51单片机6课动态显示数码管作业秒表...
单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟 相关下载链接://download. ...
- 基于51单片机万年历可调电子时钟闹钟温度(实物图+源码+仿真+原理图+论文)
资料编号:038 硬件构成:51单片机+最小系统+LCD1602液晶显示模块+时钟模块+温度采集模块+蜂鸣器模块+按键模块 1.采用LCD1602液晶屏显示.DS1302时钟芯片和DS18B20温度 ...
- 【Proteus仿真】51单片机+直流电机PWM调速实验
[Proteus仿真]51单片机+直流电机PWM调速实验 Proteus仿真 采用L293驱动直流电机 -PWM是采用定时器中断实现 /******************************** ...
- 【Proteus仿真】51单片机+555可调定时器电路
[Proteus仿真]51单片机+555可调定时器电路 Proteus仿真 程序代码 #include <reg52.h> #define uint unsigned int #defin ...
- 基于51单片机的可控硅调压调光程序-带过零检测
基于51单片机的可控硅调压调光程序-带过零检测 #include<reg52.h> #include<intrins.h> sbitledRS=P1^0; sbitledRW= ...
- 51单片机 PWM 直流电机调速+Proteus仿真
51单片机 PWM 电机调速+Proteus仿真 Proteus仿真 实例代码 /*用PWM控制电机脉冲频率应控制在25HZ-35HZ之间*//*定时1ms,1个周期30ms,脉冲频率为33HZ */ ...
- 51单片机七段数码管显示时钟无按键控制—①—74HC595版
参考链接: 51单片机七段数码管显示时钟加按键控制-③-74HC595版 51单片机七段数码管显示时钟加按键控制-②-74HC595版 文章目录 一.实验内容: 二.实验分析: 三.仿真图: 四.源代 ...
- 51单片机 外部时钟_基于51单片机的LCD12864显示模拟时钟
今天要分享的仿真和程序是基于51单片机的LCD12864显示模拟时钟.公众号之前也分享过数字时钟,但是那些时钟都是采用数字显示的形式来显示时间,而今天分享一个采用LCD12864显示的模拟指针式时钟. ...
最新文章
- HDU 1241Oil Deposits---(dfs)
- ifstream 打开中文路径乱码问题处理
- C# - DynamicObject with Dynamic
- java robot 控制 不用用户 界面_编写一个基于Java Robot类的屏幕捕获工具
- 使用Gradle构建和应用AST转换
- linux显卡内核修改,iTOP-4412开发板-驱动-linux显卡驱动的修改方法
- java comparator排序顺序_Java 集合排序策略接口 Comparator
- java mathrandom函数_java Math数学工具及Random随机函数
- asp.net学习之GridView
- daocloud创建mysql_DaoCloud体验-使用node构建应用程序
- beego使用php,使用GO语言Beego框架开发一个简易留言板
- 未来教育题库 ***Java二级试题第27套***
- Linux 进程查看命令 ps top htop dstat
- zuk z2 android 8,【2018-12-13】ZUK Z2/Z2Pro ZUI 10 尝鲜 Android 8.1 By YouLinw
- H5动画实现---过渡
- opencv显示图片只显示部分(或认为图片太大)
- mac安装软件的一般目录
- 第3章 结构之法——电话号码对应英语单词
- Android studio中的警告Hardcoded text
- recon靶机实验实战演练
热门文章
- mac升级node版本(用n升级nodejs)
- 《平衡掌控者 游戏数值战斗设计》学习笔记(三)战斗公式
- Conky-colors详细教程
- ISP 接口隔离原则 Interface Seperate Principle
- 程序流程图、N-S图、PAD图
- AURIX Development Studio软件介绍
- virtualbox中linux设置NAT和Host-Only上网(实现双机互通同时可上外网)
- 2020软件测试自学全套教程-基于python自动化软件测试-2020新版软件测试中级程序员学习路线
- 20分钟让你了解OpenGL——OpenGL全流程详细解读
- 通过瑞利判据对显微镜物镜进行分辨率研究