求矩阵键盘的C语言。我写的程序,矩阵键盘的第1,2,4行一点反应都没有,第3行正常运行

作者&投稿:李居 (若有异议请与网页底部的电邮联系)
C语言 编程题, 编一程序:求s=1+2+3+4+..........+100的和。~

这样就OK了。
#includeint main(void){int i,s=0;for(i=1;i<=100;i++)s+=i;printf("%d
",s);return 0;}

#include int main(void) {unsigned i,n;double sum1=0.0,sum2=0.0;printf(" 这是一个计算 Sn = (1-1/2) + (1/3-1/4) + ...... + [1/(2n-1)-1/(2n)] 的程序

");printf(" 请输入n的值(正整数):");scanf("%u",&n);for(i=1;i2 && n999)printf(" S%u=(1-1/2)+(1/3-1/4)+ ......+[1/(2×%u-1)-1/(2×%u)]=%.4f
",n,n,n,sum1-sum2);return 0;}

void delay() //延时子程序
{
unsigned char n, m;
for (n = 100; n > 0; n--)
for (m = 300; m > 0; m--);
}
unsigned char Keycan(void) //按键扫描程序 P1.0--P1.3为行线 P1.4--P1.7为列线
{
unsigned char rcode, ccode;
P1 = 0xF0; // 发全0行扫描码,列线输入
if((P1&0xF0) != 0xF0) // 若有键按下
{
delay();// 延时去抖动
if((P1&0xF0) != 0xF0)
{ rcode = 0xFE; // 逐行扫描初值
while((rcode&0x10) != 0)
{
P1 = rcode; // 输出行扫描码
if((P1&0xF0) != 0xF0) // 本行有键按下
{
ccode = (P1&0xF0)|0x0F;
do{;}while((P1&0xF0) != 0xF0); //等待键释放
return ((~rcode) + (~ccode)); // 返回键编码
}
else
rcode = (rcode<<1)|0x01; // 行扫描码左移一位
}
}
}
return 0; // 无键按下,返回值为0
}

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

#define uchar unsigned char
#define uint unsigned int

unsigned char const dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71};//0-F
/*------------------------------------------------
函数声明
------------------------------------------------*/
uchar keyscan(void);//键盘扫描
void delay(uint i); //演示程序
/*------------------------------------------------
主函数
------------------------------------------------*/
void main()
{
uchar key;
P2=0x00; //1数码管亮 按相应的按键,会显示按键上的字符
while(1)
{
key=keyscan(); //调用键盘扫描,
switch(key)
{
case 0x7e:P0=dofly[0];break;//0 按下相应的键显示相对应的码值
case 0x7d:P0=dofly[1];break;//1
case 0x7b:P0=dofly[2];break;//2
case 0x77:P0=dofly[3];break;//3
case 0xbe:P0=dofly[4];break;//4
case 0xbd:P0=dofly[5];break;//5
case 0xbb:P0=dofly[6];break;//6
case 0xb7:P0=dofly[7];break;//7
case 0xde:P0=dofly[8];break;//8
case 0xdd:P0=dofly[9];break;//9
case 0xdb:P0=dofly[10];break;//a
case 0xd7:P0=dofly[11];break;//b
case 0xee:P0=dofly[12];break;//c
case 0xed:P0=dofly[13];break;//d
case 0xeb:P0=dofly[14];break;//e
case 0xe7:P0=dofly[15];break;//f
}
}
}
/*------------------------------------------------
键盘扫描程序
------------------------------------------------*/
uchar keyscan(void) //键盘扫描函数,使用行列反转扫描法
{
uchar cord_h,cord_l;//行列值中间变量
P3=0x0f; //行线输出全为0
cord_h=P3&0x0f; //读入列线值
if(cord_h!=0x0f) //先检测有无按键按下
{
delay(100); //去抖
if(cord_h!=0x0f)
{
cord_h=P3&0x0f; //读入列线值
P3=cord_h|0xf0; //输出当前列线值
cord_l=P3&0xf0; //读入行线值
return(cord_h+cord_l);//键盘最后组合码值
}
}return(0xff); //返回该值
}
/*------------------------------------------------
延时程序
------------------------------------------------*/
void delay(uint i) //延时函数
{
while(i--);
}


