彙編電子鐘的設計

2021-01-15 電子產品世界

寫在前面: ­
前天晚上斷網之後閒來無事忽然心血來潮想起和誰說過以我現在的水平做個時鐘沒有什麼問題,就準備將它實現了。借用老師的學習板子,一直搞到凌晨2點做出了一個24小時的計數器顯示,因為沒有學過按鍵的使用方法,昨天實驗課下課後問了老師,她給出了查詢方式。昨晚搞了下,可以置數,但是不能實現0~60範圍加,只能0~99加。今天上午在老師的指導下,終於可以了,總算沒有食言啊。呵呵,下面貼出程序了。
先來個效果圖:

本文引用地址:http://www.eepw.com.cn/article/170853.htm


mini_second equ 30h ;設置0.05秒、秒、分、時的地址 ­

second equ 31h ­

minute equ 32h ­

clock equ 33h ­

k1 equ p3.2 ;設置按鍵地址,為外部中斷口int0和int1 ­

k2 equ p3.3 ­

­

org 0000h ­

ljmp start ­

org 000bh ­

ljmp t0_x ;使用中斷計時 ­

org 0050h ­

start: mov mini_second,#00h ;清零 ­

mov second,#00h ­

mov minute,#00h ­

mov clock,#00h ­

mov tmod,#01h ;置工作方式1,開定時器 ­

mov th0,#3ch ­

mov tl0,#0b0h ­

setb ea ­

setb et0 ­

setb tr0 ­

start1: lcall show_led ;主程序跳轉程序顯示 ­

lcall key_d ;置數程序 ­

ljmp start1 ;一直循環顯示 ­

t0_x: ­

push acc ;保護現場 ­

push psw ­

mov th0,#3ch ;置初值,這個不是很準確, ­

mov tl0,#0b4h ;估計一分鐘慢個2~3秒 ­

inc mini_second ­

mov a,mini_second ­

cjne a,#20,ret0 ;20次為1秒,沒有20次均跳出中斷重新跳 ­

mov mini_second, #00h ­

mov a,second ­

add a,#01h ­

da a ­

mov second,a ­

cjne a,#60h,ret0 ;1秒後出循環,每秒後秒清零,跳到分計時加1 ­

mov second,#00h ­

mov a,minute ­

add a,#01h ;分同秒 ­

da a ­

mov minute,a ­

cjne a,#60h,ret0 ­

mov minute,#00h ­

mov a,clock ­

add a,#01h ­

da a ­

mov clock,a ­

cjne a,#24h,ret0 ­

mov clock,#00h ­

ret0: pop psw ;結束保護,跳出 ­

pop acc ­

reti ­

nop ­

nop ­

nop ­

;======================================顯示子程序 ­

show_led: ­

mov a,second ;個位秒顯示 ­

anl a,#0fh ­

mov 40h,a ­

clr p1.5 ;片選數碼管 ­

clr p1.6 ­

setb p1.7 ­

mov a,40h ­

lcall led_x ­

lcall delay ­

mov a,second ;十位秒顯示 ­

anl a,#0f0h ­

swap a ­

mov 41h,a ­

setb p1.5 ­

clr p1.6 ­

setb p1.7 ­

mov a,41h ­

lcall led_x ­

lcall delay ­

­

mov a,minute ;個位分顯示 ­

anl a,#0fh ­

mov 42h,a ­

setb p1.5 ­

setb p1.6 ­

setb p1.7 ­

mov a,42h ­

lcall led_x ­

lcall delay ­

mov a,minute ;十位分顯示 ­

anl a,#0f0h ­

swap a ­

mov 43h,a ­

clr p1.5 ­

clr p1.6 ­

clr p1.7 ­

mov a,43h ­

lcall led_x ­

lcall delay ­

­

mov a,clock ;個位時顯示 ­

anl a,#0fh ­

mov 44h,a ­

clr p1.5 ­

setb p1.6 ­

clr p1.7 ­

mov a,44h ­

lcall led_x ­

lcall delay ­

mov a,clock ;十位時顯示 ­

anl a,#0f0h ­

swap a ­

mov 45h,a ­

setb p1.5 ­

setb p1.6 ­

clr p1.7 ­

mov a,45h ­

lcall led_x ­

lcall delay ­

ret ­

­

led_x: mov dptr,#led_data ­

movc a,@a+dptr ­

mov p0,a ­

ret ­

;====================================延遲子程序 ­

delay: mov r7,#10 ­

de1: mov r6,#100 ;延時1ms多一點,因為晶振為11.0592MHZ ­

djnz r6,$ ­

djnz r7,de1 ­

ret ­

;===================================數碼管的段選碼 ­

led_data: db 0c0h,0f9h,0a4h,0b0h,099h,92h,82h,0f8h,80h,90h ­

;=====================================置數子程序 ­

key_d: jnb k1,key1 ­

jnb k2,key2 ­

ret ­

key1: mov a,minute ;查詢方式 ————> 分位置數 ­

clr c ;清零進位,防止幹擾da和cjne指令的操作 ­

inc a ;累加器自加一 ,此為加法置數 ­

da a ;十進位處理 ­

cjne a, #60h, k_01 ;判斷是否為60,為60清零,跳出 ­

mov a,#00h ­

k_01: mov minute,a ­

jnb k1,$ ­

ret ­

­

key2: mov a,clock ;時位 置數同上 ­

clr c ­

inc a ­

da a ­

cjne a, #24h,k_11 ­

mov a,#00h ­

k_11: mov clock,a ­

jnb k2,$ ­

ret ­
本程序如有雷同,純屬不可能 ?

我的不夠成熟或稱之為幼稚的彙編編程,鄭文老師的獨特學習板子(顯示數碼管是p0口,片選竟然是用p1口3個I/O口接138,——!這個獨特焊接方式讓我程序寫得這麼長),鄭子含老師對我置數程序的修改,才出來的程序,雖然不是什麼成功,至少是一個開始,我會繼續瘋下去的。這個時鐘的弊端挺多的,比如置數的時候,會有閃屏現象,程序我會再改進的。 ?

後記:對於院系電子設計競賽我的失敗我得向我的組員道歉,雖然我知道那些所謂成功的幾組也比我們好不到哪裡去(看過答辯了),但是我會繼續我們的課題,加油吧 ?

編譯工具:wave6000 ?

燒制工具:stc-isp(話說國產的stc公司要統一全球51市場,呵呵) 、RS232串口

相關焦點

  • 單片機電子鐘設計
    這裡給大家介紹一個51單片機電子鐘彙編程序設計方法:org 00ha_bit equ 30h ;秒寄存器b_bit equ 31h ;10秒寄存器c_bit equ 32h ;分寄存器d_bit equ 33h ;10分寄存器e_bit equ 34h ;小時寄存器f_bit equ 35h ;10小時集存器
  • 基於計數器的數字電子鐘的設計
    摘要:本設計是一個基於計數器的數字電子鐘裝置。該裝置電路的主要組成部分是555定時器、分頻器、計數器、解碼器、顯示器、校時電路。解碼代替機械式傳動。用LED顯示器代替指針顯示進而顯示時間,減小了計時誤差。
  • 基於Multisim數字電子鐘設計
    數字電子鐘是用數字集成電路構成並有數字顯示特點的一種現代計數器,與傳統的機械計時器相比,它具有走時準、顯示直觀、無機械磨損等,因而廣泛應用於車站、碼頭、商店等公共場所。目前,數字電子鐘的設計,主要是採用計數器等集成電路構成,由於所用集成電路多。
  • ISP技術在電子鐘設計中的而應用
    2 ISP器件的編程軟體  ispEXPERT是由Lattice公司提供的一種通用電子設計軟體。他支持ABEL-HDL語言、VHDL語言、原理圖3種電子設計方式,以及這些設計方式的混合使用。他能對所設計的數字系統進行功能模擬和時序模擬,能對設計進行邏輯優化,並將邏輯映射到器件中去,自動完成預布線,生成編程所需的熔絲圖文件,通過下載電纜下載到器件中。
  • 基於單片機STC2032的電子鐘設計方案
    ,電路可稱得上極簡,它僅使用單片的20引腳單片機完成電子鐘的全部功能,而筆者見到的其它設計方案均採用二片以上的多片IC實現。       本電子鐘設計有三個輕觸式按鍵,這裡我們分別命名為:模式設定鍵K1、加調整鍵K2、減調整鍵K3。由於STC89C2032內部已經集成有復位電阻,所以,復位腳只需要接一隻電容即可。本電子鐘採用了一隻NPN型的三極體及蜂鳴器為鬧時訊響電路。本圖採用電池供電,電路板上有橋式整流、濾波和三端穩壓器7805的安裝位置,可以用交流電壓供整個系統工作。
  • 基於AT89C2051的電子鐘設計
    www.eepw.com.cn/article/246452.htm  一片20引腳的單片機AT89C2051為電子鐘本來筆者還有一種更簡的設計方案(見圖2),可省去VT1~VT4及R1~R4八個元件,但這種設計由於單片機輸出口的灌入電流有限(約20mA),數碼管亮度較暗而不向讀者介紹,除非你採用了高亮度的發光數碼管。
  • 基於VHDL和QuartusⅡ的數字電子鐘設計與實現
    本文引用地址:http://www.eepw.com.cn/article/247049.htmEDA(Electronic Design Automation)又名電子設計自動化,其基本特徵是:以超大規模可編程邏輯器件,如FPGA,為設計載體,以硬體描述語言,如VHDL,為系統邏輯描述的主要表達方式,以計算機、大規模可編程邏輯器件的開發軟體及實驗開發系統為設計工具,完成電子系統的設計
  • LED數字電子鐘設計電路及工作原理
    LED 電子鐘的製作方法在很多電子報刊雜誌上都可以見到,但大多數在斷電後都要重新設置時間等參數,給使用帶來很多不便。也有用後備電池作為備用電源的,但往往體積較大。
  • AT89C51單片機數字電子鐘的設計
    一、 設計目的與要求設計目的:通過設計,培養運用已學知識解決實際問題的能力、查閱資料的能力、自學能力和獨立分析問題、解決問題的能力和能通過獨立思考。設計要求:設計一個時、分可調的數字電子鐘、斷電後將數據保存,開啟後時間將從斷電後時間繼續行走。二、 設計內容與方案制定具有校時功能,按鍵控制電路其中時鍵、分鍵六個鍵分別控制時、分時間的調整。
  • ARM彙編程序設計之:彙編語言文件格式
    本文引用地址:http://www.eepw.com.cn/article/257046.htm10.3.1ARM彙編語言語句格式ARM(Thumb)彙編語法語句格式如下所示。彙編器在對程序進行彙編時忽略注釋。在彙編語言程序設計中,每一條指令的助記符可以全部用大寫或全部用小寫,但不允許在一條指令中大、小寫混用。同時,如果一條語句太長,可將該長語句分為若干行來書寫,在行的末尾用「\」表示下一行與本行為同一條語句。
  • 6位LED顯示單片機控制電子鐘/計數器
    這是我們設計的單片機電子鐘/計時器學習板,它採用6位LED數碼管顯示時、分、秒,以24小時計時方式。可以通過按鍵實現時分調整、秒表/時鐘功能轉換、省電(關閉顯示)等功能。我們能提供的完整的彙編語言源程序清單及電路原理設計圖有助於學習者進行分析和進行實驗驗證產品1:6位LED顯示單片機控制電子鐘/計數器成品板成品每套84元本文引用地址:http://www.eepw.com.cn/article/201611/317464
  • 武漢九成公交車電子鐘不準 最長誤差超過10小時
    有的快有的慢沒個準譜 最長誤差超過10小時  九成公交車電子鐘「神經錯亂」  大多不信任公交電子鐘 會儘快向廠家反映  坐公交車去火車站,被電子鐘時間誤導,險些誤點。  9∶50,記者上了一輛車牌號碼為鄂AC1795的729路車,電子鐘顯示時間是10∶02,快了10多分鐘。  9∶54分,一輛車牌號碼為鄂A0129的608路公交車,電子鐘顯示時間為4∶09,相差5個多小時。  10∶19分,一輛車牌號碼為鄂A78861的719路公交車,電子鐘顯示時間為10∶04,慢了15分鐘。
  • 鼓樓的大鐘是電子鐘還是石英鐘為什麼老走不準?
    都市快報與寧波81890  求助服務中心獨家聯合推出民生服務欄目  記者 程瀟龍 通訊員 費蘇華  81890000  撥一撥就靈靈靈靈  快報幫你問  鼓樓的大鐘  是電子鐘還是石英鐘  為什麼老走不準?
  • 寧波鼓樓的大鐘是電子鐘還是石英鐘 為什麼走不準
    小姑娘背後即是寧波鼓樓 程瀟龍 攝  林先生等人來電諮詢:  寧波鼓樓有個大鐘表,最近,這個鐘走時不準確。  故樓上的鐘,已經更換好幾次了。民國初年,鼓樓頂層建造了一座6米多高的正方形西式鐘樓,配置了一口大銅鐘,四面如一,既能報時,也可以報警。  2001年,寧波市政府在鼓樓安裝了一座電子塔鍾,由山東煙臺持久鐘錶集團生產的。每到正點時,大鐘會發出咚咚鐘聲。從2001年起至2009年5月,鼓樓一直使用的是這個大鐘,由於使用時間太長了,大鐘機械老化,經常出錯。
  • ARM彙編程序設計之:ARM彙編器所支持的偽操作
    表10.1 ARM源程序文件名後綴程序文件名彙編*.S引入文件*.INCC程序*.C頭文件*.H在一個項目中,至少要有一個彙編源文件,可以有多個彙編源文件或多個C程序,或者C程序文件和彙編文件兩者的組合。
  • 湘潭大同世界鐘樓電子鐘「跑得快」? 經核實比北京時間快10分鐘
    6月24日,湘潭晚報記者來到現場核實情況,當時北京時間為9點19分,但鐘樓的電子鐘顯示的時間為9點29分。我們從大同房產公司了解到,這座大樓(鐘樓)是1992年興建的,當時為機械鐘。去年機械鐘出現了「停擺」現象、難以修復,同年5月5日,這裡就被電子鐘取代。
  • ARM彙編特殊符號 彙編符號引用
    280位元組內存並初始化[|] ----IF ELSE ENDIF----條件編譯,有選擇的確定需要編譯的代碼IF,ELSE,ENDIF,可以嵌套使用----IF 邏輯表達式指令或偽指令ELSE指令或偽指令ENDIF另外還有符號: $如果在串變量前有一個$,則在彙編
  • 基於單片機的電子鐘
    1)設計任務:設計一個能顯示當前的年、月、日、時、分、秒,具有鬧鐘功能的的電子時鐘
  • 利用電子鐘的驅動電路製作一個快速閃爍燈
    這是一個閒置的電子鐘驅動器,就是靠它轉動指針走時的。用螺絲刀撬開後殼,可以看見裡面的傳動齒輪和電路板。把它們都拆下來的,左側下面就是關鍵部件:電子驅動電路板。進一步拆解,把線圈取下來。
  • ARM彙編編程基礎之四-ARM彙編偽操作
    掌握了基本的ARM彙編指令後,要寫出簡單的ARM彙編程序,還必須要掌握基本的ARM彙編偽操作(directive)。現在我們來看一個簡單的彙編程序,該程序調用子程序完成了加法操作。第6、8、10行的START、LOOP、ADD_SUB是標號,最經常用於跳轉指令B和BL,由於彙編語法要求的緣故,標號必須頂格寫(即:不能在行首有空格),否則編譯器會報錯。與之對應的是,彙編指令一定不能頂格寫。很明顯分號(;)在彙編程序中是注釋符號,相當於C語言的//號。除此之外,當然大家注意到了第3、4、5、13行是我們沒學習過的符號,其實它們就是本文的重點——ARM彙編偽操作。