导航:首页 > 操作系统 > 51单片机显示数字2107

51单片机显示数字2107

发布时间:2022-09-08 17:36:56

A. 51单片机控制8个数码管并显示1-8

数码管段选连接到单片机P0口,位选连接到P2口

ORG0000h

MAIN:

CALLDISPLAY

AJMPMAIN

DISPLAY:

MOVR0,#0

MOVR1,#0x01

MOVDPTR,#TAB

LOOP:

INCR0

MOVA,R0

MOVCA,@A+DPTR

MOVP0,#0;消隐

MOVP0,A;送段码

CALLDELAY

MOVA,R1;送位码

RLA;移位

MOVP2,A

MOVR1,A

CALLDELAY

CJNER0,#8,LOOP;判断8次是否循环完成

RET

DELAY:

MOVR6,#25

DD:MOVR7,#50

DJNZR7,$

DJNZR6,DD

RET

TAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

B. 51单片机 要求按键显示 按一下显示一个数字

数码管分共阳和共阴 我这里给你举个七段共阳数码管的例子吧。
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8 ,0x80,0x90,0x88,0x83 ,0xc6,0xa1,0x86,0x8e
数码管是有8个管子构成的 具体的图编号你可以在网上搜到
我现在写的0xc0 代表数码管的0 ,后面类推 对应从0-F 的编码
程序编码要和硬件设计相结合 这个程序是把七段数码管的a-g 接到P0^0-P0^6口

没有加按键消抖程序 有需要可以去网上搜搜就是加个延时
#include <reg51.h> //包含头文件,一般情况不需要改动,
//头文件包含特殊功能寄存器的定义
sbit buzzer = P1^0;//定义蜂鸣器到P1.0口
sbit key1 = P1^1; //按键1
sbit key2 = P1^2; //按键2
sbit key3 = P1^3; //按键3
sbit key4 = P1^4; //按键4
sbit key5 = P1^5; //按键5
sbit key6 = P1^6;//按键6
P0=0x00; //设置P0口输出都是低电平
buzzer = 1;//设置蜂鸣器 输出为高电平 此时不响 (蜂鸣器+接5V -接单片机口,中间串个电阻限流)

