基于单片机的数字时钟系统设计

发布者:疯狂小马最新更新时间:2022-04-21 来源: eefocus关键字:单片机 手机看文章 扫描二维码
随时随地手机看文章

#include

 

#define uchar unsigned char

 

#define uint  unsigned int

 

uchar sec = 6, min = 6, hou = 6, a = 0, b = 0, c = 0;

 

uchar num = 0, cmd = 0;

 

uint time = 0;

 

uint flag = 0;

 

sbit P30 = P3^0;

 

sbit P35 = P3^5;

 

sbit P32 = P3^2;

 

sbit P33 = P3^3;


uchar code tab[]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0xbf, 0xff, 0xc6};//数码管显示数字

 

void delay(uchar i);

 

void time_rec();

 

void display();

 

void displaym();

 

void keyscan();

 

void led_display();

 

void init();


void delay(uchar i)

 

{

 

uchar j;

 

while ((i--) != 0)

 

{

 

for(j = 0; j < 125; j--);

 

}

 

}

 

 

 

void time_rec()

 

{

 

if(sec == 60)

 

{

 

sec = 0;

 

min ++;

 

if(min == 60)

 

{

 

min = 0;

 

hou ++;

 

if(hou == 24)

 

{

 

hou = 0;

 

}

 

}

 

}

 

}

 

 

 

void display()

 

{

 

P1 = 0X01;//位选第一个数码管

 

P2 = 0x20;//打开段选

 

P0 = tab[hou / 10];//显示数字

 

  P2 &= 0x1f;//关闭段选

 

P2 = 0xff;

 

delay(4);

 

 

P1 = 0x02;

 

P2 = 0x20;

 

P0 = tab[hou % 10];

 

P2 &= 0x1f;

 

delay(4);

 

 

P1 = 0x04;

 

P2 = (P2&0x1f)|0x20;

 

P0 = 0xbf;

 

P2 &= 0x1f;

 

delay(4);

 

 

 

P1 = 0x08;

 

P2 = (P2&0x1f)|0x20;

 

P0 = tab[min / 10];

 

P2 &= 0x1f;

 

delay(4);

 

 

 

P1 = 0x10;

 

P2 = (P2&0x1f)|0x20;

 

P0 = tab[min % 10];

 

P2 &= 0x1f;

 

delay(4);

 

 

P1 = 0x20;

 

P2 = (P2&0x1f)|0x20;

 

P0 = 0xbf;

 

P2 &= 0x1f;

 

delay(4);

 

 

P1 = 0x40;

 

P2 = (P2&0x1f)|0x20;

 

P0 = tab[sec / 10];

 

P2 &= 0x1f;

 

delay(4);

 

 

 

P1 = 0x80;

 

P2 = (P2&0x1f)|0x20;

 

P0 = tab[sec % 10];

 

P2 &= 0x1f;

 

delay(4);

 

 

 

}

 

void keyscan()

 

{

 

if(P35 == 0)

 

{

 

delay(5);

 

if(P35 == 0)

 

{

 

cmd = cmd + 1;

 

}

 

while(P35 == 0) {display();}

 

}

 

 

if(P32 == 0)

 

{

 

delay(5);

 

if(P32 == 0)

 

{

 

EX0 = 1;

 

}

 

while(P32 == 0) {display();}

 

}

 

 

if(P33 == 0)

 

{

 

delay(5);

 

if(P33 == 0)

 

{

 

EX1 = 1;

 

}

 

while(P33 == 0) {display();}

 

}

 

 

 

}

 

 

 

void init()

 

{

 

ET0 = 1;

 

TMOD = 0x11;     //time0为定时器,方式1

 

TH0 = (65535 - 50000) / 256;      //预置计算初值

 

TL0 = (65535 - 50000) % 256;

 

 

ET1 = 1;

 

TH1 = 0xff;

 

  TL1 = 0xff;

 

 

IT0 = 1;         //低电平有效

 

IT1 = 1;

 

 

TR0 = 1;         //为1时启动计数

 

TR1 = 1;

 

EA = 1;

 

 

}

 

 

 

int main()

 

{     

 

P3 = 0xff;       //初始化P3口,全设为1

 

init();

 

 

while(1)

 

{

 

display();

 

time_rec();

 

 

keyscan();

 

}

 

 

return 0;

 

}

 

 

 

void timer_0() interrupt 1

 

{

 

TH0 = (65535 - 50000) / 256;

 

TL0 = (65535 - 50000) % 256;

 

time++;

 

if(time == 20)

 

{

 

if(flag == 0)

 

{

 

sec++;

 

time = 0;

 

}

 

else

 

{

 

time = 0;

 

}

 

}

 

}

 

 

 

void T1_int() interrupt 3 using 2        //中断T1 用于 可在时间校准的减

 

{

 

if(cmd != 0)

 

{

 

cmd = 0;

 

TH1=0xff;

 

TL1=0xff;

 

switch(num)

 

{

 

case 1:hou = hou - 1;if(hou <= 0) hou = 23;break;

 

case 2:min = min - 1;if(min <= 0) min = 59;break;

 

case 3:sec = sec - 1;if(sec <= 0) sec = 59;break;

 

default:break;

 

}

 

}

 

 

}

 

 

 

