173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

按键1-99单片机

htxw 2023-03-14 资讯中心 14 ℃

stm32用一个按键控制两位数码管从00-99,代码怎么写

/按键控制加、减显示00-99(P1接8个独立按键,P10按下为加,P11按下为减,P2

接LED数码管的A- -H并加一个560欧的上拉排阻,P0接数码管DS1- -DS8位选)

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

按键控制加、减显示00-99(P1接8个独立按键,P10按下为加,P11按下为减,P2

接LED数码管的A- -H并加一个560欧的上拉排阻,P0接数码管DS1- -DS8位选)//

#includereg52.h

sbit P0_0=P0^0; //个位数字

sbit P0_1=P0^1; //十位数字

void delay(int k); //Tab为数码管显示值,存入一个数组内

void key_ccan(void); //声明按键扫描函数

unsigned char code Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}unsigned char i,shi,ge,num,count=10; //num为被显示的数字

void main()

{

P2=Tab[0];P0_0=0;P0_1=0;//显示00

num=0; //被显示的数置0

while(1)

{

key_ccan(); //调用按键扫描程序

for(i=0;icount;i++) //显示个位、十位count次后显示的数加1

shi=num/10; //取出十位数

ge=num%10; //取出个位数

P0_0=1;P0_1=1; //关闭显示

P2=Tab[shi]; //P2口送出十位数据显示代码

P0_0=0; //打开十位显示

delay(10); //延时

P0_0=1; //关闭显示

P2=Tab[ge]; //P2口送出个位数据显示代码

P0_1=0; //打开个位显示

delay(10); //延时

P0_1=1; //关闭个位显示

}

}

void key_ccan(void)

{

unsigned char ii;

P1=0xff;

ii=P1;

if(ii!=0xff)

{

P1=0xff;

delay(50);

ii=P1;

if(ii!=0xff)

{

switch(ii)

{

case 0xfe: num++;if(num==100) num=0; break;

case 0xfd: if(num==0) num=99;else num--;break;

default: break;

}

}

}

}

void delay(int k) //最简单的C延时程序

{ unsigned char i;

while(k--) //直至K减为0则跳出

{for(i=100;i0;i--);}

}

5.9

百度文库VIP限时优惠现在开通,立享6亿+VIP内容

立即获取

单片机_两个数码管显示00~99

/按键控制加、减显示00-99(P1接8个独立按键,P10按下为加,P11按下为减,P2

接LED数码管的A- -H并加一个560欧的上拉排阻,P0接数码管DS1- -DS8位选)

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

按键控制加、减显示00-99(P1接8个独立按键,P10按下为加,P11按下为减,P2

接LED数码管的A- -H并加一个560欧的上拉排阻,P0接数码管DS1- -DS8位选)//

#includereg52.h

sbit P0_0=P0^0; //个位数字

51单片机汇编语言按键控制数码管加1加到999

思路是对的,细节描述有问题,算法描述要严谨。为什么要99时清零啊,这可能就是错误的地方了。

系统初始化时,清除使用到的寄存器!!然后,当需要加1时做如下动作

寄存器a = a+1

如果寄存器a == 100,{寄存器b=b+1;寄存器a = 0}

这样就可以了,b中的1代表100,a中的1就是1

想做一个基于51单片机按键计数用LCD1602显示的编程0-99

加上这些东西,将显示语句换成1602_display(i)即可,

当然你可以将其改为只显示2个数字

sbit rw=P1^4;

sbit rs=P1^3;

sbit lcden=P1^5;

#define db P2

void write_com(uchar com)//液晶屏写命令

{

db=com;

rs=0;

rw = 0;

lcden=0;

Delay1ms(12);

lcden=1;

Delay1ms(12);

lcden=0;

}

void write_date(uchar date)//液晶屏写数据

{

db=date;

rs=1;

rw = 0;

lcden=0;

Delay1ms(12);

lcden=1;

Delay1ms(12);

lcden=0;

}

void init2()//液晶屏初始化

{

rw=0;

write_com(0x38);

Delay1ms(12);

write_com(0x0f);

Delay1ms(12);

write_com(0x06);

Delay1ms(12);

write_com(0x01);

Delay1ms(12);

}

void 1602_display(uchar temp) //液晶显示一个8 位二进制数

{

uchar A1,A2,A3;

A1=temp/100;//分离百位、十位、个位

A2=temp/10%10;

A3=A2t%10;

write_com(0x80);//第1行,第1字

write_date(A1+0x30);

Delay1ms(1);

write_date( A2+0x30);

Delay1ms(1);

write_date(A3+0x30);

Delay1ms(1);

}

按键1-99单片机的介绍到此就结束了,感谢您耐心阅读,谢谢。

本文标签:按键1-99单片机

<