/*-------------- 主函数 ----------*/
void main (void)
{
while (1) //主循环
{
if(key == 1)
{
P0= 0xf9; //显示1
buzzer = 0; //蜂鸣器响
}

if(key == 2)
{
P0= 0xa4; //显示2
buzzer =0; //蜂鸣器响
}

if(key == 3)
{
P0= 0xb0; //显示3
buzzer = 0; //蜂鸣器响
}

if(key == 4)
{
P0= 0x99; //显示4
buzzer = 0; //蜂鸣器响
}
if(key == 5)
{
P0= 0x92; //显示5
buzzer = 0; //蜂鸣器响
}
if(key == 6)
{
P0= 0x82; //显示6
buzzer = 0; //蜂鸣器响
}

}

C. 51单片机如何利用4个七段数码管采用动态显示显示4位数字,如2035

//***************************************
//显示函数 函数名:display56()
//***************************************
//变量定义:
unsigned char qian,,shi,ge; //定义显示缓冲区
unsigned char table[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xa7};
//表:共阳数码管 0 1 2 3 4 5 6 7 8 9 c
//延时子函数,短暂延时
void delay56()
{
unsigned char i56=210;
while(i56--);
}
void display56()
{
P0=table[qian]; // 查得千位,送P0
SMG_q=0; // 打开千位数码管
delay56(); // 延时
P0 = 255; // 防止数码管脏乱
SMG_q=1; // 关闭数码管
P0=table[];// 选择百位数码管
SMG_b=0;
delay56(); //延时
P0 = 255;
SMG_b=1; //
P0=table[shi];// 选择十位数码管
SMG_s=0;
delay56(); //
P0 = 255;
SMG_s=1; //
P0=table[ge];//选择个位数码管,
SMG_g=0;
delay56(); //
P0 = 255;
SMG_g=1; //
}
你想显示什么,分别为qian,,shi ,ge

D. 用51单片机控制1602液晶显示10进制数字~~

液晶时钟设计
#include<reg51.h> //包含单片机寄存器的头文件
#include<stdlib.h> //包含随机函数rand()的定义文件
#include<intrins.h> //包含_nop_()函数定义的头文件
sbit RS=P2^0; //寄存器选择位,将RS位定义为P2.0引脚
sbit RW=P2^1; //读写选择位,将RW位定义为P2.1引脚
sbit E=P2^2; //使能信号位,将E位定义为P2.2引脚
sbit BF=P0^7; //忙碌标志位,,将BF位定义为P0.7引脚
unsigned char code digit[ ]={"0123456789"}; //定义字符数组显示数字
unsigned char code string[ ]={"BeiJing Time"}; //定义字符数组显示提示信息
unsigned char count; //定义变量统计中断累计次数
unsigned char s,m,h; //定义变量储存秒、分钟和小时
/*****************************************************
函数功能:延时1ms
(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒
***************************************************/
void delay1ms()
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<33;j++)
;
}
/*****************************************************
函数功能:延时若干毫秒
入口参数:n
***************************************************/
void delay(unsigned char n)
{
unsigned char i;
for(i=0;i<n;i++)
delay1ms();
}
/*****************************************************
函数功能:判断液晶模块的忙碌状态
返回值:result。result=1,忙碌;result=0,不忙
***************************************************/
unsigned char BusyTest(void)
{
bit result;
RS=0; //根据规定,RS为低电平,RW为高电平时,可以读状态
RW=1;
E=1; //E=1,才允许读写
_nop_(); //空操作
_nop_();
_nop_();
_nop_(); //空操作四个机器周期,给硬件反应时间
result=BF; //将忙碌标志电平赋给result
E=0; //将E恢复低电平
return result;
}
/*****************************************************
函数功能:将模式设置指令或显示地址写入液晶模块
入口参数:dictate
***************************************************/
void WriteInstruction (unsigned char dictate)
{
while(BusyTest()==1); //如果忙就等待
RS=0; //根据规定,RS和R/W同时为低电平时,可以写入指令
RW=0;
E=0; //E置低电平(根据表8-6,写指令时,E为高脉冲,
// 就是让E从0到1发生正跳变,所以应先置"0"
_nop_();
_nop_(); //空操作两个机器周期,给硬件反应时间
P0=dictate; //将数据送入P0口,即写入指令或地址
_nop_();
_nop_();
_nop_();
_nop_(); //空操作四个机器周期,给硬件反应时间
E=1; //E置高电平
_nop_();
_nop_();
_nop_();
_nop_(); //空操作四个机器周期,给硬件反应时间
E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令
}
/*****************************************************
函数功能:指定字符显示的实际地址
入口参数:x
***************************************************/
void WriteAddress(unsigned char x)
{
WriteInstruction(x|0x80); //显示位置的确定方法规定为"80H+地址码x"
}
/*****************************************************
函数功能:将数据(字符的标准ASCII码)写入液晶模块
入口参数:y(为字符常量)
***************************************************/
void WriteData(unsigned char y)
{
while(BusyTest()==1);
RS=1; //RS为高电平,RW为低电平时,可以写入数据
RW=0;
E=0; //E置低电平(根据表8-6,写指令时,E为高脉冲,
// 就是让E从0到1发生正跳变,所以应先置"0"
P0=y; //将数据送入P0口,即将数据写入液晶模块
_nop_();
_nop_();
_nop_();
_nop_(); //空操作四个机器周期,给硬件反应时间
E=1; //E置高电平
_nop_();
_nop_();
_nop_();
_nop_(); //空操作四个机器周期,给硬件反应时间
E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令
}
/*****************************************************
函数功能:对LCD的显示模式进行初始化设置
***************************************************/
void LcdInitiate(void)
{
delay(15); //延时15ms,首次写指令时应给LCD一段较长的反应时间
WriteInstruction(0x38); //显示模式设置:16×2显示,5×7点阵,8位数据接口
delay(5); //延时5ms,给硬件一点反应时间
WriteInstruction(0x38);
delay(5);
WriteInstruction(0x38); //连续三次,确保初始化成功
delay(5);
WriteInstruction(0x0c); //显示模式设置:显示开,无光标,光标不闪烁
delay(5);
WriteInstruction(0x06); //显示模式设置:光标右移,字符不移
delay(5);
WriteInstruction(0x01); //清屏幕指令,将以前的显示内容清除
delay(5);

}
/******************************************************************************
函数功能:显示小时
******************************************************************************/
void DisplayHour()
{
unsigned char i,j;
i=h/10; //取整运算,求得十位数字
j=h%10; //取余运算,求得各位数字
WriteAddress(0x44); //写显示地址,将十位数字显示在第2行第5列
WriteData(digit[i]); //将十位数字的字符常量写入LCD
WriteData(digit[j]); //将个位数字的字符常量写入LCD

}
/******************************************************************************
函数功能:显示分钟
******************************************************************************/
void DisplayMinute()
{
unsigned char i,j;
i=m/10; //取整运算,求得十位数字
j=m%10; //取余运算,求得各位数字
WriteAddress(0x47); //写显示地址,将十位数字显示在第2行第8列
WriteData(digit[i]); //将十位数字的字符常量写入LCD
WriteData(digit[j]); //将个位数字的字符常量写入LCD

}
/******************************************************************************
函数功能:显示秒
******************************************************************************/
void DisplaySecond()
{
unsigned char i,j;
i=s/10; //取整运算,求得十位数字
j=s%10; //取余运算,求得各位数字
WriteAddress(0x4a); //写显示地址,将十位数字显示在第2行第11列
WriteData(digit[i]); //将十位数字的字符常量写入LCD
WriteData(digit[j]); //将个位数字的字符常量写入LCD
}

/*********************************************************************
main function
***********************************************************************/
void main(void)
{
unsigned char i;
LcdInitiate(); //调用LCD初始化函数

TMOD=0x01; //使用定时器T0的模式1
TH0=(65536-46083)/256; //定时器T0的高8位设置初值
TL0=(65536-46083)%256; //定时器T0的低8位设置初值
EA=1; //开总中断
ET0=1; //定时器T0中断允许
TR0=1; //启动定时器T0

count=0; //中断次数初始化为0
s=0; //秒初始化为0
m=0; //分钟初始化为0
h=0; //小时初始化为0

WriteAddress(0x03); //写地址,从第1行第4列开始显示
i=0; //从字符数组的第1个元素开始显示
while(string[i]!='\0') //只要没有显示到字符串的结束标志'\0',就继续
{
WriteData(string[i]); //将第i个字符数组元素写入LCD
i++; //指向下一个数组元素
}
WriteAddress(0x46); //写地址,将第二个分号显示在第2行第7列
WriteData(':'); //将分号的字符常量写入LCD
WriteAddress(0x49); //写地址,将第二个分号显示在第2行第10列
WriteData(':'); //将分号的字符常量写入LCD
while(1) //无限循环
{
DisplayHour(); //显示小时
delay(5); //给硬件一点反应时间
DisplayMinute(); //显示分钟
delay(5); //给硬件一点反应时间
DisplaySecond(); //显示秒
delay(5); //给硬件一点反应时间
}
}
/*******************************************************
函数功能:定时器T0的中断服务函数
********************************************************/
void Time0(void ) interrupt 1 using 1 //定时器T0的中断编号为1,使用第1组工作寄存器
{
count++; //每产生1次中断,中断累计次数加1
if(count==20) //如果中断次数计满20次
{
count=0; //中断累计次数清0
s++; //秒加1
}
if(s==60) //如果计满60秒
{
s=0; //秒清0
m++; //分钟加1
}
if(m==60) //如果计满60分
{
m=0; //分钟清0
h++; //小时加1
}
if(h==24) //如果计满24小时
{
h=0; //小时清0
}
TH0=(65536-46083)/256; //定时器T0高8位重新赋初值
TL0=(65536-46083)%256; //定时器T0低8位重新赋初值
}
看看哪些用得上 就选择下 改吧改吧 就是你的啦

E. 51单片机的共阴数码管怎么显示数字(c语言)知道

共阴极数码管也就是说,当控制信号为1时该段LED点亮,8段数码管的数字0~9定义为:
3FH,06H,5BH,4FH,66H
;01234
6DH,7DH,07H,7FH,6fh
;56789
以下为简易8路抢答器的例程:
#include<reg51.h>
#define
uchar
unsigned
char
uchar
table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
sbit
rstkey=P2^2;
sbit
speaker=P2^0;
void
delay()//延时约400毫秒
{
uchar
i,j;
for(i=0;i<200;i++)
for(j=0;j<250;j++);
}
main()
{
uchar
i,key;
P2=0xff;
while(1)
{
i=0;
P1=table[i];
while(1)
{
key=P3;
if(key!=0)break;
}
switch(key)
{
case
0x01:i=1;break;
case
0x02:i=2;break;
case
0x04:i=3;break;
case
0x08:i=4;break;
case
0x10:i=5;break;
case
0x20:i=6;break;
case
0x40:i=7;break;
case
0x80:i=8;break;
default:break;
}
P1=table[i];//显示按下抢答器的号
P0=key;//显示按下键号的LED
while(1)
{
if(rstkey==0)break;//主持人按下复位键则重新开始
speaker=~speaker;//否则蜂鸣器报警
delay();
}
}
}

F. 如何用51单片机在LCD12864上显示数字

利用51单片机控制lcd12864显示一串数字比如:123456789可...
际上很简单,刷新而已,你让他按一下就在程序里去一个数字,然后刷新lcd的显示不就得了。

G. 51单片机的共阴数码管怎么显示数字(c语言)

要让51单片机共阴数码管显示数字,只需要将单片机的P2端口输出数字对应的段码即可。

以显示数字“0”为例,c语言程序如下:

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

//数码管的段码编码

Uchar table[10] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void main(){//主函数

P0 = table[0];//显示0,大家可以修改里面的数据。

while(1);//程序不再执行其他步骤;

}

(7)51单片机显示数字2107扩展阅读:

数字0-9的对应段码:

数字0 0x3f

数字1 0x06

数字2 0x5b

数字3 0x4f

数字4 0x66

数字5 0x6d

数字6 0x7d

数字7 0x07

数字8 0x7f

数字9 0x6f

H. 51单片机 两个双字节无符号数的加法

不带进位位的单片机加法指令

ADD A,#DATA ;例:ADD A,#10H

ADD A,direct ;例:ADD A,10H

ADD A,Rn ;例:ADD A,R7

ADD A,@Ri ;例:ADD A,@R0

用途:将A中的值与其后面的值相加,最终结果否是回到A中。

例:MOV A,#30H

ADD A,#10H

带进位位的加法指令

ADDC A,Rn

ADDC A,direct

ADDC A,@Ri

ADDC A,#data

用途:将A中的值和其后面的值相加,并且加上进位位C中的值。
由于51单片机是一种8位机,所以只能做8位的数学运算,但8位运算的范围只有0-255,这在实际工作中是不够的,因此就要进行扩展,一般是将2个8位的数学运算合起来,成为一个16位的运算,这样,能表达的数的范围就能达到0-65535

