当前位置:网站首页 > 智能合约开发 > 正文

智能电子钟单片机设计报告(智能电子钟单片机设计报告总结)



基于单片机的音乐电子时钟设计与实现摘要在当今社会,随着电子技术的迅速发展,在人们生活的各个领域中都开始出现了各种电子产品,不仅推动了社会的发展和社会信息化程度的提高,并且也推动了各行各业的兴起与淘汰,电子领域竞争激烈,更新换代也是十分的频繁。在这个生活节奏飞快的年代,时间管理规划逐渐地引起了人们的重视,在古代,人们并不精细的区分每一分每一秒,只是大致的区分时辰,随着时代的发展,人们的需求也越来越广泛,计时方式也越来越多。对于那些时间观念差的人,把握不好时间会引起不少麻烦。所以,用数码管作为显示器的可定时电子闹钟比传统指针式的具有更大的优势,因为它一目了然,简单明了,读数快,时间精准到秒。电子数码管时钟是采用数字电路来实现时、分、秒的显示,精准度远高于传统机械指针时钟。在此次设计中,我用了LED数码管显示,一天二十四小时制的方式来计时,然后根据数码管显示原理来完成各种操作。我们设计的电子时钟具有基本的显示时间功能,并且可以调整时间。它体型精致小巧,价钱也很便宜,又精准,方便携带,因此特别受广大消费者的喜爱。关键字:数字电子钟LED数码管单片机目录TOCo"1-3"h☉81概述 附录3源程序功能:六位数码管显示时分秒,整点半点报时,夜间只有灯光提醒二十四小时制到整点时长鸣1次,LED闪烁10次到半点时短促鸣响1次,LED闪烁5次制作说明:P0接数码管段选,P2低6位接数码管位 /#include<reg52.h>//头文件#defineucunsignedchar//宏定义#defineuiunsignedint //宏定义sbitLED=P3^3;//定义LEDsbitkey1=P3^4;//定义调小时sbitkey2=P3^5;//定义调分钟sbitkey3=P3^6;//定义秒清零sbitbeep=P3^7;//设蜂鸣器ucmin,hour,sec,led,num;//无符号字符型变量bitbdatahourLED,halfLED,hourbeep,halfbeep;//位变量uccodetab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};/*0,1,2,3,4,5,6,7,8,9,.*///共阴极编码voiddelay(uix)//1ms延时函数{ uii,j; for(i=0;i<x;i++) for(j=0;j<121;j++);}voiddisplay()//扫描显示函数,高位到低位{ P0=tab[hour/10];//给小时的十位送形 P2=0xdf;////位选 delay(1);//延时动态扫描 P2=0xff;//关闭位选 P0=(tab[hour%10])|0x80;//给第二位后加“点 P2=0xef;// delay(1); P2=0xff; P0=tab[min/10]; P2=0xf7;// delay(1); P2=0xff; P0=(tab[min%10])|0x80;//给第四位后加“点” P2=0xfb;// delay(1); P2=0xff; P0=tab[sec/10]; P2=0xfd;// delay(1); P2=0xff; P0=tab[sec%10]; P2=0xfe;// delay(1); P2=0xff;}voidkeyscan()//键盘扫描,开关接地{ if(key1==0) //如果小时加按键按下 { delay(5);//延时去抖 if(key1==0) //确定是否按键 { hour++; //小时加一 if(hour==24)//如果小时等于24 hour=0; //小时归零 } while(!key1)display();//判断是否松开 } if(key2==0) //如果分钟加按键按下 { delay(5);//延时去抖 if(key2==0) //确定是否按键 { min++;//分钟加一 if(min==60)//如果分钟等于60 min=0; //分钟归零 } while(!key2)display();//判断是否松开 } if(key3==0)//判断调整秒按键 { delay(5);//延时去抖 if(key3==0) //确定是否按键 {sec=0;}//秒清零 while(!key3)display();//判断是否松开 }}voidstrike()//报时函数{ if((hour>6)&&(hour<22))//判断大于6点并且小于22点 { if(sec==0)//以下判断是否整点 { if(min==0)//如果秒和分都等于0 { hourbeep=1; //那么蜂鸣器和小灯位开启 hourLED=1; } elseif(min==30)//如果分钟等于30 { if(num<10) //闪5下响一声 halfbeep=1; halfLED=1; } } } else//小于6点和大于22点的时候 { if(sec==0)//以下判断是否整点 { if(min==0)//如果分钟等于0 hourLED=1;//led位开 elseif(min==30)//如果分钟=0 halfLED=1;//进行半点报时 } }}voidinit()//初始化函数{ sec=0;//一通电,显示12:30:00,蜂鸣器响一下 min=30; hour=12; TMOD=0x01;//设置定时器为定时器0工作方式为1 TH0=(65536-50000)/256; //赋初值 TL0=(65536-50000)%256;//赋初值 EA=1;//开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器0}voidmain()//主函数{ init();//初始化 while(1)//主循环 { display();//显示 keyscan();//扫描是否有键按下 strike();//报时函数 }}voidtime0()interrupt1//定时器中断{ TH0=(65536-50000)/256;//重赋初值 TL0=(65536-50000)%256;//重赋初值 num++; if((num%10==0)&&(hourLED==1))//整点报时 { led++; LED=~LED;//取反实现闪烁 if(led==20) //闪10次 { led=0; //之后关闭闪烁 LED=1; hourLED=0; } } elseif((num%10==0)&&(halfLED==1))//半点报时 { led++; LED=~LED;//取反实现闪烁 if(led==10)//闪5次 { led=0;//关闭闪烁 LED=1; halfLED=0; } } if(hourbeep==1) //蜂鸣器响标志位 { if(num==1) beep=0; if(num==20) //长响次之后 { beep=1; //关闭 hourbeep=0; } } elseif(halfbeep==1)//蜂鸣器响标志位 { if(num<10) beep=0; if(num==10) //短响之后 { beep=1; //关闭 halfbeep=0; } } if(num==20) //计时20次为1s时间 { num=0; sec++; //

到此这篇智能电子钟单片机设计报告(智能电子钟单片机设计报告总结)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 智能电子钟单片机设计实验报告(单片机电子钟实训报告)2025-02-23 19:36:05
  • 智能电子钟单片机设计实验报告(智能电子钟单片机设计实验报告心得体会)2025-02-23 19:36:05
  • 探秘SMARTS:华为打造的智能移动机器人仿真平台2025-02-23 19:36:05
  • EOS智能合约开发-智能合约编写_智能合约 eos2025-02-23 19:36:05
  • 区块链智能合约开发_区块链智能合约开发与保障问题2025-02-23 19:36:05
  • 区块链2——Solidity智能合约开发_区块链智能合约项目能玩多久?2025-02-23 19:36:05
  • 【智能合约】智能合约开发指南_智能合约开发教程2025-02-23 19:36:05
  • 智能电子钟单片机设计带温度模块(用单片机实现电子钟的设计)2025-02-23 19:36:05
  • 单片机设计(智能电子钟单片机设计)2025-02-23 19:36:05
  • t16遥控器协议(t06y-2g4智能遥控器怎么对码)2025-02-23 19:36:05
  • 全屏图片