范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

基于51单片机电子时钟

  1 基于51单片机用LCD1602实现时-分的显示
  2. 按键控制时-分的调整
  3. 能实现整时报时的功能(蜂鸣器响)
  4. 闹钟模式
  5.按键切换模式(模式一:时-分显示,模式二:60秒倒计时)
  一、设计思路:
  主体:
  通过外部中断0来控制mod值;mod=0,1.2,3分别对应时钟模式,调整模式,闹钟设置模式,一分钟倒计时模式。
  细节:
  mod0
  通过定时计数器,每一秒增加变量秒(s),每60秒,增加1分(min)并且s置0,每60min,增加1小时h,当h>23,h=0;进行一天循环
  mod1
  按键控制增加min,h和s制0
  mod2
  另外设置变量min1,h1,当min=min1,h=h1时蜂鸣器响
  mod3
  设置变量daojishi=60, 通过定时计数器,每一秒daojishi减1,当daojishi<0时,蜂鸣器响
  另外:
  1.设置外部中断2,关闭蜂鸣器
  2.时间发送一次只能发送一个位
  程序:
  #include
  //K1后K3加分钟,K4加时间,K2加秒,K1进入闹钟设置,K2退出
  //K2关闭闹钟
  typedef unsigned int u16; //对数据类型进行声明定义
  typedef unsigned char u8;
  #define data8b P1
  sbit K1=P3^2; //外部中断0
  sbit K2=P3^3; //外部中断1
  sbit K3=P3^0;
  sbit K4=P3^1;
  sbit BUZ=P2^4; //蜂鸣器,0响
  sbit RW=P2^5; //4脚,数据(1)or命令(0)
  sbit RS=P2^6; //5脚,读(1)写(0)
  sbit E=P2^7; //6脚,使能信号
  u8 code dat1[]={0X30,0X31,0X32,0X33,
  0X34,0X35,0X36,0X37,
  0X38,0X39};
  void delay(u16 i) //延时函数
  {
  while(i--);
  }
  void open012() //打开中断0,1,定时器中断0
  {
  TMOD|=0X01; //选择为定时器0模式,工作方式1
  ET0=1; //打开定时器0中断允许
  EA=1; //打开总中断
  TR0=1; //打开定时器
  EX0=1; //打开外部中断0
  IT0=1; //边沿触发方式
  EX1=1; //打开外部中断1
  IT1=1; //边沿触发
  }
  void wrm(u8 dat) //写入命令
  {
  delay(1000);
  RS=0;
  RW=0;
  E=0;
  data8b=dat;
  E=1;
  delay(1000);
  E=0;
  }
  void wrd(u8 dat) //写入数据
  {
  delay(1000);
  RS=1;
  RW=0;
  E=0;
  data8b=dat;
  E=1;
  delay(1000);
  E=0;
  }
  void zero()
  {
  wrm(0X38); //八位数据,两行显示,5*7
  wrm(0X0c); //无光标,打开显示
  wrm(0X06); //光标右移,屏幕不移动
  wrm(0X01); //清屏
  wrm(0X80); //设置数据指针起点
  }
  u8 fg=0,sg=0,bfg=0,bsg=0;
  u16 i=0;
  u8 s=0;
  u8 mod=0;
  char dingshi;
  bit bell=0;
  bit zanting=1;
  void fangsong()
  {
  wrd(dat1[sg/10]); //时十位
  wrd(dat1[sg%10]); //时个位
  wrd(0x3A); //:
  wrd(dat1[fg/10]); //分十位
  wrd(dat1[fg%10]); //分个位
  wrd(0x3A); //:
  wrd(dat1[(s/10)]); //秒十
  wrd(dat1[(s%10)]); //秒个
  }
  void fangsong1()
  {
  wrm(0X80);
  wrd(dat1[sg/10]); //时十位
  wrd(dat1[sg%10]); //时个位
  wrd(0x3A); //:
  wrd(dat1[fg/10]); //分十位
  wrd(dat1[fg%10]); //分个位
  wrd(0x3A); //:
  wrd(dat1[(s/10)]); //秒十
  wrd(dat1[(s%10)]); //秒个
  }
  void chuli()
  {
  if(fg==60)
  {
  sg++;
  fg=0;
  }
  if(sg==24)
  {
  sg=0;
  }
  }
  void main()
  {
  u8 shijian;
  open012();
  zero();
  chuli();
  fangsong();
  shijian=100;
  while(1)
  {
  while(mod==0)
  {
  EX1=1; //打开外部中断1
  if(s==60)
  {
  fg++; //60秒转化为1分钟
  s=0;
  }
  chuli();
  if((fg==0)&&(shijian!=sg))
  {
  BUZ=0;
  shijian=sg;
  }
  fangsong1();
  if((BUZ==0)&&(bell==0))
  {
  delay(1000);
  BUZ=1;
  }
  if((fg==bfg)&&(sg==bsg)&&(bell==1))
  BUZ=0;
  else BUZ=1;
  }
  while(mod==1)
  {
  EX1=0; //关闭外部中断1
  zero();
  fangsong();
  if(K3==0)
  {
  delay(1000);
  if(K3==0)
  fg++;
  }
  if(K4==0)
  {
  delay(1000);
  if(K4==0)
  sg++;
  }
  if(K2==0)
  {
  delay(1000);
  if(K2==0)
  s=0;
  }
  if(fg>59)
  {
  fg=0;
  }
  if(sg>23)
  {
  sg=0;
  }
  if(s>=59)
  {
  s=0;
  }
  }
  while(mod==2) //设置闹钟
  {
  if(bfg==60)
  {
  bsg++;
  bsg=0;
  }
  if(bsg==24)
  {
  bsg=0;
  }
  zero();
  wrd(0x20);
  wrd(0x20);
  wrd(0x20);
  wrd(dat1[(bsg/10)]); //时十位
  wrd(dat1[(bsg%10)]); //时个位
  wrd(0x3A); //:
  wrd(dat1[(bfg/10)]); //分十位
  wrd(dat1[(bfg%10)]); //分个位
  if(K3==0)
  {
  delay(1000);
  if(K3==0)
  bfg++;
  }
  if(K4==0)
  {
  delay(1000);
  if(K4==0)
  bsg++;
  }
  bell=1;
  zero();
  }
  while(mod==3)
  {
  while(zanting)
  {
  dingshi=60;
  EX1=1; //打开外部中断1
  wrm(0X80);
  wrd(dat1[(dingshi/10)]); //时十位
  wrd(dat1[(dingshi%10)]); //时个位
  }
  wrm(0X80);
  wrd(dat1[(dingshi/10)]); //时十位
  wrd(dat1[(dingshi%10)]); //时个位
  while(dingshi<0)
  {
  wrm(0X80);
  wrd(dat1[0]); //时十位
  wrd(dat1[0]); //时个位
  BUZ=0;
  }
  }
  }
  }
  void time0() interrupt 1
  {
  TH0=0XFC; //给定时器赋初值,定时1ms
  TL0=0X18;
  i++;
  if(i==1000) //ms转化为s
  {
  i=0;
  s++;
  dingshi--;
  }
  }
  void key1() interrupt 0 //外部中断0,调整时间
  {
  delay(1000);
  if(K1==0)
  {
  mod++;
  while(!K1);
  }
  if(mod>3)
  {
  mod=0;
  }
  zero();
  }
  void naozhong() interrupt 2 //开关闹钟
  {
  if(K2==0)
  {
  delay(1000); //消抖
  if(K2==0)
  {
  bell=0;
  BUZ=1;
  zanting=~zanting;
  } //关闭蜂鸣器
  while(!K2); //确认按键松开
  }
  }
  二、收获
  1.更熟练掌握了定时器中断和外部中断的使用
  可以通过打开和关闭外部中断使同一个按键实现不同的功能
  2.了解到了一点寄存器操作
  3.中断配置小结
  外部中断
  定时器中断
  串口通信
  4.更熟练使用proteus
  制作了一个小型软件开发版
  5.学会了如何学习一个新元器件(LCD1602)
  1.看说明书,重点是看时序图,真值表等
  2.按照时序图写程序
  3.一二都不成立时,查找相关资料
  6.下载原理
  单片机的烧写原理:
  单片机烧写,又称为单片机程序下载、烧录等,本质上是单片机和PC机按照芯片厂家规定的编程协议,通过芯片厂家规定的接口,把已编译好的程序传输到单片机,单片机把数据存储到自身存储器中。
  理解这个原理需要知道几个知识点:
  单片机内部是有程序的,是出厂时固化在硬件中,用户无法修改的(这也会被认为它内部没有程序),这些程序可以调用各种通信接口、内部存储器等;
  可以下载的通信接口:JTAG,SPI,UART,usb等;(还有很多可以扩展485、以太网等)
  编程协议:一般大厂都会公开的,在芯片的专用技术手册中会有;
  存储器:有很多种,掩膜,EPROM,EEROM,flash等寿命不一样,掩膜只能一次,而且要工厂做,flash擦写次数10000+;
  可以这样比喻性的理解:单片机就是电脑的主板,我们写的程序就是操作系统,主板里面装入引导操作系统的基本程序,下载程序就是给电脑装系统!
  7.其他
  1.理解了现在电子表的操作原理
  2.学会了借助现成品(电子表)作参考,写程序
  3.懂得了与人交流的重要性(受王同学的启发,完善了原有程序)
  三.后期计划
  1、继续32的学习
  2、练习焊功
  3、继续51其他外设的学习
  4、按兴趣学习电路、模电、数电、DXP等相关知识
  找元器件现货上唯样商城

