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

如题所述

-
建立一个数组,用于存放 0-9的段码。
int Shuzu[]={---------};
如果会用指针
int *P;
P=Shuzu; //指针指向数组!
用外部中断,
每中断一次,中断服务程序将数组元素加一P0=Shuzu[ax++](或指针加一:P0=*P++)
以上假设P0口驱动数码管!
至于数码管使用的是共阳还是共阴,就把相对的数值存在数组中!
-
外部中断0的中断程序入口
void TI_0() interrupt 0
{
--------
}
都提示到这里了,下面自己该会吧?
如果是新手的新手---想要我帮你写全部程序--
那至少你得把你单片机芯片型号说给我才能帮你!
还有数码管是用单片机哪个IO口!
数码管是怎么连接的?(串/并)
温馨提示:内容为网友见解,仅供参考
第1个回答  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];
}
}
}

求救:c51单片机按键每按一次同时数码管显示数字加一
建立一个数组,用于存放 0-9的段码。int Shuzu[]={---};如果会用指针 int *P;P=Shuzu; \/\/指针指向数组!用外部中断,每中断一次,中断服务程序将数组元素加一P0=Shuzu[ax++](或指针加一:P0=*P++)以上假设P0口驱动数码管!至于数码管使用的是共阳还是共阴,就把相对的数值存在数组...

c51单片机按键每按一次同时数码管显示数字加一是什么?
建立一个数组,用于存放 0-9的段码。int Shuzu[]={---};如果会用指针 int *P;P=Shuzu; \/\/指针指向数组!用外部中断,每中断一次,中断服务程序将数组元素加一P0=Shuzu[ax++](或指针加一:P0=*P++)以上假设P0口驱动数码管!至于数码管使用的是共阳还是共阴,就把相对的数值存在数组...

单片机C51实现按键一次数码管加1程序问题。高手进。
单片机C51实现按键一次数码管加1程序问题。高手进。 设计一个单片机C51程序,实现功能是,1、按KEY1只有红灯亮,KEY2只有黄灯亮,KEY3只有绿灯亮。2、开始右数码管显示0,每按KEY1一次数码管显示加1,至9后再循环。先已经编好程序,第一个实现,但第二个总弄不对。感觉问题很简单,就是差一点,高手帮我看一下。....

用51单片机做一个键盘,按一下数码管加1,可是无论我怎么消抖动,总是有...
………if(!key) \/\/检测键盘是否按下 delay():\/\/去抖延时一般是50ms if(!key)\/\/再次检测键盘是否按下 ×××++: \/\/这里写数码管加"1"程序 while(key);\/\/加入写句,目的是等待key变为原来的状态才会执行下一条指令!希望可以帮到你!

...单片机输入显示系统,要求每按一下按键数码管显示数据加1(数码管初 ...
设计一个单片机输入显示系统,要求每按一下按键数码管显示数据加1(数码管初始值为0,9加1 后显示0)。  我来答 首页 用户 认证用户 视频作者 帮帮团 认证团队 合伙人 企业 媒体 政府 其他组织 商城 法律 手机答题 我的 设计一个单片机输入显示系统,要求每按一下按键数码管显示数据加1(...

51单片机设计一个程序:按键每按一次,数码管加1;当数码管加到9后又...
include<reg51.h> sbit k1=P3^3;define uint16 unsigned int define uchar unsigned char uchar code shuzu[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delay(){ uint16 i=1000;while(i--);} void main(){ uchar n ;P2=0xfe;P1=0xff;while(1){ if...

51单片机怎么用按键控制一个数码管,按一下显示一
\/*---名称:单个共阳数码管动态显示变化数字内容:通过循环检测P1口按键输入值,然后用数码管输出,没有按键按下时原值不变---*\/#include\/\/包

C51程序,设计每按一次按键,P1^0口亮,同时数码管显示相应按键值。我的...
你这里用的好像是郭天祥的视屏吧,略看了一下你的程序,上面少了一个括号,呃,如果你的板子也是用他的话(有些板子数码管驱动方式不一样),那就自己再去分步去调试,可以用一些仪器啊,首先去看看,管脚输出的电平是否正确,如果正确那灯的应该会亮。。。哦,对了,你这里应该用的是独立按键吧,...

C51单片机,P1和P2口做为流水灯,P0口做为数码管输出,按键每按一次要求nu...
我用硬件实验了,都能实现。有点小问题:led1 = ~led; 这两个灯不变,也许你就要这个效果。程序就是这么编的。按键没有去抖,每次按下不一定是加一。初学不建议仿真,不是最好的学习方法,仿真实际电路是有差异的,这样你会误入歧途(言过了)。反正我是从不仿真。需要帮助加我 ...

51单片机怎么用按键控制一个数码管,按一下显示一个数字,顺序显示
3、确认代码无误后,进入下一步,就是在这一行代码(箭头所指)的地方,将这四个字删去。4、然后如图所示,四个字已经删去,只要改成数字相应的代码即可。5、这里改成的是代表数字0的代码,如图所示。6、最后写好代码后,将生成的hex文件写进单片机,数码管显示的数字就变成0了。

相似回答