51单片机 写一个程序 0-9的然后用一个按键按一下就可以变成9-0的 不知
作者&投稿:军具 (若有异议请与网页底部的电邮联系)
肯定能实现,第一次按下技术为十位,第二次为个位,内部做个位数标志就好
K4 BIT P2.4
SECOND EQU 30H
ORG 0000H
CLR P2.3;38译码器使能端
MOV SECOND,#0
SETB K4
KEY:
LCALL DISPLAY
MOV A,P2
JNB K4,ADD_SECOND
LJMP KEY
ADD_SECOND:
LCALL DELAY
JB K4,KEY
INC SECOND
MOV A,SECOND
CJNE A,#9,J0
MOV SECOND,#0
LJMP KEY
#define uchar unsigned char
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
sbit key=P2^0;
bit flag=0;
uchar cnt=0,num=0;
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
cnt++;
if(cnt>=20)
{
cnt=0;
P1=table[num];
if(flag==0){num++;num%=10;}
else {if(num>0)num--;else num=9;}
}
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(key==0)
{
while(key==0);
flag=~flag;
}
}
}
五功克淋: 刚写的程序,我的思想是用定时器加rand()随机函数来实现的,单片机上电之后通过按键去启动取随机数,若是单片机上电就立即取随机数的话,那每次上电随机的结果都是一样的.然后是0到9不重复的随机数,程序中用了循环来判断是否和...
南召县19247686492: 51单片机0到9动态显示程序 - ?
五功克淋: 动态显示的数码和你的数码管的数据线接法有直接的联系的,显示代码是不一样的,你可以通过如下方法自行测试,做一个简单的循环,循环代码为,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,分别找出每个数据对应显示的数码管的,a,b,c,d,e,f,g,dp的哪一位,然后整理一下就可以得出0-9的数字显示码了.
南召县19247686492: AT89S51单片机怎么用汇编语言让数码管从0到9显示 - ?
五功克淋: START:MOV R5,#00H ;次数计数单元R5,后面的程序应该看得懂了,都是教科书式的 MAIN: MOV A,R5 MOV DPTR,#TAB MOV A,@A+DPTR LCALL DISPLAY CJNE,R5,#10,START ;次数到,从头再来 LJMP MAIN DISPLAY: ;数码管显示...
南召县19247686492: 51单片机 编写4个LED数码管同时循环显示0—9的数字 的程序. - ?
五功克淋: #include<reg51.h>#define uchar unsigned char uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//0-9 uchar time,scanled,tiao; uchar disdat[6]="201803"; void delay(unsigned int x) {unsigned int i,j;for(i=0;i<x;i++)...
南召县19247686492: 51单片机c语言设计,按键控制数码管,依次按下显示0到9循环 - ?
五功克淋: #include<reg51.h> sbit k1=P1^0; #define uint16 unsigned int #define uchar unsigned char uchar code shuzu[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay() { uint16 i=1000;while(i--); } void main() { uchar n ; P2=0xfe; P1=0xff; ...
南召县19247686492: 在学习51单片机:s1,s2,控制加减,在数码管显示0 - 99的程序怎么写? 谢谢 - ?
五功克淋: ORG 0000H AJMP MAINORG 30H MAIN: MOV R1,#0 XUNH: LCALL DISP LCALL DELAY INC R1 CJNE R1,#100,XUNH AJMP MAIN ;显示P1口十位P2口个位,这样做就怎么也不会闪烁了把 DISP: MOV DPTR,#TAB ;共阴 MOV A,R1 MOV ...
南召县19247686492: 51单片机,如何编写显示数码管00到99,可用电脑键盘(串行口)暂停,继续的程序(用汇编语言) - ?
五功克淋: MOV 31H,#00H MOV 32H,#00H MOV 33H,#01H MOV 34H,#06H MOV 35H,#03H MOV 36H,#02H ACALL D0 JMP $-2D0: MOV R0,#31H MOV R2,#11111110B MOV DPTR,#TABD1: ORL P1,#00111111B MOV A,@R0 MOVC A,@A+DPTR ...
南召县19247686492: 求助,我想在51单片机上用C程序实现0 - 999的任意数字输入,能够帮忙写一个吗?或者是思路!谢谢 - ?
五功克淋: 给个思路吧,我以前写过,挺麻烦的 先设置一个数组 a[4]你到999四位够了 再设置一个按键计数变量b 每次按下一个按键将按键值放入对应的a[b-1]中 最后的输出值,c=a[3]*1000+a[2]*100+a[1]*10+a[0] 不明白可以追问
南召县19247686492: 用C语言51单片机编写数码管从00到99的循环程序 - ?
五功克淋: {TMOD=0x01;ET0=1;EA=1;TR0=1;TH0=0x3c;TL0=0xaf; }void time_1s (void) interrupt 1 {int ncount;TH0=0x3c;TL0=0xaf;ncount++;if(ncount<20) return;{ncount=0;i++;if(i==100) i=0;} }
南召县19247686492: 求用51单片机接两个数码管,0 - 99动态显示程序(用C语言) - ?
五功克淋: #include #define uchar unsigned char #define uint unsigned int uchar DSY_CODE[]= { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f }; void delay(uint x) { uchar i; while(x--)for(i=0;i<120;i++); } void main() { uchar i; P0 = 0x00; P2 = 0x00; while(1)...