找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1600|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

求一個(gè)關(guān)于實(shí)現(xiàn)按鍵顯示字符的單片機(jī)代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
實(shí)現(xiàn)按鍵檢測(cè)功能,0-F按鍵中有一個(gè)按鍵按下,數(shù)碼管顯示對(duì)應(yīng)的字符,并且LED0-7顯示對(duì)應(yīng)的二進(jìn)制字節(jié)。自己寫的代碼有問題 在2樓

1699206945539.jpg (67.25 KB, 下載次數(shù): 92)

1699206945539.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1098647 發(fā)表于 2023-11-6 02:03 | 只看該作者
我自己寫了個(gè)代碼,但是為什么運(yùn)行出來不對(duì),有兩個(gè)警報(bào)
#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;
   }
  }
}
回復(fù)

使用道具 舉報(bào)

板凳
ID:120219 發(fā)表于 2023-11-6 04:20 | 只看該作者
P0沒上拉電阻
回復(fù)

使用道具 舉報(bào)

地板
ID:584814 發(fā)表于 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;
   }
  }
}
已進(jìn)行修改,可通過編譯,不保證運(yùn)行。
主要問題:符號(hào)錯(cuò)亂,包括但不限于丟失、全角、錯(cuò)用等。
個(gè)人感覺:搞科研的如果不細(xì)心不如不做,不喜歡自己檢查的不如不玩。
回復(fù)

使用道具 舉報(bào)

5#
ID:161164 發(fā)表于 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. }
復(fù)制代碼

改為
  1. void delay(unsigned int time)
  2. {
  3. unsigned int j;
  4. for(j=0;j<time;j++)
  5. {}
  6. }
復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

6#
ID:180919 發(fā)表于 2023-11-6 09:12 | 只看該作者
標(biāo)點(diǎn)錯(cuò)的地方太多了。
#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;
   }
  }
}
回復(fù)

使用道具 舉報(bào)

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

感謝大佬指正
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表