00:03
好了,现在有声音,有画面吗?都有是吧,OK啊,有声音有画面就行啊,那么呃,我们呃下面来开始咱们这个今天的这个上课啊,然后呢,呃,今天的这个这个上课呢,我们还是接着我们对什么呢?对咱们叫做这个,呃上周周五啊给大家留的这个叫做我们可以称之为是呃在咱们这边学习的一个月考吧,啊一个月考一个相对来说呃集成度很大啊,然后呢,对大家来说有一定复杂度的这样的一个设计啊,这样的一个设计,那么呃,在说这个设计之前啊,我再大概利用个呃小十分钟时间吧,简单再说一下啊第一个啊,咱们已经学了一个月了,呃,我先说一下,大家一定要把握好自己的呃这个自己的一个度在什么地方啊,一个月时间了,那么也就是说,对很多的东西,或者对所有东西,大家都。
01:14
可以去学,都可以去做,但是有要求,就是我讲的所有东西你必须要会啊,不能够在出错,然后或者出错了之后,要知道快速的怎么来找,有什么问题及时和我沟通啊,这是咱们的第一个问题啊,第二个的话呢,呃,不要像这个其他人学的野路子似的,是吧,就是说没有任何的设计,上来就开始搞代码,上来就开始搞代码,一点设计的思想都没有,就是脑子里边还没有存在任何东西,扒拉开始写代码啊,写完之后不对,这又不对了,那又不对了,这不行啊,咱们得有一个规划,得有一个设计啊,得有规划有个设计啊,这是这个,那么呃,第三个呢,这个我先说一下啊,就是呃,应该说我们今天这个设计呢,我尽量做啊,我尽量做啊,我尽量把它做完啊,如果今天做不完的话呢,呃,就是明天呢,可能再占用一段时间吧,就能够做得完啊,就能够做得完,那么也就是说啊,从现在开。
02:14
尺啊,我来说一下今天开始,那么就是我讲的这个类似于跟咱月考的这样的一个设计也好啊,以及啊,我们从后边上课也好啊,后边上的课啊,也就是说从现在开始啊,前一个月的所有的东西啊,你没听也好,你没学也好,或者说你怎么的也好啊,你都可以先暂时的去放一放啊,全身去放一放,虽然我前面说了啊,前面这东西你都应该都搞定,但是如果没搞定的,你也可以放一放,也就是说我从今天开始讲的这个月考也好啊,包括上周五咱们就开始讲的月考了,对吧?那么呃,后边讲的也好,所有的东西都基本上可以认为是一个新的开始啊,基本上可以认为是一个新的开始啊,前边讲的那些东西啊,用实话实说,前面那些东西啊,你出去啊,工作1万个1万%用不上啊,能用上的只是设计思维,设计思想啊,估计你出去肯定不能让你用板子去开发流水灯的,也不能让你去开发数码管的,这不这是不存在的,那么就是。
03:14
啊,就是这一套这个练的思维习惯,那好了,那么前面啊的东西啊,没搞定的自己抽时间搞,但是千万千万不要在出现什么问题,就是说我已经开始讲后边了,然后呢,你还在去,哎,反正前面有视频嘛,就各种看看视频,后边反正你也会录的,我就不管你,你反正怎么怎么样,这样不好啊,这样不好,也就是说大家尽可能的啊往前跟着我来走,就前面无论怎么着可以先放一放,因为后边咱们又是一个重新的开始,大家不要把战线拉的过于过于太长了啊,好吧。好了啊,那么下边的话呢,我们来去这个接着讲咱们的这个像月考的这个设计是吧,叫做digital clock,那么呃,这个数字中的话呢,呃,我们呃要求啊,让大家做的可能就是相对来说比较复杂了啊,就已经比较复杂了,对吧,那么呃,那么在这个给大家讲课的时候呢,我这个呃没有去给大家来去这个这个这个说一项东西,就比如说我记得我之前啊,很早之前应该是。
04:31
带过一个学生啊,做的就是这个这个毕业设计,但是这个毕业设计的话,它做的比这个还要复杂,它上面还加了什么,它这个板子上还加了一个叫做GPS模块,或者你可以认为就是北斗模块,就是说专门管定位这个模块啊,然后呢,他要的不是定位信息,他要什么,他要的是这个里边的时间信息,也就是说呢,很简单啊,大家的这个这个比,比如大家的手机啊,大家的手机上的时间啊,你就可以啊走走都正常走,然后呢,你发现有些走的不准了,你要去调,哎,你也可以调,但是呢,大家的手机都有另外一项非常牛逼的功能,大家可能都不知道什么呢,就是只要你手机或者你的电脑啊,一联网,你的时间会被自动调整。
05:15
啊会被自动调整的,那么很简单的问题就是啊,我们也可以说把咱们这个全都做完之后呢,我们可以说在板子上再去买一个类似于像GPS啊或者北斗啊这样的一个模块买回来,然后我们从这个GPS或者北斗上读取时间信息,然后呢,规定每天的晚上12点进行自动教室啊,每天晚上12点进行自动教室,你不能说这个手表正看着呢,就开始教室或差一秒去叫,其实呃,时间来说啊,对咱来说这个这个这个这个呃,没有那么高的准确度啊,或者对于咱平常人,平常人来说啊,没有要求那么高准确度,也就是说咱们只需要这个这个这个网上,或者说这个晚上啊,什么时候去交个时就可以啊,那有人说那我直接呢,从GPS或者从上面读取时间的话,那我就直接读出来显示,读出来显示就好了,那要你这干什么,那很简单问题,那假如你手机没有网了呢,你手机GPS信号弱,那咋了?你的数接收不到数据了,那你这个数是不是还要动啊?
06:15
所以我们这个啊也是很有意义的啊,这是给大家呃又说了一种啊,到时候我看我手里好像有没有这种拈块,有的话到时候可以给大家演示一下,或者咱们到时候一起来分析一下好吧,那么呃,这个的话呢,咱们就呃简单再说一下是吧?这个呢,就是咱们的一个按键处理啊,说白了把四个按键变成了四个脉冲啊,然后呢,四个脉冲进行相互得到一个flag钉一下,对吧,给了这个蜂鸣器的一个控制模块啊,然后呢,呃,这个呢叫做flag alarm,就是说时间啊,闹钟到了以后啊,闹钟和时间一样的时候,产生一个脉冲flag alarm,那他们就一直在唱歌,什么时候停呢?Flag丁来了就开始停了,对吧?那么对于显示模块呢,就是说呢,你给我的呃,这个高位中间位低位啊的数据,我就开始显示,但是呢,有的时候你还想闪,那怎么做呢?哎,就是说呢,要有这个高位中间位和低位的调整啊,你要再调整就闪一会儿就是就灭一会儿亮一会儿灭一会亮。
07:15
开一会儿啊,是这样的一个设计啊,那么在上一周当中的话吧,我们知道啊,K control模块呢,我们给了四个小斗,四个边缘检测,产生四个脉冲,对吧?那么对于BP controltr模块呢,就是flag丁,其实呢,呃,大家还记不记得我们其实flag丁之前我们已经做过了,对吧?所以flag丁是OK的,没问题,那么对于bep啊,这个这个这个music唱歌这个呢?啊,其实我们之前也做过,只不过我们一上店就开始唱,一上店就开始唱,就没有不停,对吧?但是呢,呃,我们在这儿的话,又不是说上店唱,而是说是闹钟到了之后才要唱,对不对,那怎么做呢?所以在这的话呢,我们有了一个music en啊,Music en一来啊他就开始唱歌,Music en不来啊,他就是停,然后再来,要从零开始,所以在这儿我们就知道这个地址控制呢,应该是它为幺的时候啊,开始正常计数,它为零的时候,要它们都清零,但是呢,它们都清零了,地址也是零零的时候其实也是有音乐的,所以我们。
08:16
说呢,给他搞雨门,当它为零的时候,输出就雨上就变成零了,就不动了,对吧,那么对于显示模块来说的话呢,首先第一件事是吧,也就是说呢。第一件事就是啊,你的过来数都是二进制数,我需要变成什么,变成BCD数啊,变成BCD的数那好了,BD的数能直接显示吗?也不能哎,所以BD的时候还要根据外部是否调整来决定是不是通过去还是通过去的是FF啊,我们我们说了FF的话呢,让它变成熄灭,所以到这变成FF即可,那么还要干什么呢?就是两个数码管中间还有什么,还有一个叫做呃,类似叫做小数点的东西啊,小数点,所以说在这的话呢,我们到时候还要把数码管修改,为什么呢?修改为更通用的一种设计啊,什么呢,就是说小数点也可以单独控制,只不过我们现在这小数点呢,它不动。
09:05
啊有点它不动啊,所以呢,我们只给到一个死值就可以了,对吧?好,那么再往下,再往下的话呢,呃,我们还没做是吧?但其实呢,我们已经做了几个模块了,因为我们一共好像只有五个模块,对吧?这个做完了,这个不用做,就40货门,这个做完了,这个做完就剩一个他对不对,有就剩了一个digital这个clock control模块,那么这个模块啊,我们应该啊,我们应该怎么来做呢?啊这个模块我们应该怎么来做呢?那么今天在这儿啊,我来把这个模块来做一做啊这个模块做起来呢,是相对来说啊,是有一定的难度的啊神经难度的,但是呢,呃它呢呃,因为拈块到时候我们可以分的比较多,所以呢看着会比较的大啊,但是呢,它的这个这个这个这个这个这个设计思路啊,我们慢慢一点一点的捋啊,我们还是可以捋的明白了啊,还是可以捋明白了,好,那么我们来做这个叫做。
10:05
包括这个模块啊。嗯,看一下啊。二嗯,叫做呃C下划线,呃,CT,哎,是叫这个名字吧,看一下了。啊,是吧。叫dial digital clock好,那么这个模块的话呢,我们还是老规矩啊,呃,就是什么呢?就是说咱们来一步一步的去考虑啊,一步一步去考虑,咱不着急啊,首先呢,咱先不说调整的问题啊,首先第一个问题啊,咱们先来不说调整,就是说呢,就假如说咱现在做一个表,然后这个表呢,就一上电就开始从00.0000开始运行。
11:01
啊,就先做一个表,那么我们先不考虑什么,我们先不考虑调整的问题啊,你爱调整,调整不调整跟我没关系,我才不管你呢啊咱们不让他调整,那好了,如果我不考虑调整的情况下,那么大家来想这个设计你应该怎么做呢?啊,这个设计你该怎么做呢?是不是应该这样啊,我们一起来想啊,如果不考虑这个调整的话,是不是应该在这儿写一个框,然后呢,我们来去添加个文字什么呢?比如说时间,我们叫time下划线,秒我们用SEC来表示啊,秒我们用SEC来表示。呃,填充它这啊,这个在这这个点成零居中。那这个都写成零吧,要不然可能有的时候放不下零零,好那么再来想啊,对于这个秒来说的话呢,就对于这个秒来说的话啊,我们还是啊,我们统一给他用个短线啊,如果说需要长的时候,我们再给他加长啊,对于他来说。
12:08
啊,在这怎么办呢,我们来去插入一个。本本。大家学咱们这个东西呢,不要着急啊,对于复杂的东西你也不要着急,一步步来啊,包括我讲的啊,可能大家呃,我之前也有可能在网上发布过我讲的这个视频或者说资料之类的,那么可能和今天的画的就不太一样,因为每一次和每一次的想法分模块想法可能也不一样,所以这个呢是会发生改变的啊,所以大家呢,但是要掌握到这个这个这个设计方法啊,适中。好,那就是还有一个我们靠近一点,比如还有复位啊,能坐小一点小一点啊复位好,它除了有一个时钟复位以外就没了,对吧,对于我们来说是不是就没了啊,时中复位就没了,那好了,那么如果说他时钟复位没了,那么他要输出一个什么呢?他是不是得输出一个秒呀。
13:12
诶,他是不是得输出一个秒啊,就是说你一上电,在时钟复位的驱动下,这个秒针就开始嘣嘣嘣开始跳,对不对。啊开始跳,比如秒,那么秒的话呢。秒是几位呢?因为秒只能是零到59对不对,所以的话呢,我们用这个叫做呃T啊SEC来表示啊,就T就是这个time啊,SEC就是秒来表示,那么这样的话就是五到零对吧?因为它呢只有这个六位,就是这个叫做呃零到59就可以了,对不对,是不是一个秒啊好了,那么这就是一个秒针啊,这个秒啊,那么对于我们来说,我们再来介绍一下想啊,那么是不是还得做一个做一个什么,是不是还得做一个叫做分钟的呀。
14:06
啊,是不是还得做一个分钟的对不对,那么如果说我们要做一个分钟的话,大家来想一想啊,分钟什么时候加一呢?分钟是不是一秒钟到了才加一啊,那我这个分钟这个怎么能知道你一秒钟到了呢?所以呢,大家来想一想,是不是你这个拈不光要输出秒的,就现在是几秒了,你还得说到一秒钟了,你是不是应该给我输个什么,给我输出一个到一秒钟的脉冲啊,大家想是不是你应该告诉我一秒钟到了,一秒钟到了,或者叫一分钟到了,对,不能说秒冲应该叫一分钟到了,对不对,你得告诉我什么时候一分钟到了,对吧,一分钟到了你告诉我我才能加一,对不对?所以在这儿的话呢,也就是这一个秒的模块呢,它呢不光输出秒,他还在呢,还得干什么,他得告诉别人啊,告诉别人,告诉别人什么,告诉别人一分钟到了。
15:06
啊,告诉别人一分钟到了,所以呢,对于哎我们的这个分钟这个模块的话呢,它的话呢,就是在时钟和复位的驱动下,然后呢,还有谁啊,还有就是因为我们现在不考虑调整的话,就是不是还得有有有这个叫做这个叫做分钟的这个flag脉冲驱动下,它呢才能产生,所以呢,然后呢,他还得干什么呢?它是不是就得在输出一个什么,它是不是就得输出一个叫做t min啊TM对不对,TM也是零到59对吧,所以也是这个零到五,那么它呢,输出什么,它是不是就应该输出一个小时啊小时我们就用H来表示吧,啊是不是就是这个这个这个叫做这个小时对不对,也就是说呢,你得告诉另外一个模块,一小时到了,让别人干什么,让别人赶快去小时去加一对不对,也就是说呢,你到59分钟,59秒啊,59分钟。
16:06
啊59秒,然后呢,并且是这个这个这个最后了,对吧,最后最后一刻了,那告诉别人干什么要去这个小时内递增对不对,所以在这再往后,所以他呢应该再往下。好,那么这个叫什么呢?这个我们就变成叫做呃H吧,这样吧,我们起个名字稍微长点U2吧,要不然感觉怪怪的,这个地方呢,是。Ho,好了,诶这个没复制过来,拿下来好叫ho UR啊,然后呢,这个地方的话呢,是不是得输出一个小时啊,小时就是零到23对吧,零到23其实四位啊五位就够了,对吧?因为五位的话就可以表示零到31了,对吧?所以它只是零到23,这肯定是够了,那么对于这个来说的话呢,是不是你得到235959的时候告诉别人什么,告诉别人一天到了对不对,你不得告诉别人一天到了,叫flag day对不对,你得告诉别人一天到了对吧?好了,那么再往下什么,再往下是不是就该。
17:18
日期了。啊,就该日期了,那好了,我们往下接着做日期。好,那么日期的话呢,我们日期呢,就不用time了,我们用date date啊日期啊,日期什么日期有天对不对,天的话用来表示,那这样的话就是说这个地方入什么,这地方就是输入的就是flag day。对不对,就是说呢,你要别人告诉你一天要增递增了,对你要flag一下,然后这个里边呢啊,这个day呢,说什么这个day的话就是我们时间啊,时间叫什么时间,我们就直接就写成day吧,因为呃,这个呢会比较的,呃,因为它我在这儿为什么会加T呢?因为一会儿还有这个叫做闹钟嘛,因为闹钟也是分秒分钟和小时的,对不对,那么对于我们来说的话呢,那么也就是说呢,这个这个这个这个加上个T,然后闹钟时候一会我们加A啊加A啊叫alarm对不对,加个A啊,那么日期的话呢,就直接就day就完事了,对吧,好了,那么这样的话,日期的日期是零到啊就是说就即使我们按照这个每个月都30天来算也好啊,或者说我们就按照这个正常的来算也好,那它最少就是28,最大也就31,对不对,所以说在这的话,也就是说对于我们来说啊,这个五位的也就够了,那么这样的话呢,日期如果。
18:44
那么就是说给你产生脉冲,什么叫做月,对不对啊,就是啊日期的一个月啊,然后再往后。没选中,那么如果再往下的话呢。就是什么,就是我们这个叫做日期的这个月份啊,那么这个月的话呢,也就是说在这儿啊,告诉别人一个月该递增了,那么你这儿呢,说的就是这个叫做月份啊月份,那么这儿呢,告诉别人什么,到12月份31号的时候,你告诉什么要诉别人的叫做就是一年该递增了,对吧,是不是告诉别人一年该增了。
19:29
再往下。再往下叫什么就是年,而我们对于年来说的话呢,其实就不要买虫了,为什么?因为很简单问题,我们在我们设计当中的话呢,我们就只是到年就结束了对吧,也就是年是不需要给任何人去去脉冲的,难道说你还要告诉别人一个世纪到了吗?我们是没有这个没有没有这个选项了,对吧?所以说没有这选项的话呢,我们就直接往下拉就可以了,那么这个年的话呢,就比较多一点,为什么呢?因为年的话一直能到九九年对吧,所以在这的话,九九年的话就需要就七位对对六到零,那么这的话呢,就是flag的年对吧,一年到了是吧,Y1好,那么这就是一个我们所做的这样的正常的,对于我们来说,一共是有这叫做六个模块,就可以完成我们正常的一个什么正常的一个叫做呃万年类的功能了,就虽然它不能调,但是它可以正常运行。
20:29
啊,但是它可以正常运行,就说你一上电就从00点啊,就会什么就会从这个呃,叫做这个零年啊,我们是零年,当然不能说零月啊,叫零年啊,到时我们使的时候,零年1月1号零时00:00啊,你复位就是这个时间,然后就开始么,就开始往后去运行了,因为它不受控制啊,不能调整,就这样一直往后走啊,但是它都是可以的,对吧?那么对于我们来说的话呢,我们是不是还有闹钟啊,那么闹钟的话呢,闹钟的话其实跟时间是一样的,对不对,闹钟和时间是一样的,但是呢,它虽然是一样的,但是啊,你要知道它还是呢,有一定的不一样的地方啊,哪儿不一样呢?别着急啊,我来给大家来做一下,大家就会明白。
21:23
好,那么首先第一个啊闹钟啊,大家自己来想啊,呃,反正在我的印象里边,闹钟的秒是不动的,就或者说大家定闹定闹铃,你怎么可能定到秒上去呢,就我就想这个03:59,呃,这个这个42秒想。据我所知,好像闹钟没有这个功能啊,它就都是调整小时和分钟是吧,也就是精确到秒,对咱来对人来说可能意义性不是很大啊,如果说你真的就想说这个三秒或者说计时就要几秒,那就用一个手机上的秒表就可以了,或者咱们也可以自己单独写个秒表啊,因为咱们ipg也支持,咱们写个秒表也可以,但是呢,对于大家来说的话呢,这个这个好像都从来没有过对吧,那从来没有过怎么办呢?所以这个呢,我们就把闹钟的什么呢,我们就把闹钟的就不动,就什么就是闹钟直接输出的时候就叫A啊SEC啊,那么这个asec输什么,它就是输出全零就好了,我们就我们就干脆就不给他值啊,就说那你就你这个模块里边就一句话,就是输出为全零就可以了啊,就是六撇D0啊六撇D0,那么那我为什么说把这个脉冲也给去了呢?大家来想一个问题啊,你要这个脉冲干嘛呢。
22:41
因为因为闹钟又不会走对不对,你除非你调的时候他才会走,你闹钟不调他又不走对不对,它又不走路对吧,所以说的话呢,这个就没有意义了,对吧,因为闹钟是不会有人啊,闹钟是不会走的啊,闹钟是不会走闹闹钟是几点就是几点,你调完之后就一直在那儿就待着,就不动,他怎么会走呢,对不对,所以他也不会让别人去进位啊,这个很明显他不会让别人进位的啊。
23:06
所在这的话,这个的话我们来改一下是叫alarm是吧,RAM诶正好能放得下,好叫ara RM下边这个有点够呛了啊,Ara啊果然放不下,我们下这样好,那么这样的话呢,叫做A啊就是它,那么这个的话呢,也不会有人让他递增的,对不对啊,你怎么这个这个这个我们到时候写的时候啊,到时候我们再来去深入去考虑这个问题啊,就这个问题。好,OK。是不是就这样,那么呃,如果是这样的话呢,就是说,也就是说这是什么,这其实都是一个什么,都是一个呃固定值啊,有人说那你既然这个alarm跟这个m man也都是固定值,那你还要始终复活有什么用啊,就直接给它都是死值,比如03:56啊,你直接就在里边这个里边写成零三,这个里边写成56不就行了吗?你还要这个始终复位干嘛?其实呢,因为后边不是还要调整嘛,对吧,我们先给它画上,对于这个来说,我们调也不会去调它了,对吧?所以干脆就直接就这样啊好了,那么现在大家来看一下,是不是这几个模块就写好了,那么这几个模块我们写好了之后啊,这几个模块我们写好了之后,那么下边我们来想一下,也就是说,对于time来说。
24:24
是不是会输出一组?小时分钟秒。对于。这个日期来说会输出小年月日,对于分钟,呃不是,对于闹钟来说,是不是也会输出这个小时分钟秒啊,那么好了,这一共变成一共变成了三组数据,输出哪一组呢?再来想输出哪一组呢?其实你也不知道属于哪一组对不对,那好了怎么办呢?所以在这就很简单一个问题,就是说他得干什么,他得有一个叫做。模块就有一个多路选择器,就是到底选择这三组当中哪一组作为输出,对吧?哎,算当中哪一组作为输出,那好,那么在这我们来画一个多数选择器。
25:09
转一下。好啊,这是多轮选择器,我们把多选往后稍微放一下,一会儿可能不够用。好多路选择器好,那么这个多路选择器的话呢,那么它的输入是什么,它的输入就是有这个。分钟。啊,有这个叫做这个小时的这个这个这个这个这个呃。就是时间的这个分秒。可以的。No。
26:00
好。也就是说呢,这个模式负责干什么,因为我们你自己都可以想得出来什么,出来了就是说你自己想,就是说你现在你把这个年月日,我先不管说我调还是不调,但是你的年月日啊和你的这个时间的这个小时分钟秒和闹钟的小时分钟秒,你肯定要干什么,你肯定是要作为输出的,但是呢,我们的输出大家也别忘了啊,我们的输出什么,我们的在画这个顶层的时候,我们就说了,我们的输出只有高位,中间位和低位,对不对,那好了,那么在这的话呢,你很明显有三个高位,有三个中间位,有三个低位,那好了,那终究得找一个,终究得找出一组来作为输出吧,那怎么做呢?那其实就是多路选择器吧,到底选择就是三路信号过来了,到底选择哪一路作为输出对不对,要不选择这三路输出啊,不是这这三个信号输出要不选择。
27:10
三个星号输出,要不选择这三个型号输出对不对,那就是说多选择器呗,那么这个多种选择器的话呢,在这儿的话呢,我们给它命个名字啊,我们叫三选一嘛,所以在这儿我们来添加个文字叫max-三啊MAX3-一三-一很丑是吧?别着急调一下啊。呃,调成这个颜色,呃,这边调成0000,然后居中,然后确定好了,那么这个呢,我们来。稍微调大一点点,让它能。好看一点点。好就这样吧,好了,那么多路选择器的话呢,多路选择器的话呢,它肯定呢,还有什么,还有一个得选择信号吧,也就是说你到底是到底是看的这个靠谁来选择对吧?好,那么在这我们来输入。
28:11
啊,哎哟。又选错了。这个。这么歪呢?啊,因为这个太斜了,所以画的确实不太好看,就这样吧,好了,就是知道它是一个选择信号,那么这个选择信号我们起个字叫什么呢?我们起个名字叫。放这边。因为说白了它是三选一对吧,你三选一的话呢,其实就是说只要你的max,我们叫maxce好吧,叫maxcel,那么maxcel等于多少呢?Maxcel只要等于一到零就可以了啊,因为你等于,比如你等于零零的时候选择time等于零一的时候选择date,等于幺零的时候选择A就可以了,对吧?所以呢,在这的话呢,我们这个地方有会有什么会有三个输出对吧?首先呢,我们三个输出。
29:27
这一放啊。123。叫什么呢?我们叫应该叫l date是吧?对,H date m date和date。叫h date。I'm date。
30:00
和l date,然后呢,我们统一应该选择的位宽的应该选择是这什么呢?应该选择叫做最高位的位宽啊,他们应该呃都是给啊,H给的是六到零的,下面给的都是五到零的对吧,所以我们H给的是。五到零的啊,H是啊六到零的,下面都是五到零的啊,是六到零的,然后下面都是五到零的。五到零的好了,再来看是不是我们目前来说就正常,现在来看的话呢,就是我们如果说我们没有调整功能的话啊,如果没有调整功能的话,我是不是就写一个模块就在这儿,比如说按键一来它就变成零零。那按就是按键不来,默认是零零,那这样的话呢,是不是数码管就显示什么数码管是不是就开始显示的就是小时分钟秒,然后呢,我再一摁按键,我让它变成零一,就加个一就完了嘛,变成011变零一的话呢,会怎么办呢?一变零一的话是不是是不是这个这个模块就会切换成date这一组数作为输出,是不是就变成年月日了,然后我再切换我再加个一是不是就变成11010就变成就变成l alarm这组输出对不对,所以这个输卵管先生吧,显实就是这个叫做这个呃,这个叫做这个,这个什么呢叫做这个,呃,这个。
31:25
闹钟对吧,所以呢,大家来想是不是说我这边只要说利用这个叫什么flag Switch,然后呢,去切换mace是不是就可以达到三组的切换了啊,就可以达到三组切换了,所以这个就OK了嘛。对不对,这就OK了,那好了,那么下边的话呢,当然了,肯定它不能这样了,就是其实我们换句画这个呢,啊,到后边还得再改啊,可能就改的面目全非了,但是呢,基础的一个我们说啊,对于这三个,或者对于这几个这个这个三组信号是有了这样的一个叫做一个小模型了,那好了,下面我们来看现在什么,现在是不是不能调整啊,就这个呢,也没有人控制,对吧,现在是不是不能调整,那好了,那下面我来想,如果我们要考虑调整的话,大家来想一个问题。
32:12
什么问题呢?就是说我现在让你去调整,大家来想真正的时间里边调整,有人调整秒吗。好像也没有吧,调整是没有人调整秒的,对不对,那只调整什么。调整分钟小时对吧,对于时间来说,对他M来说是不是只挑这些什么,就是分钟和小时对吧,所以在这的话呢,我们来看啊,我们来看这个问题,那怎么做呢?所以这个问题的话呢,其实我们还是要。我。这个其实就在这放着就不合理了。好,那么下面我们接着接着往下调啊。
33:00
这一堆内容统一稍微往下移一点点啊,会往下稍微移一点点啊,我们一会儿这一张还不知道不用呢啊,我们来看。好,那么什么呢?对于这个叫做,对于这个叫做这个time啊,这个这个M这个模块呢,它呢,不仅仅啊,不仅仅有说这个秒来了是吧,不仅仅说这个秒来了,然后就是说这个叫做这个一秒钟到了是吧,让他干什么,让他去进行这个加一,就是分钟加一,那么还有一种情况下,什么情况让他加一呢?那么还一种情况就是什么,就是如果说外部要调整分钟了。啊,人外部要调整分钟了,人外部要调整分钟了,那是不是别人就会来调整你对不对,那调整你怎么调呢。调整你怎么调呢?所以呢,人家的外部的话呢,我们把这条写长一点啊,外部的话干什么呢?外部的话呢,就会给你脉冲,什么脉冲呢,就是调整你的脉冲,比如说。
34:11
就是我们所谓的啊冲啊叫做这个。啊,什么意思呢?就是说如果一旦这个脉冲来了,就证明什么,就证明外部想让我们的分钟干什么,想让我们的分钟进行去加一。啊写然我们的分钟加一那好了,它呢sub来了呢,就证明想让我们的分钟啊去减一啊,这就是我们的一个设计啊,入门设计,那好了,那么在这儿其实我们这么来做的话呢,就是说会出现一个极度,呃,我也我也忘了不知道合不合理的现象啊,大家可以自己来想一下,你比如说咱们在调这个时间啊,呃,咱不说咱们家里的圆盘啊,就只是什么,咱就只说这个咱们手表调调时间啊,只说咱们手表调时间,比如说现在是多少呢?现在是这个三点。
35:07
呃,58就假如说啊,现在是03:58,就我的我的我的手表上是03:58,但是呢,我想给他调成3.02,怎么调呢?有人说那03:58就开始往下减呗,往下减是不是比较费劲啊,需要减50度,那怎么办呢?那所以说我把03:58就开始摁加一三点五十九。啊,就是我加分钟嘛,再加。就59肯定就会变成零零对吧,那么此时03:59,然后我把分钟加一,大家想一下,你说这个。你说这个加完一之后,是变成400了呢,还是变成300了呢?就是说我的意思就是说你在调整分钟的时候,这个分钟大于59,就往上调整60的时候,小时要不要加一呢。啊,就是你在调节分钟啊,但是这个分钟呢,它越过了这个这个零零这个线,也就是说呢,我从58调59,调节59又变成零零了,这个是分钟来说是毫无意义,是没有任何错误的,但是对于小时来说的话呢,小时要不要去加一呢。
36:13
这是第一个问题,第二个问题是,比如说现在呢是4.02啊,比如现在是4.02,那我干什么,我想调到04:58,那我怎么调呢?巴拉巴拉往上去加吗?我不,我怎么办呢?我准备把零二四点零二呢往下减4.014.00,然后我再减一是不是变成是不是变成59,再减是不是就变成58了,这样是不是近一些呀?那好了,也就是说当我从零零再减到59的时候,那么这个小时它要不要跟着去动作减一呢?比如我从4.02我想调到04:58,怎么调四点零一四点,然后再减变变成03:59了。那是变成03:59呢,还是我们要叉变成04:59呢?其实都可以,其实呢都可以,但是呢,我也忘了咱们的表到底有没有这个功能了,所以今天在这儿我们做一个简单的,什么简单的呢?就是调整分钟就是调整分钟,调整小时就是调整小时。
37:08
啊什么意思呢?就是说比如现在是什么是03:59。啊,比如说现在是03:59,那好了,那我一调整呢,我就是去调整这个叫做什么叫做这个这个这个这个分钟去了,我一调03:59,再调呢,再加呢,就变成3.00了,就是我调的是分钟跟小时没关系,小时就不要动啊,小时就不要动好吧,能理解能理解我说这个问题吧,也就是说呢,我们分钟只调分钟,跟小吃没关系啊,跟小智没关系啊,那么其实在这儿的话呢,我们还有一个问题什么呢?比如说这个秒。这个秒有一个什么样的问题呢?就是说这个就看大家能不能想得到了什么呢,比如说呃,就是对于咱们的这个叫做呃时间来说啊,就是这个时间来说,其实呢,如果说正处于调整期间的话啊,如果是正处于叫做调整期间的话。
38:04
我们到底允不允许秒在走什么意思?比如说你的时间是吧,你现在正在调分钟,或者正在调小时,你在调,你在调的期间,这个秒还动不动的,其实对于很多电子表来说,应该是就是你在调整时间,这个秒是不动的,秒是不能动作的啊,秒是不动的,就秒一直是零零,但是呢,对于咱咱们家里常用的那个那个那个圆表来说,就是大家一调的时候就就拨后边那个圈儿是吧,那么那个圈拨的时候呢,那个分秒针呢,还在动啊,那个秒针还在动,所以杆在这儿的话呢,我们就是说只要我一调整啊,这个秒就不要计数了啊,就不要计数了,那在这的话呢,我们来就学一个叫做啊time啊,就是说这个时间让不让走啊,让不让走好了,那么再往下啊,那么既然我们规定了啊,就是调节时间的时候时,这个这个秒针不让动啊,或者说秒针是清零的,这都可以,那么在这儿的话还第二规。
39:04
定就是调整分钟的时候,跟小时没关系,那当然了,调整小时我们就认为什么认为跟日期没关系就好了,好吧,好,那这样的话呢,我们再来接着往下做,那就是调整小时,所以当做完这个之后呢,大家就会呃清楚的知道什么,你就会清楚的知道呢,就是我们这个设计呢。越来越简单啊,越来越简单,再往下。我们直接复制这两个吧。好像不好,这样吧,还是这样来。好。好,那么这个呢,叫做这个小时or u啊,他一来就叫小时增加,然后它一来就叫小时减少啊,小时减小sub啊小时减小啊好了,那么对于我们来说啊,那么下边就是日期了,对不对,那么日期也是一样的,对吧。
40:13
那么对于我们这个日期来的,当然有什,当然就会有这个。小就是天的增加。和这个天的减少对吧,叫flag day啊day啊,那么前面这个呢,我们少了个东西啊,我们叫TTT啊,因为是这个叫做时间嘛,对吧,它不是闹钟啊好,那么还有一个叫做。叫这个啊,也是day,但是呢是sub啊sub好,那么对于月来说也是一样的,对吧?啊也是一样的,所以在这的话呢,我们还要再统一去调整一下。这个的话呢,我们往下挪一挪。
41:05
这可能不够是吧,我们把这些剩下东西再统一都往下挪一挪,我们看这一张能不能放得下,这一张有可能会放不下啊,但是我已经尽可能往一起去挤了啊,然后呢,希望他能放得下吧,因为他放不下的话,呃,问题还挺大的。OK啊,应该是差不多好,那么下面的话呢,我们来看这个月份啊,对于这个月份来说的话呢,也是一样的,对不对。你得有这个啊月的。啊,那就会有月的什么呢?月的减对不对?好把这个赶快缩小一点。跟下边腾位置啊。
42:00
好往上啊,那么对于年来说的话呢,也是一样的,对吧,有年的加年的鸡对不对。好,OK。好,对于年来说的话呢,就会有。啊,年的递增,Year年的递减。哎,怎么成这样了?好年的递增。年的递减好,那么对于这个叫做闹钟的秒来说啊,这个毫无疑问啊,它就不应该动啊,因为我去调整的话,我也不可能去调整闹钟的秒,对吧,或者说咱们在实际应用当中也没有调整秒这一说,所以咱们就不调整了啊,它就是一个秒就不动。
43:08
我把它呢,既然它很小,就把它缩小一点,跟下边留足够的足够的空间。啊,那么对于闹钟来说啊,闹钟的话呢,那么它的话呢,就需要什么啊,其实人家也是需要加,也是需要减的,对不对啊闹钟啊在这我们来。看一下。上一点点。好,那么这个的话呢,叫做呃,Alarm对吧,叫做ain的加。和这个ain的减sub,好,那么还有最后一个啊,绰绰有余了,下面上面可能挤的太紧了。
44:20
好,那么在这儿的话呢,还有这个叫做小时的家和这个小时的减。好,那么在这我们叫A啊,这个hour和我们的。它是叫做ah ho的sub,好,那么对于他来说的话呢,就还给它连上吧。好OK,好,那么这样的话呢,我们就是说做出来什么,做出来了这样的一个叫做,呃,控制器,就是或者说也也就是说我们可以理解为我们可以列为,就是说我已经把控制端,我已经把控制端给所有的人都列出来了啊,或者说我们就是说我们做设计的时候,我们已经把这个叫做控制端啊,我都给你留出来了,至于说你控制不控制,那是你的问题,但是我给你留出来了啊,但是我给你留出来对吧,那么我给你留出来了,那就是一个,那就是你想控制的时候,那么你就可以直接控制啊就可以了,好了,那么这些东西谁来控制呢?啊,这东西谁来控制,我们搞一个模块。
45:37
这个模块叫什么呢?这个模块起个名字啊,其实就叫做我们叫做这个CTR啊,我们上面是不是没有模块直接叫CTR的。嗯,没有。我们这个叫digital clock control,呃,在这的话,我们直接就叫这个吧,这个模块确实比较重要,或者叫做这个,呃,C rock_CTRL啊,就叫这个模块。
46:08
那么这个模块怎么重要了呢?因为这个模块要负责所有的控制信号的输出。啊的同时还要负责的是。这个信号的输出,以及他还要去负责另外三个信号的输出。哪三个信号呢?其实就是我们做设计当中的这三个信号,就是h adjust enm adjust en和l adjust,也就是说呢,你不光得输出这个这个这三组高低中的数据,你还要告诉我哪个数据是不是在调整,对不对?
47:09
那么这个叫什么?这个叫做L,这好像有点看不对,杠,我说杠en。这边挪一下。好,然后再来一个。好。叫L,呃,M和H好搞定。好,那么这个模块呢,就是一个控制器对不对,这个模块就是控制器一个time on对吧,就控制这所有的信号就可以了,那么它呢,靠谁控制呢?它呢就靠外部最简单的。
48:08
几个信号控制就可以了,什么呢,比如说时钟。复位。啊,这个flag Switch flag just flag和flag sub就可以了啊,复位。呃,叫做flag_Switch Switch。啊,这个叫做flag at。啊,叫做。然后再往下的话是这个,呃,叫做这个这个这个。
49:09
好,这个叫做杠。好,那么其实做到这的话呢,我们这个C这个模块。啊,就是digital clock control这个模块。我们就写完了。好。好啊,那么这个模块我就写完了,缩小一点,大家看一下啊,这个模块我们就做完了,那么这个模块大家来看一下啊里边呢,呃,其实看着比较复杂是吧,其实呢,也就是说呢,现在我们来想一想啊,就是说我们之前想的d clock模块比较比较费劲,但是呢,经过我们的分析来说,就是如果我不控制的情况下,是不是你这一堆模块就可以正常输出了,但是呢,我要选择哪个输出,所以有个macel啊,所得个mal,那我maxcel呢来了之后,就是只要一切换切换,只要把你选择哪一三组啊,或者做哪一哪一大组作为输出,那在这的话我就考虑控制,到底谁控制的呢?就由它来控制呗,啊那他来控制,所以呢,对于这个模式来说,它就根本就不用考虑怎么,这个就是这个叫分块里边不用考虑说正常的时间加减怎么减怎么加,我管你怎么减,怎么加呢,我就直接给你个脉冲,我就认为你加了,我给你脉冲我就认为你减了,所以这个模块呢,就是认为什么你给我脉冲我就加,你给我脉冲我就减,至于脉冲怎么来,跟我有什么关系,我也不管。
50:45
所以呢,你会发现咱们做东西的就是这样啊,就是说把这个设计呢,分好模块啊,然后呢,这个设计的难度呢,就会大大降低啊。好了,那么下边我们做什么呢?
51:04
根据我们这个里边的这些东西来说,还有一个最复杂的就是这几个都比较简单啊,这几个模块都比较简单,那谁比较复杂呢?就是C这个模块,这个模块为什么说复杂呢?因为大家现在还不做呢,对。那好,那么在这呢,我来给大家来做一下,要来给大家做一下,怎么做呢?其实呢,大家来想啊,对于clock control这个模块,他是不是就在考虑,比如说他在考虑高位调整,中间位调整,低位调整,到底谁在调整对不对,这是第一个,第二个他是不是得考虑我要要不然让时间走,我要不要这个加一,这个加一,这个加一,这个加一就是说我到底说比如比如说别人来了个发个ADDADDDD是加谁的呢?那我自己都不知道加谁的,那怎么办?所以呢,你要就是说你得根据外部的状态来说,你得告诉别人到底哪个是加的对不对,在这的话呢,我们来给大家把这个模块来做一下啊,这模块做完之后,我就开始写代码了,今天代码就出去的多,对吧?
52:12
好,我们在这儿往下写一下啊。那么这个模块我们用什么实现呢?啊,这个模块用什么实现呢?那么在这我们来呃。叫做呃,CR c clock ctrl,呃,设计实现,那么本模块,诶,本模块采用状态机实现,好,那么大家来想啊,我们现在呢,我们就直接就规划,或者咱们就一起来想,它一共有多少个状态呢?咱们就一起来分析啊,比如说第一个呢,我们来去画一下的啊,先画个圈。啊好,那么这个叫什么状态呢?比如说我们现在来想复位结束以后应该干什么呢?就有很多东西,可能大家一下都想不出来,那我也想不出来,那怎么办?咱们就一步一步做,还是那句话,咱们就一步一步做啊,能做到什么地步,咱就做到什么地步去啊来看。
53:22
一直做到做着做着做着大家可能都有会了,比如说复位啊,复位为腰了以后啊,进入到这个状态,那么进入到这个状态以后呢,我们来想你一上电应该你数码关系显示什么,一上电咱们肯定是默认什么,肯定是一上电默认啥默认就是显示时间呗,就是显示time对不对,所以在这的话呢,我们来这儿给他。定义一个状态,状态叫什么?这个状态就叫time TIM time什么呢?Time idol吧,Idle就是time的一个,这个idol状态啊,Time的一个,这个可以认为就是第一个状态或者空状态是吧?哎,初始状态啊,Time idol状态,那好了啊,那么这就是他的一个状态啊,它的一个状态。
54:12
居中啊,都写成零吧。好啊,Time idol状态,那好了,那么对于如果说对于time idol状态的话呢,那大家来想,如果说什么都不管的情况下,是不是一直都在time idol状态啊,那好了我们来想啊,如果在time idol状态的话啊,如果在time idol状态的话,大家来想几个问题啊,大家来想几个问题啊,那么呃,还有哎呃我们这个模块好像还没做完,还有什么模块呢?应该还有一个叫做这个信号没输出呢啊,我去开始忘了做这个了啊,就alarm就是还没有做这个这个这个alarm这个模块就是它呢要产生个什么,产生一个叫做这个这个这个这个这个这个呃这个这个叫做呃,Bep是吧,就是说它到底要不要响的一个闹钟是吧,咱这个没产生啊,那在这我再加一下这个模块,加起来好像没地方加了是吧,不太好加。
55:13
嗯。我看看怎么能搞一下啊,要不然这样吧。我们统一放到这个叫做呃。此。这样也不好。放到这儿吧。嗯,有没有地方呢。好像这个地方确实不够用了,那这样吧,呃,我就直接做到这个模块里边吧,就是说把这个功能做到这个模块里边好了。好呃,如果要想做到,如果要想做到这个模块里边的话呢,那么就有一个要求,什么要求呢,就是。
56:04
就是这个模块需要输出的一个东西。叫flag_am flag alarm,好,那么呃,如果说你要输出闹钟,那么首先你要知道什么?首先你要知道的就是现在的时间,比如说现在现在真实时间的分钟啊,那么你还要知道什么?你还要知道就是现在时间的。小时。啊,那么你还要知道的是闹钟的。啊,叫做闹钟的。这个小时和什么呢?和闹钟的分钟。
57:02
啊,就是你得知道这几个啊,但是其实这几个是是最好是不要写到这个控制器里边了,但是我这没地方画了啊,我就给它画这了,或者说一会儿呢,我们就写一个模块,然后这个模块的,呃,这个这个就单独我们放到这个里边啊,然后呢,到时候我们再来看怎么方便啊,但是说你要知道这几个值就是小时啊,这个时间的小时分钟和闹钟的小时分钟啊,然后呢,其实还需要知道一些东西,这个我们就统一放到这个里边来去做吧,然后呢,一会儿我们到时候再来考虑啊,好了,那么现在先考虑这个问题啊,那么复位结束以后,如果什么都不按,是不是应该在这个叫做time idol状态,对吧,什么都不按在time马状态好了,那么如果你要一按调整按键。你一按调整按键,我就会换状态,换到哪儿呢?换到这个叫做比如我们一调整调整什么调整time的这个,呃分钟啊,因为我们直接调整分钟对吧,调整分钟好了啊,你一按调整到分钟了,那你按调整的话呢,是什么呢。
58:11
调整就是叫flag_ad dut啊,你要调整就到这儿了,那么如果你再按调整呢。到哪儿呢?我就让你到这个小时h ho好,那么如果你再按调整呢,其实是不是就调整结束了,是不是就应该到flag叫做time这个这个iol状态了,在这儿的话呢,我们还是老规矩啊,因为再往往回画不太好画啊,所以干脆我就用虚线来表示它是一个已经存在的状态啊,也存在状态好了,那么大家来想这个问题啊,那如果说在time idol状态的话呢,你去按加按键,或者你去按减按键有用吗?其实是没有了,对不对?那如果说在这个情况下按加按键按键有用吗?当然有了,为什么?因为你按加就是调整的time的分钟啊,你在这个里边摁加就是调整的的小时对不对?所以在这的话呢,呃,我们直接呢,我先只画正在跳转啊,这个状态输出,我们一会儿来说再来看那么了,如果说我在这儿摁切换呢。
59:20
我这切换。你按切换到哪儿了,切换到日期了,对不对,那么日期的话呢,我们默认也会有一个叫做嘛,叫叫做这个呃,叫data,好,你按切换。到这了对吧,叫flag Switch对吧,S wich。我们是不是有规定啊,在调整期间是不是也可以切换呀,那如果一换都到哪了,是不是一切换都到这儿了。所以它一切换也到这儿了,对不对。
60:00
那这个呢,切换呢,是不是也到这儿了。是不是全都到这儿了,好了,那么下面我们就来往下做啊,那么如果说在这个状态下,如果说要按了调整,就是说已经到日期了,在日期的状态下按调整呢,那是不是首先第一个调整谁呀,第一个是不是应该调整的,就是说日期啊叫day对不对,那那如果说再N调整呢。就要调整谁了,就要调整一月份了,对不对。诶。好,就调整月份对吧,所以叫他on好,那么如果说再调整呢,是不是该调整年了。
我来说两句