多位數(shù)碼管計(jì)數(shù)器程序?qū)崿F(xiàn)
大小:0.1 MB 人氣: 2017-09-06 需要積分:0
推薦 + 挑錯(cuò) + 收藏(0) + 用戶評(píng)論(0)
標(biāo)簽:計(jì)數(shù)器(91962)數(shù)碼管(89198)
多位數(shù)碼管計(jì)數(shù)器程序?qū)崿F(xiàn)多位數(shù)碼管計(jì)數(shù)器程序?qū)崿F(xiàn)1、2位數(shù)碼管計(jì)數(shù)器
A_BIT EQU 20H????????????????? ;個(gè)位數(shù)存放處B_BIT EQU 21H????????????????? ;十位數(shù)存放處
TEMP EQU 22H?????????????????? ;計(jì)數(shù)器寄存處
STAR: MOV TEMP,#0????????????? ;初始化計(jì)數(shù)器
STLOP: ACALL DISPLAY?????????? ;
?????? INC TEMP
?????? MOV A,TEMP
?????? CJNE A,#100,NEXT??????? ;等于100重來(lái)
?????? MOV TEMP,#0
??? NEXT: LJMP STLOP
;顯示子程序
DISPLAY: MOV A,TEMP
???????? MOV B,#10
? DIV AB?
? MOV B_BIT,A
? MOV A_BIT,B
? MOV DPTR,#NUMTAB
? MOV R0,#4
DPL1:?? MOV R1,#5
DPLOP:? MOV A,A_BIT
??????? MOVC A,@A+DPTR
?MOV P0,A
?CLR P2.7
?ACALL D1MS
?SETB P2.7
?MOV A,B_BIT
?MOVC A,@A+DPTR
?MOV P0,A
?CLR P2.6
?ACALL D1MS
?SETB P2.6
?DJNZ R1,DPLOP
?DJNZ R0,DPL1
?RET
D1MS:
?? MOV R7,#50
?? D1: MOV R6,#20
?? D2: DJNZ R6,$
?????? DJNZ R7,D1
?????? RET
NUMTAB:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H?? ;013456789字形碼
END
?
2、4位數(shù)碼管計(jì)數(shù)器經(jīng)典例程
;本程序?qū)崿F(xiàn)七段碼動(dòng)態(tài)顯示功能;///////////////////////////////////////////
???org?0000h
???ajmp?main
???org?0030h
main:
???mov dptr,#tab????;將表頭位置送入DPTR????? ?????
???mov 30h,#00h??????????????? ;將30H個(gè)位顯示緩沖單元清零??????????
???mov 31h,#00h??????????????? ;將31H十位顯示緩沖單元清零??????????
???mov 32h,#00h??????????????? ;將32H百位顯示緩沖單元清零??????????
???mov 33h,#00h??????????????? ;將33H千位顯示緩沖單元清零??????????
loop:
???mov r4,#5?????;r4作為軟件計(jì)數(shù)器
tt1:
???lcall display????;調(diào)用顯示程序?
???djnz?r4,tt1????;r4減一后不為零,返回tt1
???lcall update????;調(diào)用刷新顯示子程序
???ajmp loop?????;跳回loop,繼續(xù)循環(huán)顯示.
display:?mov?p2,#0ffh?????;將P2口置高電平?????????????????????????
???mov r7,#100?????;軟件計(jì)數(shù)器賦值???????????????????????? ?
dd1:????????????????????????????????????????????????????????????????????????????
???mov a,30h?????????????????? ;將顯示緩沖區(qū)30H中的值送入ACC???????????
???movc a,@a+dptr????????????? ;查表取要顯示的數(shù)并把查表的結(jié)果送入ACC??
???mov p0,a??????????????????? ;將要顯示的數(shù)送入P0口???????????????????
???clr p2.3??????????????????? ;開個(gè)位顯示單元?????????????????????????
???lcall delay100us??????????? ;延時(shí)100US??????????????????????????????
???setb p2.3?????????????????? ;關(guān)個(gè)位顯示單???????????????????????????
??????????????????????????????????????? ?????????????????????????????????????
???mov a,31h?????????????????? ;將顯示緩沖區(qū)別31H中的值送入A???????????
???movc a,@a+dptr????????????? ;查表取要顯示的數(shù)并把查表的結(jié)果送入ACC??
???mov p0,a??????????????????? ;將要顯示的數(shù)送入P0口???????????????????
???clr p2.2??????????????????? ;開十位顯示單元?????????????????????????
???lcall delay100us??????????? ;延時(shí)100US??????????????????????????????
???setb p2.2?????????????????? ;關(guān)十位顯示單元?????????????????????????
??????????????????????????????????????? ?????????????????????????????????????
???mov a,32h?????????????????? ;將顯示緩沖區(qū)32H中的值送入ACC???????????
???movc a,@a+dptr????????????? ;查表取要顯示的數(shù)并把查表的結(jié)果送入ACC??
???mov p0,a??????????????????? ;將要顯示的數(shù)送入P0口???????????????????
???clr p2.1??????????????????? ;開百位顯示單元?????????????????????????
???lcall delay100us??????????? ;延時(shí)100US??????????????????????????????
???setb p2.1?????????????????? ;關(guān)百位顯示單元?????????????????????????
??????????????????????????????????????? ?????????????????????????????????????
???mov a,33h?????????????????? ;將顯示緩沖區(qū)33H中的值送入ACC???????????
???movc a,@a+dptr????????????? ;查表取要顯示的數(shù)并把查表的結(jié)果送入ACC??
???mov p0,a??????????????????? ;將要顯示的數(shù)送入P0口???????????????????
???clr p2.0??????????????????? ;開千位顯示單元?????????????????????????
???lcall delay100us??????????? ;延時(shí)100US??????????????????????????????
???setb p2.0?????????????????? ;關(guān)千位顯示單元?????????????????????????
???djnz r7,dd1???????????????? ;R7不等于0返回至DD1處???????????????????
???ret???????????????????????? ;R7等于0子程序返回?????????????????????
update:?????????;刷新顯示子程序
???inc 30h??????;個(gè)位顯示緩沖單元加一??
???mov a,30h
???cjne a,#10,exit????;還沒(méi)加到十,退出
???mov 30h,#00h????;加到十了,個(gè)位清零
???inc 31h??????;十位顯示緩沖單元加一??
???mov a,31h???????????????????????????????????????????????
???cjne a,#10,exit???????????? ;還沒(méi)加到十,退出????????????
???mov 31h,#00h??????????????? ;加到十了,十位清零??????????
???inc 32h??????;百位顯示緩沖單元加一??
???mov a,32h???????????????????????????????????????????????
???cjne a,#10,exit???????????? ;還沒(méi)加到十,退出????????????
???mov 32h,#00h??????????????? ;加到十了,百位清零??????????
???inc 33h??????;千位顯示緩沖單元加一??
???mov a,33h???????????????????????????????????????????????????????????????????????????
???cjne a,#10,exit???????????? ;還沒(méi)加到十,退出????????????
???mov 33h,#00h??????????????? ;加到十了,千位清零??????????
exit:
???ret???????;刷新顯示子程序返回
delay100us:
???mov r5,#50
???djnz?r5,$
???ret
delay10ms:
???mov r6,#100
tt2:
???mov r5,#50
???djnz r5,$
???djnz r6,tt2
???ret
???
tab:?db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h,86h,8eh
end
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%
下載地址
多位數(shù)碼管計(jì)數(shù)器程序?qū)崿F(xiàn)下載
相關(guān)電子資料下載
- STM32基礎(chǔ)知識(shí):定時(shí)器的定時(shí)計(jì)數(shù)功能 105
- 脈沖定時(shí)器時(shí)間未到而在此觸發(fā)IN端則會(huì)重新計(jì)時(shí)是否正確?為什么? 53
- 51單片機(jī)溫度控制調(diào)速風(fēng)扇仿真設(shè)計(jì) 286
- WT588E語(yǔ)音芯片的基本介紹 122
- 請(qǐng)問(wèn)異步FIFO的溢出操作時(shí)怎么樣判斷的? 48
- 嵌入式狀態(tài)機(jī)編程-QP狀態(tài)機(jī)框架基本知識(shí)介紹 76
- 數(shù)字電路中的計(jì)數(shù)器詳解 154
- 51單片機(jī)DS18B20溫度報(bào)警器proteus仿真設(shè)計(jì)_可調(diào)上下限 202
- 集成電路CD40161-多功能計(jì)數(shù)器和分頻器的電子元件 116
- 求一種WT588F02KD-24SS數(shù)碼管時(shí)鐘語(yǔ)音播報(bào)芯片設(shè)計(jì)方案 131