日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 芯聞號 > 充電吧
[導讀];用51單片機控制 2位數(shù)碼管動態(tài)顯示 00 ~ 99。;從 00 開始顯示,顯示數(shù)字每隔一段時間加 1,一直到 99,然后回到 00。;從 00 到 10 每隔 100ms 加 1;;從 10 到

;用51單片機控制 2位數(shù)碼管動態(tài)顯示 00 ~ 99。


;從 00 開始顯示,顯示數(shù)字每隔一段時間加 1,一直到 99,然后回到 00。


;從 00 到 10 每隔 100ms 加 1;

;從 10 到 20 每隔 200ms 加 1;


;其它依此類推;


;從 90 到 99 然后到 00 每隔 1s 加 1。


;做而論道用匯編語言編寫的程序如下:


? ? ORG ? 0000H

? ? JMP ? MAIN

? ? ORG ? 000BH

? ? JMP ? T0_INT

MAIN:

? ? MOV ? TMOD, #01H

? ? MOV ? TH0, #HIGH(65536-50000)

? ? MOV ? TL0, #LOW(65536-50000)

? ? SETB ?TR0

? ? SETB ?ET0

? ? SETB ?EA

? ? MOV ? B, #2

? ? MOV ? R2, B

? ? MOV ? R4, #0

? ? MOV ? R5, #0

? ? MOV ? R6, #2


LOOP:

? ? MOV ? A, R4

? ? ADD ? A, #(TAB - $ - 3)

? ? MOVC ?A, @A + PC

? ? MOV ? P0, A

? ? MOV ? P2, #2

? ? DJNZ ?R7, $

? ? DJNZ ?R7, $

? ? MOV ? P2, #0


? ? MOV ? A, R5

? ? ADD ? A, #(TAB - $ - 3)

? ? MOVC ?A, @A + PC

? ? MOV ? P0, A

? ? MOV ? P2, #1

? ? DJNZ ?R7, $

? ? DJNZ ?R7, $

? ? MOV ? P2, #0


? ? SJMP ?LOOP

;---------------------------------------

TAB: ? ? ?;共陽段碼

? ? DB ?0C0H, 0F9H, 0A4H, 0B0H

? ? DB ?099H, 092H, 082H, 0F8H

? ? DB ?080H, 090H

;---------------------------------------

T0_INT:

? ? MOV ? TH0, #HIGH(65536-50000)

? ? MOV ? TL0, #LOW(65536-50000)


? ? DJNZ ?R2, T0_END

? ? MOV ? R2, B


? ? INC ? R4

? ? CJNE ?R4, #10, T0_END

? ? MOV ? R4, #0


? ? INC ? R6

? ? INC ? R6

? ? CJNE ?R6, #22, T_B

? ? MOV ? R6, #2

T_B:

? ? MOV ? B, R6


? ? INC ? R5

? ? CJNE ?R5, #10, T0_END

? ? MOV ? R5, #0


T0_END:

? ? RETI

;---------------------------------------

END


;程序中,用 T0 定時50ms(假設晶振頻率是 12MHz)。


;大家都知道,每當中斷 20 次,就是 1s。


;如果這個 20,不是固定的常數(shù),而是個變量,分別是:

; 2、4、6...、20,那么,即可實現(xiàn)定時 100ms、200ms、...。


;程序中,使用寄存器B,保存這個變量,初始時,令其為 2。

;以后,每當計數(shù)到十位數(shù)發(fā)生變化時,就把 B 加上 2。

;加到了 22,就再令其為 2。


;程序仿真執(zhí)行的截圖如下:


;圖片鏈接:http://xiangce.baidu.com/picture/detail/beb6214cc0782f2e85f5ba61dd2af810553a9272


;圖中使用了共陽數(shù)碼管。


;觀看的效果如何呢 ?


;前面的,定時 100ms、200ms...,太快,看不很準。


;但是,可以看出來,計數(shù)速度,是逐漸減慢的。


;等到了 90~00,就可以看到,每隔一秒,跳一個字,還是很準確的。


;本題目來自:http://zhidao.baidu.com/question/570496034.html


;提問者,是想要 C 語言的程序,但是,題目中,也沒有說清楚,呵呵,白忙了。

----

C 語言程序如下:


#include


char n1 = 0, n2 = 0; ? ? //用于顯示

char n_t1 = 0, n_t2 = 2; //用于計數(shù)


char code seg[] = { ? ? ?//共陽段碼

? ? 0xC0, 0xf9, 0xa4, 0xb0, 0x99,

? ? 0x92, 0x82, 0xf8, 0x80, 0x90}; //0 ~ 9


void Main(void)

{

? ? char ?i;

? ? TMOD = 0x01;

? ? TH0 = (65536 - 50000) / 256;

? ? TL0 = (65536 - 50000) % 256;

? ? TR0 = 1;

? ? ET0 = 1;

? ? EA = 1;


? ? while (1) {

? ? ? P0 = seg[n1]; P2 = 2; for(i = 0; i < 100; i++); P2 = 0;

? ? ? P0 = seg[n2]; P2 = 1; for(i = 0; i < 100; i++); P2 = 0;

? ? }

}


T0_INT() ? interrupt 1

{

? ? TH0 = (65536 - 50000) / 256;

? ? TL0 = (65536 - 50000) % 256;

? ? n_t1++;

? ? if (n_t1 == n_t2) ?{

? ? ? n_t1 = 0;


? ? ? n1++;

? ? ? if (n1 == 10) {

? ? ? ? n1 = 0;

? ? ? ??

? ? ? ? n_t2 += 2;

? ? ? ? if (n_t2 == 22) n_t2 = 2;


? ? ? ? n2++;

? ? ? ? if (n2 == 10) n2 = 0;

? ? ? }

? ? }

}


本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關閉