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

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

/按键控制加、减显示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位选)//

#include<reg52.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=0P0_1=0//显示00

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

while(1)

{

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

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

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

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

P0_0=1P0_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=0break

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

default: break

}

}

}

}

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

{ unsigned char i

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

{for(i=100i>0i--)}

}

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位选)//

#include<reg52.h>

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

定义一个标志位

bit

flag=0

主各序结构:

while(1)

{

if(flag==0)

{.......

.程序1

}

if(flag==1)

{.......

程序2

}

}

按键检测可用中断,中断程序中改变flag的值

用两个定时器分别对两个LED灯闪烁,KEY1和KEY2要设置为外部中断输入,当进入中断时KEY1_DANG或KEY2_DANG指向下一个档位,并且发送串口。给你提供点思路。

void main()

{

while(1)

{

if(key1_dang==0x01)

中断定时1设置为0.2秒

if(key1_dang==0x02)

中断定时1设置为0.4秒

if(key1_dang==0x03)

中断定时1设置为0.6秒

if(key1_dang==0x04)

中断定时1设置为0.8秒

if(key1_dang==0x05)

中断定时1设置为1.0秒

if(key2_dang==0x01)

中断定时2设置为0.2秒

if(key2_dang==0x02)

中断定时2设置为0.4秒

if(key2_dang==0x03)

中断定时2设置为0.6秒

if(key2_dang==0x04)

中断定时2设置为0.8秒

if(key2_dang==0x05)

中断定时2设置为1.0秒

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7891125.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存