如何合并呢?其实很简单,让我们看一个10进制数的例程:
66+78。
这两个数相加,我们根本不在意这的过程,但事实上我们是这样做的:先做6+8(低位),然后再做6+7,这是高位。做了两次加法,只是我们做的时候并没有刻意分成两次加法来做罢了,或者说我们并没有意识到我们做了两次加法。之所以要分成两次来做,是因为这两个数超过了一位数所能表达的范置(0-9)。
在做低位时产生了进位,我们做的时候是在适当的位置点一下,然后在做高位加法是将这一点加进去。那么计算机中做16位加法时同样如此,先做低8位的,如果两数相加产生了进位,也要“点一下”做个标记,这个标记就是进位位C,在PSW中。在进行高位加法是将这个C加进去。例:1067H+10A0H,先做67H+A0H=107H,而107H显然超过了0FFH,因此最终保存在A中的是7,而1则到了PSW中的CY位了,换言之,CY就相当于是100H。然后再做10H+10H+CY,结果是21H,所以最终的结果是2107H。

至于数据如何定义到你要的位置,这个问题不用我教你了吧!!!

I. 怎样单独控制51单片机中数码管显示数字

设置一个延时,一个while(1)循环,循环内让每一个电子管依次打开位选,各自的断选,并且每个电子管显示延时1毫秒。
单片机,全称单片微型计算机(英语:Single-Chip Microcomputer),又称微控制器(Microcontroller),是把中央处理器、存储器、定时/计数器(Timer/Counter)、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机。与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出接口简单,功能较低。由于其发展非常迅速,旧的单片机的定义已不能满足,所以在很多应用场合被称为范围更广的微控制器;由于单芯片微电脑常用于当控制器故又名single chip microcontroller,但是目前在中国大陆仍多沿用“单片机”的称呼。

J. 用51单片机编写程序实现数码管的时钟数字显示

KEYVAL	EQU30H
KEYTM EQU31H
KEYSCAN EQU32H
DAT EQU33H
SCANLED EQU39H
CLK EQU77H
SEC EQU78H
MIN EQU79H
HOUR EQU7AH
PAUSE BIT00H
DOT BIT01H
ORG0000H
LJMPMAIN
ORG000BH
LJMPT0ISR ;50ms定时
ORG001BH
LJMPT1ISR ;扫描显示
ORG0030H
MAIN:
MOVSP,#5FH
MOVTMOD,#11H
MOVTH0,#03CH
MOVTL0,#0B0H
MOVTH1,#0ECH
MOVTL1,#078H
MOVKEYVAL,#0
MOVSCANLED,#0
MOV33H,#10H
MOV34H,#10H
MOV35H,#10H
MOV36H,#10H
MOV37H,#10H
MOV38H,#10H
MOVSEC,#0
MOVMIN,#0
MOVHOUR,#0
MOVCLK,#0
CLRPAUSE
SETBEA
SETBET1
SETBTR1
LOOP:
LCALLKEYSEL
MOVA,KEYVAL
CJNEA,#0FFH,LOOP1
SJMPLOOP
LOOP1:
CJNEA,#10,LOOP2 ;“ON”启动
SETBTR0
SETBET0
SETBPAUSE
SJMPLOOP
LOOP2:
CJNEA,#11,LOOP3 ;“=”清零
MOVSEC,#0
MOVMIN,#0
MOVHOUR,#0
LCALLDISCHG
SJMPLOOP
LOOP3:
CJNEA,#15,LOOP4 ;“+”暂停
CLRTR0
CLRET0
CLRPAUSE
SJMPLOOP
LOOP4:
CJNEA,#14,LOOP5 ;“-”清显示暂停
MOV33H,#10H
MOV34H,#10H
MOV35H,#10H
MOV36H,#10H
MOV37H,#10H
MOV38H,#10H
CLRTR0
CLRET0
CLRPAUSE
SJMPLOOP
LOOP5:
CJNEA,#10,LOOP6 ;数字键
LOOP6:
JCLOOP7
LJMPLOOP
LOOP7:
JNBPAUSE,LOOP8 ;暂停状态可以输入数字键
LJMPLOOP
LOOP8:
MOV33H,34H
MOV34H,35H
MOV35H,36H
MOV36H,37H
MOV37H,38H
MOV38H,KEYVAL
MOVA,33H
SWAPA
ORLA,34H
LCALLBCDH
MOVHOUR,A
MOVA,35H
SWAPA
ORLA,36H
LCALLBCDH
MOVMIN,A
MOVA,37H
SWAPA
ORLA,38H
LCALLBCDH
MOVSEC,A
LJMPLOOP

