找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 486|回复: 6
打印 上一主题 下一主题
收起左侧

求一个关于实现按键显示字符的单片机代码

[复制链接]
跳转到指定楼层
楼主
实现按键检测功能,0-F按键中有一个按键按下,数码管显示对应的字符,并且LED0-7显示对应的二进制字节。自己写的代码有问题 在2楼

1699206945539.jpg (67.25 KB, 下载次数: 46)

1699206945539.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1098647 发表于 2023-11-6 02:03 | 只看该作者
我自己写了个代码,但是为什么运行出来不对,有两个警报
#include<reg51.h>,
#define uchar unsigned char
sbit L1=P1^0;
sbit L2=P1^1;
sbit L3=P1^2;
sbit L4=P1^3;
uchar dis[16]={0xc0,0xcf,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,oxa1,0x86.0x8e};
unsigned int time;
delay(time)
{
unsigned int j;
for(j=0;j<time;j++)
{}
}
main()
{
uchar temp;
uchar k,i;
while(1)
{
  P1=0xef;
  for(i=0;i<=3;i=i++)
  {
   if (L1==0) P0= dis[i*4+0];
   if (L2==0) P0= dis[i*4+1];
   if (L3==0) P0= dis[i*4+2];
   if (L4==0) P0= dis[i*4+3];
   delay(500)
   temp=P1;
   temp=temp|0x0f;
   temp=temp<<1;
   temp=temp|0x0f;
   P1=temp;
   }
  }
}
回复

使用道具 举报

板凳
ID:120219 发表于 2023-11-6 04:20 | 只看该作者
P0没上拉电阻
回复

使用道具 举报

地板
ID:584814 发表于 2023-11-6 08:13 | 只看该作者
#include<reg51.h>
#define uchar unsigned char
sbit L1=P1^0;
sbit L2=P1^1;
sbit L3=P1^2;
sbit L4=P1^3;
uchar dis[16]={0xc0,0xcf,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
unsigned int time;
void delay(time)
{
unsigned int j;
for(j=0;j<time;j++)
{}
}
void main()
{
uchar temp;
uchar k,i;
while(1)
{
  P1=0xef;
  for(i=0;i<=3;i=i++)
  {
   if (L1==0) P0= dis[i*4+0];
   if (L2==0) P0= dis[i*4+1];
   if (L3==0) P0= dis[i*4+2];
   if (L4==0) P0= dis[i*4+3];
   delay(500);
   temp=P1;
   temp=temp|0x0f;
   temp=temp<<1;
   temp=temp|0x0f;
   P1=temp;
   }
  }
}
已进行修改,可通过编译,不保证运行。
主要问题:符号错乱,包括但不限于丢失、全角、错用等。
个人感觉:搞科研的如果不细心不如不做,不喜欢自己检查的不如不玩。
回复

使用道具 举报

5#
ID:161164 发表于 2023-11-6 08:54 | 只看该作者

  1. unsigned int time;
  2. delay(time)
  3. {
  4. unsigned int j;
  5. for(j=0;j<time;j++)
  6. {}
  7. }
复制代码

改为
  1. void delay(unsigned int time)
  2. {
  3. unsigned int j;
  4. for(j=0;j<time;j++)
  5. {}
  6. }
复制代码



回复

使用道具 举报

6#
ID:180919 发表于 2023-11-6 09:12 | 只看该作者
标点错的地方太多了。
#include<reg51.h>
#define uchar unsigned char
sbit L1=P1^0;
sbit L2=P1^1;
sbit L3=P1^2;
sbit L4=P1^3;
uchar dis[16]={0xc0,0xcf,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
unsigned int time;
void delay(time)
{
unsigned int j;
for(j=0;j<time;j++);

}
main()
{
uchar temp;
uchar i;
while(1)
{
  P1=0xef;
  for(i=0;i<=3;i=i++)
  {
   if (L1==0) P0= dis[i*4+0];
   if (L2==0) P0= dis[i*4+1];
   if (L3==0) P0= dis[i*4+2];
   if (L4==0) P0= dis[i*4+3];
   delay(500);
   temp=P1;
   temp=temp|0x0f;
   temp=temp<<1;
   temp=temp|0x0f;
   P1=temp;
   }
  }
}
回复

使用道具 举报

7#
ID:1098647 发表于 2023-11-6 12:03 | 只看该作者
man1234567 发表于 2023-11-6 08:13
#include
#define uchar unsigned char
sbit L1=P1^0;

感谢大佬指正
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表