900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 0 99的计数器的C语言程序 单片机0~99计数器.doc

0 99的计数器的C语言程序 单片机0~99计数器.doc

时间:2020-06-04 20:05:42

相关推荐

0 99的计数器的C语言程序 单片机0~99计数器.doc

单片机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手动计数器的主程序

CountEQU 30H ; EQU ——标号赋值伪指令SP1BIT 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

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);

}

}

}

}

四、功能说明

(1)芯片由UNTITLED—ISISPROFESSIONAL实验系统提供(AT89C51)

1.主要特性:

与MCS-51兼容

4K字节可编程闪烁存储器

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。