需要一个51单片机按键闪烁数码管程序

要求如下:电路板上从左到右四个独立按键为k1-k4,数码管从左到右为m1-m4.初始时,四个数码管都显示为0,且m1在闪烁,频率为1秒。按下k1后,闪烁的值增加直到9后,再按k1值为0.按下k4后,闪烁的值减小,减至0后再按k1值为9.在m1闪烁时,按k2一次,m2闪烁,m1保留当前值,再按下k2,m3闪烁,以此类推。k3方向与k2相反。电路图如下:

第1个回答  2014-07-10
用中断函数
第2个回答  2014-07-10
只用四个按键?追问

是的,只用四个键实现就好。谢谢了。

追答

程序有些长,在这里有字数限制,提交不上去。

放在空间了:

http://hi.baidu.com/do_sermon/item/83c4aacfc8d1bd2b46d5c0cb

追问

在开发板上蜂鸣器乱响而且数码管都是显示“-.”

追答

楼主给出的显示电路,是个虚拟的。不是正确的显示电路。

真正的八位数码显示电路,是不可能仅仅用两块芯片就驱动起来的。

一般,都有八个三极管,至少也还要有十几个电阻。

楼主给出的电路,是个概念性的、不可实用的电路。

楼主既然用实际的电路板来试验,就应该提供真实的电路。

至少,也要说明你的电路中,芯片的型号。

楼主如果弄不清你的实际电路,也可以用仿真软件来实验。

本回答被提问者采纳

51单片机数码管显示的程序是什么?
#include \/\/52系列单片机头文件\\x0d\\x0a#define uchar unsigned char \/\/宏定义\\x0d\\x0a#define uint unsigned int\\x0d\\x0asbit dula=P2^6; \/\/申明u1锁存器的锁存端\\x0d\\x0asbit wela=P2^7; \/\/ u2\\x0d\\x0auchar num1,num2;\\x0d\\x0auchar code table[...

51单片机按键控制数码管?
SCON = 0x50; \/\/SCON: mode 1, 8-bit UART, enable rcvr TMOD = 0x20; \/\/TMOD: timer 1, mode 2, 8-bit reload PCON = 0x80; \/\/ 数据位8、停止位1。效验位无 (11.0592M)TH1 = 0xF4; \/\/TH1: reload value for 2400@11.0592MHz TR1 = 1; \/\/启动定时器1 ES...

急求一个用51单片机编的可按键调时的数字时钟程序,数码管显示,C语言...
sbitSET = P3^4;\/\/调整键(AN4)sbitSPK = P3^6;void delayms(unsigned char ms);\/\/延时程序bit lcd_busy();\/\/测试LCD忙碌状态程序void lcd_wcmd(char cmd);\/\/写入指令到LCD程序void lcd_wdat(char dat);\/\/写入数据到LCD程序void lcd_pos(char pos);\/\/LCD数据指针位置程序void lcd_init();\/\/LCD初...

51单片机如何让一个数码管闪烁而其他数码管一直保持亮的状态不受影响...
modeaa=mode;\/\/前20次与闪烁模式有关 } else { modeaa=0;\/\/后20次只管正常扫描 } dataport=~(table[a1]);sm1=modtable[modeaa][0]; Delay1ms(2);sm1=1;\/\/sm1=0,一号数码管亮 \/\/但它是否为0,由modeaa决定,modeaa又受ia控制,可以等于mode,也可以为0 dataport=~(table[a2]);sm...

51单片机怎样用键盘控制数码管显示
51单片机怎样用键盘控制数码管显示的方法。如下参考:1.首先,编写代码并点亮数码管。2.在编写源代码之后,确保原始代码是正确的。3.确认代码正确后,进入下一步,就是在这一行代码(箭头所指)中,删除这四个单词。4.然后如图所示,四个单词已被删除,只要修改相应的代码编号即可。5.表示数字0的代码在...

高分:51单片机汇编程序,数码管跳动问题
给你贴一个我写的显示程序(在定时中断中调用,这个程序显示两组数据,500ms换一次):\/ 函数名称: void Display()功能描述: 将缓冲区中可显示字符输出到LED \/ define PIN_SDINP0_0 define PIN_STP0_1 define PIN_SHP0_2 define LOC_D10x08 void Display(void){ unsigned char i,ch,loc;if...

51单片机设计,求用一个按键能显示一个七段数码管1~7的c语言程序。
include<reg51.h> define uchar unsigned char uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};sbit key=P1^0;main(){ uchar i,key;i=1;while(1){ P1=table[i];if(key==0){ while(key==0);i++;if(i>7)i=1;} } } ...

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

51单片机c语言设计,按键控制数码管,依次按下显示0到9循环?
假设你的是共阳极数码管,P0接数码。按键接P2^0;include<reg52.h> typedef unsinged int uint;sbit key=P2^0;unsigned char tab[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void denay(uint x){ uint i,j;for(i=x;i>0;i--)for(j=110;j>0;j--)} void main(){ u...

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

相似回答