求救:c51单片机按键每按一次同时数码管显示数字加一

 我来答
wjk_31057
推荐于2018-01-21 · TA获得超过578个赞
知道小有建树答主
回答量:139
采纳率:90%
帮助的人:18.9万
展开全部
-
建立一个数组,用于存放 0-9的段码。
int Shuzu[]={---------};
如果会用指针
int *P;
P=Shuzu; //指针指向数组!
用外部中断,
每中断一次,中断服务程序将数组元素加一P0=Shuzu[ax++](或指针加一:P0=*P++)
以上假设P0口驱动数码管!
至于数码管使用的是共阳还是共阴,就把相对的数值存在数组中!
-
外部中断0的中断程序入口
void TI_0() interrupt 0
{
--------
}
都提示到这里了,下面自己该会吧?
如果是新手的新手---想要我帮你写全部程序--
那至少你得把你单片机芯片型号说给我才能帮你!
还有数码管是用单片机哪个IO口!
数码管是怎么连接的?(串/并)
JSuser0998
2012-11-04 · 知道合伙人数码行家
JSuser0998
知道合伙人数码行家
采纳数:70 获赞数:124
毕业于新疆师范大学电子信息科学与技术。目前是老师。 学习方向:单片机,c#,HTML5等等。。。

向TA提问 私信TA
展开全部
//这是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];
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式