单片机菜鸟求助,我已经写出数码管显示从1到99了,现在我想问怎么联合按键做成秒表的形式
时间:10-02
整理:3721RD
点击:
以下是我的数码管从1到99的显示程序
#include"stc15.h"
#define uint unsigned int
#define uchar unsigned char
sbit y1=P4^5;
sbit y2=P4^4;
sbit k1=P3^3;//按键1
sbit k2=P3^2;//按键2
uint right,left=0;
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e };
void kzleft(uint);
void delay(uint z);
void main()
{
int a = 0,b = 0;
y1=1;
P2=0xfe;
P4M0=1<<4 | 1<<5;//共阳极开启强推挽输出
P4M1=0x00;
while(1)
{
y1=0;
y2=1;
P2=table[right];
for(b = 0; b <70; b ++) ; //消影
kzleft(left);
for(b = 0; b <70; b ++) ; //消影
a ++;
if(a > 5000)
{
a = 0;
right ++;
if(right >9)
{
right =0;
left ++;
if(left >9)
{
left =0;
}
}
}
}
}
void kzleft(uint left)
{
y1=1;
y2=0;
P2=table[left];
}
?*void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=3000;y>0;y--);
}*/
#include"stc15.h"
#define uint unsigned int
#define uchar unsigned char
sbit y1=P4^5;
sbit y2=P4^4;
sbit k1=P3^3;//按键1
sbit k2=P3^2;//按键2
uint right,left=0;
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e };
void kzleft(uint);
void delay(uint z);
void main()
{
int a = 0,b = 0;
y1=1;
P2=0xfe;
P4M0=1<<4 | 1<<5;//共阳极开启强推挽输出
P4M1=0x00;
while(1)
{
y1=0;
y2=1;
P2=table[right];
for(b = 0; b <70; b ++) ; //消影
kzleft(left);
for(b = 0; b <70; b ++) ; //消影
a ++;
if(a > 5000)
{
a = 0;
right ++;
if(right >9)
{
right =0;
left ++;
if(left >9)
{
left =0;
}
}
}
}
}
void kzleft(uint left)
{
y1=1;
y2=0;
P2=table[left];
}
?*void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=3000;y>0;y--);
}*/
数码管
按键可以做成单独的子程序,显示也做成单独的子程序,然后主程序根据需要调用两个子程序就可以了
是这个样子吗?
while(k1==0); //等待按键松开
}
if(k2==0)
{
delay(30); //延时去抖
if(k2==0) //再判断是否按下
{
//这中间我不知道怎么加循环//
while(k2==0); //等待按键松开
}
}
只有两个键的话需要记录按的是什么键,以及按键按下的次数。
你需要把整个操作过程整理出来,包括各按键的功能,不同功能所需要按键按下的次数等。
程序尽量模块话,就是模块的功能尽量单一,尽量简单,比如按键检测的模块就是检测按键,检测到了就记录按的是什么键,按了多少次,其他就放到其他的模块去做。
做一个数据,想想按下按键取某个参数
按键模块写出来,再加其他功能的程序进去崩盘啊!不懂啊!求多按键控制多功能的模版
按键模块写出来,再加其他功能的程序进去崩盘啊!不懂啊!求多按键控制多功能的模版