<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > 零基礎(chǔ)學(xué)FPGA(十七)新人必進,1602動態(tài)電子可調(diào)時鐘設(shè)計,練一下代碼風(fēng)格吧

          零基礎(chǔ)學(xué)FPGA(十七)新人必進,1602動態(tài)電子可調(diào)時鐘設(shè)計,練一下代碼風(fēng)格吧

          —— 零基礎(chǔ)學(xué)FPGA(十九)新人必進,1602動態(tài)電子可調(diào)時鐘設(shè)計,練一下代碼風(fēng)格吧
          作者: 時間:2015-03-31 來源:電子產(chǎn)品世界 收藏

            之所以取這個標(biāo)題名呢~感覺這個實驗還是蠻重要的,當(dāng)初我在學(xué)單片機的時候也是通過這個實驗來鞏固了一下自己的代碼風(fēng)格,當(dāng)然這個實驗涉及的東西還是挺多的,如果是新手,想要自己設(shè)計出來還是有點難度的,當(dāng)然這個設(shè)計目前對我來說不算難了應(yīng)該,寫這篇文章的目的呢就是想鞏固一下自己的代碼風(fēng)格,因為以前學(xué)習(xí)大多是先看懂別人的代碼之后,然后根據(jù)自己的理解再敲上一遍,這次不同,這次的代碼是小墨同學(xué)沒有參考任何其他教程的情況下,用自己腦子里的東西寫的,自我感覺條理還算清楚,估計新手看起來應(yīng)該還是比較容易上手的,不過由于小墨同學(xué)資歷尚淺,對于資源,速度的問題考慮的過少,沒有對這個設(shè)計進行優(yōu)化,但是想想,以一種直白的方式交給剛?cè)腴T的同學(xué),避免了優(yōu)化代碼帶來的一些迷惑,這便是這篇文章的目的了。這篇文章只介紹電子時鐘設(shè)計部分,至于的其他用法希望各位自行學(xué)習(xí)~

          本文引用地址:http://www.ex-cimer.com/article/271868.htm

            現(xiàn)在已經(jīng)進入了12月,也就是考試月了,對于我這么一個大三的學(xué)生來說,專業(yè)課鋪天蓋地可以說,再說我們通信專業(yè)也不是什么好學(xué)的科目,估計未來一個月文章會更新的慢一點。希望大家多多支持~下面我們開始是今天的教學(xué)

            這次我們要做的是一個電子時鐘,動態(tài)可調(diào)并在上顯示,那我們就先來了解一下.其實液晶這部分感覺都差不多,大家要是會了1602,那么上手12864也不成問題了

            1、操作時序

            

          360桌面截圖20141206185349.jpg

           

            1602要用到的管腳也就是4個,即

            1、rs數(shù)據(jù)命令選擇端

            2、wr讀寫控制端

            3、lcden使能信號

            4、8位的數(shù)據(jù)端口

            而且1602的讀功能我們用不到,所以wr一直置0即可,要控制的就是rs端,數(shù)據(jù)端和lcden端

            2、寫時序

            由于讀操作我們用不到,直接來看寫操作好了

            

          360桌面截圖20141206190308.jpg

           

            由上圖得,我們?nèi)绻獙懨畹脑挘鸵趓s為低電平的時候給數(shù)據(jù)端送8位命令數(shù)據(jù),然后等一段時間后有一個lcden的高脈沖即可使數(shù)據(jù)有效,注意這個lcden的高脈沖要掩飾一點時間

            3、初始化設(shè)置

            

          360桌面截圖20141206190711.jpg

           

            這里我們要顯示一個2行,16位的液晶,5x7點陣,8位數(shù)據(jù)接口,不顯示光標(biāo)

            故初始化的時候我們要進行的操作是送1602這兩個命令,好下面我們開始寫程序

            4、程序設(shè)計

            有些人會問,1602的時序圖上的延時怎么操作?這個問題已經(jīng)有好幾位網(wǎng)友問過我了,這里,我們需要用到狀態(tài)機。由于我們的時鐘是50Mhz,一個周期為20ns,對于1602來說這個頻率太高了,因此我們需要分頻。再看看1602的datasheet里的延時參數(shù),這里我們設(shè)置供1602的時鐘

            

          360桌面截圖20141206191512.jpg

           

            做好了時鐘我們就可以來寫狀態(tài)機了,首先我們需要把RS拉低,因為我們要對1602進行初始化,然后給1602送初始化數(shù)據(jù),即0x38,延時一個時鐘周期之后將使能端拉高。注意這里的一個時鐘周期是我們之前的分頻后的時鐘,大約1ms,然后再等待一個時鐘周期后將lcden拉低,并送光標(biāo)顯示數(shù)據(jù)0x3c

            

          360桌面截圖20141206192538.jpg

           

            接著,按照上述方法設(shè)置1603寫一個字符后地址指針加1和顯示清零命令,即0x06和0x01

            

          360桌面截圖20141206192819.jpg

           

            然后我們需要確定我們的時鐘的時間顯示地址

            

          360桌面截圖20141206193110.jpg

           

            例如,我想把時鐘的小時的十位寫在04的位置上,這樣我們就需要寫命令給1602,告訴它我們要寫的地址為 0x80 +4 = 0x84,故要給1602送0x84

            

          360桌面截圖20141206193328.jpg

           

            這樣我們的初始化就結(jié)束了,初始化結(jié)束之后,我們需要寫數(shù)據(jù)了。與寫指令不同的是,這里僅需將RS拉高,其他時序不變,下面我們來寫時間,我的思路是先將時分秒寫進去,再利用狀態(tài)機循環(huán)刷新

            

          360桌面截圖20141206195248.jpg

           

            分鐘和秒鐘的書寫規(guī)則和小時相同,寫完后要回到剛開始寫的地址處進行循環(huán),即0x84

            

          360桌面截圖20141206195443.jpg

           

            靜態(tài)時鐘寫完了,這個時候如果把程序下到板子里,液晶屏上應(yīng)該顯示“00:00:00”,下面我們讓這個時鐘動起來,這就需要我們令開啟一個進程,專門用來進行時鐘計數(shù),這里要用到分頻電路,這次要分頻1秒鐘

            

          360桌面截圖20141206195912.jpg

           

            計數(shù)完成之后我們需要將時分秒進行處理,因為我們往1602里寫數(shù)據(jù)一次只能寫1位,故,我們需要把時分秒的十位和各位分開來再送到1602,這里就用到了求模求余算法了

            

          360桌面截圖20141206200146.jpg

           

            這樣的話我們的時鐘應(yīng)該就可以動起來了,這里再說一下求模求余算法,例如分鐘是45分,45對10求模即4,送到相應(yīng)的10位上去,45對10求余,即5,送到相應(yīng)的個位上去即可。

            除了讓時鐘動起來之外,我們還可以再加一個功能,實現(xiàn)可調(diào),這就需要用到按鍵,功能如下:

            1、鍵1按下時,時鐘停止計時

            2、鍵2、3、4按下時,分別對時分秒進行調(diào)整

            3、鍵1再次按下時,時鐘開始計時

            說到按鍵,就要用到按鍵消抖了,這就是前面的知識了,這里不做重復(fù),詳細(xì)見源代碼,這里提供部分代碼

            

          360桌面截圖20141206200743.jpg

           

            接著對相應(yīng)位進行操作即可

            

          360桌面截圖20141206200847.jpg

           

            

          360桌面截圖20141206200856.jpg

           

            這樣我們的時鐘算是設(shè)計完成了,至于其他功能,大家可以另行拓展,在這里小墨同學(xué)就給大家布置一項作業(yè)吧,實現(xiàn)多功能電子時鐘設(shè)計,功能如下:

            1、 實現(xiàn)年月日顯示,并按照平年閏年,大月小月計數(shù)

            2、實現(xiàn)定時報警功能,即鬧鐘

            3、讓顯示的時間上電的時候從右面慢慢滑進來

            下面是實驗結(jié)果測試圖片

            

          360桌面截圖20141206202036.jpg

          fpga相關(guān)文章:fpga是什么


          c語言相關(guān)文章:c語言教程




          關(guān)鍵詞: FPGA 1602

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();