è¿ä¸ªæ¯99è·é©¬è¡¨å§ï¼å¾ç®ååï¼å»ºè®¾æ¥¼ä¸»å¨é¢åº¦æã
åçæº40个å®éªãï¼ä¸è½½æ¥ççï¼å¾ä¸éå°
10. 00-99
计æ°å¨ 1. å®éªä»»å¡
å©ç¨AT89S51åçæºæ¥å¶ä½ä¸ä¸ªæå¨è®¡æ°å¨ï¼å¨AT89S51åçæºçP3.7管èæ¥ä¸ä¸ªè½»è§¦å¼å
³ï¼ä½ä¸ºæå¨è®¡æ°çæé®ï¼ç¨åçæºçP2.0-P2.7æ¥ä¸ä¸ªå
±é´æ°ç 管ï¼ä½ä¸º00-99计æ°ç个ä½æ°æ¾ç¤ºï¼ç¨åçæºçP0.0-P0.7æ¥ä¸ä¸ªå
±é´æ°ç 管ï¼ä½ä¸º00-99计æ°çåä½æ°æ¾ç¤º;硬件
çµè·¯å¾å¦å¾19æ示ã
2. çµè·¯åçå¾
å¾4.10.1
3. ç³»ç»æ¿ä¸ç¡¬ä»¶è¿çº¿
(1. æâåçæºç³»ç»âåºåä¸çP0.0/AD0-P0.7/AD7端å£ç¨8è¯æ线è¿æ¥å°âåè·¯éææ°ç æ¾ç¤ºæ¨¡åâåºåä¸çä»»ä¸ä¸ªa-h端å£ä¸;è¦æ±:P0.0/AD0对åºçaï¼P0.1/AD1对åºçbï¼â¦â¦ï¼P0.7/AD7对åºçhã
(2. æâåçæºç³»ç»âåºåä¸çP2.0/A8-P2.7/A15端å£ç¨8è¯æ线è¿æ¥å°âåè·¯éææ°ç æ¾ç¤ºæ¨¡åâåºåä¸çä»»ä¸ä¸ªæ°ç 管ça-h端å£ä¸;
(3. æâåçæºç³»ç»âåºåä¸çP3.7/RD端å£ç¨å¯¼çº¿è¿æ¥å°âç¬ç«å¼é®çâåºåä¸çSP1端å£ä¸;
4. ç¨åºè®¾è®¡å
容
(1. åçæºå¯¹æé®çè¯å«çè¿ç¨å¤ç
(2. åçæºå¯¹æ£ç¡®è¯å«çæé®è¿è¡è®¡æ°ï¼è®¡æ°æ»¡æ¶ï¼åä»é¶å¼å§è®¡æ°;
(3. åçæºå¯¹è®¡çæ°å¼è¦è¿è¡æ°ç æ¾ç¤ºï¼è®¡å¾çæ°æ¯åè¿æ°ï¼å«æåä½å个ä½ï¼æ们è¦æåä½å个ä½æå¼åå«éåºè¿æ ·çåä½å个ä½æ°å¼å°å¯¹åºçæ°ç 管ä¸æ¾ç¤ºãå¦ä½æå¼åä½å个ä½æ们å¯ä»¥ææ计å¾çæ°å¼å¯¹10æ±ä½ï¼å³å¯å¾ä¸ªä½æ°åï¼å¯¹10æ´é¤ï¼å³å¯å¾å°åä½æ°åäºã
(4. éè¿æ¥è¡¨æ¹å¼ï¼åå«æ¾ç¤ºåºä¸ªä½ååä½æ°åã
5. ç¨åºæ¡å¾
å¾4.10.2
6. æ±ç¼æºç¨åº
Count EQU 30H
SP1 BIT P3.7
ORG 0
START: MOV Count,#00H
NEXT: MOV A,Count
MOV B,#10
DIV AB
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,B
MOVC A,@A+DPTR
MOV P2,A
WT: JNB SP1,WT
WAIT: JB SP1,WAIT
LCALL DELY10MS
JB SP1,WAIT
INC Count
MOV A,Count
CJNE A,#100,NEXT
LJMP START
DELY10MS: MOV R6,#20
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
7. Cè¯è¨æºç¨åº
#include <AT89X51.H>
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char Count;
void delay10ms(void)
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
void main(void)
{
Count=0;
P0=table[Count/10];
P2=table[Count%10];
while(1)
{
if(P3_7==0)
{
delay10ms();
if(P3_7==0)
{
Count++;
if(Count==100)
{
Count=0;
}
P0=table[Count/10];
P2=table[Count%10];
while(P3_7==0);
}
}
}
}
追é®è¯¶ï¼ä½ åªåä¸ä¸ªæé®å§ï¼