51单片机多功能LED点阵显示数字时钟
该数字时钟程序在蛋白质上运行良好,您可以单独设计电路。
该程序使用5 1 个微控制器,并通过两个P2 .5 和P2 .6 门控制数字管显示,并且使用P1 .0到P1 .7 门分别用于控制1 个按钮1 至按钮8 的状态的检测。
该程序通过计时器0实现第二级分布功能,并更新每0.2 5 6 秒显示数据,以确保时间显示的准确性。
在主函数中,首先调用起始函数以初始化微控制器,然后输入无限周期。
该按钮的状态在周期中进行了判断。
如果按下2 按钮,则程序将开始时间;如果按下了3 按钮,则暂停时间;如果按下4 按钮,则小时数增加了;如果按下5 按钮,则减少了小时数;如果按下6 按钮,则会增加数分。
如果按下7 按钮,则会减少分钟数;如果按下了8 按钮,则秒数增加了。
在开始函数中,定时器0初始化并设置为模式1 ,因此计时器0溢流速度为1 ms,定时器0的初始值为(6 5 5 3 6 -4 000)/2 5 6 和(6 5 5 3 6 -4 000)%2 5 6 ,确保计时器0每0.2 5 6 秒中断。
延迟函数用于延迟,z参数是延迟的数量,该函数使用两个 - 层级戒指来获得延迟。
在timer1 中断服务函数中,更新了计时器0的初始值,每0.2 5 6 秒更新计时时间,并且每两秒钟更新小时数的功能都可以判断可变k的值。
显示功能用于查看时间,通过P0端口检查数字管显示,并选择控制段以及通过P2 .5 和P2 .6 门选择位。
该函数计算小时数,分钟和秒,然后通过查看表将值转换为相应数字管的视图代码。
总体而言,该程序通过MicroController 5 1 实现了数字时钟的基本功能,包括显示时间,按钮的控制以及时间更新,具有很高的实用性和可操作性。
基于51单片机的自动打铃打鸣作息报时系统
5 1 个微控制器基于自动振铃和振铃时间管理系统,使用AT8 9 C5 1 微控制器和六个PNP晶体管来驱动2 4 小时LED LED数字管电子手表。
与现有系统相比,可以支持更多LED稳定显示器,但是默认情况下,成本不会更改。
该系统使用5 V电源,并配备了一个按钮来实现时间调整,调整和重新设计功能。
C语言驱动的定时数据每秒都会自动更新,而无需在输出状态下进行手动干预。
设计的核心功能是自动报告时间,使用2 Hz时序,并根据预装工作和休息时间使用戒指ULDING控件。
它由7 个段显示驱动程序的三个部分,一个蜂鸣器驱动程序和一个键控件组成,为时间修改和振铃控制提供了四个键。
目的是创建一个智能发声系统,该系统可以根据原定时间显示时间,例如凌晨6 点和晚上1 0:3 0。
硬件电路设计包括微控制器最小系统,7 段数字管显示,蜂鸣器驱动器和使用动态扫描驱动器LED,压电蜂鸣器声音和关键检测机制的密钥模块。
用AT8 9 C5 1 控制所有功能,例如2 4 小时显示,计时和密钥操作。
软件设计通常采用模块化,包括蜂鸣器铃声,7 个段显示和钥匙控制subsode。
主要程序流旨在调整和共鸣初始化,中断服务,显示时间,铃声时间比较,调整和铃声控制。
详细的硬件和软件调试系统已经确定了该功能的实现,并最终实现了可靠的,智能的工作和休息时间报告系统。
51单片机设计数码管显示时钟的程序怎么写
#include
#define uchar charuchar代码ledtab [] = {0x3 f,0x06 .0x5 b,0x4 f,0x6 6 .0x6 d,0x7 d,07 .0x7 f,0x7 f,0x4 0}; // 0-9 unsign char sec = 0,min = 0,小时= 1 2 ,扫描;签名的char,flashb,mode,时间; char未签名[8 ]; Sbit LED = P1 ^0;无效延迟(int x签名){签名int i,j;对于(i = 0; i 5 9 ){sec = 0;最小++; if(min> 5 9 ){min = 0;时钟++;如果(小时> 2 3 )小时= 0;}}}};休息;问题1 :if(time == 2 0){time = 0; if(sec> 0)sec-;其他if(min> 0){sec = 5 9 ; min-;} else if(hour> 0){sec = 5 9 ;最小= 5 9 ;小时 - ;}其他{ore = 0; min = 0; sec = 0; {th1 = 0xec; TL1 = 0x7 8 ;开关(扫描){问题0:p2 = 0x01 ; p0 = 〜LEDTAB [disdat [7 ]];休息;问题1 :p2 = 0x02 ; p0 = 〜LEDTAB [disdat [6 ]; 2 :p2 = 0x04 ; p0 = 〜LEDTAB [disdat [5 ]];休息;问题3 :p2 = 0x08 ; p0 = 〜LEDTAB [disdat [4 ]];休息;问题4 :p2 = 0x1 0; p0 = 〜LEDTAB [disdat [3 ]];休息; ca;约有5 :p2 = 0x2 0; p0 = 〜LEDTAB [disdat [2 ]];休息;问题6 :p2 = 0x4 0; p0 = 〜LEDTAB [disdat [1 ]];休息;问题7 :p2 = 0x8 0; p0 = 〜LEDTAB [disdat [0]];断点:默认值:默认值:默认值:默认值:默认值:默认值:默认值:默认值:默认值:默认值:默认值:默认值;休息;}扫描++;扫描%= 8 ;} main(){tmod = 0x1 1 ; th0 = 0x3 c; TL0 = 0xB0; th1 = 0xec; TL1 = 0x7 8 ; tr1 = 1 ; tr0 = 1 ; ET0 = 1 ; ET1 = 1 ; EA = 1 ; sec = 5 5 ;最小= 5 9 ;小时= 2 3 ;佛shbit = 0;扫描= 0;时间= 0;模式= 0; dischg();而(1 ){flash(); // flash if((P3 &0x0f)!= 0x0f){key = p3 &0x0f; while((p3 &0x0f)!= 0x0f); LED = 0;延迟(1 0);键| = 0xf0; switch(〜key){问题0x01 ://p3 .1 时间,分钟和第二秒以及秒tr0 = 0; flashbit+= 1 ; if(flashbit> 3 ){flashbit = 0; tr0 = 1 ;}休息;问题0x02 ://p3 .2 Tuning如果(flashbit == 0)break; if(flashbit == 1 ){小时++;如果(小时> 9 9 )小时= 0;} if(flashb == 2 ){min ++; if(min> 5 9 )min = 0;} if(flashb == 3 ){sec ++; if(sec> 5 9 )sec = 0; tr0 = 0; ++模式;模式&= 0x01 ; if(mode == 0){sec = 0; min = 0;小时= 0;
关于用51单片机做一个电子时钟的问题
这是为了将任何人添加到您的数字管显示语句中。
如您所说,在小时到几分钟之间添加一个任意添加小数点。
然后添加一个小时和数字显示语句。
该语句简单地说,增加的说明不会显示该数字,而是分别显示一个小点。
在循环中,始终以四个数字和小数点在序列中照亮。
人眼无法分辨差异,因此您可以实现效果。
此外,您需要LED闪光灯,代表几秒钟。
您可以使用计时器来完成程序观察。
没错 - 这不是一个好主意,尤其是数字管显示部分太整洁了。
该部分似乎已经自动增加了时间,并且在主处理上没有动摇的动作。
我不会说太多。
关于这个程序,我只为您写作,在测试过程中使用的端口,并且在我的开发板上成功测试之后,根据您的端口端口进行了更改。
如果您将其直接复制到程序中并且无法使用,请检查和更改端口,并在满足时记住要采用。
Sekiranya anda mempunyai sebarang pertanyaan, sila tanya saya pada bila -bila masa/************************************************************************ //#termasuk #include sbitp2 0 = p2 ^0; sbitp2 1 = p2 ^1 ; {0xc0,0xf9 ,0xa4 ,0xB0,0x9 9 ,0x9 2 ,0x8 2 ,0xf8 ,0x8 0,0x9 0}; // Digital Tube Digital Digital Digital Tube, M, S, T, N;/*************************************************************************************************************************************/voiddelay (charhs) // delay function {charhk; for (; hs> 0; hs-) {for (hk = 1 00; hk> 0; hk-);}}/************************************************************************* {Chard1 , D2 , D3 , D4 ; D1 =(XS/1 )%1 0; d2 =(xs/1 0)%1 0; D3 =(XH/1 )%1 0; D4 =(XH/1 0)%1 0; p0 = dis_2 [d1 ]; p1 = 0x08 ;延迟(1 0); p1 = 0x00; // sec单位数p0 = dis_ 2 [d2 ]; p1 = 0x04 ;延迟(1 0); p1 = 0x00; //十分位数p0 = 0x7 f;点p0 = dis_2 [d3 ]; p1 = 0x02 ;延迟(1 0); p1 = 0x00; //单数digit p0 = dis_2 [d4 ]; p1 = 0x01 ;延迟(1 0); p1 = 0x00; // Ten-Single Digits}/*************************************************************************************************************************************************/voidmain (void) {th0 = (6 5 5 3 6 -1 000)/2 5 6 ; TL0 =(6 5 5 3 6 -1 000)%2 5 6 ; tmod = 0x01 ; EA = 1 ; ET0 = 1 ; tr0 = 1 ; //临时计时器(1 )//主循环1 == 0){m ++; If (m> 5 9 ) {m = 0;}} temporarily (! P2 1 ) {xs (h, m) function}}/*******************************************************************/voidint1 () INTRUPT1 // INTERRUPT Timer {th0 = (6 5 5 3 6 -1 000)/2 5 6 ; if(t> 5 00){t = 0; LED = 〜LED;} // LED闪烁,如果(n> 1 000){n = 0; s ++;} //如果达到一秒钟,请添加一秒钟,如果(s> 5 9 ){s = 0; M ++;小时如果(H> 2 3 ){H = 0;} //如果达到2 4 小时,请说明小时}/********************************************************************************************************************************************************************************************************** ******************************************************************************************************************************************************************************************************************************************************************************************************
基于51单片机的数码管设计电子时钟,可以调时间的,怎么弄唉,大家帮帮忙
让我们讨论步骤:1 设计数字管驱动器电路。
通常,诸如9 01 3 或闩锁之类的晶体管(如7 4 HC5 7 3 )用于驱动它们,以便可以正常打开和关闭它们。
2 使用动态扫描允许数字管显示所需的数字。
这可以通过中断是否可以扫描。
3 使用Real -Time小时芯片(例如DS1 3 02 )获取所需的时间数据。
这样的网站上有许多资源程序,您可以找到它。
您需要学习的:(1 )开始芯片; (2 )获取时间数据; (3 )学习如何修改数据。
4 使用密钥修改时间数据。
有很多方法,请提供参考。
使用三个键,即:设置按钮(这是一个多路复用按钮,按一次进入设置模式,然后进行特定的位闪光灯,然后按下,然后让下一个位flash表示选择,表示已选择它,然后按确认设置直至指定的数字完成), +键和 - 键。
这不仅像更改数据一样容易,而且还涉及更改DS1 3 02 数据。
您需要关闭DS1 3 02 写保护功能并在设置完成后打开此功能。
我希望它能帮助您