用矩阵键盘上的键控制流水灯暂停的程序怎么编啊 用 C语言
这个。。流水灯用for()语句来循环,循环内部用delay来延时控制流水的运转速度。设置一个变量M,这个变量在每次循环的情况下都要赋值一次,从哪里赋值呢??就是判断一下你指定按键是否按下,按下了,这个变量M为1,没按下,这个变量M为0,然后你在for语句的中间那个判断表达式中加入一个条件:那就是...

51单片机 c语言编程 4*4矩阵键盘如何实现等待按键松开功能?
if(key_l!=0xf0){ delay_nms(5);key_l=P1;……在第4行加 while( key_l!=0xf0 );等待按键释放,按键不放开就一直在此处等待,知道按键释放,此语句执行完。再往下执行

51单片机 c语言编程 4*4矩阵键盘如何实现等待按键松开功能?
1、在程序检测到按键后,加个延时去抖,不要加松手检测。然后执行第一个按键相对应的程序。然后继续按键扫描。注意这里说的是继续,也就是继续往下检测。否则的程序就只能执行第一个按键所对应的程序了。这样,就能检测到第二次按键的键值了。2、例程:uchar shaomiao(){uchar l,h;P1=0xf0;\/\/获取...

急求一个基于89C51单片机,用4*4矩阵键盘输入数据,并在LCD1602上显示出来...
\/*** 函数名称:lcd1602_WriteData()* 函数功能:写数据* 入口参数:c--待写数据* 出口参数:无***\/ void lcd1602_WriteData(const uchar c){lcd1602_CheckBusy();lcd1602_rs=1;lcd1602_rw=0;lcd1602_e=1;LCD1602_PORT=c;lcd1602_e=0;} \/*** 函数名称:lcd1602_Init()* 函数功能:初始...

用51单片机和C语言编程.利用矩阵键盘依次显示1,2,3,4,5.……12的平方...
你的while循环写的有问题,既然要先判断行选再判断列选,应该用两级的switch语句,而不是两级wihile语句,你现在的写法只循环了第二级的第一个while循环,所以只有处于第二级while的switch的三按(其实看代码应该是四个)键个管用。。。

急求一个基于89C51单片机,8255A,用矩阵键盘输入数字,并在LCD1602上显示...
include<reg52.h>#include<absacc.h>#define PA XBYTE[0xF8FF]#define PB XBYTE[0xF9FF]#define PC XBYTE[0xFAFF]#define COM XBYTE[0xFBFF]#define LCD1602_RS_SET()PB|=1<<0#define LCD1602_RS_RST()PB&=~(1<<0)#define LCD1602_RW_RST()PB&=~(...

8255连矩阵键盘和LCD1602C语言程序
这是一个简单的计算器仿真实例。供参考#include#defineucharunsignedchar;ucharLED1,LED2,LED3,LED4;ucharkeyval,calflag,s_dat,d_dat;uchardistab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};unsignedintnumber,r_dat;voiddelay(...

单片机c语言编程实例问题!我用矩阵键盘控制LED灯!但是按键盘没有反应...
} break;} while(temp != 0x0f) { temp = P3;temp = temp & 0x0f;} break;} return num;} 楼主编写的程序只能识别4个按键,显示4种不同的状态。要想识别16个按键,建议看看:http:\/\/hi.baidu.com\/%D7%F6%B6%F8%C2%DB%B5%C0\/blog\/item\/7ec90efb831f6bd4b58f315e.html ...

单片机编程问题(C语言),很入门的问题,明天比赛,急急急!多少分都可以...
\/\/单片机:使用51系列兼容的即可;\/\/4×4矩阵键盘:接在P1口;\/\/两位数码显示器: P0口输出七段码,P2口输出位选码。\/=== \/\/C语言程序如下。\/ 文件名: KEY_LED.c 功能 : 对4×4矩阵键盘进行输出,在数码管后两位显示按键值。\/ include <reg51.h> include <intrins.h> define uint unsi...

...的矩阵键盘扫描,程序思路都好,求大虾帮忙!!!c语言
我随便写了下,配着注释,你理解下意思,然后弄个适合你的 void key_scan(){ unsigned char key1,key2;unsigned int key;P1 = 0XFF; \/\/P1拉高 P2 &= 0XF0; \/\/P2.0 -P2.3 拉低 if(P1 != 0XFF) \/\/ 如果有按键按下,P1就有引脚被拉低,{ delay_ms(10); \/\/延...

木兰县13374355226: 求矩阵键盘的C语言.我写的程序,矩阵键盘的第1,2,4行一点反应都没有,第3行正常运行 -
勇欧怡然: void delay() //延时子程序 { unsigned char n, m; for (n = 100; n > 0; n--) for (m = 300; m > 0; m--); } unsigned char Keycan(void) //按键扫描程序 P1.0--P1.3为行线 P1.4--P1.7为列线 { unsigned char rcode, ccode; P1 = 0xF0; // 发全0行扫描码,列...

木兰县13374355226: 求c语言矩阵乘法程序 -
勇欧怡然: 1,若程序定义为三行三列的矩阵,并在主函数中键盘赋值.请编写函数juzhen(int a[][3],int n),函数功能是:使矩阵左下角元素中的值乘以.例如:若矩阵中的值为: 1 9 7 2 3 8 4 5 6 n=3,则矩阵值变为: 1 9 7 6 9 8 12 15 18 注:二维数组下三...

木兰县13374355226: C语言编程:输入一个M*N的整数矩阵,求其最大值及其所在的行号、列号.(M、N由键盘输入) -
勇欧怡然: #include<stdio.h> #include<stdlib.h> int main() {int i,m,n,*array;printf("请输入矩阵行数:");scanf("%d",&m);printf("请输入矩阵列数:");scanf("%d",&n);array=(int*)malloc(m*n*sizeof(int));printf("请输入该%d*%d矩阵...

木兰县13374355226: C语言输入一个M*N的整数矩阵,求其转置矩阵.MN由键盘输入 -
勇欧怡然: #includevoid main(){int M,N;scanf("%d%d",&M,&N);int a[M][N],b[N][M];int i,j;for(i=0;i

木兰县13374355226: C语言编写程序:通过键盘给3x4的整数矩阵输入数据,然后分别按行和按列输出; -
勇欧怡然: 第一个程序: #include<stdio.h>void main() {int a[3][4],i,j;for(i=0;i<3;i++){printf("输入第%d行的4个数:",i+1);for(j=0;j<4;j++)scanf("%d",&a[i][j]);}printf("按行输出:\n");for(i=0;i<3;i++){printf("第%d行:",i+1);for(j=0;j...

木兰县13374355226: C语言编程编程从键盘输入一个3*4的矩阵,求其最大元素的值,以及其所在的行号和列号,并显示该矩阵. -
勇欧怡然: #include main() { int i,j,k1,k2,data[3][4]; for(i=0;i max ) { max=data[i][j], k1=i; k2=j; } printf("i=%d j=%d max=%d", k1, k2, max); }

木兰县13374355226: 编写C语言程序处理3*3矩阵 -
勇欧怡然: #include "stdio.h" #define N 3 main() {int a[N][N],i,j,s1=0,s2=0;for(i=0;ifor(j=0;j { printf("请输入一个整数:"); scanf("%d",&a[i][j]); s2+=a[i][j]; } for(i=0;i s1+=a[i][i]+a[i][N-1-i]; printf("两对角线和:%d\n",s1); printf("平均数:%f\n",1.0*s2/(N*N)); }

木兰县13374355226: 求C语言源代码:从键盘输入两个矩阵,输出这两个矩阵和这两个矩阵相乘的矩阵? -
勇欧怡然: #include "stdio.h" main() { int i,j,k,a[3][3],b[3][3],c[3][3]; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",a[i][j]); //shu lu a[][] for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",b[i][j]); //shu lu b[][] for(i=0;i<3;i++) for(j=0;j<3;j++) for(k=0;k<3;k++) c[i][j]=a[i][k]*b[k][j]...

木兰县13374355226: 用C语言编写程序,输出下列n*n(2≤n≤9,有键盘输入)的矩阵. -
勇欧怡然: #include "stdio.h" main() { int n; int i,j; printf("输入你的n值: "); scanf("%d",&n); for(i=1;i

木兰县13374355226: C语言:从键盘输入一个a[4][4]的矩阵,求其每列的和放到b[4]数组中 -
勇欧怡然: #include<stdio.h> int main() { int a[4][4]; int b[4]={0}; int i; int j; for(i =0;i<4;i++) { for(j=0;j<4;j++) { scanf("%d",&a[i][j]); } } for(i =0;i<4;i++) { for(j=0;j<4;j++) { b[i] += a[j][i]; } } for(i = 0;i<4;i++) { printf(" %d",b[i]); } getchar(); return 0; }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网