void I0_int() interrupt 0         //外部中断0 用于校准时间在时、分、秒之间进行切换

 

{

 

num = num + 1;

 

if(num == 3)

 

{

 

flag = 1;

 

}

 

if(num == 4)

 

{

 

flag = 0;

 

num = 0;                                        //退出调时功能

 

}

 

}

 

 

 

 

 

void I1_int() interrupt 2                       //外部中断1 用于调时的加 

 

{

 

EX1 =0;

 

  switch(num)

 

  {

 

case 1:hou = hou + 1;if(hou >= 24) hou = 0;break;

 

       Case 2:min = min + 1;if(min >= 60) min = 0;break;

 

case 3:sec = sec + 1;if(sec >= 60) sec = 0;break;

 

    default:break;

 

  }

 

}

关键字:单片机 引用地址:基于单片机的数字时钟系统设计

上一篇:基于单片机的简易电子琴系统设计(程序)
下一篇:基于单片机的CO浓度检测及报警系统设计

推荐阅读最新更新时间:2024-11-10 10:21

51单片机8*8点阵显示
显示的是0-9数字显示,还有文字显示,请关注微信公众号“伊斯电子编程”免费获取。 仿真图: 代码:
[单片机]
51<font color='red'>单片机</font>8*8点阵显示
5-基于51单片机的仓库三路温度检测调节系统设计
具体实现功能 具体功能: 1、采用三个DS18B20温度传感器测温并用LCD1602显示三个温度值,并显示三路温度平均值; 2、按键为设置按键、加键和减键,可设置上下限温度控制范围; 3、当平均温度值超过设定的上或下限时,相应的指示灯亮,同时相应的继电器吸合,继电器可以驱动负载工作; 4、当平均温度值超过设定的上限时,继电器吸合,风扇转动表示降温; 5、当平均温度值低于设定的下限时,继电器吸合,加热膜工作表示升温。 单片机介绍 51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多
[单片机]
5-基于51<font color='red'>单片机</font>的仓库三路温度检测调节<font color='red'>系统</font>设计
MSP430G2553与MSP430F5336系列单片机总结[4]——比较器B的使用
比较器B是什么,顾名思义,它其实就是用来比较模拟电压+输入端和-输入端的电压大小,然后设置输出信号CBOUT的值的,如果 + 端电压高于 - 端电压,则CBOUT置高,否则置低。主要的控制寄存器有CBCTL0,CBCTL1,CBCTL2,CBCTL3,CBINT,CBIV,在MSP430G2553中没有比较器B,但是F5336中有,所以接下来的代码全都是F5336的比较器B使用程序: 1.比较器B输入通道CB0接外部模拟输入信号,并且引至比较器+输入端,内部参考电压发生器利用共享电压源产生2.0V参考电压。最后当CB0输入模拟信号电压高于2.0V时,CBOUT输出高电平,当CB0输入模拟信号电压低于2.0V时,输出低电平
[单片机]
STC单片机AD和EEPROM的程序设计C代码
/*---------------------------------------------------------------- *File Name: stc_AD.c - *Description: A/D 转换程序 *Project: - *MCU type: STC12C5410AD - - *Company: WY - *Compiler: KEI
[单片机]
单片机数据采集常用算法
u8 TPAD_Init() { u16 buf ; u16 temp; u8 j,i; for(i=0;i 10;i++)//10次采样 { buf =TPAD_Get_Val(); delay_ms(10); } for(i=0;i 9;i++)//升序排列 { for(j=i+1;j 10;j++) { if(buf buf )// { temp=buf ; buf =buf ; buf =temp; } } } temp=0; for(i=2;i 8;i++)temp+=buf ;// ¼ 8 &
[单片机]
单片机四组按键控制LED的不同状态
单片机源程序如下: #include reg52.h #define uchar unsigned char #define uint unsigned int void DelayMS(uint x) { uchar t; while(x--) { for(t=0;t 120;t--); } } void main() { uchar k,t,Key_State; P0 = 0xff; P1 = 0xff; while(1) { t = P1; { DelayMS(10);
[单片机]
<font color='red'>单片机</font>四组按键控制LED的不同状态
一种微型生态花园控制系统设计
摘 要: 以STM32F407ZGT6单片机为核心控制器设计了一种微型生态花园控制系统,将传感器技术、Wi-Fi技术、摄像头技术、自动追光技术、μC/OS-Ⅲ实时操作系统结合起来,实现对花园环境以及动植物情况的实时监控和及时控制,并具有环境温度、环境湿度、土壤湿度、光照强度监控,鱼缸自动换水、增氧以及宠物自动喂养等功能。 0 引言 随着城市生活节奏越来越快,都市白领人群也越来越多地希望绿色微生态能够进入自己的家庭阳台空间,开始更多地从生态角度改善自己的生活环境。 当前物联网技术的应用,使得生态空间的控制技术朝人工智能化方向迅速发展 。新技术的应用使得微生态阳台花园的管理通过智能自动化系统实现了实时控制,代替了原有落后的开关
[单片机]
一种微型生态花园控制<font color='red'>系统</font>设计
Silicon Labs推针对电机控制而优化的8位MCU
Silicon Labs(芯科实验室有限公司)宣布推出针对低成本电机控制应用而设计的高集成度、功能丰富的8位微控制器(MCU)。新型的C8051F85x/6x MCU具有高级模拟和通信外设、2kB-8kB Flash存储器、高性能、小封装和低价格,使得它们非常适合无刷直流电机控制等应用,例如遥控直升机和汽车、个人电脑和电风扇、电动工具和小家电。F85/6x MCU也非常适合其它消费和工业类应用,例如电源、电池充电器、机顶盒、投影机、照明设备和光收发模块。此外,这些经过AEC-Q100认证的MCU也能用于汽车车身电子应用中,例如电动车窗升降器和电动座椅等。 当今的嵌入式开发人员正在寻求低成本的混合信号MCU解决方案,这些方案需
[单片机]

推荐帖子

固件下载 | 飞凌OK3568-C开发板深度评测结论大公开
开发环境:主机:Ubuntu18.04开发板:OK3568-C开发板飞凌嵌入式OK3568-C开发板可以使用USBOTG烧写和TF卡烧写,其中USBOTG是最常用的烧写方式,一般在系统变转后使用该方式。笔者在本文中将讲解单个统一固件烧写的方式。1依烧写(更新)固件前准备工作1.安装RKUSB驱动在更新固件前,需要安装RKUSB驱动。下载Release_DriverAssistant.zip,解压,然后运行
小螃蟹呀 ARM技术
大家觉得哪款电容触摸芯片防水误触发效果好?
大家用过的或者在用的电容触摸芯片,防水误触发,稳定性和可靠性效果好的有那些?欢迎评论区讨论交流!大家觉得哪款电容触摸芯片防水误触发效果好?AZOTEQ触摸芯片比如他的iqs133感觉还不错。新人路过,没用过这么高级的芯片,特来学习一二。新定义好像有,可以去了解了解。ICMAN电容式触摸芯片,淋水环境下,按键不会误触发。满足复杂应用中对稳定性、灵敏度、功耗、响应速度、防水、带水操作、抗电磁干扰等要求,芯片不会因环境条件的改变或长期使用而发生变化,可以适应复杂多
ICMAN 分立器件
中国汽零部件商的素质都这样????
是否因为我们中国汽车零部件的技术水平相比先进技术有些差距,导致这些中国汽车零部件场馆的参展商态度、素质的差劲?走进场馆,非常热情的有人迎来,温柔的询问:“您好,您是做外贸的吗?”答曰:“不是,我是传媒”掉头就不理你了。咦,心里有个疑问:“为什么呢?”终于有个女孩眼睛都不待看的、懒懒的、
babbage 汽车电子
FPGA应该从哪起步?希望各位大侠不吝赐教,谢谢
刚刚开始学习电子设计,明年将参加电子设计大赛,想学一下FPGA,不知从何起步,希望能得到各位大侠的指教,不胜感激!FPGA应该从哪起步?希望各位大侠不吝赐教,谢谢你先学学基础类的东西,比如说编程语言,买个小板子琢磨,多看看基本的设计,领悟其中的思路和算法等等!语言1.你觉的FPGA是什么样的东西啊?2.你觉的FPGA可以做点什么啊?3.你想用FPGA来实现什么功能啊?4.实现这些功能需要什么支持?软件编写和硬件平台5.你觉得如果你一定要用FPGA,你觉得你还欠
450678797 FPGA/CPLD
最后3天报名 | ST 邀你赴一场 NFC 盛会!参会赢京东卡
在这个日益变化的数字化时代,NFC技术正以前所未有的速度融入我们的生活。它不仅简化了我们的日常交互,还为智能设备提供了更加安全、高效的通信方式。意法半导体(ST)一直走在技术革新的前沿,致力于将这项技术的潜力最大化。今年,ST将带来更多创新与洞见诚挚邀请您参加即将在北京举办的NFC研讨会!本次活动将深入探讨如何在新能源、物联网、智能家居和医疗健康等领域,通过我们的ST25NFC/STSAFE-A/ST4SIM产品系列,实现更安全、更流畅的连接。会议时间
EEWORLD社区 嵌入式系统
【2024 DigiKey 创意大赛】LED立方体
LED桌面立方体一、作品简介本作品为led桌面立方体,类似的作品其实之前在中文互联网上出现过很多,但大多没有框架或需要外接电源。如图左,骰子为6片pcb焊接而成,优点是集成了电池,但单面led密度仅为3*3,同时焊接的连接方式较为麻烦,若量产需要专门定制治具,外漏的金属焊接点也易与桌面的物品碰撞导致短路。图右使用了6片RGBLED点阵屏,屏幕本身有塑料框架,屏幕间使用角码固定,使用树莓派驱动,优点为led密度高,但因为功耗大(全套设备最大功耗近60w),使用外部供电,
Lucheni DigiKey得捷技术专区
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved