手机版av在线_96精品国产aⅴ在线观看_中文字幕35页_国产亚洲成AV人片在线观黄桃_全黄性色大片_免费视频h

產(chǎn)品推薦:水表|流量計(jì)|壓力變送器|熱電偶|液位計(jì)|冷熱沖擊試驗(yàn)箱|水質(zhì)分析|光譜儀|試驗(yàn)機(jī)|試驗(yàn)箱


儀表網(wǎng)>技術(shù)中心>應(yīng)用設(shè)計(jì)>正文

歡迎聯(lián)系我

有什么可以幫您? 在線咨詢

基于51單片機(jī)秒表的程序設(shè)計(jì)

   2012年07月11日 15:20  
  1.設(shè)計(jì)目的:
  
  (1)利用單片機(jī)定時(shí)器中斷和定時(shí)器計(jì)數(shù)方式實(shí)現(xiàn)秒、分定時(shí)。
  
  (2)通過LED顯示程序的調(diào)整,熟悉8155與8051,8155與LED的接口技術(shù),熟悉LED動(dòng)態(tài)顯示的控制過程。
  
  (3)通過鍵盤程序的調(diào)整,熟悉8155與矩陣式鍵盤的接口技術(shù),熟悉鍵盤掃描原理。
  
  (4)通過閱讀和調(diào)試簡(jiǎn)易秒表整體程序,學(xué)會(huì)如何編制含LED動(dòng)態(tài)顯示、鍵盤掃描和定時(shí)器中斷等多種功能的綜合程序,初步體會(huì)大型程序的編制和調(diào)試技巧。
  
  2.設(shè)計(jì)步驟與要求
  
  (1)要求:以8位LED右邊2位顯示秒,左邊6位顯示0,實(shí)現(xiàn)秒表計(jì)時(shí)顯示。以4×4矩陣鍵盤的KE0、KE1、KE2等3鍵分別實(shí)現(xiàn)啟動(dòng)、停止、清零等功能。
  
  (2)方法:用單片機(jī)定時(shí)器T0中斷方式,實(shí)現(xiàn)1秒定時(shí);利用單片機(jī)定時(shí)器1方式3計(jì)數(shù),實(shí)現(xiàn)60秒計(jì)數(shù)。用動(dòng)態(tài)顯示方式實(shí)現(xiàn)秒表計(jì)時(shí)顯示,用鍵盤掃描方式取得KE0、KE1、KE2的鍵值,用鍵盤處理程序?qū)崿F(xiàn)秒表的啟動(dòng)、停止、清零等功能。
  
  (3)軟件設(shè)計(jì):軟件整體設(shè)計(jì)思路是以鍵盤掃描和鍵盤處理作為主程序,LED動(dòng)態(tài)顯示作為子程序。二者間的是:主程序查詢有無(wú)按鍵,無(wú)按鍵時(shí),調(diào)用二次LED動(dòng)態(tài)顯示子程序(約延時(shí)8ms)后再回到按鍵查詢狀態(tài),不斷循環(huán);有按鍵時(shí),LED動(dòng)態(tài)顯示子程序作為按鍵防抖延時(shí)被連續(xù)調(diào)用二次(約延時(shí)16ms),待按鍵處理程序執(zhí)行完后,再回到按鍵查詢狀態(tài),同時(shí)兼顧了按鍵掃描取值的準(zhǔn)確性和LED動(dòng)態(tài)顯示的穩(wěn)定性。秒定時(shí)采用定時(shí)器T0中斷方式進(jìn)行,60秒計(jì)數(shù)由定時(shí)器1采用方式3完成,中斷及計(jì)數(shù)的開啟與關(guān)閉受控于按鍵處理程序。由上述設(shè)計(jì)思路可設(shè)計(jì)出軟件流程圖如圖1.1所示。
  
  (5)程序編制:編程時(shí)置KE0鍵為“啟動(dòng)”,置KE1鍵為“停止”,置KE2鍵為“清零”,因按鍵較少,在處理按鍵值時(shí)未采用散轉(zhuǎn)指令“JMP”,而是采用條件轉(zhuǎn)移指令“CJNE”,每條指令后緊跟著一條無(wú)條件跳轉(zhuǎn)指令“AJMP”,轉(zhuǎn)至相應(yīng)的按鍵處理程序,如不是上述3個(gè)按鍵值則跳回按鍵查詢狀態(tài)。8位LED顯示的數(shù)據(jù)由顯示緩沖區(qū)30H~37H單元中的數(shù)據(jù)決定,順序是從左至右,動(dòng)態(tài)顯示時(shí),每位顯示持續(xù)時(shí)間為1ms,1ms延時(shí)由軟件實(shí)現(xiàn),8位顯示約耗時(shí)8ms。主程序、按鍵查詢子程序采用第0組工作寄存器,顯示子程序采用第1組工作寄存器。1秒定時(shí)采用定時(shí)器T0方式1中斷,每50ms中斷一次,用21H做50ms計(jì)數(shù)單元,每20次為一個(gè)循環(huán),計(jì)滿20次,60秒計(jì)數(shù)單元(20H)計(jì)數(shù)1次。60秒計(jì)數(shù)采用定時(shí)器T1方式2計(jì)數(shù),計(jì)數(shù)脈沖采用軟件置位、復(fù)位P3.5口的方法實(shí)現(xiàn),用20H單元做60秒計(jì)數(shù)單元,如定時(shí)器T1溢出,則20H單元被清零,20H單元的數(shù)據(jù)采用十進(jìn)制計(jì)數(shù),該數(shù)據(jù)被拆成個(gè)位和十位兩個(gè)數(shù)據(jù)后分別送至顯示緩沖區(qū)的30H、31H單元。
  
  按照上述思路可編制源程序如下:
  
  ORG0000H
  
  AJMPMAIN
  
  ORG000BH
  
  AJMPCONT
  
  ;主程序
  
  ;――――――――――初始化程序―――――――――――
  
  MAIN:MOVTMOD,#61H;置T0方式1定時(shí),T1方式2計(jì)數(shù)
  
  MOVTH0,#3CH;T0置初值
  
  MOVTL0,#0B0H
  
  MOVTH1,#0C4H;T1置初值
  
  MOVTL1,#0C4H
  
  MOVDPTR,#4400H;8155控制口地址送DPTR
  
  MOVA,#43H;設(shè)置8155工作方式字
  
  MOVX@DPTR,A;設(shè)置PA、PB口輸出,PC口輸入
  
  MOV20H,#00H;60秒計(jì)數(shù)單元置初值
  
  MOV21H,#14H;50ms計(jì)數(shù)單元置初值
  
  MOVSP,#3FH;堆棧指針置初值
  
  MOVR2,#08H&n,bsp;;LED待顯示位數(shù)送R2
  
  MOVR0,#30H;顯示緩沖區(qū)首址送R0
  
  STAR:MOV@R0,#00H;顯示緩沖區(qū)清零
  
  INCR0
  
  DJNZR2,STAR
  
  CLRA;累加器清零
  
  ;―――――――――――鍵盤查詢程序――――――――――
  
  KEY:ACALLKS;調(diào)按鍵查詢子程序判是否有鍵按下
  
  JNZK1;有鍵按下轉(zhuǎn)移
  
  ACALLDISP;無(wú)鍵按下,調(diào)顯示子程序延時(shí)
  
  AJMPKEY;繼續(xù)查詢按鍵
  
  ;―――――――――――鍵盤掃描程序――――――――――
  
  K1:ACALLDISP;鍵盤去抖延時(shí)
  
  ACALLDISP
  
  ACALLKS;再次判別是否有鍵按下
  
  JNZK2;有鍵按下轉(zhuǎn)移
  
  AJMPKEY;無(wú)按鍵,誤讀,繼續(xù)查詢按鍵
  
  K2:MOVR3,#0FEH;首列掃描字送R3
  
  MOVR4,#00H;首列號(hào)送R4
  
  K3:MOVDPTR,#4401H;PA口地址送DPTR,開始列掃描
  
  MOVA,R3
  
  MOVX@DPTR,A;列掃描字送PA口
  
  INCDPTR;指向PC口
  
  INCDPTR
  
  MOVXA,@DPTR;讀取行掃描值
  
  JBACC.0,L1;第0行無(wú)鍵按下,轉(zhuǎn)查第1行
  
  MOVA,#00H;第0行有鍵按下,行首鍵號(hào)送A
  
  AJMPLK;轉(zhuǎn)求鍵號(hào)
  
  L1:JBACC.1,L2;第1行無(wú)鍵按下,轉(zhuǎn)查第2行
  
  MOVA,#08H;第1行有鍵按下,行首鍵號(hào)送A
  
  AJMPLK;轉(zhuǎn)求鍵號(hào)
  
  L2:JBACC.2,L3;第2行無(wú)鍵按下,轉(zhuǎn)查第3行
  
  MOVA,#10H;第2行有鍵按下,行首鍵號(hào)送A
  
  AJMPLK;轉(zhuǎn)求鍵號(hào)
  
  L3:JBACC.3,NEXT;第3行無(wú)鍵按下,轉(zhuǎn)查下一列
  
  MOVA,#18H;第3行有鍵按下,行首鍵號(hào)送A
  
  AJMPLK
  
  LK:ADDA,R4;形成鍵碼送A
  
  PUSHACC;鍵碼入棧保護(hù)
  
  K4:ACALLDISP
  
  ACALLKS;等待鍵釋放
  
  JNZK4;未釋放,等待
  
  POPACC;鍵釋放,彈棧送A
  
  AJMPPR;轉(zhuǎn)鍵盤處理程序
  
  NEXT:INCR4;修改列號(hào)
  
  MOVA,R3
  
  JNBACC.3,KEY;4列掃描完返回按鍵查詢狀態(tài)
  
  RLA;未掃描完,改為下列掃描字
  
  MOVR3,A&,nbsp;;掃描字暫存R3
  
  AJMPK3;轉(zhuǎn)列掃描程序
  
  ;―――――――――――鍵盤處理程序―――――――――――――――
  
  PR:CJNEA,#00H,PR01;不是KE0鍵碼,轉(zhuǎn)KE1鍵
  
  AJMPKE0;轉(zhuǎn)KE0鍵處理程序
  
  PR01:CJNEA,#01H,PR02;不是KE1鍵碼,轉(zhuǎn)KE2鍵
  
  AJMPKE1;轉(zhuǎn)KE1鍵處理程序
  
  PR02:CJNEA,#02H,PR03;不是KE2鍵碼,返回按鍵查詢
  
  AJMPKE2;轉(zhuǎn)KE2鍵處理程序
  
  PR03:AJMPKEY
  
  KE0:SETBTR0;啟動(dòng)定時(shí)器T0
  
  SETBTR1;啟動(dòng)定時(shí)器T1
  
  SETBET0;允許定時(shí)器T0中斷
  
  SETBEA;開中斷
  
  AJMPKEY;返回鍵盤查詢狀態(tài)
  
  KE1:CLREA;關(guān)中斷
  
  CLRET0;禁止定時(shí)器T0中斷
  
  CLRTR1;關(guān)定時(shí)器T1
  
  CLRTR0;關(guān)定時(shí)器T0
  
  AJMPKEY
  
  KE2:CLREA;關(guān)中斷
  
  AJMPMAIN;返回主程序進(jìn)行初始化
  
  ;――――――――――按鍵查詢子程序――――――――――――――
  
  KS:MOVDPTR,#4401H;置8155PA口地址
  
  MOVA,#00H
  
  MOVX@DPTR,A;全掃描字#00H送PA口
  
  INCDPTR;指向PC口
  
  INCDPTR
  
  MOVXA,@DPTR;讀入PC口狀態(tài)
  
  CPLA;變正邏輯,高電平表示有鍵按下
  
  ANLA,#0FH;屏蔽高4位
  
  RET;返回,A≠0表示有鍵按下
  
  ;―――――――――LED動(dòng)態(tài)顯示子程序―――――――――――――
  
  DISP:PUSHACC;A入棧保護(hù)
  
  SETBRS0;保護(hù)第0組工作寄存器,啟用第1組工作寄存器
  
  MOVR2,#08H;LED待顯示位數(shù)送R2
  
  MOVR1,#00H;設(shè)定顯示時(shí)間
  
  MOVR3,#7FH;選中zui右端LED
  
  MOVR0,#30H;顯示緩沖區(qū)首址送R0
  
  MOVA,@R0;秒顯示個(gè)位送A
  
  DISP1:MOVDPTR,#TAB;指向字形表首址
  
  MOVCA,@A+DPTR;查表取得字形碼
  
  MOVDPTR,#4402H;指向8155PB口(段碼口)
  
  MOVX@DPTR,A;字形碼送PB口
  
  MOVA,R3;取位選字
  
  MOVDPTR,#4401H;指向8155PA口(位選口)<,/O:P>
  
  MOVX@DPTR,A;位碼送PA口
  
  DJNZR1,$;延時(shí)0.5ms
  
  DJNZR1,$;延時(shí)0.5ms
  
  RRA;位選字移位
  
  MOVR3,A;移位后的位選字送R3
  
  INCR0;指向下一位緩沖區(qū)地址
  
  MOVA,@R0;緩沖區(qū)數(shù)據(jù)送A
  
  DJNZR2,DISP1;未掃描完,繼續(xù)循環(huán)
  
  CLRRS0;恢復(fù)第0組工作寄存器
  
  POPACC;A彈棧,恢復(fù)現(xiàn)場(chǎng)
  
  RET
  
  TAB:DB3FH,06H,5BH,4FH,66H;共陰極LED字形表
  
  DB6DH,7DH,07H,7FH,6FH
  
  ;――――――――――定時(shí)器中斷服務(wù)程序―――――――――――――
  
  CONT:PUSHACC;保護(hù)現(xiàn)場(chǎng)
  
  MOVTH0,#3CH;定時(shí)器T1重置初值
  
  MOVTL0,#0B0H
  
  MOVA,20H;秒計(jì)數(shù)器送A
  
  AJMPCONT1
  
  REN:AJMPREN1
  
  CONT1:DJNZ21H,REN;1秒定時(shí)未到,中斷返回
  
  MOV21H,#14H;重置50ms計(jì)數(shù)初值
  
  CLRP3.5;軟件產(chǎn)生定時(shí)器T1計(jì)數(shù)脈沖
  
  NOP
  
  NOP
  
  SETBP3.5
  
  INCA;1秒計(jì)數(shù)值加1
  
  DAA;換算為10進(jìn)制計(jì)數(shù)
  
  JBCTF1,CONT2;60秒到,轉(zhuǎn)清零
  
  CONT3:MOV20H,A;計(jì)數(shù)值送60秒計(jì)數(shù)單元20H
  
  ANLA,#0FH;屏蔽高4位
  
  MOV30H,A;秒表個(gè)位待顯示數(shù)據(jù)送顯示緩沖區(qū)
  
  MOVA,20H
  
  SWAPA;60秒計(jì)數(shù)單元高、低4位數(shù)據(jù)互換
  
  ANLA,#0FH;屏蔽高4位
  
  MOV31H,A;秒表十位待顯示數(shù)據(jù)送顯示緩沖區(qū)
  
  AJMPREN1
  
  CONT2:MOVA,#00H
  
  AJMPCONT3
  
  REN1:POPACC;恢復(fù)現(xiàn)場(chǎng)
  
  RET;中斷返回
  
  END
  
  3.總結(jié)與分析
  
  (1)實(shí)驗(yàn)采用七段碼LED設(shè)計(jì)(數(shù)碼管),顯示直觀;采用定時(shí)器中斷,計(jì)時(shí)更準(zhǔn)確;功能齊全,可隨時(shí)啟動(dòng)、停止、清零,后者智能化程度更高。
  
  (2)設(shè)計(jì)、調(diào)試大型程序時(shí),需先根據(jù)要求劃分模塊,優(yōu)化結(jié)構(gòu);再根據(jù)各模塊特點(diǎn)確定何為主程序,何為子程序,何為中斷服務(wù)程序,相互間如何調(diào)用;再根據(jù)各模塊性質(zhì)和功能將各模塊細(xì)化,設(shè)計(jì)出程序流程圖;zui后才根據(jù)各模塊流程圖編制具體程序。調(diào)試時(shí)應(yīng)先調(diào)主程序,實(shí)現(xiàn)zui基本zui主要的功能,在此基礎(chǔ)上再將各模塊功能往主程序上堆砌,直至各模塊聯(lián)調(diào)、統(tǒng)調(diào),實(shí)現(xiàn)全部功能。本例子將整個(gè)程序劃分為鍵盤程序,動(dòng)態(tài)顯示程序,秒計(jì)時(shí)程序三大模塊,根據(jù)各自的特點(diǎn)確定鍵盤程序?yàn)橹鞒绦颍瑒?dòng)態(tài)顯示程序?yàn)樽映绦颍胗?jì)時(shí)程序?yàn)槎〞r(shí)器中斷服務(wù)程序。主程序又細(xì)分為初始化程序,鍵盤查詢程序,鍵盤掃描程序,鍵盤處理程序四大部分。三大模塊之間的關(guān)系是:鍵盤程序在無(wú)鍵按下時(shí),不斷調(diào)用動(dòng)態(tài)顯示子程序;在有鍵按下時(shí),先調(diào)用動(dòng)態(tài)顯示子程序消抖,再進(jìn)入鍵盤處理程序,控制中斷服務(wù)程序的運(yùn)行;處理完畢后,再不斷調(diào)用動(dòng)態(tài)顯示子程序。經(jīng)上述處理后,三大模塊運(yùn)行協(xié)調(diào)一致,既保持了動(dòng)態(tài)顯示的穩(wěn)定性,又保持了鍵盤的可靠性,還保持了秒計(jì)時(shí)的準(zhǔn)確性,較好地實(shí)現(xiàn)了全部功能。
  
  (3)本例子只用到8位LED顯示中的兩位,只用到4×4鍵盤16個(gè)按鍵中的3個(gè),因此,其功能還有較大的擴(kuò)展空間。只要將上述程序稍加改動(dòng)即可實(shí)現(xiàn)秒、分、時(shí)、日顯示,并可作修改的實(shí)時(shí)時(shí)鐘。如增加LED顯示位數(shù)或?qū)@示改為L(zhǎng)CD顯示模塊,可實(shí)現(xiàn)年、月、周、日、時(shí)、分、秒顯示。

免責(zé)聲明

  • 凡本網(wǎng)注明“來(lái)源:儀表網(wǎng)”的所有作品,均為浙江興旺寶明通網(wǎng)絡(luò)有限公司-儀表網(wǎng)合法擁有版權(quán)或有權(quán)使用的作品,未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用上述作品。已經(jīng)本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使用,并注明“來(lái)源:儀表網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)法律責(zé)任。
  • 本網(wǎng)轉(zhuǎn)載并注明自其它來(lái)源(非儀表網(wǎng))的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或和對(duì)其真實(shí)性負(fù)責(zé),不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品第一來(lái)源,并自負(fù)版權(quán)等法律責(zé)任。
  • 如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
聯(lián)系我們

客服熱線: 15267989561

加盟熱線: 15267989561

媒體合作: 0571-87759945

投訴熱線: 0571-87759942

關(guān)注我們
  • 下載儀表站APP

  • Ybzhan手機(jī)版

  • Ybzhan公眾號(hào)

  • Ybzhan小程序

企業(yè)未開通此功能
詳詢客服 : 0571-87759942
主站蜘蛛池模板: 狠狠色狠狠色综合 | 国产精品久久精品 | 九九热在线视频观看这里只有精品 | 免费观看黃色A一级视频日本 | 久久77 | 18禁黄网站免费 | 久久国产午夜精品理论片推荐 | 国产精品人妻久久久久 | 无码精品人妻一区二区三区老牛 | 5xs社区免费视频5xsq | 天堂а在线最新版在线 | h小视频在线 | 国产精品毛片va一区二区三区 | 久久久久亚洲AV无码网站 | 一个人免费看的WWW在线观看 | 亚洲大码熟女在线观看 | 在线免费观看一区二区 | 中文字幕视频一区二区三区久 | 扒插扒插 | 国产精品短视频 | 国产亚洲精品久久久999密壂 | 久久99蜜桃综合影院免费观看 | 手机毛片网 | 涩涩av| 日日躁夜夜躁人人揉av五月天 | 久久精品国产只有精品66 | 亚洲精品aⅴ中文字幕乱码 欧美日韩一区免费 | 在线中文字幕有码中文 | 嫩草国产 | 农民工嫖妓50岁老熟女 | 日韩AV一中美AV一中文字慕 | 久久免费在线观看视频 | 黄页在线免费看 | 亚洲AV成人综合网久久成人 | 亚州av不卡中文 | 国产午夜日韩不卡一区 | 免费视频爱爱 | 91精品瑜伽老师夯老师网址 | 欧美噜噜久久久xxx 日韩av一区二区三区四区 | 97在线视频人妻无码 | 亚洲中文字幕无码久久2017 |