单片机c语言数码管显示循环0到9程序,七段数码管0~9循环显示程序
該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
編寫程序實現80C51的P0口控制一個數碼管顯示,讓它循環顯示0~9等十位數字,時間間隔為1秒鐘。
利用查表程序可以完成BCD與七段碼的轉換,從而取代硬件七段譯碼電路,查表程序本身并無復雜之處,需要注意的是七段碼的取值,因為七段數碼管有共陽極及共陰極之分(參考本站數碼管的相關文章)。
共陽極是低電平有效時有效輸入。共陰極是高電平時有效輸入(所以在C51單片機要使發光二極管點亮,數碼管是共陽極的就要讓I/O口的電位變為低電位.如果是共陰極的就是合I/O口的電位變為高電位),因些不同的器件會有不同的數碼值。另外引腳信號與碼位的對應關系也會影響碼值,即引腳可以由高到低排列(7-1),也可以由低到高排列(1-7)。本實驗的數碼管為共陽極,采用由高到低的排列(特別說明.本站的學習工具全部為共陽極接法)。
例如對應0的二進制代碼為11000000本實驗在本站推出的實驗板及學習套件上可直接使用。請參照本站產品實驗部份原理圖。
***************************源程序******************************
ORG 0100H ;程序起始地址
MAIN: MOV R2,#00H ;段碼地址表指針清零
MOV DPTR,#TAB ;指向段碼地址表起始地址
DSUP: MOV A,R2 ;將R2的內容送入累加器A
MOVC A,@A+DPTR ;累加器的值與從數據表中取出的數碼顯示值相加后送入累加器A
MOV P0,A ;將累加器的值送入P0口顯示
MOV R1,#11111110B ;將11111110B(位選P2.0)送入寄存器R1
MOV P2,R1 ;將R1的值送入P2口進行位選
LCALL YSH1S ;調用延時1秒子程序
INC R2 ;段碼地址表指針加1
CJNE R2,#0AH,DSUP ;如果0-9顯示完畢,程序重新開臺執行
SJMP MAIN ;跳轉到MAIN入口
YSH1S:MOV R3,#05H ;延時1秒子程序
LOOP0:MOV R4,#0C8H
LOOP1:MOV R5,#0FAH
XHD: DJNZ R5,XHD
DJNZ R4,LOOP1
DJNZ R3,LOOP0
RET
TAB: DB 0C0H ;0-9段碼表
DB 0F9H
DB 0A4H
DB 0B0H
DB 99H
DB 92H
DB 82H
DB 0F8H
DB 80H
DB 90H
END
總結
以上是生活随笔為你收集整理的单片机c语言数码管显示循环0到9程序,七段数码管0~9循环显示程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 服务器的性能考核指标QPS、
- 下一篇: 瓜子卖车记