2位数码管显示00-99的89s51单片机电子秒表设计 的程序和电路图

2位数码管显示00-99的89c51单片机电子秒表设计 的程序和电路图

第1个回答  2011-08-25
/*应该是 2位数码管显示00-99的89c51单片机电子秒表设计 的程序和电路图*/
P0段选 ,P2.0个位位选,P2.1十位位选 。共阳数码管 16M晶振。
STRT EQU P2.5
STP EQU P2.6
CLRR EQU P2.7

ORG 00H
AJMP MAIN
ORG 0BH
AJMP T0INT
ORG 30H

MAIN: MOV R0,#20
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV DPTR,#TABLE
SETB EA
SETB ET0

k1: LCALL DISP
JB STRT,K2
LCALL DISP
JNB STRT,$-3
AJMP START

k2: JB STP,K3
LCALL DISP
JNB STP,STOP

K3: JB CLRR,K1
LCALL DISP
JNB CLRR,CLEAR
AJMP K3

START: SETB TR0
AJMP K1

STOP: CLR TR0
AJMP K2

CLEAR: CLR TR0
MOV 40H,#0
AJMP K1

T0INT: MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ R0,RTI
MOV R0,#20
MOV A,40H
CJNE A,#99,ADD1
MOV 40H,#00H
CLR TR0
AJMP RTI

ADD1: ADD A,#01H
MOV 40H,A

RTI: RETI

DISP: MOV A,40H
MOV B,#10
DIV AB ;//当前值除以10
MOV 20H,A ;//得出的商送给十位
MOV 21H,B ;//得出的余数送给个位

CLR P2.0
SETB P2.1
MOV A,20H ;//十位显示
MOVC A,@A+DPTR
MOV P0,A

LCALL DELAY

CLR P2.1
SETB P2.0
MOV A,21H ; //个位显示
MOVC A,@A+DPTR
MOV P0,A

RET

DELAY: ;误差 0us
MOV R6,#01H
DL0:
MOV R5,#61H
DJNZ R5,$
DJNZ R6,DL0
RET

TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H ;//共阳极0-9显示代码
DB 92H,82H,0F8H,80H,90H

END追问

我们要用at89s51做

追答

C51和S51其实差不多的。

本回答被提问者采纳
第2个回答  2011-08-25
进大学生电子实验室网绝对可以找到你要的答案
第3个回答  2011-08-25
好难啊

编一个AT89C51单片机00 —99 秒的汇编程序,要求有循环和暂停,用两个...
MOV P0,#11111101B ;0代表选通该位数码管 SETB LATCH2 CLR LATCH2 CALL DELAY1 RET DELAY:MOV R5,#50 ;典型延时程序 D1: MOV R6,#40 D2: MOV R7,#248 CALL SCAN DJNZ R7,DJNZ R6,D2 DJNZ R5,D1 RET DELAY1:MOV R6,#4 ;扫描延时 D3: MOV R7,#248 DJNZ R7,...

Protues 任务:89c51单片机控制两个数码管显示0~99(延时不要太短)_百 ...
P2 = 0x00;while(1){ for(i=0;i<=99;i++){ P0 = DSY_CODE[i\/10];P2 = DSY_CODE[i%10];delay(100);} } } 以上为参考程序,部分需要稍作修改 数码管显示原理 数码管简介组成:LED数码管由7段或8段发光二极管组成,在平面上排成8字型。分类:有共阴极和共阳极两种。显示原理:使某些...

...驱动数码二级管的C语言程序,要求二级管显示00~99
两位数码管显示00~99,无需采用数码管扫描,通常采用静态显示。给你提供一个两位数码管00~99循环加法计数的CC语言程序。程序中,采用了软件延时的方法,每半秒自动加1。include<reg52.h> unsigned char count=0;unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0...

用单片机AT89C51驱动两位数码管显示00--99依次循环程序代码
以下是用单片机AT89C51驱动两位数码管显示00--99循环的程序代码片段:程序开始于0000h地址,通过计数器temp(22h)控制数码管从00到99的循环显示。计数器初始化为0,然后调用子程序display进行显示。每当计数器加1并判断是否达到100后,若未满则返回stlop继续循环,满100则清零重新开始。display子程序中,先...

单片机用汇编写两个数码管显示0到99循环的程序
1、新建项目,做好准备。2、数码管段选表。3、延时函数。4、uchar i; 变量i;wk = 1;打开位选,P0 = 0xf7;1111 0111第4位数码管显示,wk = 0;关闭位选。5、while(1) \/\/死循环效果{} 。6、dk = 1;\/\/打开段选,P0 = leddata[i];,dk = 0;\/\/关闭段选,delay(100);\/\/延时...

数码管秒表 00-99计时 求电路图 和程序
0x6d,0x7d,0x07,0x7f,0x6f};uint a,b,ss,sg,gs,gg;sbit P3_0=P3^0;void delay(uint z){ uint x,y;for (x=z;x>0;x--)for (y=250;y>0;y--);} void main(){ TMOD=0x01;TH0=(65535-50000)\/256;TL0=(65535-50000)%256;EA=1;ET0=1;while(1){ ss=b\/10;sg=b%10...

求两位数码管显示一个倒数时间的单片机程序,比如显示从99到0
\/\/两位数码管显示倒计数99~00,51单片机。include<reg52.h> \/\/ 倒计数 define uint unsigned int define uchar unsigned char uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar bai,shi;uint a1,a2;sbit D1=P3^...

数码管俩位显示0到99加中断程序
void dispaly(uchar num);\/\/显示子程序 void main(){ init();while(1){ dispaly(num);} } void init()\/\/初始化函数 { p1=1;p2=1;num=0;TMOD=0x01;\/\/采用定时器中断 TH0=(65536-50000)\/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;} void dispaly(uchar num)\/\/显示子程序 ...

...51单片机实现秒表的程序,要求:2位数码管显示00-99秒,每秒自动加一...
include <reg51.h> define uchar unsigned char define uint unsigned int sbit KS=P1^1;sbit KP=P1^2;sbit KC=P1^3;uchar ge,shi;uchar code tab[ ]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,};void delay(uint ms){ uchar a;while(ms--)for(a=123;a>0;a--...

...单片机实现两个7SEG-COM-ANODE灯循环显示00-99,如图
这是两位静态显示电路,程序如下:include<reg51.h> unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};\/\/共阳数码管段码表 unsigned char num;\/\/计数变量 unsigned char t0n;\/\/T0中断计数 void main(){ TMOD=0x01;\/\/用T0定时,中断方式 TH0=0x3C;\/\/...

相似回答