在单片机C语言中,将按键设为1到9的数,怎样记录下按键的次数,并且将按键的键值按顺序在LCD上显示?

比如说就是第一次按下5,在LCD上的第一个位置显示5,第二次按下3,在第二个位置显示3,等等。
再怎样再设置一个变量,记录下这个数是多少呀?

假定你的单片机和LCD的关联部分已经做好了,直接调用函数就能在LCD上显示内容。

键盘的话,假定是每个键都和一个引脚串联(即按下该键,为高电平-1,否则低电平-0)

int num[16];//一般的LCD是16位数字吧,不知道你用的什么字库啊!
int index=15;
int i=0;

for( i=0; i<16; i++)num[i]=0;//初始化数组

//如果有按键
int GetKeyPress( k:int ){
num[index]=k;
index--;
if(index<0)index=15;
}

每次接受到按键后都将num数组的数据发送到LCD去显示,发送的顺序是从index位置开始往后
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-13
在按键程序里计数,到达9就清零,注意一定要消斗追问

看看我的这个行不行?

追答

http://wenku.baidu.com/view/31d9760202020740be1e9bfb.html可以参考一下

追问

是在计数,但是当有键按下显示时却是同一个数字呀,显示不对呀

追答

那可能是你的显示程序哪里有问题,再检查一下

第2个回答  2011-08-13
同意楼上的说法

...数码管从0开始加1,加到9,用c语言单片机编写并且要用计数器的方法编写...
} }}void main(void){ uchar s1; s1=0;P0=num[s1]; while(1){ if(P32==1)\/\/如果p32是高电平 { delay50us();\/\/延时防抖动 if(P32==1) { while(P32); \/*这是个很常用的处理方法,P32=1则会一直在循环里,P32=0则进行下一步,在串口双机...

51单片机c语言设计,按键控制数码管,依次按下显示0到9循环
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(k1==0){ if(n>=9) n=0;else...

关于单片机温度控制系统C语言程序中的按键设置程序,请求详细的介绍下按...
keyflag应该是判断某个按键按了几次,不安的时候为0 if(KeyFlag == 0){ } 按一次时执行 else if(KeyFlag == 1){ if(BUTTON_add == 0 && KeyLock ==0){ } if(BUTTON_reduce == 0 && KeyLock ==0){ } 按二次时执行 else if(KeyFlag == 2){ if(BUTTON_add == 0 && KeyLock...

在单片机中怎样检测一个按键的击键次数
楼上讲得很对,就是先设一个变量,比如a,然后检测是否有按键按下,当有键按下时,就跳到相应的程序,执行a++,但是要注意一点,就是在按键按下的时候要加个延时函数去抖,在加一个语句判断按键是否按下(比如C语言的while语句),只有这样,才能正确判断按键按下的次数。

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...

怎么用单片计C语言编出两个按键控制一位数码管,一个按健控制0至9就是...
可以不用中断。 你只要写个段码的数值,然后在数组里加一个变量。比如“ uchar dm[]={0xc0,0xa4,0xf9...}“ 每次按下一个键数组里的变量就加一。 做按键的时候要记住去斗。 归0的按键就更好写了,只要按下数组里的变量等于0就行了。 希望能帮到你, 亲~...

单片机c语言按键每按一次加一一直到加到100程序怎么写?求高手指点...
sbit P21=P2^1;sbit KEY=P2^2;uchar ge,shi;uchar code tab[ ]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,};void delay_ms(unsigned int ms) \/\/1ms延时 { uchar a;while(ms--)for(a=123;a>0;a--);} void display();void main(){ while(1){ display();w...

51单片机C语言程序4个独立按键实现对数码管数字显示的加减清零等
include <reg52.h>\/\/P0是数码管。P1是LED.P2是按键sbit KEY_OUT_1 = P2^3;sbit KEY_OUT_2 = P2^2; sbit KEY_OUT_3 = P2^1;sbit KEY_OUT_4 = P2^0;#define uchar unsigned char#define ulint unsigned long#define Frequency 10\/\/定时器中断时间 = f*T#define Time 1\/\/一个周期...

怎样在单片机中用C语言编写一个2位数码管显示0到99。管脚接线图如下...
\/\/先进行宏定义,然后进行查表,输出就OK了 unsigned int i ;defineSEGA0x04 defineSEGB0x08 defineSEGC0x10 defineSEGD0x80 defineSEGE0x20 defineSEGF0x02 defineSEGG0x01\/\/ defineSEGDP0x40\/\/ defineNSEGG0x7f\/\/无解 defineNUM_0SEGA + SEGB + SEGC + SEGD + SEGE + SEGF defineNUM_1...

单片机程序求修改,实现按键控制数码管0-9,急!!!
if(num==-1) num=9;while(key1==0);} } \/*实现清零功能*\/ if(key2==0) { delay(7);if(key2==0) { num=0;while(key2==0);} } \/*实现定时器1方式1定时1S使得数码管加1显示功能*\/ if(key3==0) { delay(7);if(key3==0) { flag = ~flag;while(key3==...

相似回答