;------------------
;BCD转换为十六进制
BCDH:
MOVB,#10H
DIVAB
MOVR7,B
MOVB,#10
MULAB
ADDA,R7
RET
;------------------
;十六进制转换为BCD
HBCD:
MOVB,#10
DIVAB
SWAPA
ORLA,B
RET
;------------------
KEYSEL:
MOV KEYVAL,#0
MOV KEYSCAN,#0EFH
LCALL GETKEY
MOV A,KEYTM
JZ KEYS1
MOV KEYVAL,A
SJMP KEYRTN
KEYS1:
MOV KEYSCAN,#0DFH
LCALL GETKEY
MOV A,KEYTM
JZ KEYS2
CLR C
ADD A,#4
MOV KEYVAL,A
SJMP KEYRTN
KEYS2:
MOV KEYSCAN,#0BFH
LCALL GETKEY
MOV A,KEYTM
JZ KEYS3
CLR C
ADD A,#8
MOV KEYVAL,A
SJMP KEYRTN
KEYS3:
MOV KEYSCAN,#7FH
LCALL GETKEY
MOV A,KEYTM
JZ KEYRTN
CLR C
ADD A,#12
MOV KEYVAL,A
KEYRTN:
LCALLCHGKEY
RET
;--------------------
GETKEY:
MOVKEYTM,#0
MOV A,KEYSCAN
MOV P3,A
NOP
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY
MOVR2,#10
LCALLDELAY
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY
MOV A,P3
ANL A,#0FH
MOV R7,A
SF:
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JNZ SF
MOV A,R7
CJNE A,#0EH,NK1
MOV KEYTM,#1
SJMP NOKEY
NK1:
CJNE A,#0DH,NK2
MOV KEYTM,#2
SJMP NOKEY
NK2:
CJNE A,#0BH,NK3
MOV KEYTM,#3
SJMP NOKEY
NK3:
CJNE A,#07H,NOKEY
MOV KEYTM,#4
NOKEY: RET
;--------------------
DELAY:
MOVR3,#50
DELAY1:
MOVR4,#100
DJNZR4,$
DJNZR3,DELAY1
DJNZR2,DELAY
RET
;--------------------
T0ISR:
PUSHACC
CLRTR0
MOVTH0,#3CH
MOVTL0,#0B0H
SETBTR0
INCCLK
MOVA,CLK
CJNEA,#20,T0ISRE
MOVCLK,#0
INCSEC
MOVA,SEC
CJNEA,#60,T0ISRE
MOVSEC,#0
INCMIN
MOVA,MIN
CJNEA,#60,T0ISRE
MOVMIN,#0
INCHOUR
MOVA,HOUR
CJNEA,#24,T0ISRE
MOVSEC,#0
MOVMIN,#0
MOVHOUR,#0
T0ISRE:
LCALLDISCHG
POPACC
RETI
;--------------------
DISCHG:
MOVA,HOUR
LCALLHBCD
PUSHACC
ANLA,#0FH
MOV34H,A
POPACC
ANLA,#0F0H
SWAPA
MOV33H,A
MOVA,MIN
LCALLHBCD
PUSHACC
ANLA,#0FH
MOV36H,A
POPACC
ANLA,#0F0H
SWAPA
MOV35H,A
MOVA,SEC
LCALLHBCD
PUSHACC
ANLA,#0FH
MOV38H,A
POPACC
ANLA,#0F0H
SWAPA
MOV37H,A
RET
;--------------------
T1ISR:
PUSHACC
CLRTR1
MOVTH1,#0ECH
MOVTL1,#78H
SETBTR1
MOVDPTR,#LEDTAB
T100:
MOVR0,#DAT
MOVA,SCANLED
ADDA,R0
MOVR0,A
MOVA,SCANLED
JNZT101
MOVP2,#01H
CLRDOT
SJMPT1DIS
T101:
DECA
JNZT102
MOVP2,#02H
SETBDOT
SJMPT1DIS
T102:
DECA
JNZT103
MOVP2,#04H
CLRDOT
SJMPT1DIS
T103:
DECA
JNZT104
MOVP2,#08H
SETBDOT
SJMPT1DIS
T104:
DECA
JNZT105
MOVP2,#10H
CLRDOT
SJMPT1DIS
T105:
MOVP2,#20H
CLRDOT
T1DIS:
MOVA,@R0
MOVCA,@A+DPTR
JNBDOT,T1DIS1
ORLA,#01H
T1DIS1:
CPLA
MOVP0,A
INCSCANLED
MOVA,SCANLED
CJNEA,#6,T1END
MOVSCANLED,#0
T1END:
POPACC
RETI
;--------------------
CHGKEY:
MOVA,KEYVAL
JZKV16
DECA
JNZKV01
MOVKEYVAL,#7
RET
KV01:
DECA
JNZKV02
MOVKEYVAL,#4
RET
KV02:
DECA
JNZKV03
MOVKEYVAL,#1
RET
KV03:
DECA
JNZKV04
MOVKEYVAL,#10
RET
KV04:
DECA
JNZKV05
MOVKEYVAL,#8
RET
KV05:
DECA
JNZKV06
MOVKEYVAL,#5
RET
KV06:
DECA
JNZKV07
MOVKEYVAL,#2
RET
KV07:
DECA
JNZKV08
MOVKEYVAL,#0
RET
KV08:
DECA
JNZKV09
MOVKEYVAL,#9
RET
KV09:
DECA
JNZKV10
MOVKEYVAL,#6
RET
KV10:
DECA
JNZKV11
MOVKEYVAL,#3
RET
KV11:
DECA
JNZKV12
MOVKEYVAL,#11
RET
KV12:
DECA
JNZKV13
MOVKEYVAL,#12
RET
KV13:
DECA
JNZKV14
MOVKEYVAL,#13
RET
KV14:
DECA
JNZKV15
MOVKEYVAL,#14
RET
KV15:
DECA
JNZKV16
MOVKEYVAL,#15
RET
KV16:
MOVKEYVAL,#0FFH
RET
;--------------------
LEDTAB: DB0FCH ;"0" 00H
DB60H ;"1" 01H
DB0DAH ;"2" 02H
DB0F2H ;"3" 03H
DB66H ;"4" 04H
DB0B6H ;"5" 05H
DB0BEH ;"6" 06H
DB0E0H ;"7" 07H
DB0FEH ;"8" 08H
DB0F6H ;"9" 09H
DB0EEH ;"A" 0AH
DB3EH ;"B" 0BH
DB9CH ;"C" 0CH
DB7AH ;"D" 0DH
DB9EH ;"E" 0EH
DB8EH ;"F" 0FH
DB00H ;"" 10H
;--------------------
END

阅读全文

与51单片机显示数字2107相关的资料

热点内容
shell编程入门书籍 浏览:938
大连桶装水溯源码售价 浏览:302
php怎么跳转到电脑 浏览:413
如何在电脑上创建新网络连接服务器 浏览:61
c语言编译之后如何运行 浏览:566
mfc多线程编程视频 浏览:410
c编译的中文怎么写 浏览:91
单片机连接蜂鸣器电路 浏览:844
程序员买房前后对比照 浏览:988
cmdjava中文乱码 浏览:947
窗口app哪个好 浏览:731
xzforandroid 浏览:577
程序员那么可爱歌曲完整版 浏览:906
为什么购买pdf 浏览:45
操作系统代码编译 浏览:483
程序员东北大学 浏览:426
编译忽略空字符 浏览:119
多店铺阿里云服务器教程 浏览:379
单片机求初值 浏览:421
安卓机如何在电脑备份图片 浏览:927