00:03
好,这个有声音有画面的话呢,我们就开始这个呃讲解咱们今天的内容啊,呃今天的内容的话呢,其实呃相对来说就是呃,应该说呃让我自己认为啊是比较精髓的一部分啊,但是呢,大家可能听着呢,就可能觉得有什么可能觉得就比较枯燥的一部分啊,昨天我们就说了是吧,那么昨天我们就对这个案件技术进行了一个什么呢?进行了一个叫做这个这个总结,所以今天就不再总结了,那么今天我们做什么呢?今天我们来给大家做一下,就是说咱们学了一个月了啊,叫做呃,可以理解为叫做为期一个月的一个小考核,那么这个考核我们做什么呢?呃,那么这个考核的话呢,给大家说了是吧,我们要做一个呃叫做。呃,数字中是吧,那么这个数字中的话呢,呃,我们到底应该怎么来做啊,到底应该怎么来做,呃,那么呃在这儿的话呢,呃这个呢是我以前上课的时候,呃给做的一个就是这个叫做这个呃这个这个这个实习报告吧,那么今天的话呢,我们呃在这儿啊,我又把它拿出来了,然后呢,我们一起来去呃分析一下啊这实习报告,然后呢,呃注意啊,我前面这一部分啊,我只是说简单的给大家来去分析一下,然后后边的话呢,我来给大家做啊,我们不看现成的啊,那么呃首先呢,第一个啊就是说啊,我们是这个叫做这个题目呢,是叫做基于ipg的这个叫做数字钟这样的一个设计啊,那么采用的是这个咱们卡尔板上这样的一个芯片啊去实现的,那么这个对于输入设备。
01:55
来说的话呢,用的是这个按键啊,用的按键输出呢,用的是这个叫做数码管和这个封鸣器,那当然了,对于时钟来说是50兆赫兹的,那么对于复位说呢,是低电瓶有效的,那么对于独立按键来说的话呢,也是低电瓶有效的,对封鸣器来说的话呢,是无源封鸣器啊,是无源封鸣器啊,但是呢,呃我们知道呢,呃,它呢,呃给这个多少K赫兹的方波,它能响,并且我们做,并且我们还这个做过一次,叫做音乐封辨器,然后呢,我们还做过一个什么呢,我们还做过一个就是这个摁下去能够钉啊这样的一声,对吧?那么对于这个叫做数码管来说的话呢,我们是一个啊六位一体的啊这样的一个叫做这个供阳级的数码管,当然了,这个数码管呢,其实我们也做的很OK啊,很完美啊,那么也就是说呢,我们给他24位。
02:55
数字啊,当然也可以这么说,就是说给他叫做六组啊,四位的数字,它呢就可以显啊,就显示你给的一组是多少啊,就只能够显示对吧,才能显示好了,那么。
03:10
那么今天的话呢,我们要做什么,要做这个数字中,那么这个数字中的话呢,在这儿啊,我们首先来说一下什么呢?首先我们来说一下,就是呃,它的一些呃分配啊,那么第一个什么呢?就是说时中复位啊,这个就不用说了,那么第二个的话呢,我们有四个按键啊,在这我们又利用四个按键,那么这四个按键分别是什么呢?这四个按键啊,分别为叫做调整按键啊调整按键啊什么叫调整按键呢?那什么叫做调整按键呢?你比如说呢,现在咱们数码管上呢,诶显示的是这个小时分钟秒对不对,那我一按调整按键就意味着我要干什么,我要调整这个时间了,对不对啊,我要调整时间了,我摁一下什么叫什么要调整时间啊,然后呢,你按调整时间的话呢,那就是说按加这个这个这个这个这个时间就往上加,按减这个这个时间就往下减,随以是加减按键,那么什么是切换呢?比如现在我们。
04:10
可能是时间对吧,那如果说我一切换切换到哪儿去了,切换到日历上了,那切换到日历上了之后呢,你再一摁这个调整按键,那么加减加加减谁啊,它就是加减的这个叫做这个日期对不对,加减日期,所以说呢,我们一共呢,就用这四个按键啊,当然了,加上我们的复位就是五个按键对吧?比如说我们指数功能的话,就是四个按键,那么这四个按键呢,分别就是说调整按键啊,切换按键和加按键和这个键按键。啊,后面进入无源封闭器啊,数码管是六位一体的数码管好了,那么在这呃一共有六项啊,那么这六项的话呢,这六项就是就是说呃,我们今天的一个呃,所要设计的一个什么呢?所要设计的这样的一个数字中的一个功能啊,那么我们一起来分析一下啊,首先第一个。
05:08
啊呃,六位数码管啊,正好六个码,六位数码管用来是什么呢?是个显示功能,显示啥呢?哎,它用来去显示时间啊,就是小时分钟秒日期啊什么呢,日期什么日期就是这个年月日,那么当然这个年呢,我们把前面那个二零啊给省掉啊,只写后边的啊今年是二零年对不对,二零啊那么以及呢,闹钟时间,那么这个闹钟时间的话呢,呃,注意啊,就是我们这个万年历呢,我我我我家没有万年历啊,所以我也不太知道这个万年历到底这个定闹钟的时候,他能不能定是定日期,比如说我定个我定一个三天之后的五点闹钟啊,那么到明天五点他肯定不响啊,就是三天之后的这个这个五点嘛,对不对,所以这个闹钟的中间是不是只能定日期啊,不是,是不是只能定这个时间不能定。
06:08
日期啊,所以这个呢,我不太清楚,但是在这儿的话呢,呃,我们这个设计的话呢,我们就不要求那么复杂了,我们闹钟呢,只定什么,我们闹钟就指定时间啊,闹钟就指定时间,其他不其他其他不指定啊,其他不指定啊,比如说我们指定个呃,这个11:15啊,那好了,那么每一天的11:15都会响啊,都会响是这样的好了,那么对于这个时间来说啊,就是对于这个闹钟啊或者时间啊,这个这个这个闹钟来说是吧,它的前两位用来表示小时啊,中间两位用来表示分钟,最后两位来显示这个秒啊,对于日期来说啊,那么前两位呢,显示的是年份的,后两位啊,中间显示月份,最后显示的是日啊,那么呃,在这的话呢,这里边少提了一句话,什么呢,就是说呢,叫做哎,我们去显示。
07:08
这个叫做小时的时候呢,用什么显示呢?我们用这个24小时制好吧,我们用24小时制来显示啊,用24小时制来显示,那么我们用24小时制来显示的话呢,所以说呢,前两个就是说零到23对吧?啊零到23点好了,那么最后还有要求什么说每两位之间用小数点隔开啊,比如说呢,呃,这个呃,这个小时和分钟之间啊,一个小数点的小数点点亮啊,分钟和秒后边这两个点要点亮,那么这个的话呢,是一个附加功能了,那么这个功能的话呢,可能需要大家干什么呢?可能大家需要去修改这个数码管啊,就是修改这个数码管的这样的一个叫做这个这个这个这个它的一个呃。的功能啊,要不然的话,因为我们现在做的数码管的功能呢,是无论如何呢,这个小数点呢,它是不可能去点亮的啊,它是不可能去点亮的,那么呃,我们这个呢,也给大家来做一下啊,到时候我们来做一下啊,这是它第二个叫什么叫切换功能啊,什么叫切换功能呢?就是说呢,因为我们说了,我们的数码管呢,会显示叫做三种这个示的东西啊,第一种呢,叫做这个时间啊,那么按个切换就显示到日期了,再按个切换就显示到闹钟了,再按个切换就回到时间了,就是说我们这种按这个切换可以切换这样的一个叫做呃,三个显示的界面啊,三个显示的界面,那好了,那么对于这个调整的功能来说啊,这就比较长啊,我们一起来看一下啊,对于调整的功能来说的话呢,那么当你按下调整。
08:59
啊,当你一按调整,比如说大家写的是时间啊,一按调整啊,当然了大家知道啊,对于这个闹钟也好,还是对于这个叫做这个这个这个咱们的时间也好,调整的时候呢,没有人去调整秒的,比如咱们的手表是吧,小时候用的电子手表,那么这个电子手表呢,不可能让你去调整秒,大都数只调整什么分钟和小时对不对,所以说呢,哎,当你按下调整的时候啊,那么我们按加减就是调整的分钟。
09:31
啊,再按一次调整的时候啊,就认为什么,就认为你分钟调整好了,我就要调整小时了,哎,就要调整可以调整小时了,那么再按一下就认为确定调整了,就是说调整成功了,那调整成功了啊这能听明白吧,比如说现在显示的是年月日,呃,不是现在显示的是这个这个时间小时分钟秒,那么正常显示对吧,你一摁调整就认为什么,就认为此时就要在调整分钟了啊,此时就要调整分钟了,那此时调整分钟的话呢,那我就。
10:02
加,那就是分钟就加一,一人减分钟就减一,那么再一次调整呢,我就不调整,这个叫做分钟了,调整谁去了,我就调整小时了,那么再一次调整呢,就这么调整结束了,那调整结束之后,你再按加减就没有用了,对不对,谁也不调整了,那么你就没有用了,对不对,那好了,那么对于日期来说也是一样的,比如说日期按下调整呢,就调整谁呀,调整就是日再按下调整呢,就可以调整月份,再按下调整呢,就可以调整年份啊,再按一下调整,就是可以确定调整啊,确定调整,那么还有个问题就是,那么如果说呢,对上述的调整呢,有问题,那么就可以再次调整,什么意思?比如说我现在要调03:51。当我摁到这个这个小,当我摁到这个分钟的时候呢,我摁到了这个51之后呢,我摁了52,摁到52之后,我想去摁减一,我摁错了,又按了一次调整它,这不就调整小时去了,那你就再按一下调整,那不就不确定了吧,然后再按个调整又到分钟了,就可以说就是循环的嘛,对不对,那么还有问题就是说,那如果说我在调整期间按下来切换怎么办?你比如说呢,我现在正在调整分钟啊,正在调整分钟啊,呃,我还没有确定啊,我还没有按到这个确定按键,就是说确定我调整好了这样一个功能上,那么这样的话呢,呃,你就按了切换了,比如我正在调整分钟呢,你啪切换到日历上了,到日期上了,那么此时怎么办呢?我们就说只要你按下切换,就意味着上一次的调整成功啊,上一次就生效了啊,上一次就生效了,好了,那么这是一个对于叫做k Switch啊k adjust和kad和k subb。
11:47
啊,这样所说的一个什么呢?哎,所做的一个功能的一个理解,以及呢,就是说他们呢,到底应该负责哪些功能,以及他们之间是如何相互配合的这样一个关系啊在这这一段啊,虽然比较啰里吧嗦啊,但是呢说的还是蛮清楚的,那么第四部分叫什么呢?叫做闹钟的,这个叫做调整功能显示啊,那么比如说呢,比如说我现在要调整分钟了,是吧,我一摁调整分钟了,我再摁调整小时了,我再一摁去干什么去,这个就是确定了,但是大家来想啊,说如果说呢,我去调整小时,然后呢,我正摁呢,然后有事我先出去待了一会儿,然后回来了,那么此时呢,我自己都不知道我现在正在调整什么,是已经确定了的,还是已经调整过了呢,还是这个正在调整了,所以你也不知道,那怎么办呢,其实咱们呢是有经验的啊,你比如咱们小时候用这个叫做这个手机,不是这个这。
12:47
做这个这个这个这个手表啊电子手表,那么你调整哪一部分,那么哪一部分怎么做呢?是不是闪呀,一闪一闪,一闪一闪,是不是调整哪部分,哪一部分再闪不调整就都显示,所以在这的话,我们说什么,我们说啊功能啊功能也就是说呢,哎,当你进行调整哪一部分的时候,对应所调整的部分要干什么,要进行闪,就数码管亮0.5秒灭0.5秒,亮0.5秒灭0.5秒啊要做这样一件事,那么这样的话呢,就需要干什么,那这样的话就有了一个问题,啊什么问题呢?哎就是说啊,那就说什么,那就是说这个这个叫做这个。
13:30
这个这个呃,它的这个数码管呢,还是需要再去修改啊,因为咱们数码管现在呢,没有灭的,没有灭的条件啊,就是你只要给几它都能亮对不对啊,那么第第五个叫什么叫做声音模块啊,什么样声音模就是说放鸣器模块呗,那么我们说无论摁下什么音乐啊,都能发出叮那一声啊,无论你摁啥就是叮那一声,你摁啥按键都可以那一声,这是要求必须的。那么第二个当闹钟时间到了的时候,就干什么,你就要播放一首音乐啊,就要播放一首音乐,比如说你就播放咱们之前做的那个身上只有妈妈好,你就放那个音乐,那么如果说时间到了,就当当当当当当就开始唱啊,就开始唱,那么那么这个这个这个叫做呃,这个这个呃什么时候停呢?注意你不管他就一直闹闹铃呢,咱们闹铃是吧,就不管就一直闹铃啊,就一直闹着不停,那直到你。
14:31
去摁个按键啊,你摁啥都行啊,只要你按任何一个按键,那么都会终止音乐啊,并且呢,为什么并且的话呢,我们还会起对应的作用啊,毕竟就是说还会起对应的作用,你比如说呢,你正在闹铃巴拉巴拉的在响呢,你帮按了个切换,那好了,闹铃不响了,那么这个这个叫做这个这个这个这个显示的这个这个面板呢,就干什么就已经切换到日历上了啊,就已经切换到了日历上了啊那么有些人说呢,那我摁这个按键,我就本身就没想切换对不对,我们就没想切换,那我干什么,我就是想关个闹钟,是不是你把闹钟一关咋还给我切换了呢?不太好,那怎么办呢?是在这的话,我们可以规定一下,你比如说闹钟响了以后,怎么,怎么把闹钟停了呢?
15:15
我们在这儿呢,说是什么按键都可以,但是呢,我们可以人为规定一下,其实按什么都可以,但是呢,我们就规定规什么,大家按这个加呀,或者按这个减去关闹钟。因为因为在这个非调整状态的情况下呢,你去摁这个加减的话呢,其是没反应的啊,其实是没反应的,所以说的话呢,这个是可以自己去设定的啊好了,那么这是这个关于这个呃,这个闹钟啊,以及这个这个这个就是摁下去钉类事这个功能。那么第六个的话呢,就是这个怎么关闹钟,有人说呢,你刚才不讲了吗?就是你摁一下就关了呗,注意啊,我说的关的不是说它已经响了要关,我的意思就是说我现在不让定闹铃,就是你不用定闹铃,你定闹铃干嘛?
16:06
不需要你定到零,那么如果说呢,咱没有这个功能的话呢,就有一个问题,什么问题呢?就是说我没有定到零,但是呢,你没有定归你没有定,但是呢,你这个你这个闹钟的这个计计数器啊,这个时间它肯定有个时间,那么这个时间要和你前边的正在运行的时间相等了,他不就认为。就可以响了嘛,所以怎么办呢?所以在这儿的话呢,我们有了一个特殊的一个技巧啊,或者说用了一个特殊技巧什么的,比如说闹钟的小时,大家都知道,你比如咱们正常时间是零到23分钟是零到59秒,是零到59,对不对,那我说闹钟的小时可以到多少呢?我说闹钟的小时可以调到24。你想啊,我把闹钟的小时调到24了,你前面的时间怎么可能又等于24,所以你不可能,所以怎么办呢?我们说闹钟的时间可以调到24,那么用来干什么?用来关闭闹钟,其他时间呢,都是打开闹钟了,所以呢,闹钟的时间呢,我们说不设置日期,也就是说一旦设置闹钟,每一天都会有作用,那么在这儿补充了一个说明什么呢?说每个月按照30天去做设计啊,闹钟的音乐自定,那么每个月按照30天设计,那么为什么这么说呢?因为如果说呢,咱们还要去分什么呢?去分这个。
17:30
比如说区分什么,区分每个月有多少天啊,分这个分这个每个月有多少天,比如说这个这个一月有多少天,二月多少天,三月多少天,然后呢,去往上加到31号是不是清零,这不是变成一一号啊,或者是不是28号变成一号啊,还要判断什么,还要去判断这个这个这个它是不是闰年,因为到二月份的时候,是不是要判断有29天,那么这个呢,其实也可以做,但是呢,相对来说的话呢,可能就会有一点点的复杂,那怎么做呢?就在这儿的话呢,啊这个啊留做大家的一个扩展性的功能,大家可以自己去做调试啊,自己去做尝试啊,那么在这儿的话,我就不做了啊,我咱们就不做了啊怎么做呢?咱们就要求啊,每一天啊,或者每个月份都是什么,都是30天啊,每个月份都是30天啊,我不知道那个。
18:22
具体的我忘记了啊,忘记什么,我忘记了那个咱们小时候买那个手表啊,小时候买那个手表,它是不是按照这个闰年平年,然后这个每个月有多少天去走的,反正我记得好像这个手表它有的时候也有bug,比如说明明该31号它变成一号了,你怎么办,你要自己往回调一天。啊,这个这个是很早以前的啊,很早以前的啊,所以在这的话呢,我们这个呢,就就我们就先做一个相对来说比较简单一部分的,怎么做呢,就是说呢,就是每个月啊都有30天啊,每个月都是30天,然后呢,这个我们也不考虑这个闰年平年上的,我们每个月都是30天好吧。
19:03
好了,那么这个就是我们今天呢,就是我们今啊,对于大家学了一个月的一个考核。啊,对于大家学了一个月的一个考核,那么这一部分呢,是不是感觉呢很难啊,感觉很难,因为呢,咱们说的功能太复杂了,或者说咱们这个功能呢,确实啊,在某种程度上呢,这个对大家来说难度确实很大啊,难度确实很大啊,那怎么办呢?呃,大家呢,呃,不要着急啊,不要着急啊,就是说当你拿到一个复杂的任务的时候啊,比如说我们去做这个公司开发也是一样的啊,那么对于很多复杂的东西,对于我们来说啊,对于我们来说,其实呢,我也不会啊,那么因为我如果我要都会的话,那就不叫研发了,那就是说我就浪就相就是说这个不都浪费时间吧,就是说直接就耗时间去往上堆就行了,那么研发什么,就是你这个东西,你也不知道是是不是对不对,就不断的去做尝试,不断的去根据某些理论啊,去做啊,去研究啊。
20:15
这是,所以咱们在这的话呢,你就拿到这么一个复杂的东西,谁知道这是啥,但是呢,客户已经把他的要求给提来了啊,客户已经把他要求提出来了,就是啊就是这这些内容啊,就是我们这个一到六的这个,呃,这个这个叫叫做这个呃内容啊,一到六的这个内容,那么对于我们来说,我怎么做呢?呃,我们在这儿的话啊,我们可以给大家呢,去做一个这个这个我把这个功能啊,我把这个功能呢,直接这个呃。截个图啊,我发到这个咱们的这个呃群里啊,应该是可以能看得清楚的啊,然后一会儿的话呢,我也做个报告啊,然后呢,我做报告的时候呢,我就直接把这个呢,呃就干什么呢,我就直接把这个呢,就这个呃这个叫做这个这个直接呢就放到这个。
21:08
呃,咱们的这个要做的报告里边,那做的报告里边好了,那么呃,下边的话呢,呃,我们来做这个报告好吧,就是根据啊,根据我说的这一部分功能啊,这么多功能啊,然后呢,我们来去啊给让大家来看一看呢,就是当我分完这些模块以后,大家觉得还难不难。啊,分完这个模块,大家觉得还难不难啊,我觉得这个呢,呃,做着做着呢,就没有大家想象的那么难了啊,没有大家想那么难了。好,新建一个它啊,我们叫数字钟是吧,Di啊,Digital clock clock。
22:00
啊,这个是我们的一个,呃,啊。呃,那么对于我们来说的话呢,我们来呢,把它给打开。啊,然后呢,这个新建个文件夹啊叫doc啊,我说了今天呢,我们不做别的啊,今天我就只给大家去做报告啊,就只把报告给大家做出来啊,叫做Di啊,Digital啊,下划线CLCK,呃,设计报告设计报告啊V版本。啊,这一版本,那么这个的话呢,我在这里边儿啊,也就不再写那些过多的东西了啊,但是呢,呃,就是说不再去写前面的目录啊啥那些东西了啊,希望大家就是自己的时候对这个注注意一下,因为呢,呃,这就好像写论文一样啊,每个学校有每个学校的格式啊,或者说你去发这个电子期刊也是每个报社有每个报社它的格式,所以呢,咱们要把这些内容呢都掌握好,到时候只是调格式就简单了,对吧,所以首先第一个。
23:17
啊,第一项啊,第一项什么呢?第一项就是设计要求啊,设计要求啊,那么呃,其实这个其实在这我不是做了一个这样的一个设计要求吗?呃,其实呢,对于这个叫做呃,设计的这个要求来说的话呢,呃,其实往往是谁提供的呢?其实往往是这个叫做呃。甲方来提供的,就是说呢,人家找这个做什么的,人家找你做这个开发,对吧,人家找你做开发,那么当然了,人家会告诉你,你要给我开发一个什么东西,对吧,你要给我开发个什么东西,那么这个呢,就是说我们所说的要开发的这个叫做功能啊功能,那么这个在很多时候呢,这个功能的话呢,就是呃,大家以后工作了可能会明白这个道理,什么意思,比如说老师呢,给你留了一个问题,给你留了个家庭作业,但是你根本就不明白老师在说的啥。
24:13
那怎么办?所以你要干什么,你要跟老师沟通,就是说哎呀,你这个到底要做啥呀,沟通明白啊,确定好了之后,我们再往下做,那么当然了,这个呢,呃,就是因为什么这个你比如说客户说这样吧,你给我做个万年。客户,因为客户也不知道,那客户就这么说嘛,我就要个问点利嘛,他的功能是什么,他觉得大家都懂,但是呢,可能大家都不可能说,双方可能就有理解不一样的地方,那么此时呢,你去做,做出来之后呢,很有可能你做完之后交给他,那么他会说,哎呀我要这个功能咋没有呢?啊这个功能我就没要,你做这个干嘛呀,所以有可能出现这个问题,那怎么那怎么办呢?所以一定要跟客户沟通好,就是说那边需要什么功能啊,我们就做什么功能啊,并且呢,一定要诶形成这样一个纸质的这样一个东西,对不对啊,那在这我们做完了,好,那么第二个啊,当设计要求非常明确了以后啊,那么我们做什么呢?啊,我们就可以去做这个叫做这个呃,设计的一个啊分析啊,设计的一个分析啊,那么对于我们的叫做这个啊,设计分析来说,也就是说呢,我们去考虑啊,我们这里边啊,到底都是呃,怎么来实现的啊,怎么来实现的,那么或者说在这我们不叫设计分析叫什么呢?我们。
25:27
叫做这个呃硬件啊,硬件分析啊,硬件分析,硬件分析什么呢?其实就是第一个啊,比如说我们的这个这个主控芯片啊,主控芯片选的谁呢?选的是ipg啊,具体型号我就不写了,对吧?那么对于这个晶振来说啊,对于这个晶振来说是多少呢?是这个50兆赫兹的对不对?那么对于这个复位源来说啊,复位源复位来说什么是叫做这个低电瓶啊有效,那么对于什么呢?对于我们所谓的这个四个按键啊,就说呢,我们的叫做这个,呃,这个这个切换啊,比如说叫切换呃调整呃加和减啊按键也都是什么,也都是这个叫做低电瓶啊低电瓶有效好,那么对于这个封鸣器啊,封鸣器是什。
26:27
什么呢?我们叫无源封闭器啊,那么六啊,那么对于这个叫做这个数码管啊,数码管啊,数码管是什么?数码管我们是这个叫做哎六。呃,六位一体的啊,叫做供阳极啊,数码管啊,并且呢啊并且啊,这个叫做公共端啊采用呃,采用叫做这个pnp啊三极管啊控制啊,也就是说呢,我们这个PP的话,就是我们要给低电瓶的时候啊,这个玩意儿这个这个这个所选中这个管子才能导电啊,这就是我们把所有的硬件就分析完了啊,那当然当然了,呃这些分析的话呢,因为我们什么,因为就是现在对于大家来说都比较了解了,对吧,对大家都比较了解了,所以说呢,大家就是比较简单,你比如说如果说要像我做一个什么东西,比如说。
27:28
做一个这个分配器啊,假如说做个分配器,那之前没讲过啊,咱之前都没讲过啊,谁也不知道这个分配器咋想,那怎么回事,那怎么做呢?所以要在硬件分析里边啊,要在硬件分析里边就要在这儿啊,就要写一堆啊硬负面器是什么玩意儿啊,他怎么想,我们给高电频不想给低电不响,给这个才能给那个才能响,然后呢,我们又要去叮那一声啊,那怎么能叮呢?啊,我们说给他一个10K的方波,它就能响了,然后呢,给他一个0.1秒的10K的方波,他就颠了一下,那怎么能做出来这个音乐唱歌呢?那怎么做音乐唱歌呢?那好了,那怎么做呢?哎,那就是需要这个这个这个这个频率啊,哆少咪发索拉西啊,高音啊低音啊,然后这样一做研究到最后也就是这个玩意儿,我们才能够诶,才能够了解清楚啊,关于这个也是一样的啊,怎么能显示呢,怎么显示啊,怎么驱动啊,都要分析的明明白白的啊,就是只要咱们做这个东西的话。
28:28
都需要把它呢分析明白啊好了,那么这些东西都分析明白以后啊,那怎么做呢,我们开始来做,这个叫做。架构设计啊,架构设计啊,我们来分析一下这个架构设计啊,因为做架构的话呢,啊,做架构的话呢,其实什么做架构,其实就是一个把你的整个的一个设计进行叫做,呃叫什么叫做一个分离的一个过程,或者说呢,只要你做架构啊,就说白了就是分模块嘛,只要你去分模块啊,那么就相当于什么,那么就相当于你在变相的去降低你的设计难度。
29:07
啊,变相的降低你的设计难度啊是这样的,好了,那么我们来看一下啊,对于我们整个设计来说的话呢,我们一共能分成几部分呢?啊,对于我们实际要求来讲,能分成几部分呢?首先第一部分是关于数码管显示的。第二部分是关于闹钟的,第三部分就是关于这内部根据案件来产生这一堆数字的,那么在这儿的话呢,呃,我跟以前讲的,以前讲的这个怎么讲的,我具体我也忘了,那咱们在这的话就就按照咱们的思维一步步来,比如说呢,第一个我也不知道这个对不对,那怎么做呢?我首先先画第一个模块,比如说第一个模块干什么呢?第一个模块我们添加文字,第一个模块就是BP下划线,就叫什么,就叫做蜂鸣器驱动模块,或者叫做蜂鸣器控制模块啊,叫做CTRL啊。
30:00
蜂鸣器控制,诶蜂鸣器控制模块,那么这个蜂鸣器控制模块的话呢,我们想让它干嘛呢?很简单,它就是控制蜂鸣器呗,那蜂鸣器一共有几个作用呢?我们来想想有几个作用,首先第一个作用就是无论谁摁都颠了一下,这是第一个作用,第二个作用什么?第二个作用就是说。如果闹钟来了,他要一直唱歌,一直唱歌对不对啊,一直唱歌啊就完事了啊,一共有这两个功能对不对,那好了,那么在这我们来写一下,那么对于他来说啊,他的输出。啊,他的输出啊,应该就只有一个,那就是BP呗,对不对。
31:12
好啊,这就是他的一个输出叫BP好了,那么他的收入肯定有什么,他的收入呢,肯定还会有十中。啊,肯定有适中,然后呢,还有这个叫做。啊,我们这个到处还还是可以更改的啊,就是说这个长短什么之类都是可以更改的啊,我们来只是说现在就是看信号啊,适中啊,然后还有什么啊,复位啊,那么还有什么啊,注意啊,适中复位我们有了还有什么,下面就是说我们是不是规定说别人只要一按按键就钉,别人一按按键就钉那好了,所以对于我们来说,我们怎么做呢?我们在这儿直接呢。输入。什么呢?我们叫做脉冲,我们叫脉冲,什么脉冲呢?比如说flag脉冲,比如丁,我们就起这个名字叫丁好吧,也就是说只要他有一个高脉冲。
32:07
啊,只有它有一个高脉冲,那么蜂鸣器就要叮那一声好,那么如果说呢。它呢有一个脉冲,比如叫闹铃对不对,闹铃我们几个叫做ARAM这个反应闹铃的意思啊,就比如说他一来就有分闭器,一直唱着不停,那封闭器什么时候停呢?就得个停的停的时候啊,那谁来呢?那就是flag丁一来就停了。因为我们规定什么,因为我们的规定是这个叫做这个闹钟的话呢,啊闹钟啊,无论是这个无论按下什么按键都要那一声,那就发拉个丁就完事了,那这个发了个丁一高啊高高一个时钟周期就叮一下,这个其实我们已经做出来了,那么第二个说呢,如果如果这个这个这个闹钟这个这个这个这个这个脉冲来了,那就开始一直唱歌,那什么时候停呢。
33:00
什么时候停呢?就是说直到有按键按下,那不就是说按键按下,按键按下不都要钉吗?所以说钉的脉冲来了,就终止音乐就可以了,对不对啊,这要脉冲来好了,那么这就是封闭器模块好了,那么其实我讲到这儿。前面那么难,我管他呢,爱难不难跟我有什么关系,我也不想管了,其实我这个模块做到这儿,我是不是把这功能说明白了,什么功能呢?就是在时钟复位flag丁跟flag alarm的驱动下,有什么作用呢?Flag丁一来怎么做?就让蜂鸣器进行了一下flag alarm一来怎么办,就让蜂鸣器去。唱歌不断的唱不停,什么时候停呢?Flag丁来的时候就停。对不对,是不是,那是不是就把这一个就做明白了。啊,是不是就把这个就做明白了,那么大家来想这个模块怎么做呢。首先做东西的时候,我们先不考虑这个模块怎么做,我们就来说,如果说这个模块实现了这个功能的话,那么对于我们设计的要求当中,是不是对于五来说,对于五这个模块来说,就是说五这个功能来说,我是不是认为什么,我是不是认为就已经实现了,我就不管了,那好了,下边干什么,下步就考虑做其他的就可以了。
34:17
那下面做其他就可以了,好,那怎么做呢?我们来做第二个,比如说叫什么叫做这个显示的功能啊,我们做显示的功能,对于显示模块来说,因为我们一共就只有六个数码管,对不对,一共就只有六个数码管。啊,一共就只有六个数码管,那么这六个数码管的话啊,那么这六个数码管的话,对于我们来说啊,或者说对于我们这个叫做这个这个这个这个呃,这个显示来说啊,对于我们显示来说,是不是对于一个数码本来说,我们是不是刚刚讲了,它能输入什么,它能输入叫做任意的24位。数据。对不对,是不是输入任意的24位数据啊,但是如果这样来考虑的话呢,可能干什么,可能大家呢,就考虑就有点这个窄了啊,考虑有点窄了啊,为什么呢?啊,因为很简单一个问题啊,也很简单问题,也就是说呢,你不能说考虑的这个太窄了啊,那么你不能说直接说就往这就要堆的就是数码,管我们怎么办,我们要做的就是说把它稍微撇的不要那么细啊,稍微的粗一点啊,粗线条一点,那怎么做呢?比如说呢,我在这儿的话呢。
35:29
我想做的是这样一个模块,比如说这个呢,叫什么叫显示的控制。啊,他就他就只管什么,只管显示模块,那当然了,数码管呢,肯定也在这个里边,对不对,数法是不是也肯定也在这个里边啊,所以在这儿这个模块的输出。这有什么?就应该有我们数码管的控制型号,比如说seve_tu be_seg-N。
36:05
然后是七到零啊,这就是我们关于啊数码管,因为这个模块到最后就是控制数码管的,所以呢,它只要把它的数码管啊都控制好就可以了。好。好,然后呢,这个地方呢,是这个叫做cell-N啊,这个地段,这应该是叫做四到零啊,因为咱们有五啊有啊六六个数码管子应该是五到零啊,五到零啊六个数码管好了,那么这个显示模块的话呢,我们这么来分,怎么来分呢?因为呢,我们数码馆呢,虽然是六组,但是你会发现呢,在我们啊,在我们所做的这一部分当中啊,在我们所做的这一部分当中。啊,组的这一部分当中,你会发现呢,哎,我们其实呢,就是分成三组啊,包括时间日期或者闹钟,其实什么,其实都是分成三组啊,其实都是分成了三组,那我们来去呃,分析一下啊。
37:13
那么分成三组的话呢,那么对于时间来说,我们先说这个分成三组,那分成三组三组,三组我们用什么来表示呢?比如说我们称之为叫做高中低好吧,称之做高中低啊,这三种情况啊,或者这三组啊,我们分成三组,那么我们来看,首先呢,对于高位来说,高位来说,对于时间和日时间来说就是零到23,对于闹钟来说就是零到24,因为我们说了24要干什么,是调关闭闹钟的,那么对于日期来说的话呢,是不是零零到99啊。啊,零到99那好了,所以高位我们干什么,我们高位用什么来表示,我们高位就用零到99来表示,因为能表示零到99了,那肯定能表示零到23的,表零到24了,所以高位啊,我们用这个,呃,这个这个零到99,零到99呢,其实七位就够了,对吧?哎,七位就够了,好在这儿我们来给它呢,输入一个高位想要显示的东西,那当然了,呃,这个位置的话呢,他肯定也需要适中和复位,所以在这的话,我们把适中位给选过来。
38:21
时钟。复位,呃,这个我估计可能就不够不够长了,这个可能再往下再拉一点,好,我们先先这样,然后一会儿可能不够再加够了,再往上再缩缩小一点就可以了啊时装复位,那么第二个的话呢,需要什么,还有需要的是一个。高位的显示啊,高位的显示,比如说我们在这呢,高用什么来表示呢?高我们用hi来表示,比如就是H是吧,好了,那么叫什么叫H啊,我们可以称为叫做h date,好吧,叫h date啊,这是随意起的名字啊,多少位呢?六到零七位就够了,因为它最大能够表示的数字就是零到九,零到99啊,零到99。
39:06
高位好,那么这是这个叫做高位的什么,高位的一个显示的数字,就是高位想要显示的数字,那当然了,有了高位就是什么,就有低位,就有中间位啊,中间位我们用M来表示,低位我们用M来表示啊,好了,那么这样的话我们来看。对于我们的叫做中间位来说,啊,对于我们中间位来说,那来考虑一下,对于中间位来说应该是几位呢?啊对于中间来说应该是几位呢?我们来分析一下,中间位的话呢,那就是什么?那就是这个叫做对于时间来说,那就是中间是分钟嘛,分钟就是零到59嘛,对不对,对于啊这个日期来说,中间什么,中间是月份,月份就是一到12嘛,所以呢,我们用刚才说按照这个59来说,59需要几位呢?59呢,其实就需要六位就可以,因为六位就可以到63了,对吧?所以六位就可以了,六位的话那就是五到零对不对?好,那么对于呃这个叫做呃这个这个第一位来说的话呢,应该几位呢?应该是这个也是六位,为什么呢?因为他呢,呃,时间来说是零到59闹钟呢,注意闹钟是没有秒的啊,闹钟是没有秒的啊,闹钟是没有秒的,那闹钟如果没。
40:26
都秒的话呢,那么就简单了啊,闹钟没有秒就简单了啊,那就是对于我们来说,那就是秒就是零呗,就一直就是零就完事了,那一直就是零就完事了,或者说闹钟的话呢,那最后两个就不显示也可以都没问题啊,都没问题好了,那么我们。就做完了啊,就显示那当然了,那如果说我给你是三,你就一直显示三嘛,我给你是五,就一直显示五吗?不一定,为什么呢,因为我们有个要求,什么要求呢?说进行功能调整的时候,对应部分要进行量0.5和灭0.5,量0.5灭0.5怎么做呢?我也不管,因为它也是显示功能里边了,所以在这儿啊,怎么做呢,我就给它在这。
41:10
弄一条,弄一个什么呢?弄一个。哎。弄一个这样的一个叫做呃这个指示信号,比如说叫m men啊menn什么意思呢,就是说呃,不是这个叫做Chen啊hen什么意思呢,就是调整enn吧,Adgt。杠杠啊,这是啥意思呢?就是说高位是不是在调整,就是如果它等于一了,证明什么意思呢?就证明这个高位在调整啊,这个这个为腰就证明高位在调整,那好了,那这个为腰呢。就证明中间位在调整,那这个为腰呢。
42:05
就证明第一位在调整好了,一共呢,我们就输入这么多,那么对于小数点如何显示,其实小数点倒简单了,因为这个当中的话呢,呃,无论是小时分钟秒也好啊,还是这个日期也好啊,还是这个闹钟也好啊,他们的点呢,就在这个,呃,这个两个显示一个,两个显示一个,最后一个不显示就在这儿对不对,所以我这个这个这个呢,我们就在这个当中做就可以了,好了,那么这样的话呢。我们是不是就把控制模块给写好了。啊,控制模块没有写好了,大家来看一下,对于我们这个里边是不是我们显示模块有什么作用呢?就是说你想在高两位显示的数,你就给了他,中间两位显示就给了他,低两位显示就给了它,那么但是呢,你给我的数我不一定给你显示,为什么?因为有可能你在你是正在调整对不对,你正在调整,那怎么做呢?我这有一个叫做en,就是说呢,你只要正在调整的话,你把这个信号拉高,我就知道我给你显示的时候呢,就不能只显示你这个数,比如你数等于三啊不是等于33,三三,那么如果你这个数为,如果它为幺了,就证明我不能给你一直显示,就是三三,那怎么办呢?我会显示呃0.5秒的三三,然后呢,熄灭0.5秒对不对,熄灭0.5秒好了。
43:27
啊,这就可以了,对不对就可以了,那么这个显示里边怎么控制,比如说都不调整啊,比如它显示的是030303,就呃三点呃03:03:03,那怎么做呢?那就是你要考虑如何把这个三显示到高两位上,这个三显示到中间两位上,这个三显示到后两位上,那就是说在显示模块的控制啊,显示模块里边应该怎么来做啊,那就是这个你的问题了,对不对,那么对于调整来说啊,那么对于调整来说,那么也是一样的啊,这那就是说前边肯定要告诉我是不是要调整了。
44:02
啊,前面告诉我调整了,那么内部就根据他要调整了,那么我应该怎么来去做,不调整应该怎么来做,对不对,所以这都是显示模块的事,好了,这都做完了,那这都做完以后呢,也就是说我们把输出都搞定了啊我们把输出都搞定了,那怎么做呢?那下边就是我们需要考虑的一个问题,考虑什么问题呢?那么下边就什么,因为我们外部用的什么,我们外部用的是不是全是按键呀。那么这些案件大家呢?经过前期的学习啊,大家肯定就明白了,案件第一件事儿干什么消斗,第二件事儿呢,做边缘检测。啊,第一是消抖,第二干什么呢?做B人检测,也就是说你消抖完了,做B人检测结束以后,那么此时它干什么,此时你就产生了脉冲,然后呢,我们内部操作都是用谁量,都是用脉冲呢,因为你按一次一个脉冲嘛,我就知道你按了一次对不对,因为我们都是按一次啊按一次那么当然了,有人说我们这里边少的一个功能,什么功能呢?就是呃,有一个功能是比较复杂的,就做起来可能会相对说比较复杂一点,我们不做什么功能呢?就是说大家现在的电脑也好,或者手机也好,都有个功能什么呢?比如你要摁,比如你要摁无数个三,比如你要摁八个三,你怎么摁呢?那就12345678,就是说去摁八下也有,那你怎么办呢?你也可以摁住三不放手。
45:28
摁住三不放手的时候,他刚开始出一个三,然后等一会儿之后,你还没放手刷啊,就一拍三就出来了啊,比如说去调整时间,有的时候也也可以这样,比如说呢,我想要比如现在是零三,我想调到53,那怎么做,我要叭叭叭摁50下太费劲了,那怎么办呢?我就摁住加不放手,它变成四,然后等一会儿56789就开始往后走了,但是我们这个啊,我们这个不这么做啊,我们这个不这么做啊,我们这怎么做,我们这个就是很简单的一种做法,就是摁一下就挑一下,你按着不放手,我就当你摁了一下啊,当你了一下。
46:00
好了,那么呃,这个的话呢,我们就知道了是吧,也就是说呢,首先呢,我们还得有一个模块,这个模块干什么呢?这个模块的话呢,就一件事,什么事呢,就是对外部案件的处理。啊,叫做按键控制模块干什么,他就是去处理按键的啊,他就是去处理按键的。好。那既然你是处理案件的,说白了你就会把四个案件处理成多少呢?处理成四个脉冲呗,就是这个意思呗,对不对。好时钟。啊,这个叫复位。好,那么我们为了跟上面保持一致啊,我们的,呃,调整叫不是我们的啊,切换叫k Switch,调整叫k adjust,加叫K,减叫k sub啊我们是这样来写的,那在这我们来接着往下抄一下。
47:16
啊,这个叫做呃,K。K adjust k sub啊好了,完事了啊,就这个叫K_Switch SW,诶,WT。好,那么这个呢,叫做KK下划线啊。叫调整按键,那么这个呢,叫做加按键啊ad啊,那么这个呢叫做减按键,叫k sub好了搞定啊搞定好了,那么下边的话呢,我们来说这个模块干什么,这个模块其实就是负责是干什么,就是输出四个脉冲呗。
48:03
啊,输出四个脉冲。好,那么这个呢,叫flag下划线,比如Switch啊叫。S wi,呃,T啊,是不是写错了?S wi啊,这写错了,我说怎么单词搞拼老不对劲呢,S wich啊。好。然后呢,是这个。诶。然后呢,是这个。Flag的啊,然后还有呢,是我们的flag a。Ad。还有呢,是我们的flag sub。啊sub啊,大家不要觉得这浪费时间,我觉得在这做完这些东西时候就做的设计特别的清晰啊,大家来看这个模块,这个模块就是按键控制么?控制什么?就是将外部的四个按键。
49:12
做四个消斗,做四个VR检测,产生四个脉冲,这个其实我觉得这个还是蛮好做的,对吧?这个对大家来说都已经是轻而易举了,因为咱们的代码都已经写出来了,只不过需要例化好几遍,做个连线而已,对不对?好了,那我们来看拉丁怎么出现呢?拉丁怎出现呢?拉丁是不是就是这四个,是不是就是这个按键的脉冲的一个箱货呀?大家来想想,是不是就是这四个的一个箱货呀,是不是。啊,就是这四个的一个箱货,所以这样的话呢,我做成这个样子啊,插入一个呃或的符号或或或。嗯,货在哪儿啊。
50:01
这个吧。这个货门可能看起来比较丑啊。或者这样吧,我们干脆就在这儿就再画一个模块好了。角or_gate。四杠一好,OK。好,那这个模块的话呢,就是只是一个呃,四输入的一个货门啊,然后呢,它呢,产生什么,产生这个flag丁,我们把它给连上。啊,就是它产生的啊拉丁啊,就是说呢,它只需要把这四个进行箱或给到谁呢?给到这个拉丁就可以了,啊给到发了个丁就可以了,那好了,是不是现在就是说即使下边我们什么都不做,我们就只做一件事,什么事儿,就是我们只把这个模块写了,这个模块写了,这个模块写了又可以干什么,就你这一个按键只有钉了,所以呢,我们再去做设计的时候,有的时候呢,可能会干什么,可能就是说呃,做一半或者做某些部分,其实我们是可以先测试的啊,其实是可以先测试的,这是没有问题的。
51:31
好了,那么现在的话呢,我们再来考虑一下。就是说四个按键变成什么,变成了四个脉冲啊,四个按键变成了四个脉冲啊,那么这个模块里边啊,就是说把四个按键的波形经过消斗,经过别人检测产生四个脉冲,这个呢,把四个脉冲进行相互得到一个flag丁,Flag丁进去,然后产生叮的一声就结束了,对不对,那么还有什么呢?现在呢,现在还有一个叫做啊,我们最重要的一个没写啊。这样吧,我把这个稍微往上一点啊,要不然下边画起来可能会比较费劲。
52:10
嗯,这些距离太。有点远了。所以导致。好OK好了,那么对于我们来说的话呢,那么对于我们来说怎么办呢?啊,少个什么,还少一个非常简单的一个东西,就是什么,就是控制器嘛,就是我们做数字中的个控制,在这我们来写一下,就是我们做下线。Lock_CTRL就是这个就是一个最重要的一个控制器啊,最重要的控制器啊,那么这个控制器干啥呢?这个控你你想啊,就是别人都不控制的东西,那你就控制呗,啊,因为就只剩你来控制对不对了,那就这样,我们把这样我们把这个东西往后调一下,要不然看着比较。
53:19
这样好,诶下边没选上。还是没选上这个多长啊。好,OK。好,那么这个模块干什么,这个模块的话,你看这块还得产生一个flag对不对,所以把这个往上拉一下。是由它来产生的,那么然后呢,这个模块干什么呢?这个模块呢,就是根据这四个按键。
54:08
啊,就是四个脉冲啊,当然还要根据谁呢?还要根据的就是这个叫做时钟和复位。好,然后干什么去产生这个flag,以及去产生啊,要显示的高位数据,中间位数据和低位数据,以及高位是不是调整,低位是不是调整啊,这个中间位是不是调整这样的这个这个东西,那大家来看一下。对于我现在做的这五个模块,那么这五个模块能不能完成我们想要的功能呢?啊,能不能完成我想要的功能呢?那么首先我们就一步步来分析吧,对不对,那么在这的话呢,呃,首先我们来说flag丁这个其实呢和它没有关系,因为丁只要摁四个按键,谁都按到D,那我跟它就它不用控制了,那么对于flag alarm来说,就什么就是就是叫做这个时间和闹钟一样的情况下才能响,那所以这个脉冲需要由它来调整啊,它来产生那好了,那么对于啊按键来说,我们都要把按键变成变成脉冲,因为我们要去脉冲去来控制,那就用四个脉冲啊四个脉冲干什么产生alarm以及呢,产生什么,要产生我们高位显示什么,中间位显示什么,低位显示什么啊那其实其实呢,显示什么就已经结束,对吧,但是我们还要干什么,我们还要说他是不是在调整。
55:29
啊,比如说我现在要调整分钟了,那这个值就等于三,我再按一下它等于四,我再按一下它等于五,但是他只会等于345,对不对,但是怎么闪呢?啊,这个可以知道,但是你怎么知道它在调呢?他万一没在调呢?所以呢,在这儿给了一个调整的一个标志,它是不是在调整对吧,是不是在调整好了,那么也就是说呢,现在这个架构呢,是干什么,是可以干什么,是可以实现我们的功能了啊,可以实现我们的功能了。
56:03
好,那如果可以实现我们的功能的话啊,如果可以实现我们的功能的话。这么靠下上帝。啊,如果可以实现我们的功能的话,那么这就是我们那个什么,这就是我们的一个顶层设计啊,这就是我们的顶层设计啊,叫做呃,对吧。叫dial下划线。好,这就是我们的一个设计啊,这就是我们的一个设计报告,那好了,那么大家来看啊,当你看到这个设计报告以后啊,当你看到设计报告以后,那么也就是说呢,也就是说你看我刚才呢干什么,我刚才是不是说了,呃,那么多功能,就是看到咱们的功能来说,这个功能里边有那么那么多,但是呢,如果直接让你来做,那么不会做啊,不会做,不会做怎么办?不会做我就去按照你的功能,我就呢去分析分析啊,分析分析你一共需要哪些外设呀,外设怎么回事啊,分析明白是吧,或者简单做个实验去测试一下,那么当都清楚了以后怎么做,哎,当都清楚了以后呢,我就去做一个非常简单一个东西,就什么就是去分分功能,分模块。
57:30
啊分功能,分模块,那么这样的话呢,我一共就分出来五个模块出来,啊分出来五个模块,那么分出这五个块,我们就来分析一下,这五个模块能不能完成我们想要的功能呢?啊能不能想我们的功能呢?所以在这我们一起来讨论一下,能不能呢?刚才已经讨论是可以的,对不对?那么对于封闭器来说,分闭器一共就两个功能,第一个功能就是别人按按键第一下,第二个功能就是闹钟要响。嗯,闹钟怎么停呢?别人D的时候咱就停,所以呢,我只需要一个D的一个脉冲,我需要一个呃,闹钟的一个脉冲就可以了,所以这个模块做完了,至于怎么做不知道不知道好,那么第二个我们来说,对于按键来说,因为按键是有抖动的,这个应该什么?应该说你在硬件分析的时候,你就应该知道按键是有抖动的,那么这是第一个,第二个,那为什么要进行别人检测产生脉冲呢?注意啊,就是你来看,就是在我们的设计当中,有很多的沟通都是靠脉冲沟通的,因为只要告诉你,我告诉你什么东西,你该干什么了,大部分都是用脉冲来表示的啊,大部分都是脉冲来表示的。
58:34
啊,那好了,那么现在的话呢,就需要边检测产生四个脉冲,那么这四个脉冲经过向或就是一个flag丁搞定了,那么对于显示来说,那显示不就是控制数外管显示吗?那怎么做呢?我也那你说你要给我什么,你要如果说你要给我的是小时分钟、秒,年月日,然后还要再给你还要再给我这个闹钟的小时分钟和秒。然后呢,你要再告诉我它是不是在调整,所以你不觉得这个显示模块它控制西有点多了嘛,那怎么做呢?我们就做个简单的东西,就是说呢,小时分钟秒,你不要给我年月日上来,我是个我是个显示模块对不对,你只需要告诉我把哪个数据显示到高位,把哪个数据显示到低位,哪个数据显示到中间,然后以及告诉我这个数是不是在调整就可以了。
59:22
啊,你就你也不要你你前面也不用管他闪不闪,你只要告诉我他在调整这个闪不闪,我来处理,你只要告诉我前面高位什么低位什么就可以,其实你能不能把那个叫做什么小时分钟秒,年月日,还有闹钟的时间,小时都告诉我行不行,行啊,你都告诉我了,你告诉我以后,那你是不是得告诉我,我应该显示哪一组啊。所以这样的话呢,其实呢,你告诉我显示哪一组,然后我把这一组数取出来,那不还是高位中间和低位吗?所以至于显示哪一组东西,你就别让我去区分了,这个早晚得区分,那谁来区分呢?你前面控制器来区分呢,我就不管了,对不对,我就不管了好了。
60:03
那么前面就是控制器了啊,前面就控制器了,那好了,所以呢,这一共就分分成了五个模块,那么这五个模块当中呢,这个是最简单的,对不对啊,这这个是最简单的,这个是第二简单的啊,这个是第二简单的,因为这个咱讲过了啊,那么这个是第三简单的啊,因为这个里边的话呢,音乐后鸣器哈,和这边我们都讲了,其实做一些的变换就可以了,那么这个就相对来说可能会比较的。难啊,那么这个是最难的,当然了,如果说呢,我们要是在公司里开发也好啊,或者说大家是来上这个线下的班是吧,线下的咱们学习班的话呢,一般情况下呢,我会干什么,我会给大家呢,做成这个叫做讨论就是或者叫做研发小组啊,然后呢,咱们呢,基本上是四个人一组,就是就是你们的项目研发组,你们四个人,然后你们四个人当中呢啊,你们四个人一个人做一个模块。
61:00
啊,一个人做一个模块就行,然后你们每个人做一个模块,把这个模块做出来以后怎么做呢?进行联合调试,然后把这功能实现,那么此时你会发现什么呢?你说我就做了一个flag丁丁,以及他来这个脉冲,我就直接唱歌,我就做这一部分。啊,我做这一部分的话呢,到最后就整个项目结束了,就结束了,就完事了,至于说你参与了什么啊,我参与了这个这个这个叫做这个这个叫做数字中的设计啊,负责那一部分负的D那一部分,就好像说,就好像有些人说啊,你做了什么啊,我参与了这个叫做呃,嫦娥28号飞天工程啊,这个一听很牛逼啊,其实你参与了啥呢?我我参与了那个那个去盖那个地基的时候,我给搬了,搬了块砖。呃,不过这也是参与了呀,对不对,呃,这个其实有的时候呢,往大工程上说,那就是这么来说,但是自己参与那一部分呢,可能会很小,可能会整个你也不知道是因为啥,那为什么呢?其实呢,这就得益于谁呢?就得益于有一个非常牛逼的一个人啊,这个人干什么,这个人把所有的功能,所有的这个这个要干什么都分好了,然后呢,你们做什么做的都是一些。
62:10
小模块,你单独把这个模块视线,然后呢,组到里边就可以了啊,组到里边就可以了啊,那么这样的话有什么好处呢?就是说你直接往天上飞,这咋谁知道咋飞啊,但是有一个牛逼的人,他知道咋飞,他什么都知道怎么做呢,但是他他呢也没有时间,也没有精力去做那种细小的东西,那怎做呢?他就说哎,你给我造一个喷射的一个什么东西,那这个人啊,不就喷射嘛,一个按钮,或者你给我信号,我就开始往下喷。就完事了。啊,那就可以了,所以说对于我们这来说也是一样的,我们干什么,我们要把一个复杂的一个工程啊,或者复杂的功能干什么,要去分模块,只要你把模块分出来,相当于就是变相的降低了你自己的难度,所以一定不要说把一个复杂的东西上来,哇,这么难怎么做呀,也不知道从哪开始下手,从哪儿下手呢,从哪儿下手都行,但是你千万不要一起做,就是不要说哎呀,呃,我在这考虑做封鸣器呢,啊叮叮叮,然后alarm,然后诶他咋就alarm了,他咋就flag alarm了呢?啊,比如他小时分钟,诶小时分钟相等了,它怎么就产生这个跟你有什么关系呢?此时如果你要考虑的过深过多了,这个东西你就做不出来了,所以怎么做呢?最好的方法就是什么,就是说。
63:26
你给我一个脉冲,我就开始想,至于脉冲怎么产生,那跟我没关系,我不想知道。对不对?好了,那么做另外一个模块的时候怎么做的?我想让闹钟响,我就只给脉冲,至于你怎么想,我不管。所以你会发现呢,此时呢,利用了这样一个信号把呢,一个复杂的功能呢,好像是分成了两个毫不相干的部分,那么此时你再去做的东西的时候呢,你会发现一个复杂的功能被分成了N多小功能,然后你去实现这个小功能的时候。
64:00
就要简单的多,那么实验小工作时候就不再去考虑复杂功能到底怎么回事了啊,因为已经分好了,这就是一个叫做什么分模块化设计,以及我们叫做层次化设计的一个好处,就是我们叫什么叫top to down,就是我们从顶层一步步往下细分,那比如现在这几个模块怎么做,其实我也不知道。那咱们就在这分析嘛,一步往下分析对不对啊,一步往下分析啊,一步往下分析,那好了,那么往下分析的时候,我们怎么做呢?那么首先我们可以来一起一步一步的,一步一步来分析啊,你比如说我们分析第一个。就做这个这个KCR模块啊,就是说我们这个按键的控制模块,那么这个按键的控制模块怎么来做呢?我们来写一下,比如说呢,我们来这儿写一个。标题200。叫什么呢?叫做这个KA_CTRL啊设计与实现啊,那么这个里边的话呢,嗯就比较简单,因为我们主要什么,我们主要是架构图,至于怎么实现,我们一般情况下是用什么,是用这个叫做呃这个这个这个呃这个架构来表示啊,就文字描述来表示的啊,那么在这个当中的话呢,我们都已经讲过了是吧,这个什么这个负责和边检测对吧,所以这个模块干什么,就是这样吧,这可能画不像我们放到。
65:24
嗯,这什么情况。呃,啊,这个是。我看一下啊。好,那么呃,在这我们怎么做呢?在这儿我们来做一个,比如说我们来这偷一个模块过去啊。Okay。啊,那么根据我们啊这个所理解的怎么做呢?它的作用就是什么,它的作用就是把四个按键做四次消毒,然后做四个VR检测嘛,所以第二就是K下划线,呃,Filter下划线下划线,比如我们做这个Switch的。
66:17
SWITCH。好,那么他的收入有哪些呢?它的输入有。适中,我们这个也从这偷一个过来。好,他的输入有适中,然后呢,他的收入有。复位,然后它的输入有k Switch SW。
67:00
I t ch。好,那么然后呢,它呢会干什么,它就会产生一个消斗之后的波形,对不对,就是这个波形叫什么呢?这个不是我们起个名字叫什么,我们叫Switch,或者叫做Switch好吧。叫做wave Switch s wi,这个有点短了,加长一点。好,然后呢,这个后边干什么,这个后边是要去做一个叫做BR检测,对不对,BR检测的话呢,我们是同样的是吧?EDGE下划线,好,那么这个模块的话呢,它的输入什么,它的输入就有,因为我们是没有钥匙复位的啊,我们只有一个时钟。好十中,然后呢,这个模块的话呢,输出什么,诶怎么进去了。
68:00
诶,什么情况,怎么还弯了呢?好什么呢?我们叫flag Switch。好Switch好了,当做到这的时候呢,其实我们就已经把第一个做完了,就第一个案件的处理就是这个流程,对不对啊,第案件处理就是这个流程,那下面我们来做第二个流程。好啊,那么时钟和复位的话呢,其实呢,呃,就不能再去从外界输入了,因为我们说时钟和复位的话呢,它只从外界输入一个,对吧,你不能说呃,外界输入了这么多能输出一个啊,那然后怎么办呢?然后都是这个用小短线来表示,它是内部信号啊时钟啊,我们把时钟放到上面去。
69:05
始终。然后是位,然后是位了,那么这个做的点是做出来可能会比较大,那怎么呢,我们给它缩小一点。好啊,那么这个的话,我们也同样缩小一点。
70:03
好,那么这个呢,我们也缩小一点。好,那么这个呢,我们往中间放一放。这个我们往中间放一放。能让他们的靠的近点。然后再来一个。然后再粘出来一个。好,下边去做修改啊,第一个叫k adjust adgt啊,第二个叫做ksu b啊,这个叫做KADD,好,那么这的话呢,是k adjust adg ST啊,那么这个叫做k sub,诶,Sub啊,这个叫做K。
71:05
Kad,然后这个地方呢,叫做wave just agust啊,这个叫做wave subb啊,那么这个叫做ad啊,这个地方呢,叫做。Adjust at啊,这个叫做sub,这个叫做。ADD啊,这个叫做adjust,这个叫做ad,这个叫做哎,反了,这个叫subb subb,好,这个叫做ADD好了。当做到这的时候呢,也就是说呢,我们的呃叫做这个K是这个模块啊,它的呃,它的应该说叫做二级的这个架构啊,这个架构呢,我们现在就已经又做完了啊,现在就做完了,也就是说呢,我们在做的时候呢,它的什么呢?它的这个就是这在这儿啊,这个是顶层,这里边是子集模块,但是这个子集模块它并不一定就是最底的,它有可能呢,它的下边还有呢,就那这一个下边有可能也还有就是我们可能会做好几集啊,这个是正常的一个现象啊,因为做设计比较复杂的时候呢,可能会嵌套好多好多G啊小K意外下划线CT。
72:42
好,那么下面大家来看一下啊,下面大家来看一下,对于我们这一个啊,对于我们这一个设计来说,其实大家觉得这个设计对于大家来说有难度吗?我觉得是没有的,大家还记不记得我们之前去做那个叫什么,做那个按键计数实验的时候,是不是就把加按键和简按键都做了消导,然后都产生了波形,然后都做VR检测,然后又都产生两个脉冲啊,所以这是一样的道理啊,所以这个呢,对于大家来说,我觉得难度不大啊,对大家我说难度不大就很简单对吧,很简单啊,就是说就可以把这个呃,把这个就能够实现啊,就能够把这个实现啊,把这个实现啊,所以说的话呢,希望大家呢,把这个啊要能够呃自己啊把它给做出来啊,那么当然了,呃,我们呃去,如果说呢,这一个实验是我们从头就开始做这个实验,那么就会比较复杂,为什么,比如说做到这的时候干什么,我们要就要去研究一下按键消抖。
73:43
是怎么回事,那么按键消毒怎么回事啊,就是说还要去这个分析啊,做它的这个状态转移图啊,呃,然后呢,讲各种一堆东西啊,才能够知道啊才能知道,所以呢,如果说真的大家把这个设计报告做完啊,其实呢,你会发现这个设计报告啊,呃,不夸张的说,50页肯定有。
74:03
因为呢,你每一个模块都要描述很清晰的话呢,那么至少得50多页才能够把这东西做出来啊,所以把这个东西写完啊,就只是主体部分啊,不介绍任何其他的玩意儿啊,所以说在这的话呢,这个啊,就这个模块实际实现我就认为已经实现了啊,因为这一部分呢,就比较简单了,或者说咱们也不能说简单,只能说咱们都做过好了,第二部分来看一下这个模块就不再画了。比如说or啊gate啊,四杠一这个模块,这个模块的话呢,我就不再画了啊,这个模块我就不再画了啊,为什么说呢?因为这个模块的话呢啊,这个模块的话呢,就里边就个四输入的一个语门嘛,不是货门嘛,你就写个than这四个箱或输出就发拉个丁嘛,这个就比较简单啊,这个就不再写了,比如说我们来写这个叫做BP。Control模块啊,我们来写这个模块啊,这个模块我们应该啊,我们应该怎么来做啊bep啊,Control这个模块啊,我们应该怎么来做好了,那么下边的话呢,我们来去写一下。
75:14
啊叫做be EP_CTRL啊,今天看时间啊,做到什么地方就说做到什么地方就算什么地方啊呃,那么对于bep ctrl来说的话呢,那么它呢有什么呢?它呢输入呢有两个脉冲啊,一个脉冲是flag丁,一个脉冲是flag alarm啊那么功能什么功能就是flag来就一声,来了就一直响,响到什么时候停呢,响到flag。来了就就停。啊,就是它的功能啊,那好了,那么来咱们来考虑一下,实现一下。那么呃,首先呢,啊,首先呢,我们怎么来做呢,我们来这儿呢,来自己来分析一下啊,咱们一起来分析一下。比如说我们怎么来实现呢?首先呢,呃,对于我们来说,我们呃认为啊,就是我们在最开始的时候啊,就是或者说我们在之前我们做过的两个模块啊,这些都是有用的,比如说我们做什么,我们是不是已经做过了一个弗flag丁啊,Flag丁是不是已经做过了,对不对,所以今天的话呢,我们把这两个给用上啊,或者说呢,我们没做过,那我们也要这么做,比如bep下划线啊,叫做丁啊,就flag丁嘛,啊,我们就认为这个模块叫flag丁。
76:32
好,然后呢,我们给它。好,这个模块叫做弗拉丁。啊,这个模块有丁好了,那么你的flag丁你需要什么呢。啊,拉丁,你需要什么?你是不是需要的有时钟。有位还有一个叫做啊,就是说那个输入那个脉对不对。
77:03
始终。好,复位。然后叫什么,然后还有一个叫做这个flag小线。好,诶。那好了,那当然了,我们就知道这个flag钉谁来的,Flag钉应该就是最外部给过来,对吧,那么现在我们就先画这样一会儿我们再调整了,我们就按照大家的想法来做,那好了,那么这个呢,就会输出一个什么蜂鸣器,但此时现在的话呢,我们并并并不能直接给它输入出去,为什么呢?因为呢,到最后啊,你还有一个风鸣,还有一个这个这个音乐呢,对不对,还有个音乐就是说还有个闹闹铃的音乐呢,闹铃那个音乐来了,那么你怎么办?
78:01
你你要输出D对吧,你这两个不能同时输出啊,对吧,所以是这样的啊这样的啊,就是bpd和什么呢?和我们还有一个叫做,还有我们是不是还做过音乐封辨器啊,大家记不记得我们音乐封辨器怎么做的啊,或者说我们音乐封面器是哪些输入呢?在这我们叫做BP music muic啊,啊这两个叫一样名字是吧?这个一样名字不好啊,我们换一个。我们叫做dear和music。那么usic好了啊,叫这两个。好,那么这两个的话呢,那么这个模块的话呢,这个叫做这个这个叫做这个这个什么叫做这个bep啊music这个模块啊,Bep啊music这个模块啊,其实呢,我们呃这个模块做的其实不太好,为什么不太好呢?因为我们这个模块的话呢,就本身就是一上店只要给时钟。
79:06
啊,只要给时钟,只要给复位啊,只要给时钟,只要给复位就干什么,就在一直想。啊就一直在唱歌对不对,是要是不是只要给时钟,只要给富贵就会一直唱啊,所以呃这个的话呢,我们认为什么,我们认为呃做的可能就是说呃不太好啊,做的就不太好,那么下边的话呢,我们需要干什么,这是需要我们把这个呢进行一个叫做简单的啊一会儿我们去啊就是说我们做完之后啊去做个简单修改,什么修改呢?在这儿的话呢,我们给它叫做输入一个值。叫什么纸呢?有人说那你直接给它输入一个flag alarm行不行啊,也可以啊,没问题,但是我为了简单起见啊,我在这输入这个东西叫什么呢?叫music en。叫MU_en啊music en,我给他输入一个music en什么作用呢?就是当music en为幺时,这个分辨器呢,干什么这个分辨器呢,就。
80:13
唱歌。PA为零这个分这个这个music呢,就输出为就是零就不动了,然后呢,Music音再为一的时候呢,这个分鸣器呢,就干什么就开始唱歌,但是一定要注意啊,他不是乱唱,他干什么,就是music en一旦为一就开始正常一直唱music,这个music en为什么为零的时候啊,他就不唱了,那么当他在为一的时候再唱,从哪唱呢?不要接着上一次唱,要从哪唱呢?要从零开始唱。啊要从零,就是说那个零地址那个开始唱啊开始唱好了,那么下面我们来看一下。那下来看一下,那么对于到底是丁唱呢,还是他唱呢,怎么做呢,所以呢在这。
81:00
因为我们有个规定,什么规定呢?说当flag丁丁的时候,它就是那个那个十兆,不是10K的方波在输出啊,当music唱的时候,它就是那个对应的频率的输出啊,当它不丁不唱的时候干什么,两个都是低电平啊,低平当然了大家一定要知道,唱的时候不可能丁,丁的时候不可能唱。啊,丁的时候不可能唱,唱的时候不可能丁一定是这样的啊,比如你按按键就丁唱巴拉啊,就唱开始开始唱,那你开始唱的话呢,那你开始唱的话就有个什么呢?就有一个问题了啊,开始唱就有一个问题了啊什么问题呢?就是说你你你这个你这个这个这个这个你在唱的时候啊,我这摁你就停了。那我一摁丁你就停了嘛,对不对,哎,你就直接停了啊,你就不唱了,对不对,你就不唱了,那当然了,我摁丁的时候呢,你也不可能唱啊,我正在调整期间啊,比如说呢,这个我们一会儿还得讲这个设计的时候啊,比如说呢,比如说我现在的时间是这个,比如我把闹铃设置到四点半啊,闹铃设置成四点半,然后呢,我的现在时间呢,是04:35,呃,不是四点这个27,然后我现在一看表啊,我这时间错了,该调成04:35呢,我27这条28就条29,然后我一跳30了,四点半了,那四点半是不是和闹钟四点半就一样了,那此时闹钟响了,注意在调整期间闹钟是不让响的啊,调整期间闹钟是别响的啊,别响,那么这样的话呢,就是这两个永远不会冲突啊,永远不会冲突,那永远不会冲突有什么好处呢?就是这两个玩意儿直接去做一个什么,直接去做一个二的。
82:46
啊,做一个二叔叔的货门就是他们两个,无论是谁。为妖了,结果都为妖啊,他们俩无论谁为妖了,结果都为妖。
83:01
啊,那么这样的话呢,就是说他俩既然不可能同时想,那只要有一个想,只要有一个啊想,那么最终的结果就是想。叫做bep。好,那么前面的话呢,我们还有一个模块。什么模块呢?这个模块的话呢,就做一件事啊,这个模块就做一件事叫什么呢?我们称之为叫做这个呃,叫做这个music控制啊,叫music控制啊,其实这个模块的话呢,是专门来控制谁呢?专门来控制这个叫做呃,Music啊music,那么他要干什么呢?他呢就是去产生music en。啊,产生music en就可以了啊,那么它要产生music en,它怎么产生呢。
84:02
好,我们给个时钟。给个复位。然后给个。叫做flag alarm跟flag丁。flag丁。好了,那么下面的话呢,我先把它画完啊,画完之后我来说哪个哪一块功能怎么做。
85:06
BP_CTRL。好,那么这个就是我们的一个封鸣器的控制模块,输入有十钟复位flag丁,Flag alarm,以及输出一个叫做bep啊,输出一个叫做bep,好了那么下边啊,我们来去分析一下这几个模块怎么实现,首先我倒着分析第一个二输入的这个货门,这个不用讲了吧,这个就蛮简单的啊二输入货门不用我讲了,那好了,既然下边的就是flag这个,这个叫做BP丁这个模块其实我也不用讲了,为什么呢?因为这个模块咱们在是么?咱们在这个这个叫做这个这个呃,去做按件计数的时候,其实干什么,其实就已经做过了,对吧,这一做按键计数的时候就已经做过这个flag丁怎么做了?好了,那么再往下那就是什么?就是叫做BP music bep music怎么做呢?其实呢,这个就干什么,就是把咱们上一次做的那个bep music直接拿出来。
86:23
就可以了,那么在这儿的话呢,呃,我为了简单起见啊,为了简单起见。呃,咱们这有一个叫做啊,这叫做music be啊都行,一会我改过来吧,呃,要不然这样的话呢,会。不太好,Music bep对吧,我们改过来啊叫music BP。Bep,好,那么这个music bep怎么做呢?我们来看一下啊,这个其实什么,这个其实就是我们的一个啊,这个其实就是我们的一个,这个叫做这个这个这个这个呃,设计的一个原理图对不对啊,设计原理图在这儿的话,我把这个呢全部都。
87:12
复制啊复制一遍。然后。等会儿啊,我先打一夜。好,我们在这,我们在这给他加一个叫做MU。啊UBP啊,设计与实现好了粘贴它会,它会粘的位置可能不一样,咱们把它拉下来也可以。好了,那么这个模块的话一定要和这个对应啊,比如说这的话,这输入时钟复位有了music en没有是吧?所以我们还要输入一个,然后最终输,最终输的叫music,所以把这个代码当中要改一下啊muic好了,那么这个里边分配的是什么,就不用我讲了吧啊,就不用我讲大家都会明白了,对吧,大家都懂了好了,那么在这儿是不是还有一个叫做music en啊,那么这个music en给了谁呢?
88:21
给了谁呢?啊,这个music en给了谁呢?在这儿我们来给大家来说一下啊,Music给谁呢?首先第一个根据我们的要求,Music en等于一,就意味着这个歌要从头开始唱,Music等于零,这就不要出声了。对不对,就不要出声了,因为它等于零的时候呢,有可能人家会丁呢,人家会丁的话呢,那么你一出声跟人一箱货就是你的声音了,对不对,那怎么做呢?在在这一定要注意,首先第一个music en啊,一旦等于一,那么这个ADRRA计数器呢,就去正常计数啊,A DR re a DR controlr就开始正常计数啊,那么一旦music en等于零,那怎么办?就把所有的计数器都做清零,从头开始,那这样的话来看一下啊,这个非常好实现,那么就发现什么就是ADDRRAADDR是不是等于零啊,ADDRRA如果要等于零的情况下啊,它要等于零,那就是有声音,有声音就会有频率,有频率它会有它,所以在这样的话,也就是说music音等于零的时候,Music其实呢还是会输出声音的,因为它会输出什么,输出D0地址里的音符,那怎么办呢,就在这儿要把这个呢,再一次去做个修改,什么修改呢,就是我刚才改那个,就其实这个地方我不应该。
89:54
改了啊叫什么呢,也就是说呢,我们在这啊,我在这儿往回拼一下。
90:00
等会儿啊。往后稍微拉一点点,比如说呢,这个模块的话呢,比如这个模块输入什么,这个模块输入我们给个名字。叫什么呢?叫wave啊,因为它是wave,不wave产生嘛,就给了个名字叫wave,叫wave叫wave好了,也就是说呢,当地值等于零的时候也会有声的,就是说wave波形也是上下上下翻转的啊,那么然后怎么办呢?然后我们做这样一件事。Wave。和谁呢?和我们的music Ben?
91:00
干什么去呢,就进行一个。就进行一个二输入的二入的一个语门,也就是说呢,只有当music en等于一的时候。啊,那么最终的输出,你看任何数与上一才是你的本身对不对,任何数与上零结果都是零对不对,所以呢,最终的输出。啊,叫music对不对。就是music这样的话有个什么好处呢?这样的话,也就是说当music音等于零的时候,其实呢,地址是等于零的,那也就是有声音的,就是地址等于零,不是没声音,也是有声音的,那有声音的话就出来一个问题,什么问题呢?就是说你这个wave还在嘟嘟嘟还往外出声,那就不对了,因为你说的都是你零地址的声音,那怎么做呢?我给你语上music en music等于零的时候,输入就全是零,Music en等于一的时候,才是输入的是ma,所以这样的话呢,就解决什么问题就解决了,就是啊,我们music en等于一的时候啊。
92:18
这样的声音就会从什么呢?就会从这个叫做零地址开始往外唱歌,等于一啊,就会从零地址开始唱歌,等于零就停了,没声了啊,等于零不是说输出零地址的声音了,而是直接暂停了啊,不能暂停,应该就停止了,因为下一次开始呢,是从零开始的,那么还有叫music control music control这个模块实际就比较简单是么?怎么简单了,那就是flag,就是说music in等于什么,Music音就是flag alarm来了,Music in就等于一,Flag d来了,Music音就变成零就完了,其他时候呢,保持不变了。所以这个music control模块呢,反而简单啊,Music control模块反而简单,就是说呢,Music en啊,Music en啊,就是flag alarm,一来music in变成一了,Flag d一来没有这个音就变成零了。
93:06
就这么简单啊,就这么简单好了,那么下面来看一下啊,这个bep control经过我这么一说,是不是就简单了很多呀?啊,就简单了很多对不对,并且很多代码都可以共用啊,很多代码都可以共用,所以在这的话呢,这里边的东西我就不再去做介绍了,这是咱们以前做的啊,以前做的好了,那么下边还有谁呢?还有最难的两个,一个是digital control,一个是digital,一个是show control啊,一个是show control,那么比如说呢,在这的话,我们来讲什么,我们把digital这个这个cloud control放到最后啊,因为我们可以认为说它是最难的啊,我们干什么,我们把这个呃,Show control模块呢,我们给大家来做一下啊,Show control模块来做一下,那么这个show control模块啊怎么做啊,Show control模块怎么做,那好了在这。
94:02
啊,那让我们来叫做收啊,因为这个呢,呃确实啊,呃,对于大家来说的话呢,还是要这个认认真真的去听啊,就是去分析都是怎么实现的是吧,再往后这个试用CT入哪些呢。啊,输入有这个叫做呃适中啊,不是输入这个有这个这个这个适中复位啊,有这个高位啊,高位的调脉冲的不是高位的调,就是它是不是在调的一个信号啊,中间位的数据,以及中间是不是在调整的一个标志啊,低位数据以及这个低位是否是在调整一个数据,那好了,那么对于我们来说,我们这模块干什么?我们模块其实就是把高位,就是他要把高位的数写在它高位,低一位数写到低一位,对不对?首先我们先做第一件事儿,什么事呢?就是我们要做,或者说要想实现我们现在这个设计啊,要实现我们现在的设计,首先第一件事儿,我们应该把我们的数码管驱动。
95:07
把我们的数码管驱动啊,首先呢,进行一部分的修改啊,首先我们要考虑进行做一部分的修改啊,做哪一部分的修改呢?啊做哪部分的修改呢?那么在这啊,我们给大家呢,来去说一下,首先第一个。因为最终呢是要干什么,最终肯定都是数码管显示,对不对,用数码管显示,所以呢,最终的数码管显示,这是肯定不变的啊,数中书方也是肯定不变的,所以在这的话呢,我们直接呢。哟。我们这样选。没选中。好啊,因为这两个我不想写了,我想粘贴一下啊。
96:00
Cat。哦,忘了点一下了,剪切点一下应该就过来了。往里挪一下,OK,那么这个模块的话呢,我们来去写。呃,添加文字叫做sevv_tub_divve注意这个模块啊,其实是我们呃最早做的数码管那个模块啊,但是呢,这个模块的话呢,呃,大家呢,可能需要做一部分修改啊,做哪部分修改呢?其实呢,有几个是不用动的,比如第一个输入的时钟,这个肯定不用动。比如说这叫时钟。
97:07
第二个是复位好,那么还有第三个什么,第三个就是说要想显示的数字就是24位数字嘛,对不对啊,24位数字这个其实不用变啊,这个其实也不用变啊,当然了,但是在这儿的话呢,对于对于我们来说啊,对于我们来说,我在这儿我的个人建议呢,其实你还可以写成24位是不用变的啊,还可以写成24位是不用变的,但是呢,我在这儿画的时候呢,我就画成什么,画成这个三个八位的啊,画成三个八位的,就是说为什么画成三个八位,因为我们说是高位中位和低位嘛,对不对,画成三个八位的和24位没区别啊,没区别啊,所以换成三个八位的,换成三个八位的话呢,那么在这儿啊,我们就来。稍微长一点啊,那么在这的话,我们好像不能叫m date对吧,我记得m date上面是不是用了呀,对m data h date l date用了,那么在这我们呃,可以用一个简单的。
98:15
比如说呢,我们叫什么呢?我们叫高位是吧,高位的话我们就叫h dat啊,那个叫那个叫h date,我们这个叫h dat啊,注意跟那个有差一个A啊差一个A,所以希望大家一定要知道啊七到零。好。那么这个的话呢,就是m dat。啊,那么这个呢叫l dat啊,那么还有一个叫做小数点。叫什么?比如说小数点叫什么?小数点叫做。
99:01
也有几个小时点,一共有六个小时点,所以是五到零,那么这个对于我们来说,我们首先来一步一步来说啊,比如说呢,其实呢,对于我们来说的话呢,在这儿啊,我来综合来说一下,比如第一个啊数据高位。啊高八位就是说最前面这两个数码管啊,中间这八位啊是什么?是这个叫做这个中间这两个数码管啊l dat是最后边八位啊,最后边这两个数码管啊,那么我们来想啊,那么比如说这个这一位等于什么,这一位等于这个0123456789,那当然就显示什么,就显示的就是0123456789啊当然大家还记不记得我们是不是要闪呀,那我给你几你显示几不是是不是就没意思了,因为我们我们还要闪,那闪就不显示对吧?在这我们默认规定一件事,什么事呢?就是说当呢这八位数据当中啊,比如说它是零零显示0001显0108显示0813显示一三,我们规定如果是F的话啊,规定如果是F的话。
100:11
比如说你的是FF,那么到你的这个当中就显示的就是全黑,就不亮了,所以一会儿的话呢,我们要干什么,我们根据我们现在说法就是几就显示几,这没问题,但是呢,如果它一旦等于F,我们就不让它亮F干什么,就让它变熄灭。啊,就让它变熄灭,就不让亮了,就是也就是说把F的断选啊给弄成什么呢?弄成全腰就不让它亮啊,只要是外部给F的时候,因为我们其实对于做数字中来说,A到F是没有用的,因为不会显示A到F的,在这话我们干什么,我们把F当成一个特殊字符,就是只要你给F这个管就是熄灭的,所以我我们要干什么,所以我们要把F所对应的断血干什么,全部都变成什么,全部都变成这个这个这个这个熄灭就可以了。那么dpn什么dpn我们不是有六个数码管吗?不是我们不是有六个这个小数点吗?那么dpn就是说这个如果这位等于幺,那小就亮,这位等于零,小就不亮呗。所以dpn等于多少?DN等于个死值啊,Dpn等于死值,什么死值呢?就是DP等于死值等于多少,就等于六撇B010100啊等于死值啊,就等于六撇B010100。
101:31
就是说第二个数码管后边点亮,第四个数码后边点亮第五个第六个后边那不亮啊,这就是因为无论是小时分钟秒和年月日啊和闹钟他们都是最低这两位啊,最低的就是不能是最点位,应该是两位,两位中间加底嘛,对不对,那好了,所以呢,数码管模块我们就要进行修改,修改什么呢。其实就是什么?其实就是书演第一个内容就是当它是F的时候不亮,这是第一件事儿,第二件事儿就是啊,大家记不记得我们的数码管的,因为我们当初做数码管的时候,其实就没考虑到小数点对不对,如果我们没考虑到小数点的话,会有什么,会有一个什么样的结果呢?就是小数点永远都不亮,也就是小数点呢,是永远都不亮的啊,无论数据等于多少小数点都不亮对不对,所以怎么做呢?所以啊,就是说,也就意味着我们的那个h date呀,M date呀,L date呀,它只能控制什么,它只能控制这个数码管当中的什么第七段,也就是用那个七段它就可以摇表示写亮的数字了,那么至于这个这个这个这个这个这个第八段,就是第P段,这个小点它亮不亮呢,其实根本就跟它没关系,那跟谁有关系,我们要跟D拼音有关系啊,跟DP应该有关系。
102:52
那么这个应该怎么做呢?那就很简单了,对吧,就是说当C等于零的时候,那就是看一下这一位是不是等于一,是一就让那个小数点亮,是零就不亮呗,那这个同理可得,就往后走了啊,所以这个呢,到时候呢,大家可以考虑一下啊,小数点怎么控制,小数点控制什么,就控制这个C个N的第七位就可以了,其他不用控制,因为六到零是由他们控制的,七位才是由他控制的,但是当初我们没考虑小数点小点都不亮,所以呢,就由他们去控制这八位了,但是你控制八位的时候,控制也挺浪费的,为什么?因为第八位永远等于一嘛,永远都不亮,对不对。
103:33
啊,所以在这儿啊,希望大家一定要呃,知道这个这个问题啊,知道这个问题好了,那么下边的话呢。我们接着来做啊,接着做什么呢。首先呢,就要去考虑了,考虑的什么问题呢?第一个问题就是你比如说人家给的是高位,中间位和低位,比如人家给的35,人家给你35,你直接去显示35,这对吗?先比如说闪不闪,人家给你35,你就显示35对吗?其实都不对,为啥不对呢?因为。
104:10
因为人家给你的什么,人家给你的都是普通二进制嘛,人家给你的15,你显示到开发板上都不是15,因为是F嘛,对不对,所以要干什么,还要去算一个二进制转BCD啊,二进转BD,所以在这儿呢,要知道也就是说呢,我们要把诶这三个数据啊,要经过二进制转BCD啊,所以呢。在这儿。啊,要去画这个二进BD的活是。啊,这个比如说是这个叫做h data。
105:02
是这个。六到零的好像六到零,那么呢,翻译成多少呢,他呢就要翻译成的就是。七到零的啊,因为它呢有这个两个BD嘛,对不对啊,两个B,因为它库是两个数码管对吧,我们从节流的角度来说,它也应该是八位的,对不对。好,我们叫什么呢?我们叫h date,或者说我们换个简单的名字叫HBCD,好吧。叫七到零,那么这一部分叫什么?这一部分就改成叫做bin啊,我们叫2BCD下划线啊H啊,就是高位的一个二级转BD吧,对不对。
106:08
这是中间位的。这是第一,这是第一位的来看啊M。啊,当然了,这个M这个好像不是七位的是吧,应该是六位的好像。这个好像也是六位的看一下去一会儿啊,一会儿看一下啊,六位的啊,但是不管是七位的还是六位的,我们统一都转成两个BD码啊。啊,这个高位是能,因为能表示到99嘛,因为年份能到99嘛,所以说在这的话呢,就有这个六到零是吧,那么剩下都是零到59,所以就是六位就够了,所以都是五到零,但无论是多少吧,反正它呢终究是要有这个十位和这个个位都是这个BD码都是八位的,所以这个不变啊HM。
107:04
和L好,诶,L没赶上。所以L啊,然后这个呢,就是这个M。这个就是L啊这样的话呢,是不是对大家来说的话呢,是不是就这个就比较简单对吧,二级转BD嘛,二转B大家已经讲过了,对吧?诶比较简单,那好了,那么下边的问题就是什么,就是说当呢大家有了已经转行的数字以后,那么就一定能够,呃,这个这个显示吗?你就直接连上行不行,当然行了,直接连上以后就出现问题,就是人家给你三,你就连三,给你五,你就练五,那我说正在调整中间这两位你还是调整调整它也是三就是三,五就是五,对不对,所以不能这样,那怎么做呢?所以还需要一个模块。需要个什么模块呢?叫做显示控制模块啊,那么这个显示控制模块的话呢,啊,显示控制模块的话呢,那么它。
108:17
嗯,我看看怎么画好一点啊,我们这么画吧。我把这个先放到这儿啊,我把这个放到这儿啊。因为这个呢是由它产生的。好。这样的话呢,这个模块啊。这个模块的输入呢。
109:05
呃,这个好像能不能放到前边呢。等会儿啊。把它往上一点。有十钟。然后呢,有复位还有什么呢,还有这个这三个。就是调节的那个脉冲啊,叫做这个。呃,L啊,应该叫做H啊,下划线a dut_en啊,这个名字太长了,这个名字肯定放不下了。我,Just in。喂。
110:02
叫I'm Justin。和l just in,然后以及呢?以及呢,它呢要输入这三个BD。因为这三个BD呢,呃,它要根据这三个BD啊,以及要根据这个外部的是不是调整来产生,呃,对应的h datm dat和l dat。
111:03
好,那么这三个模块呢,我们放到。太慢了。我用鼠标移。这个位置好OK。好,然后呢,我们。
112:02
去画一个框。哦,这个好像有点多。哎,我们这个顶层是不是就要show c啊。对,这顶层就叫受T了啊,所以这个里边如果再叫这个,呃,叫做这个受T的时候,就就就就出问题了,对吧,你不能一样叫一样模块,所以我们把顶层模块给改了,顶层模块叫做受驱动吧。Drive。
113:05
就D好,那么这的话呢,也叫受下划线D好。这么长。好,那么这个呢,就是我们的一个显示驱动一个模块,那么下面来说一下是吧,这个数码管模块我们刚才说了是吧,就是说首先改第一件事儿就是什么,就是说这个把这个如果数据是F的话,就输出,为什么输出为全不亮啊,输出为全不亮,那么这样的话,它给F就是不亮啊,它给这个,它给这个这个叫做这个,这个正常的数字零到九就显示零到九,它给F就不亮了,那么这个DBN什么呢?因为注意啊,数字呢,无论等于几,它其实只控制嘛,它只是控制这个,它那七段小数点,它根本就控制不了啊,咱们之前说这个数字控制小数点,其实没有小数点就一直为幺,就没动过,所以呢,在这要干什么,要把那个小数点要单独拿出来啊,小数点要单独拿出来,拿出来怎么控制,拿出来就是根据dpan来控制,就是选择第一个数码管,就看看dpn的这个五是不是等于什么,是不是等于这个叫做这个这个幺,如果是幺就就让数码管那个点点亮,如果。
114:31
等于零九小角就不点量啊,所以这个单独控制的,那么呃这样的话,这就可以了,那么对于这个叫做呃,这个这个这个这个外部给的数据,什么外部给数据,我们都认为就是一个普通的二进制,比如你要显示16,你就给的就是16,显示32就给的是32,但是呢,这个数不能直接显示,那怎么办?所以呢,要经过二进转BD啊转换BD直接给嘛,其实也不行,你直接给的话,那就显示的是三就是35就是五,那怎么闪呢?所以怎么办呢?所以要把这个数呢,给到给到售后,售什么售后根据。
115:03
H adjust en啊,M adjust啊,以及l adjust en干什么?就是如果它为幺,如果为幺。比如说啊,H加en,比如说H加为幺的情况下,那怎么办呢?那就让h dat等于0.5秒钟的HBD。等于0.5秒钟的FF。是不是就可以实现这个闪了?所以只要当h adjust en等于什么等于幺时,就让h dat等于0.5秒钟的HBCD,然后。如果等于一的话,就等于0.5秒钟的HPD等于0.5秒钟的FF,因为怎么写呢?很简单,在受CTRL模块里边干什么?写一个0.5秒钟的计数器,然后呢,这个0.5秒钟的计数器呢?
116:01
就是无论他们三个谁为幺了,这个0.5秒钟的计数器就开始启动,就开始启动,然后呢,它为零,0.5秒计数就清零了,那好了,那这样的话怎么做呢?就是说当他们两个。当他们三个无论谁唯一了,0.5秒钟启动了,启动以后干什么?那就再写个标志,就是那个标志呢,0.5秒钟取一次反,0.5秒钟取一次反,然后呢,只要说取反的话,那是不是就变成0.5秒钟高,0.5秒低了,那好了,当那个信号为高时,H dat就等于HBCD,当那信号为低时。H,呃,Dat就等于F就跟前面没关系了。对不对,那这样的话呢,大家想一想是不是就可以什么,是不是就可以实现这个这个这个这个呃,我们叫做呃,所谓的这个这个闪了对吧?啊,就可以实现我们的闪了啊,这个是没有任何问题的啊,就可以实现闪了啊,所以呢,对于我们来说啊,所以呢,对于我们来说的话呢,这个就实现了啊,当然了,这个实验起来其实也觉得好像也没有特别难,但是呢,还是需要认认真真去想一下的,那么。
117:14
嗯,在这儿我讲了,一共是有呃做了有五个模块,这个不算吧,一共做了四个模块,这个比较简单啊,然后呢,这个和这个我都做了,那么时间由于时间关系啊,这个咱们做不到了,做不到咱们不做了,那么这个怎么办呢?这个留给大家自己去做考虑一下,然后呢,呃,我希望大家能够做什么,希望大家能够把digital clock control这个模块大家自己想一想看怎么来做啊,其实这个里边啊,呃有的东西并不多啊,为什么呢?因为这个里边呢,其实呃不能说有的东西不多吧,就是它里边有的模块可能会更多一点,但是呢,它每个模块其实都很简单,但是就看大家什么呢,就看大家能不能够这个去呃区分了啊,就能不能够去区,就是说把这几个模块都做成小模块,然后呢,去做实现啊,去做实现,那么不要说一下子做那么复杂的东西啊,你也不要一下做那么复杂的东西,那么。
118:15
在这儿啊,这个就是我们的一个。整体的一个设计啊,整体的一个设计,那么这个没有做完啊,没有做完的话呢,我就不着急啊,我就这个,呃,到下周一的时候啊,我来把digital control啊,Digital c control模块一做是不是结束了,所以呃,对于大家来说啊,今天的最重要的任务是什么?最重要的任务就是首先第一个啊,大家要学,其实这个东西啊,学不学会无所谓啊,你出去工作肯定用不上,但是呢,这个思想一定能用得上,就是拿到一个复杂东西的时候,先分析分析外设,分析分析它的原理,以及确定好它的这个任务目标啊,然后干什么,然后就开始去做,考虑考虑什么,就考虑整个设计怎么来做,简单的考虑一下之后干什么,就开始去分模块啊,分模块,分模块有什么分模块,怎么分呢?你就记住一件事,什么事呢,就是说比如说我先做显示模块啊,或者我先做这个分辨器模块。
119:20
啊,怎么做呢?就是你给我脉冲我干什么事儿,你给我脉冲我干什么,你给我脉冲给我干什么事儿,你给我数据我干什么事儿,至于你怎么给,我管你怎么给,他爱怎么给怎么给,只要能够满足最起码我控制的这些显示啊,或者这些,这个叫做这个这个分辨器出声啊就行,那至于怎么给,那就是别人的事儿,所以呢,这样的话呢,你一下子就把整个设计分成两部分,一部分是如果给,如果给我标志了,我应该怎么办。好了,弄完了,然后呢,干什么,什么时候给标志,所以你就立刻就把这个问题呢,就分开想了,而不是说呀,当满足什么什么要想,满足什么什么要想,大家就一想,就是说哎呀满足什么时候,他怎么想呢?所以你永远就是在在联合考虑,而联合考虑是最复杂的,所以我不建议大家去做联合考虑啊,就是太复杂了,怎么办呢?分模块,分模块是变相降低难度啊,那么嗯,我在这儿做了大概有应该是我们讲这个需求应该讲了有半个小时吧,呃,那么。
120:23
我在这做这些图啊,大概做了有个一个半小时,那么其实呢,如果对于一个复杂的工程来说,我光知道这些图可能会做个三四天吧,这是很正常的一件事,就是去考虑怎么做,但是一旦呢,呃,把这个图啊画的差不多了。啊,因为这个图在设计过程当中也可能会更改,因为某些东西可能不适合,就要需要更改,那么先确定了,先确定好这个图之后,那么后边写代码的时候呢,就相对来说会简单很多,为什么?因为每一个模块干什么事儿都规定好了啊,然后呢,怎么实现,其实在画模块的时候,脑子里边可能也会有简单的一个思考的一个,呃,考虑的一个余地吧,因为呢,如果说这个比如说做BP这个模块,这个模块我会做吗?这个模块我根本不会做,不会做怎么办?不会做那就接着往下分,然后呢,一分这个一分这个一分这个一分这个这个一想哦,我会简单这个一想啊,我会简单这个一想,我会这个还是不会往下分啊呃,控制地址怎么怎么就可以选了,然后到这啊,这个就是地址,这个就member,然后呢就一往下分,一直分到你用脑子一看就知道大概怎么回事的地方,就不分了,那好了,这种情况下呢,我们就说白了,就是嵌套的模块会出奇的多,但是对于整个设计来说就会变简单。
121:44
所以很多人说在这个地方上可能会浪费时间,我觉得这不叫浪费时间啊,我觉得这叫很正常的一件事儿,然后呢,分了模块过多之后,你会发现什么,就是你的里边的有用的代码会很少,大多数都在干什么利化,大多数都在利化,而这个利化啊,有些人说也是也是没有用,你把所有的代码都写到一个里边去就得了呗,你做什么绿化呀,对吧,做什么绿化呀,比较费劲是吧?嗯,那么我们分模块是为了简单,如果你都在一个里边考虑,那是更难的啊,那是更难,所以我希望大家呢,不要觉得这是浪费时间,这其实在变相的节省开发时间啊,节省开发时间好了,嗯,今天这个就讲到这儿吧,然后呢,我把这个。
122:29
一会儿我保存一下发到群里好吧,大家看看有没有什么问题,有的话说一下好吧。大家一定要锻炼啊,大家一定要去做这个。叫做这个分模设计的这样的一个锻炼啊,然后呢,呃,这样做完之后有什么好处呢?做完做完之后呢,就是说。
123:00
只要你报告在,代码在都能一一对上,所有的名字叫的都是统一能对的上的,你会发现呢,这整个设计呢,就非常清晰啊,非常清晰。好了啊,如果这个没问题的话呢,咱今天就呃先这样好吧,然后呢,咱们周六周日啊,代码可以先放一放,重点是理解我做的整个过程,为什么要这么做啊,然后呢,以及呢什么呢,以及那个大家自己去考虑一下,把digital啊这个模块啊,这个模块给做出来啊,好吧,那今天就这样。
我来说两句