求救:c51单片机按键每按一次同时数码管显示数字加一
2个回答
展开全部
-
建立一个数组,用于存放 0-9的段码。
int Shuzu[]={---------};
如果会用指针
int *P;
P=Shuzu; //指针指向数组!
用外部中断,
每中断一次,中断服务程序将数组元素加一P0=Shuzu[ax++](或指针加一:P0=*P++)
以上假设P0口驱动数码管!
至于数码管使用的是共阳还是共阴,就把相对的数值存在数组中!
-
外部中断0的中断程序入口
void TI_0() interrupt 0
{
--------
}
都提示到这里了,下面自己该会吧?
如果是新手的新手---想要我帮你写全部程序--
那至少你得把你单片机芯片型号说给我才能帮你!
还有数码管是用单片机哪个IO口!
数码管是怎么连接的?(串/并)
建立一个数组,用于存放 0-9的段码。
int Shuzu[]={---------};
如果会用指针
int *P;
P=Shuzu; //指针指向数组!
用外部中断,
每中断一次,中断服务程序将数组元素加一P0=Shuzu[ax++](或指针加一:P0=*P++)
以上假设P0口驱动数码管!
至于数码管使用的是共阳还是共阴,就把相对的数值存在数组中!
-
外部中断0的中断程序入口
void TI_0() interrupt 0
{
--------
}
都提示到这里了,下面自己该会吧?
如果是新手的新手---想要我帮你写全部程序--
那至少你得把你单片机芯片型号说给我才能帮你!
还有数码管是用单片机哪个IO口!
数码管是怎么连接的?(串/并)
2012-11-04 · 知道合伙人数码行家
关注
展开全部
//这是PIC16F877A的, 你照这个写吧
#include<pic.h>
#define uchar unsigned char
#define uint unsigned int
__CONFIG(0x3B31);
void delay(uint z);
void key();
void init();
void Kuy(uchar num);
/*
按键,数码管,LED等,喇叭 综合实验程序
功能如下: 当你按独立键盘是按“1”是第一个LEd灯亮
,灯亮的同时喇叭也响,LCD显示按钮值。
LCD显示1到4 !!!
Console.WriteLine("Salam Uygihur!");
Console.ReadLine();
*/
const table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void main()
{
init();
while(1)
{
PORTA=0x20;
key();
}
}
void delay(uint z)
{
int a,b;
for(a=z;a>0;a--)
for(b=110;b>0;b--);
}
void init()
{
TRISB=0;
TRISD=0;
TRISA=0;
TRISC=0xff;
TRISE=0;
TRISD=0;
PORTE=0;
PORTD=0;
}
void Kuy(uchar num)
{
uchar temp;
for(temp=num;temp>0;temp--)
{
RE1=1;
delay(100);
RE1=0;
delay(50);
}
}
void key()
{
if(RC0==0)
{
delay(10);
if(RC0==0)
{
while(!RC0);
PORTD=0x01;
Kuy(1);
PORTB=table[1];
}
}
if(RC1==0)
{
delay(10);
if(RC1==0)
{
while(!RC1);
PORTD=0x02;
Kuy(2);
PORTB=table[2];
}
}
if(RC2==0)
{
delay(10);
if(RC2==0)
{
while(!RC2);
PORTD=0x04;
Kuy(3);
PORTB=table[3];
}
}
if(RC3==0)
{
delay(10);
if(RC3==0)
{
while(!RC3);
PORTD=0x08;
Kuy(4);
PORTB=table[4];
}
}
}
#include<pic.h>
#define uchar unsigned char
#define uint unsigned int
__CONFIG(0x3B31);
void delay(uint z);
void key();
void init();
void Kuy(uchar num);
/*
按键,数码管,LED等,喇叭 综合实验程序
功能如下: 当你按独立键盘是按“1”是第一个LEd灯亮
,灯亮的同时喇叭也响,LCD显示按钮值。
LCD显示1到4 !!!
Console.WriteLine("Salam Uygihur!");
Console.ReadLine();
*/
const table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void main()
{
init();
while(1)
{
PORTA=0x20;
key();
}
}
void delay(uint z)
{
int a,b;
for(a=z;a>0;a--)
for(b=110;b>0;b--);
}
void init()
{
TRISB=0;
TRISD=0;
TRISA=0;
TRISC=0xff;
TRISE=0;
TRISD=0;
PORTE=0;
PORTD=0;
}
void Kuy(uchar num)
{
uchar temp;
for(temp=num;temp>0;temp--)
{
RE1=1;
delay(100);
RE1=0;
delay(50);
}
}
void key()
{
if(RC0==0)
{
delay(10);
if(RC0==0)
{
while(!RC0);
PORTD=0x01;
Kuy(1);
PORTB=table[1];
}
}
if(RC1==0)
{
delay(10);
if(RC1==0)
{
while(!RC1);
PORTD=0x02;
Kuy(2);
PORTB=table[2];
}
}
if(RC2==0)
{
delay(10);
if(RC2==0)
{
while(!RC2);
PORTD=0x04;
Kuy(3);
PORTB=table[3];
}
}
if(RC3==0)
{
delay(10);
if(RC3==0)
{
while(!RC3);
PORTD=0x08;
Kuy(4);
PORTB=table[4];
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询