導航:首頁 > 操作系統 > 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相關的資料

熱點內容
安卓怎麼弄成蘋果在線 瀏覽:427
谷歌web伺服器地址 瀏覽:898
安卓鎖屏圖片如何刪除 瀏覽:719
python3多進程編程 瀏覽:711
證明代碼是程序員寫的 瀏覽:394
演算法錯誤發現辦法 瀏覽:409
河南省醫院掛號是哪個app 瀏覽:627
冬日戀歌哪個APP能看 瀏覽:673
委內瑞拉加密貨 瀏覽:8
程序員寫日記哪個軟體好 瀏覽:108
加密機操作手冊 瀏覽:860
dos命令自動關閉 瀏覽:328
心田花開app在哪裡評價 瀏覽:449
求索記錄頻道哪個app可以看 瀏覽:730
金梅瓶pdf下載 瀏覽:985
機器軟體用什麼編程 瀏覽:845
java虛擬機指令 瀏覽:671
shell編程入門書籍 瀏覽:946
大連桶裝水溯源碼售價 瀏覽:302
php怎麼跳轉到電腦 瀏覽:414