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

基于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等相关知识
  找元器件现货上唯样商城

早上4点!资深名记做出争议表态国足队长再遭质疑,球迷骂声一片北京时间2月21日早上4点,中国足球传来最新消息,日前,针对国家队球员备受质疑,国内资深名记王明浩做出争议表态,他表示吴曦是国内最为职业和自律的球员之一,而这样的言论也引来了很多球中国男足要腾飞!足协决定大力建设新球场,未来国足将迎人才井喷大年初一的特殊日子,中国队输给越南,就连黄健翔都说国足的遮羞布已经被扯下了。好在中国女足非常争气,用一座亚洲杯的冠军帮助中国足球挣回了脸面,也让陈戌源保住了足协主席这一宝座。为了表43岁殷桃频因颜值上热搜出道20年16部经典作品,最绝的是演技人世间中男主角秉坤的身世,牵动着亿万观众的心,而大家更欣慰的是殷桃饰演的郑娟始终陪伴在他的身边。殷桃自从去年年底因为A4腰的背影上过热搜之后,在人世间中的出场也很绝,而且她每一次出美团被定点爆破,为什么要对美团高额抽佣呢?美团大跌,恒生科技指数跟随下跌,很惨。我看了下中概还比较稳定,并未跌到加仓价格。整体看,互联网企业寒冬,不在方向,只能喝点汤,想吃肉太难,不被挨打已经不错了。王兴的生日的当天大跌,官宣丨新款奥迪Q5etron正式上市,配锦衣机甲套装,39。55万起随着国内经济实力不断提升,消费者对于汽车的需求也在不断提高,新能源汽车作为汽车市场后起新秀,众多汽车品牌也在加紧对新能源汽车领域布局。近日我们从奥迪汽车官方获悉,新款奥迪Q5etr天玑1000,天玑1100和天玑1200之间的差距到底有多大?了解一下相信大家也知道,在联发科没有天玑之前,还是默默无闻地给人的一种低端,顶多是个中端的感觉,但是自从有了天玑,有了天玑1000,就让我们看到了联发科的崛起。那么这篇文章我们来分别对比一果粉都买早了!iPhone14ProMax渲染图提前剧透,这次亮点十足从iPhoneX到iPhone13,苹果一直都用着刘海屏的外观设计,而随着华为被制裁后,国内的高端市场也被苹果收入囊中,所以可以看到iPhone13系列热度持续高涨,帮忙苹果拿下了放水能放出牛市来吗?风险偏好与流动性系列之二15你亏的钱去哪儿了?很多人在亏钱后都会思考一个问题股票整体下跌时,钱去哪儿了?我亏的钱到哪儿了?有一种解释是,有人亏就有人赚,亏的人被高位套现的人赚走了,世界主要国家的工业体系,哪些国家拥有完善工业体系世界发达国家和主要发展中国家的工业体系有相对完整工业体系的国家中国美国法国日本德国俄罗斯英国中国,可以说是世界上工业体系最完整的国家,所有工业门类都有,各类产品能生产出来,只不过不官宣!保罗新进展,浓眉伤情反转,篮网全力追求球星,拉文官宣了北京时间2月21日,NBA这边是迎来了全明星正赛的比赛,库里全场轰下50分,拿到了全明星MVP。与此同时NBA这边也是传来了很多有价值的消息,大概总结如下太阳队预计保罗因为手指骨折中超1憾平河北双线3场不胜韦世豪破门张辉补射救主北京时间12月16日18时,2021年中超联赛第二阶段争冠组第二轮,广州队对战河北队。历经一番角逐,广州队11憾平河北队,韦世豪率先头球破门,张辉终场前补射扳平比分。此役战罢,广州
家庭版基础吐司面包教程,一斤面粉满满两大盒,一家人都够吃两成品吐司刚出炉的两吐司,银灰色模具为高糖模具,黑色为低糖模具第一步和面普通面粉460克面筋粉40克细砂糖80克(50100克之间都可以)耐高糖酵母6克(56克都可以)2鸡蛋纯牛奶张嘉倪礼服穿搭大盘点,你看美不美?一句爱得起。放得下。,预示着娱乐圈又一位明星的婚姻走到了尽头。张嘉倪,1987年出生,2014年结婚,在2016年和2018年生了两个儿子。最近传出了她老公出轨的消息,然后就迎来她常州千润小报这是一款很轻的冻干面膜市面上已经有不少护肤品采用了冻干粉溶媒液的组合,但我们不难发现口碑社区中总是会对冻干技术提出五花八门的疑问冻干面膜就是膜布上敷上一层冻干粉吗?任何功效性成分都可以做成冻干的形态吗?一颗柚子4味中药?中医合理利用,全家大小的毛病皆能用得上柚子大家肯定都吃过吧,但是你肯定不知道,其实在中医看来,一颗柚子啊,相当于4味药,用得好的话,全家大小的毛病皆能用得上,今天贾医生就来带大家了解一下,柚子作为中药都有什么不为人知的用这3种中药,帮助提高睡眠质量我每天都睡3个小时左右就会醒,之后就睡不着了。我也是,昨晚一直在床上翻来覆去,天快亮了才睡着,真痛苦。我可和你们不同,我晚上九点就睡了,可以一觉睡到第二天8点,嘿嘿失眠,我们都知道老中医说,食用香椿,不染杂病,香椿的这三种好处你一定得知道近年来,随着人们对健康养生的看重,越来越多的养生食材被端上了餐桌,香椿也是其中的一种,在春季的时候,很多人就会去采摘香椿芽或者是直接购买香椿芽食用,香椿芽指的就是香椿发出的芽,香椿黑龙江省十大必去景点,没去过都不好意思说是黑龙江的前面写了家乡河北的,今天开始就按从北往南,从东往西的顺序来吧,这个季节从雪乡说起也正是应景,下面就来盘点一下黑龙江十大必去景点,看看你们都去过几个。黑龙江省,简称黑,省会哈尔滨,地所有人,这种水果正当季,再好吃也不能多吃眼下正是柿子大量上市的时节,黄灿灿的晶莹剔透软糯清甜的柿子,让不少人爱不释口。但是,每年这个时候,关于吃柿子的传言也层出不穷。有人说柿子和螃蟹不能一起吃,柿子和牛奶不能一起吃,不然年度旗舰之争大局已定,vivoX90靠什么胜出?不确定性让市场变得愈发动荡和低迷。全球智能手机市场始终在低位徘徊,权威机构数据显示,全球智能手机出货量连续4个季度同比下滑。这背后,虽然有宏观经济低迷,消费意愿降低等因素的影响,但中超第26轮综述两队降级或大局已定,季军之争5选1久古11月22日晚,中超联赛第26轮最后4场比赛全部结束,海港客场12不敌浙江队。这场比赛与此前一天进行的泰山队客场12成都蓉城之战一起,成为最大的两个冷门。本轮其他7场比赛的结果就这样的柯南新剧场版,怎么好意思夸出口?内地院线,经历了一个多月没有新片的窘况后,终于在11月中旬,有了久旱逢甘霖的感觉。在极限定档的几部新片里,便有一位我们的老朋友名侦探柯南万圣节的新娘此一时彼一时。以前的柯南剧场版在