单片机动态从00到99C语言,求用51单片机串口方式0接两个74LS164显示数码管,0-99动态显示(用C语言)...

//*************************************//

// 74HC164串口显示实验   proteu仿真    //

//    PBG                2012-6-11     //

//*************************************//

#include 

#define uint unsigned int

#define uchar unsigned char

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,

0x92,0x82,0xf8,0x80,0x90};

sbit k1=P3^6;//加键定义

sbit k2=P3^7;//减键定义

uchar a;

void delay(uint x)//延时50ms

{

uchar i;

while(x--);

for(i=0;i<110;i++);

}

void key()//按键函数

{

if(k1==0)

{

delay(2);

if(k1==0)

{

a++;

if(a==99)

a=0;

}

while(!k1);//松手检测

TXD=1;//按键按下松手后发送

}

if(k2==0)

{

delay(2);

if(k2==0)

{

a--;

if(a==-1)

a=0;

}

while(!k2);//松手检测

TXD=1;//按键按下松手后发送

}

}

void main()

{

SCON=0X00;//设定定时器为移位寄存器模式

TXD=1;//初始化

while(1)

{

key();

SBUF=table[a%10];//把个位送到SBUF

while(!TI);    //等待发送是否完毕

TI=0;         //置发送标志为零

SBUF=table[a/10];//把十位送到SBUF

while(!TI);//等待发送是否完毕

TI=0;//置发送标志为零

TXD=0;//置时钟为零,否则不停发送,显示乱码

}

}

abfb6f6b3e2abbc2ad031c4f0e879070.gif

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这个问题我可以帮你解决。 以下是一个基于C语言单片机控制数码显示累减99的示例代码: ``` #include <reg52.h> sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; sbit beep=P1^5; unsigned char code duan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40}; //0~9,A,b,C,d,E,F,-,0. unsigned char num=0; void delay(unsigned int time) { unsigned int i,j; for(i=0;i<time;i++) for(j=0;j<110;j++); } void display(unsigned char i) { switch(i) { case(0):LSA=0,LSB=0,LSC=0;break; case(1):LSA=1,LSB=0,LSC=0;break; case(2):LSA=0,LSB=1,LSC=0;break; case(3):LSA=1,LSB=1,LSC=0;break; case(4):LSA=0,LSB=0,LSC=1;break; case(5):LSA=1,LSB=0,LSC=1;break; case(6):LSA=0,LSB=1,LSC=1;break; case(7):LSA=1,LSB=1,LSC=1;break; } } void main() { while(1) { num--; if(num==255) num=99; P0=duan[num/10]; display(0); delay(5); P0=duan[num%10]; display(1); delay(5); } } ``` 在这个代码中,我们使用了一个数组duan来存储数码显示的数字,使用了一个无限循环while(1)来不断更新数码管的显示内容。 具体的实现方法是,我们使用了一个变量num来存储需要显示的数字,然后每次执行while循环时,将num的值减1,直到它的值为255时,将其重新赋值为99,这样就保证了数码显示的数字范围为00到99。 在更新数码显示内容时,我们首先将需要显示的十位数码对应的值存储在P0口中,然后调用display函数来设置LSA、LSB和LSC三个引脚的状态,从而控制数码显示相应的数字。着等待一段时间后,再将需要显示的个位数码对应的值存储在P0口中,再次调用display函数来更新数码管的显示,完成一次循环。 需要注意的是,为了让数码显示更加稳定,我们在每次更新数码显示内容后,都加入了一段短暂的延时,可以根据需要进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值