1. 程式人生 > >鍵盤輸入的數字在串列埠除錯助手顯示,然後再到數碼管(C語音版本)

鍵盤輸入的數字在串列埠除錯助手顯示,然後再到數碼管(C語音版本)

//按下哪一個鍵就在數碼管上顯示數字,並且傳送到串列埠除錯助手上
#include <reg52.h>
#include "uart.h"
typedef unsigned char uint8;
typedef unsigned int  uint16;

uint8 number[]={0x0c0,0x0F9,0x0A4,0x0B0,
    0x99,0x92,0x82,0xF8,
    0x80,0x90,0x88,0x83,
    0xC6,0xA1,0x86,0x8E};
uint16 n,num=0;
void UART_init()
{

 TMOD = 0x20;   //0010 0000   說明在定時器1的工作方式2下工作
 TH1  = 0xFD;
 TL1  = 0xFD;

 TR1  = 1;    //定時器1執行控制位=1,說明開始計時
 SCON = 0x50;   //0101 0000   前兩位說明在串列埠工作方式1  第三位SM2在方式1設定為0  第四位REN=1允許串列埠接收
}

void delay()
{
  n=1000;
  while(n--);
}


main()
{
 P0 = 0xFF;  // led初始化
 
 ENLED1 = 0;
 ENLED2 = 1; //3/8譯碼器使能

 ADDR2 = 0;
 ADDR1 = 0;
 ADDR0 = 0; //選中第一個數碼管


    UART_init();

 while (1)
 {
  keyOut1 = 0;
  keyOut2 = 1;
  keyOut3 = 1;
  keyOut4 = 1;
  if(keyIn1 == 0)
  {
   delay();
   if(keyIn1 == 0)
      P0 =number[0];
      SBUF=0;
  }
  if(keyIn2 == 0)
  {
   delay();
   if(keyIn2 == 0)
      P0 =number[1];
      SBUF=1;
  }
  if(keyIn3 == 0)
  {
   delay();
   if(keyIn3 == 0)
       P0 =number[2];
    SBUF=2;
  } 
  if(keyIn4 == 0)
  {
   delay();
   if(keyIn4 == 0)
      P0 =number[3];
      SBUF=3;
  }
  while((keyIn1 == 0)||(keyIn2 == 0)||
        (keyIn3 == 0)||(keyIn4 == 0));
  
  keyOut1 = 1;
  keyOut2 = 0;
  keyOut3 = 1;
  keyOut4 = 1;
  if(keyIn1 == 0)
  {
   delay();
   if(keyIn1 == 0)
      P0 =number[4];
      SBUF=4;
  }
  if(keyIn2 == 0)
  {
   delay();
   if(keyIn2 == 0)
      P0 =number[5];
      SBUF=5;
  }
  if(keyIn3 == 0)
  {
   delay();
   if(keyIn3 == 0)
       P0 =number[6];
    SBUF=6;
  } 
  if(keyIn4 == 0)
  {
   delay();
   if(keyIn4 == 0)
      P0 =number[7];
      SBUF=7;
  }
  while((keyIn1 == 0)||(keyIn2 == 0)||
        (keyIn3 == 0)||(keyIn4 == 0));

  keyOut1 = 1;
  keyOut2 = 1;
  keyOut3 = 0;
  keyOut4 = 1;
  if(keyIn1 == 0)
  {
   delay();
   if(keyIn1 == 0)
      P0 =number[8];
      SBUF=8;
  }
  if(keyIn2 == 0)
  {
   delay();
   if(keyIn2 == 0)
      P0 =number[9];
      SBUF=9;
  }
  if(keyIn3 == 0)
  {
   delay();
   if(keyIn3 == 0)
      P0 =number[10];
      SBUF=10;
  } 
  if(keyIn4 == 0)
  {
   delay();
   if(keyIn4 == 0)
      P0 =number[11];
      SBUF=11;
  }
  while((keyIn1 == 0)||(keyIn2 == 0)||
        (keyIn3 == 0)||(keyIn4 == 0));

  keyOut1 = 1;
  keyOut2 = 1;
  keyOut3 = 1;
  keyOut4 = 0;
  if(keyIn1 == 0)
  {
   delay();
   if(keyIn1 == 0)
       P0 =number[12];
    SBUF=12;

  }
  if(keyIn2 == 0)
  {
   delay();
   if(keyIn2 == 0)
      P0 =number[13];
      SBUF=13;
  }
  if(keyIn3 == 0)
  {
   delay();
   if(keyIn3 == 0)
       P0 =number[14];
    SBUF=14;
  } 
  if(keyIn4 == 0)
  {
   delay();
   if(keyIn4 == 0)
       P0 =number[15];
    SBUF=15;
  }
  
    while((keyIn1 == 0)||(keyIn2 == 0)||
        (keyIn3 == 0)||(keyIn4 == 0));
  
 }
}

我用到的是直接法,大家還可以試試掃描法