按下16个矩阵键盘依次在数码管上显示1-16的平方.如按下第一个显示1,第二个显示4...#include #define uchar unsigned char#define uint unsigned intuchar b,bai,shi,ge;uchar const el[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/04 16:48:34
按下16个矩阵键盘依次在数码管上显示1-16的平方.如按下第一个显示1,第二个显示4...#include #define uchar unsigned char#define uint unsigned intuchar b,bai,shi,ge;uchar const el[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7

按下16个矩阵键盘依次在数码管上显示1-16的平方.如按下第一个显示1,第二个显示4...#include #define uchar unsigned char#define uint unsigned intuchar b,bai,shi,ge;uchar const el[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7
按下16个矩阵键盘依次在数码管上显示1-16的平方.如按下第一个显示1,第二个显示4...
#include
#define uchar unsigned char
#define uint unsigned int
uchar b,bai,shi,ge;
uchar const el[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
\x09\x09 \x09 0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar keycan(void);
void delay(uint z);
void display(uchar bai,uchar shi,uchar ge);
void main()
{
uchar key;
P0=0x00;
while(1)
{
\x09key=keycan();
\x09switch(key)
\x09{
\x09 case 0xee:b=1*1; break;
\x09 case 0xde:b=2*2; break;
\x09 case 0xbe:b=3*3; break;
\x09 case 0x7e:b=4*4; break;
\x09 case 0xed:b=5*5; break;
\x09 case 0xdd:b=6*6; break;
\x09 case 0xbd:b=7*7; break;
\x09\x09 case 0x7d:b=8*8; break;
\x09\x09 case 0xeb:b=9*9; break;
\x09\x09 case 0xdb:b=10*10; break;
\x09\x09 case 0xbb:b=11*11; break;
\x09\x09 case 0x7b:b=12*12; break;
\x09\x09 case 0xe7:b=13*13; break;
\x09\x09 case 0xd7:b=14*14; break;
\x09 case 0xb7:b=15*15; break;
\x09\x09 case 0x77:b=16*16; break;
\x09}
\x09 bai=b/100;
\x09 shi=b%100/10;
\x09 ge=b%10;
\x09 display(bai,shi,ge);
}
}
uchar keycan()
{
uchar cord_h,cord_l;
P3=0x0f;
cord_h=P3&0x0f;
if(cord_h!=0x0f)
{
delay(100);
\x09cord_h=P3&0x0f;
\x09if(cord_h!=0x0f)
\x09{
\x09 P3=cord_h|0xf0;
\x09 cord_l=P3&0xf0;
\x09 return(cord_h+cord_l);
\x09}
}return (0xff); \x09
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display(uchar bai,uchar shi,uchar ge)
{
P2=0;\x09
P0=el[bai];
delay(10);
P2=1;
P0=el[shi];
delay(10);
P2=2;
P0=el[ge];
delay(10);
}
谁能告诉我的程序错在哪了啊 我怎么就调试不出来呢

按下16个矩阵键盘依次在数码管上显示1-16的平方.如按下第一个显示1,第二个显示4...#include #define uchar unsigned char#define uint unsigned intuchar b,bai,shi,ge;uchar const el[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7
#include
#define uchar unsigned char
#define uint unsigned int
uchar b,bai,shi,ge;
uchar const table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x76,0x79,0x38,0x00};
sbit dula=P2^6;
sbit wela=P2^7;
uchar keycan(void);
void delay(uint z);
void display(uchar bai,uchar shi,uchar ge);
void main()
{
uchar key;
P0=0x00;
while(1)
{
\x05key=keycan();
\x05switch(key)
\x05{
\x05 case 0xee:b=1*1; break;
\x05 case 0xde:b=2*2; break;
\x05 case 0xbe:b=3*3; break;
\x05 case 0x7e:b=4*4; break;
\x05 case 0xed:b=5*5; break;
\x05 case 0xdd:b=6*6; break;
\x05 case 0xbd:b=7*7; break;
\x05\x05 case 0x7d:b=8*8; break;
\x05\x05 case 0xeb:b=9*9; break;
\x05\x05 case 0xdb:b=10*10; break;
\x05\x05 case 0xbb:b=11*11; break;
\x05\x05 case 0x7b:b=12*12; break;
\x05\x05 case 0xe7:b=13*13; break;
\x05\x05 case 0xd7:b=14*14; break;
\x05 case 0xb7:b=15*15; break;
\x05\x05 case 0x77:b=16*16; break;
\x05}
\x05 bai=b/100;
\x05 shi=b%100/10;
\x05 ge=b%10;
\x05 display(bai,shi,ge);
}
}
uchar keycan()
{
uchar cord_h,cord_l;
P3=0x0f;
cord_h=P3&0x0f;
if(cord_h!=0x0f)
{
delay(100);
\x05cord_h=P3&0x0f;
\x05if(cord_h!=0x0f)
\x05{
\x05 P3=cord_h|0xf0;
\x05 cord_l=P3&0xf0;
\x05 return(cord_h+cord_l);
\x05}
}return (0xff); \x05
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display(uchar bai,uchar shi,uchar ge)
{
dula=1;
\x05\x05 P0=table[bai];
\x05\x05 dula=0;
\x05\x05 P0=0xff;
\x05\x05 wela=1;
\x05\x05 P0=0xf7;
\x05\x05 wela=0;
\x05\x05 delay(1);
dula=1;
\x05\x05 P0=table[shi];
\x05\x05 dula=0;
\x05\x05 P0=0xff;
\x05\x05 wela=1;
\x05\x05 P0=0xef;
\x05\x05 wela=0;
\x05\x05 delay(1);
dula=1;
\x05\x05 P0=table[ge];
\x05\x05 dula=0;
\x05\x05 P0=0xff;
\x05\x05 wela=1;
\x05\x05 P0=0xdf;
\x05\x05 wela=0;
\x05\x05 delay(1);
}
我认为是你的void display(uchar bai,uchar shi,uchar ge)这里有错误,上面是我的程序,只是改了一点,我的好用,你的显示程序外围我不知道,

能不能把reg52.h这个头文件发出来看一下这是我的这个单片机的数码管的电路图 , 我的单片机的数码管那里就是多了一个译码器,这个程序就是最后一列按键的数16,64,144,256 在数码上显示不出来,这四个数总是在按下按键后一闪而过,其他的数都能很好的显示,我不知道是什么原因,可以帮帮我吗...

全部展开

能不能把reg52.h这个头文件发出来看一下

收起

再写不出再来找我吧

u百度地图

按下16个矩阵键盘依次在数码管上显示1-16的平方.如按下第一个显示1,第二个显示4...#include #define uchar unsigned char#define uint unsigned intuchar b,bai,shi,ge;uchar const el[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7 用51单片机和C语言编程.利用矩阵键盘依次显示1,2,3,4,5.……12的平方,显示在数码管上.#include <reg51.h>#define uchar unsigned char#define uint unsigned intuint temp,num,num1;uchar code table[]={0xfc,0x60,0xda,0xf2,0x66 求助会keil和51单片机的大神,写一段数码管程序板子上选择四个独立按键,从左到右依次为key1,key2,key3,key4,选择两个个数码管,从左到右依次为m1,m2.,当按下key3时,数码管显示0,每按下一次按键,在 如何用4×4矩阵键盘取一个四位数,再在四位数码管动态显示.请高手指点怎样得到那四位数. 4*4矩阵键盘,按下对应的键显示1-16的数字,程序怎么写?4*4矩阵键盘,按下对应的键显示1-16的数字,C程序怎么写?我是要模拟电梯的楼层,按下按键显示对应的楼层数 反应速度测试仪设计一反应速度测试装置,用于测试人的综合反应能力.计算机在数码管左边随机显示一个数,若该数在1~8之间,则被测试者可在键盘上按下对应的数字,如果按下的数字与显示数 数码管显示数字AT89C51在4位数码显示管上分别显示1 2 3 4,如何编程? 6位数码管的MCS51单片机秒表设计实验利用51单片机,6个数码管设计一个秒表,要求在数码管上显示的数据从0开始每0.1秒加1,有启动,暂停,清零键 要个完整的程序!满分用哪个显示都成!不考虑什么 英文字母在七段数码管是显示什么形状?在一个温度仪表上的字母是用七段数码管显示的,有些字符我看不出是什么字母,有没有26个英文字母在七段数码管上显示形状的对照表或软件? 51单片机程序1、测量方波脉冲的频率2、在单片机数码管上显示出频率 求eda数字钟设计程序请根据要求在EDA实验箱上设计实用数字钟系统,要求:⑴使用EDA实验箱上的6个LED数码管从左到右依次显示有时、分、秒计数;⑵使用EDA实验箱上的开关实现十二小时制与 用vhdl语言编写一个程序,要求测量方波频率,显示在4个数码管上.只要求写出测量方波频率的那一个模块的程 利用PLC控制七段LED数码管的显示给一个“启动”脉冲,数码管按如下规律显示:1、全灭1秒;2、依次显示“0.”、“1.”、“2.”、“3.” 、……“9.”、“A.”、“b.”……“F.”;3、循环至第 键盘上的键子要怎么按才显示标点符号 数码管静态显示.使实验板上的一个数码管循环显示0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 这个题怎么做:请从键盘上依次输入一个整数、一个单精度实数、一个双精度整数、一个数字字符.然后,在屏幕依次输出,且最后输出他们的和.程序运行时显示如下结果:请从键盘上依次输入 跪求单片机电子密码锁控制部分电路图要6位7段数码管显示的那种,AT89S51,AT24C02, 矩阵键盘都用上的哪位好心人帮帮我啊~~! 我邮箱 349084104@qq.com 谢谢了 4*4矩阵键盘的问题.4*4矩阵键盘接P1口,高4位接列,低4位接行,上拉电阻10K,AT89S52单片机程序在实验板上正常.在proteus仿真中不能用.P1=0xf0,按下按键后对应的行、列电平居然都是高电平了,而没有被