单片机0~99数器.docVIP

  • 5
  • 0
  • 约9.95千字
  • 约 10页
  • 2016-10-09 发布于贵州
  • 举报
单片机0~99数器

目录 设计任务…………………………………………………… .3 00~~99手动计数器设计程序框图……………………………3 00~~99手动计数器的主程序…………………………………3 功能说明………………………………………………………6 原理图…………………………………………………………10 检测与调试……………………………………………………10 总结与体会…………………………………………………10 一、设计任务 (1)、功能及技术指标要求 利用AT89S51单片机来制作一个手动计数器。 (2)、设计内容 在AT89S51单片机的P3.7管脚接一个轻触开关,作为手动计数的按钮,用单片机的P2.0-P2.7接一个共阴数码管,作为00-99计数的个位数显示,用单片机的P0.0-P0.7接一个共阴数码管,作为00-99计数的十位数显示。 (3)、设计思路及关键技术 一个完整00~`99手动计数器想当于一个简单的单片机系统,该系统设置电路、单片机、显示电路等构成。单片机是集成IC芯片,只需根据实际设计要求选型。其他部分都需要根据应用要求和性能指标自行设计。 二、00~~99手动计数器的设计程序框图 、 三、00~~99手动计数器的主程序 Count EQU 30H ; EQU ——标号赋值伪指令SP1 BIT P3.7 ORG 0 START: MOV Count,#00H NEXT: MOV A,Count MOV B,#10 DIV AB ; A除以B,商(存于)A余(下)B MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV A,B MOVC A,@A+DPTR MOV P2,A WT: JNB SP1,WT ;SP为0转移 WAIT: JB SP1,WAIT ;SP为1转移 LCALL DELY10MS JB SP1,WAIT INC Count ; Count加1 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 ;0---9 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;i0;i--) for(j=248;j0;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); } } } } 四、功能说明 (1)芯片由UNTITLED—ISISPROFESSIONAL实验系统提供(AT89C51) 1.主要特性: 与MCS-51兼容 4K字节可编程闪烁存储器

文档评论(0)

1亿VIP精品文档

相关文档