嚣张至极!行骗几十亿跑路到国外,翟山鹰直播嘲讽受骗者智商低7月15日,行骗几十亿的金融大师翟山鹰,在美国开直播嘲笑国内的受骗者贪婪智商低。翟山鹰说我做了十几年的金融。如果有人说我是个骗子,我是挺高兴的。这说明我比你有智慧,也说明你以后真要A股两个迹象表明,下周一很可能会大跌从自己的内心深处来说,下周多头如果能不断地发力进攻,那么很可能就可以把这次反弹搞成上涨,就算上涨搞不成,也基本能搞出一个盘整走势,但在股市里自己的想法不重要,重要的是实际的走势。第泰国的消费水平到底如何?看看100元能买啥,可能会让你意外大家都知道泰国是东南亚最受游客欢迎的国家,在网上也有很多宣传泰国旅行的视频,让越来越多网友对泰国充满了向往。(此处已添加小程序,请到今日头条客户端查看)下面我们就来看看,在泰国10千亿资产无偿交给国家,让儿子开巴士为生,去世后李嘉诚为他扶灵说到这个汕头大学,很多人都知道是李嘉诚捐资百亿建设的,但是很多人并不知道这个汕头大学其实是潮汕企业家庄世平首唱的这个庄世平被李嘉诚称为老大哥。二零零七年庄世平去世的时候,李嘉诚还亲百花山国家级自然保护区百花草甸百花山国家级自然保护区位于门头沟清水镇百花林场,百花草甸海拔1800米,为亚高山草甸。门票40元人,京津冀卡含此景点,停车费10元。百花草甸近千亩,一望无际的草坪上竞相开放着上百种嚣张至极!行骗几十亿跑路到国外,翟山鹰直播嘲讽受骗者智商低7月15日,行骗几十亿的金融大师翟山鹰,在美国开直播嘲笑国内的受骗者贪婪智商低。翟山鹰说我做了十几年的金融。如果有人说我是个骗子,我是挺高兴的。这说明我比你有智慧,也说明你以后真要A股两个迹象表明,下周一很可能会大跌从自己的内心深处来说,下周多头如果能不断地发力进攻,那么很可能就可以把这次反弹搞成上涨,就算上涨搞不成,也基本能搞出一个盘整走势,但在股市里自己的想法不重要,重要的是实际的走势。第泰国的消费水平到底如何?看看100元能买啥,可能会让你意外大家都知道泰国是东南亚最受游客欢迎的国家,在网上也有很多宣传泰国旅行的视频,让越来越多网友对泰国充满了向往。(此处已添加小程序,请到今日头条客户端查看)下面我们就来看看,在泰国10千亿资产无偿交给国家,让儿子开巴士为生,去世后李嘉诚为他扶灵说到这个汕头大学,很多人都知道是李嘉诚捐资百亿建设的,但是很多人并不知道这个汕头大学其实是潮汕企业家庄世平首唱的这个庄世平被李嘉诚称为老大哥。二零零七年庄世平去世的时候,李嘉诚还亲百花山国家级自然保护区百花草甸百花山国家级自然保护区位于门头沟清水镇百花林场,百花草甸海拔1800米,为亚高山草甸。门票40元人,京津冀卡含此景点,停车费10元。百花草甸近千亩,一望无际的草坪上竞相开放着上百种养肝就是养命!肝脏最爱的7种食物,建议每天吃点,千万别心疼钱肝脏是人体重要的器官,具有分泌胆汁代谢功能凝血功能解毒功能吞噬或免疫作用,所以肝脏健康很重要瘦肉炒韭菜花食材韭菜花150克猪肉100克胡萝卜半根食盐5克酱油1小勺淀粉1勺胡椒粉适量
杨幂赘肉一大堆还露肚脐,的确不合适,郑湫泓的马甲线分分钟秒杀露肚脐装是一个非常的磨练人身段的一个单品了,由于若你的腰不敷细的话,必定是非常难能够或许把衣服穿出非常完善的结果了,杨幂的腿分外的长不过呢,她的身段并无辣么的好,她的腰部有一大堆的如何利用假期悄悄变美?尝试这4个快速变美思路,你也能惊艳众人俗话说得好世上没有丑女人,只有懒女人,如果你在空闲的时间,都不想着去提升自己,那么忙碌的时候,就更难将心思放在自己身上,不知道大家有没有发现,身边总是有那么一小部分的女生,隔一段时中国女篮冲击奥运冠军有戏!15岁小将身高超姚明,全运会制霸内线在2021年的东京奥运会上,中国女篮在小组赛创造了全胜战绩,以奥运会头号种子选手的身份打入8强。不过让球迷们有些意外的是,在8进4的比赛中,中国女篮在握有优势的情况下被塞尔维亚女篮再见面就是仇人!林孝俊宣战韩国队,韩媒反击你是逃兵与骗子北京时间2月10日,随着林孝俊再度发声,有宣战黄大宪与韩国队的意思。韩国媒体也是火力全开,开始对昔日韩国奥运冠军林孝俊进行攻击。在中国短道速滑队先后夺得了2枚金牌后,林孝俊都发声表苏翊鸣比赛裁判长承认打错分了澎湃新闻记者祁东7日,中国小将苏翊鸣在单板滑雪坡面障碍技巧比赛获得银牌。10日上午,一个词条如何看待苏翊鸣比赛裁判长打错分在社交网络受到多方关注。随后,苏翊鸣在社交媒体上也点赞了这老武加油!中国选手神仙友谊感动世界,金牌早已不是全部2月10日上午,北京冬奥会单板滑雪女子U型池决赛上演,3名中国选手蔡雪桐刘佳宇和邱冷参赛,最终蔡雪桐获得第四名,刘佳宇获得第八名,邱冷获得第12名。尽管未能登上领奖台,但是3名中国欲加盟湖人!汤普森正协商买断,拒绝为步行者出战北京时间2月10日,NBA常规赛进入关键阶段,随着赛季截止日期的临近,越来越多的交易浮出水面,包括篮网76人步行者开拓者等众多季后赛球队几乎都有交易动作,交易范围更是涉及联盟多位一又一位坐在詹姆斯旁边的女球迷火了,网友调侃是你影响了兰德尔本赛季湖人和篮网的圣诞大战,除了比赛被球迷津津乐道之外,坐在老詹旁边的一名女球迷也火了,当晚平均票价在780美元,第一排的票价大概是1。3万美元,而老詹的隔壁座,这个可不是有钱就能保罗打42分钟没问题,但太阳有问题了,勇士没出全力已是联盟第二37岁的保罗确实太稳了,他能在这一个年龄拿3080万年薪,最开心的应该是太阳,因为保罗比起湖人的威少真是香饽饽。总之,保罗是名人堂级别的超级控卫,如果能在职业生涯冲击一个总冠军就最一颗类太阳恒星爆发出巨大耀斑对周围行星上生命造成毁灭性打击在寻找可能适合居住的太阳系外行星时,科学家们主要关注的是恒星活动。像我们自己的G型(G2V)黄矮星,被认为是长期稳定的,而其他类别的恒星则是可变的,容易发生爆炸,特别是M型红矮星。1984年贾秀全给朱波介绍对象,朱波叹气道云惠,你喜欢足球吗?大连业余体校体育场看台下有一间小屋子,房间像一个直角三角形,没有窗户,没有暖气。因为潮湿,墙皮已经开始脱落,床底的皮鞋也长满了一层白毛,整个屋子都是一股发霉的味道。而这间屋子,就是