51单片机6位数码管时间显示与设置教程

51单片机6位数码管显示时间

C5 1 微控制器六位数数字管时钟用于用数字管点与三个键设置时间:设置键:设置 - 设置 - > MINUSE - > MINUSE设置 - >结束设置,两位数的数字管,代表小时设置的小时设置 状态闪烁,两位数的数字管指示分钟设置更改键时分钟闪烁:在小时设置状态和分钟设置状态设置键:将秒设置为零C语言 代码://main.c#include typeDefunSignedIntuint; typeDefunSignedCharuchar;#defineKeyp2 #definekeymask0x07 sbitle1 = p2 ^6 ; //定义位端口sbitle2 ucharkeypre ssdown = 0x00; ucharkeyrelease = 0x00; ucharlastkey = 0x00; ucharmode; externucharhh; externucharhh; externucharmm; externucharss; externbitt_cycle; externbitt_cycle; externVoidT0_Init(void); //初始化计时的数字,函数函数,函数,函数,函数,函数,函数 timer.cucharcodenum [] = {0xc0,0xf9 ,0xa4 ,0xb0,0x9 9 ,0x9 2 ,0x8 2 ,0x8 2 ,0xf8 ,0x8 0,0x9 0}; voiddelay(uintt)//延迟t时钟周期{while(t-); } voidh_increase(void)//小时增加1 {if(hh <2 3 )hh ++; else {hh = 0;}} voidm_increase(void)//分钟增加1 {if(mm <5 9 )mm ++ = 0; h_增加();}} voids_increase(void)//增加1 秒{if(ss <5 9 )ss ++; else {ss = 0; m_increase();}} voiddisplay(ucharseg,uchardigi)//显示一个单个数字管,seg = 0-9 号,digi = digi = bit 0-6 {le2 = 1 ; p0 =(0x01 << digi); le2 = 0; p0 = 0x00; le1 = 1 ; p0 = num [seg]; if(digi == 1 || digi == 3 )p0&= 0x7 f; //显示定界线 延迟(5 0); p0 = 0xff; le1 = 0;} voidmain(void){p0 = 0xff; le1 = 0; le2 = 0; t0_init(); while(1 ){if(mode!= 1 || t_cycle) {display(hh/1 0,0); //显示ten-digit显示(hh%1 0,1 ); //显示的单二与 小时} if(mode!= 2 || t_cycle){display(mm/1 0,2 ); //显示ten-digit显示(mm%1 0,3 ); // //显示单位分钟}显示(ss/1 0 ,4 ); //显示秒显示的十个数字(SS%1 0,5 ); //显示秒的单位数字}} voidkey_process(void)//键处理程序 {uCharCurrkey; key | = keymask; //设置IO对应于输入状态currkey =(〜key)&keymask; keyMask; keyPressDown =(〜lastKey)&currkey; keyRelease; keyRelease = lastKey&(〜currkey) ; lastKey = currkey; switch(keyRelease){case1 :if(mode == 2 )模式= 0; elsemode ++; break; break; case2 :if(mode == 1 )h_increase(); if(mode == 2 )m_increase() ; break; case4 :ss = 0; break; break;默认:break;}} // timer.c#include typeDefunSignedIntuint; typefunsignedIntuint; typ edefunsignedcharuchar; ucharhh; ucharhh = 1 4 ; //小时初始值UCHARMM = 2 ; // minute ucharmm = 2 ; // minute 初始值UCHARSS = 5 5 ; //第二个初始值Uintu_1 0ms = 0; // 1 0ms Count bitt_cycle = 0; 外部VoidKey_Process(void); factervoids_increase(void); voidt0_init(void){tmod&= 0xf0; tmod | = 0x01 ; //计时器分配了初始值,时间时间为1 0ms。
th0 = 0xd8 ; tl0 = 0xf0; tr0 = 1 ; ie = 0x8 2 ;} voidt0_intsrv(void)interrupt1 {//计时器再次开始计时。
th0 = 0xd8 ; tl0 = 0xf0; u_1 0ms ++; if(u_1 0ms%2 0 == 0)// 2 00ms {t_cycle =!t_cycle; // flashing loop} if(u_1 0ms> 9 9 )// 1 000ms = 1 second = 1 second {u_1 0ms = 1 second {u_1 0ms = 0; s_increase ();} key_process(); //设置键 处理} proreus仿真电路:

单片机控制8位数码管,显示年月日和时分秒,但是这两者该如何切换呢?

有两种改变的方法。
一个是手册。
这意味着使用该按钮每月显示一个月和一天。
然后单击以显示时钟,然后按。
再次按。
另一个是自动切换的。
它可以在几秒钟内及时显示。
请注意,小时和温度表面可以在运输车上自动转换。

单片机控制多位数码管的电子时钟程序

使用微控制器检查多个数字管的电子时钟并使用独立按钮来控制它,该按钮可以查看时间和日期并具有警报功能。
Keil Engineering C语言代码: /**** ****************************************数字管:现在显示数字管的日期,可以调整小时和日期,并可以设置警报,并发出警报声音一分钟。
*************************特定tt,t,numdu,set,aclock,rili; unsignedlongintime,time1 = 0; unsignedlongintacond,现在,现在,年= 2 01 2 ,月= 1 2 ,day = 3 1 ; uchaccodedu [] = {0x3 f,0x06 .0x5 b,0x4 f,0x6 6 .0x6 d,0x7 d,0x07 .0x7 f,0x6 6 f,0x7 7 .0x7 c,0x3 9 .0x5 e [uChacodeWewe [uCharCodoDewe [uCharCodoDewe [Ucharcododewe [ucharcododeweewe] [uchacodewewew [ucharcododewe [ucharcodewe [ucharcodewe; ] = {0xfe,0xfd,0xfb,0xf7 ,0xef,0xdf,0xbf,0x7 f}; Ucharmth [1 3 ] = {0.3 1 ,2 8 ,3 1 .3 0,3 1 .3 0,3 1 .3 1 ,3 0,3 1 .3 0,3 1 }; //每月ucharymth [1 3 ] = {0.2 ,9 ,2 ,1 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,1 ,1 ,1 ,2 }的相应天数; ; sbitbeep = p2 ^2 ; // ring voiddelay(uintdel); //显示显示延迟程序(UINSD,UINTMM,UINTHY); //显示voidadd()程序; //添加vaidalarmclock(); // amerge clock voidinit(); //初始化intclock(); //计算时间voidCalender(); // voidmain计算日期(){p2 = 0xff; init(); 而(1 ){add(); 如果(rili == 1 )//日期日历和时间显示(日,月,年); Elsedisplay(第二,分钟,现在); alarmecllock();}}} vouddisplay(uintsd,uintmm,uinthy){inty0,y1 ,y2 ; 如果(rili == 1 ){y0 = hy/1 000,y1 = hy%1 000; y2 = hy%1 00;} per(numwe = 0; numwe8 ; numwe ++){p0 = 0xff; wela = 1 ; p0 =我们[number]; wela = 0; p0 = 0xff; dula = 1 ; switch(numwe){cause0:p0 =(tt == 1 set == 1 )? 0x00 :( rili == 1 )? du [y0]:du [hy/1 0]; 休息; case1 :p0 =(tt == 1 set == 2 )? 0x00 :( rili == 1 )? DU [Y1 /1 00]:DU [HY%1 0]; 休息; case2 :p0 =(rili!= 1 )? 0x4 0 :( tt == 1 set == 3 )? 0x00:du [y2 /1 0]; 休息; CAS E3 :p0 =(tt == 1 set == 4 )? 0x00 :( rili == 1 )? DU [HY%1 0]+0x8 0:DU [mm/1 0]; 休息; case4 :p0 =(tt == 1 set == 5 )? 0x00 :( rili == 1 )? DU [mm/1 0]:du [mm%1 0]; 休息; case5 :p0 =(rili!= 1 )? 0x4 0 :( tt == 1 set == 6 )? 0x00:dU [mm%1 0]+0x8 0; 休息; case6 :p0 =(tt == 1 set == 7 )? 0x00:DU [SD/1 0]; 休息; case7 :p0 =(?trusomat 5 mstl0 =(6 5 5 3 6 -5 0000)%2 5 6 ; //低计时器8 位ie = 0x8 f; //打开中断tcon = 0x1 5 ; //启动计时器和工作模式} intclock(intclock()//计算时间{if(t == 1 0 | t == 2 0)tt =! if(t == 2 0){t = 0; 2 4 ){time = 0;}}} else {second = time1 %6 0;}}}}}}}}}} voiddelay(uintdel){uinti,j; (j = 0; j1 00; j ++);} vouptimer0()intruption1 //计时器0中断{th0 =(6 5 5 3 6 -5 0000)/2 5 6 ; Interrupt0 // it0 {if(key0 == 0){delay(2 ); key0);}}}} voidCalendar()interrupt2 / / calendar {if(key3 == 0){delay(2 ); 如果(key3 == 0)rili =! rili; set = 0; aclock = 0;}}} voidCalender()//计算日历{if(time = = 8 6 4 00){day ++; if(((年%4 == 0年%1 00!= 0)|(年%4 00 == 0))mth [2 ] = 2 9 ; Elsemth [2 ] = 2 8 ; if(天[月]){day = 1 ; 一个月++; 如果(月1 2 ){月= 1 ; year ++;}}}}} vaidadd()//添加一个{intge,ge1 ,ge2 ,shi,shi,shi1 ,shi2 ,shi2 ,bai2 ,qian2 ; if(rili == 1 ){ge = day%1 0; ge1 = mo nth%1 0; GE2 =年%1 0; shi =天/1 0; shi1 =月/1 0; shi2 =年%1 00/1 0; bai2 =年%1 000/1 00; Qian2 = Year/1 000;} else {ge =第二%1 0; GE1 =分钟%1 0; GE2 =小时1 0; shi =第二/1 0; shi1 =分钟/1 0; shi2 = hour/1 0;} if(key1 == 0){delay(2 ); if(ke y1 == 0){if(rili == 1 ){if((((eNem%4 == 0年1 00!= 0))|(年%4 00 == 0))ymth [2 ] = 1 0; Elseymth [2 ] = 9 ; switch(set){case1 :qian2 =(qian2 +1 )%1 0; 休息; case2 :bai2 =(bai2 +1 )%1 0; 休息; case3 :shi2 =(shi2 +1 )%1 0; 休息; 案例4 :GE2 =(GE2 +1 )%1 0; 休息; case5 :shi1 =(shi1 +1 )%2 ; 休息; case6 :ge1 =(shi1 == 1 )? (GE1 +1 )%3 :(GE1 +1 )%1 0; 休息; case7 :shi =(月== 2 )? (SHI+1 )%3 :(SHI+1 )%4 ; 休息; case8 :ge =(shi == 3 )? (ge+1 )%ymth [月] :(月== = 2 )? (GE+1 )%ymth [2 ] :( GE+1 )%1 0; 暂停;}年= Qian2 *1 000+bai2 *1 00+shi2 *1 0+ge2 ; 月= SHI1 *1 0+GE1 ; 休息; 案例2 :GE2 =(GE2 +1 )%4 ; 休息; case4 :shi1 =(shi1 +1 )%6 ; 休息; 案例5 :GE1 =(GE1 +1 )%1 0; 休息; CAS E7 :shi =(是+1 )%6 ; 休息; 案例8 :GE =(GE+1 )%1 0; 休息;} second = shi*1 0+ge; 分钟= shi1 *1 0+ge1 ; 小时= shi2 *1 0 +ge2 ; if(aclock == 0)时间=现在*3 6 00+分钟*6 0+秒; ElSetime1 =现在*3 6 00+minute*6 0+sect;} while(!key 1 );}}}}}}}}}}} vaidalarmClock()//设置alarm arlard {if(key2 == 0){delays(delays(2 ); if(key2 == 0){while(!key2 ); 时钟= 1 ; rili = 0; set = 0; 而(1 ){if(rili == 1 )显示(日,月,年); Elsedisplay(第二,分钟,现在); 添加 (); if(key2 == 0){while e(!key2 ); 时钟= 0; set = 0; break;}}}}}}}引脚连接指令:1 Portapo porta 8 是一个常见的负数字管; 分别拘留片段和管子的位; 它可以选择警报,日期和时间。
相关推荐
罗马数字、八进制符号与中国算筹数码解析:揭秘不同数字体系的符号与用法
一是I,二是ll,一直到十用什么符号表事十:1、2、4、5、6、7、8、9,X。Roman数字是在欧洲使用的一种数字,然后引入阿拉伯数字(真正的印度数字)和印度数字),现在较少使用。它比中国导师骨的数字晚,然后是埃及人中的小数。但是,它的出现标志着进步或古老的文化。这不是数字0。2015年7月,
3C数码:涵盖计算机、通信与消费电子全解析
3c数码是什么意思3C数字是计算机,计算机和计算机。详细的解释如下:1在计算机字段中的计算机字段中,计算机字段中的计算机是各种智能手机,智能手机等。这些工具具有强大的计算机电源和存储空间,可以满足用户信息的用户。2这是个好主意。在电信领域,3C数字主要反映在无线通信技术中。例如
共阳极数码管与共阴极数码管段码对照表及编码解析
共阳极数码管abcdefg应该输入什么?共阴极数码管abcdefg应该输入什1段的细分市场的段显示1普通阳极的数字管段为F9H,通常阴极的数字管段代码为06H。2图2-13通常的数字阳极和普通数字阴极管的数字管的内部结构图。下表显示了通常的字母和屏幕关系7段(普通阴极数字管)。3我还没有找到屏幕上有效的七个片段,
手机电池优化技巧:Vivo/IQOO电池校正与电池寿命提升
手机补电需要输入什么Vivo/IQOO手机不会使用手机的电池低于20%。需要其他操作。k40电池校正虚电方法改善电池寿命和电池寿命的实用技能。智能手机的受欢迎程度。随着智能手机的普及,手机成为我们日常生活和工作的重要组成部分。然而,高级电池充电
热门文章
3C数码产品分类解析

3C数码产品分类解析

3c数码类目包括哪些3C数字类涵盖了计算机,通信和消费电子产品。这些产品通常包括计算机,平板电脑,智能手机,数码相机,步行,电子词典,音频和视频游乐场以及数字音频操作员。3C证书,全名是“强制性产品证书系统”,是一种用于评估中国政府根据法律法规实施的产品的系统,以确保消费者和国家安全安全的人身
2025-02-22
天津神州数码:专业IT服务,助力企业创新

天津神州数码:专业IT服务,助力企业创新

天津神州数码信息科技服务有限公司TianjinShenzhou数字信息技术服务有限公司是一家专注于信息技术服务的公司,决心为客户提供全方位的IT解决方案和高质量的服务。作为神经数字集团的重要成员,天津·申纽(TianjinShenzhou)数字信息技术服务有限公司。具有深厚的技术积累和丰富的行业经验,在信息技术服务领域取得了显着
2025-02-22
26字母数字对应表揭秘

26字母数字对应表揭秘

26个字母对应什么数字?对应26个字母的数字为:1a,2b,3c,4d,5e,6f,7g,8h,9i,9i,10j,10j,11k,12l,13m,14n,14n,15o,15o,16p,17q,17q,17q,18r,19s,22v,23W,23W,23W,24倍,25y,26z。基本上,首字母的图像或头部方法以及字母y可以视为橡皮枪。如果Abcdefghijklmnopqrstuvwxyz等于12345
2025-02-21
手机屏幕进水白斑修复攻略

手机屏幕进水白斑修复攻略

手机屏幕进水白斑修复方法1如果您的体内手机不小心获取水,导致白点出现在屏幕上,则应立即提出以下措施:2步骤1,立即关闭电话电源,然后删除SIM卡和SD卡。永远不要试图强制力量,因为这会使设备成为短路。3第二步是保持手机平坦,并使用干组织或柔软的织物小心地吸收屏幕和体内的水分。在操作过程中
2025-02-18
LED数码管静态显示优势解析及应用领域

LED数码管静态显示优势解析及应用领域

led数码管静态显示方式的优点是简单可靠的,清晰的视图,节省和储蓄和宽阔的应用领域。1简单可靠:静态显示方法是指直接控制段选择和每个数字管的位选择框架以实现静态视图,直接发送要显示在数字管道中的数字。此方法简单可靠,不需要频繁更新操作,从而减少了控制复杂性和错误的可能性。2.清除屏幕:由
2025-02-23
阿里巴巴聚交会助外贸转内销,近万商家共谋增长新机遇

阿里巴巴聚交会助外贸转内销,近万商家共谋增长新机遇

近万商家汇聚阿里“聚交会”!“春雷计划”助力外贸转内销!由阿里巴巴·朱胡苏恩(AlibabaJuhuasuan)组织的“高公平”(GaoFair)将于4月20日至4月20日举行,并吸引7,000多家商人参与和销售20,000多种产品,这将是工业贸易商的重要增长机会,尤其是外交贸易工厂今年的第一名。由于19日的流行病,SpringCantonFair被推迟到6月,
2025-02-20
数码信息历故障处理指南:断电归零、数字乱蹦、按键无反应解决法

数码信息历故障处理指南:断电归零、数字乱蹦、按键无反应解决法

数码信息历断电后时间归零了怎么办正如我所说,内存电池在永久评估中被打破,其目的是在停电期间保持自然运行的时间。打开永久日历,在内部找到电池,然后更改。数字信息日历也称为永久评估。数字信息评估采用了国际标准组件的设计,控制了独立芯片的内部数据的操作。由工艺创建的现代计时器产品。
2025-02-22
数码编程分区控制器功能解析与编程基础入门

数码编程分区控制器功能解析与编程基础入门

什么是数码编程分区控制器其功能的描述如下:1显示快速流动操作系统,LCD屏幕显示中国或英语图形的操作菜单。2这是个好主意。使用SD卡。mp3扩展在极限中,3主机是5分之一,具有10个功率分区和自动分区或手动分区。该节目可以在24小时内每周播放,并定期播放99次音乐。5内置手表功能和设置监
2025-02-20
推荐阅读

推荐 共阳极数码管段码计算及显示代码详解

数码管是共阳极接法,计算出LED数码管显示0-9的段码,列出分别用二进制数与十六进制数表示如果数字管为正,则低水平是有效的。,8-0x80,9-0x90。如果数字管完全为负,则高水平是有效的。0x07,8-7f,9-0x6f。共阳极与共阴极数码管的显示代码各是什么意思

推荐 数码宝贝进化路径全解析:揭秘不同类型数码兽的进化顺序

数码宝贝进化顺序Digimon的进化顺序根据Digimon的类型而变化。以下是一些主要数码兽的一些进化顺序:Agumon:滚动野兽→Agumon→霸王龙→机械霸王龙→对抗霸王龙。Gabumon:Unicorne→Gabumon→Garuru→OrcGaruru→Garuru。此外,还有另一种进化路线:Bunimon→Unicorne→Gabumon→Garuru→ORC→钢中的Garulu。BaruBeast:种子野兽→BaruB

推荐 揭秘数字字母对应关系与罗马数字起源及用法

数字对应字母A:1,B:2,C:3,D:4,E:5,F:6,G:7,H:8,I:9,J:10,K:10,K:11,L:12,M:12,M:13,n:14,o:15,p:16,q:17,r:18,s:19,t:20,u:21,v:22,w:23,x,x:24,y:25,25,Z:26英语开始成为教科书:大约在6世纪。罗马天主教传教士负责用语言记录当地人的口语。

推荐 数码管显示方式:静态与动态解析

数码管的显示是什么方式?有两种显示数字管的方法:静态显示和动态显示。1稳定的性能方法。SO称为的静态性能意味着数字管有多少个,同时处于性能位置。在微控制器系统中使用静态数字管显示时,必须在每个数字管中添加闩锁。当数字管处于稳定的显示模式时,彼此。静态显示器的优点是:数字管

推荐 数码师与影楼设计:技术、创意与审美解析

数码师是做什么的数字艺术家工作的主要责任与工作室后来的作品相似。数字工程师的工作包括公司设置的特定要求以及基于某些要求和特定要求的后处理和相册的布局设计。这项工作不仅需要技术能力,而且需要某些创造性和审美能力。在数字专业人员的工作中,您应该使用各种专业软件(例如Photoshop),调整颜色,

推荐 全面解析:3C数码产品及其行业概览

3c数码产品是什么3C数字产品是用于计算机,通信和消费电子产品的缩写。1计算机类别:最新产品的密集反映。半透明和人性化。性能主要涉及更少的面板,按钮,屏幕和纹理的处理。这主要是一条合理,完美的曲线和合适的,因为它与人的手密切相关。符合人体工程学原则。2通信类别:主要是手机