音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

c51編譯的加減計(jì)算器程序

作者:wyh7724 欄目:單片機(jī)

#include <reg51.h>
sbit E=P2^2;
sbit RW=P2^1;
sbit RS=P2^0;
sbit LEDLOCK=P3^2;
sbit KEYRD=P3^3;

unsigned CHAR code ledcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
         0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //數(shù)碼管段碼表
unsigned CHAR t0100ms,js100ms,t0sm,K1,led2,led1,js1000ms,K2,key0,key1,K3,i,plus,minus;
unsigned CHAR dispbuf[6];
unsigned LONG int cn,tmp,ip;
void scankey0(void);
void delay(unsigned int timea);
void scankey1(void);
void led(void);
void imbark(void);
void split();
void unite();
void  addition();
void count();


2樓: >>參與討論
wyh7724

void main()
{
E=0;   //取消LCD對(duì)LED的影響
RW=0;
RS=1;
    cn=0;
  i=0;
    while (1)
    {
       led();
      P1=0xf7;
     scankey0();
   led();
   led();
   led();
   P1=0xf7;
     scankey1();


       led();
   led();
       led();
   P1=0xfb;
     scankey0();
   led();
   led();
   led();
   P1=0xfb;
     scankey1();


     led();
       led();
   led();
   P1=0Xfd;
   scankey0();
   led();
   led();
       led();
   P1=0Xfd;
   scankey1();

    
   led();
   led();
       led();
   P1=0xfe;
   scankey0();
   led();
   led();
       led();
   P1=0xfe;
   scankey1();
   led();
   led();
    }
}

3樓: >>參與討論
wyh7724

void scankey0(void)
{
  
KEYRD=0;
SWITCH(P1)
{
  case 0x77: {K2=1;}break; // 鍵 "1"
   case 0xb7: {K2=1;}break; // 鍵 "2"
   case 0xd7: {K2=1;}break; // 鍵 "3
   case 0xe7:  {K2=1;}break; // 鍵 "4"

  case 0x7b: {K2=1;}break; // 鍵 "5
   case 0xbb: {K2=1;}break; // 鍵 "6
   case 0xdb: {K2=1;}break; // 鍵 "7
   case 0xeb: {K2=1;}break; // 鍵 "8

   case 0x7d: {K2=1;}break; // 鍵 "9
   case 0xbd: {K2=1;}break; // 鍵 "0
   case 0xdd: {K2=1;     }break; // 鍵 "0
  case 0xed: {K2=1;     }break; // 鍵 "-

   case 0x7e: {K2=1;}break; //鍵 "A"
   case 0xbe: {K2=1;}break; //鍵 "B"
   case 0xde: {K2=1;}break; //鍵 "C"
   case 0xee: {K2=1;}break; //鍵 "C"

     default:  break;
}
KEYRD=1;
}

4樓: >>參與討論
wyh7724

void scankey1(void)
{
  
KEYRD=0;
SWITCH(P1)
{
  case 0x77: {if(K2==1){K2=0;K1=1;K3=1;imbark();split(); }}break; // 鍵 "1"
   case 0xb7: {if(K2==1){K2=0;K1=2;K3=1;imbark();split(); }}break; // 鍵 "2"
   case 0xd7: {if(K2==1){K2=0;K1=3;K3=1;imbark();split(); }}break; // 鍵 "3
   case 0xe7:  {if(K2==1){K2=0;K1=4;K3=1;imbark();split(); }}break; // 鍵 "4"

  case 0x7b: {if(K2==1){K2=0;K1=5;K3=1;imbark();split(); }}break; // 鍵 "5
   case 0xbb: {if(K2==1){K2=0;K1=6;K3=1;imbark();split(); }}break; // 鍵 "6
   case 0xdb: {if(K2==1){K2=0;K1=7;K3=1;imbark();split(); }}break; // 鍵 "7
   case 0xeb: {if(K2==1){K2=0;K1=8;K3=1;imbark();split(); }}break; // 鍵 "8

   case 0x7d: {if(K2==1){K2=0;K1=9;K3=1;imbark();split(); }}break; // 鍵 "9
   case 0xbd: {if(K2==1){K2=0;K1=0;K3=1;imbark();split(); }}break; // 鍵 "0
   case 0xdd: {if(K2==1){K2=0;K3=2;imbark();split();} }break; // 鍵 "0
  case 0xed: {if(K2==1){K2=0;K3=3;imbark();split();}          }break; // 鍵 "-

   case 0x7e: {if(K2==1){K2=0;K3=4;imbark();split();}}break; //鍵 "A"
   case 0xbe: {}break; //鍵 "B"
   case 0xde: {}break; //鍵 "C"
   case 0xee: {}break; //鍵 "C"

     default:  break;
}
KEYRD=1;
}

5樓: >>參與討論
wyh7724

void unite()
{          
   i++;
K3=0;
    SWITCH(i)
      {
    case 0x01: { cn=K1; }break;
    case 0x02: { cn*=10;cn+=K1; }break;
    case 0x03:  { cn*=10;cn+=K1; }break;
    case 0x04: { cn*=10;cn+=K1; }break;
    case 0x05:  { cn*=10;cn+=K1; }break;
    case 0x06: { cn*=10;cn+=K1; }break;
      default:   break;
       }
}


void imbark(void)
{
SWITCH(K3)
   {
case 1: { unite(); }break;
case 2: { addition(); plus=1;}break;
case 3:  { addition(); minus=1; }break;
case 4: { count(); }break;
case 5:  {  }break;
case 6: { }break;
   default: K3=0;  break;
   }
}
void  addition()
{
  ip=cn;
  tmp=cn=0;
  i=0;
  K3=0;
}

6樓: >>參與討論
wyh7724

void  addition()
{
  ip=cn;
  tmp=cn=0;
  i=0;
  K3=0;
}
void count()
{
if(plus==1)
{
  cn=ip+cn;
  K3=0;
}
if(minus==1)
  {
  cn=ip-cn;
  K3=0;
  }
}

void split()
{
unsigned CHAR P;
P=7;
tmp=cn;
              
               while (P--)
              {  
                 dispbuf[6-P]=tmp%10;
                 tmp/=10;
              }
    
}

void led(void)
{    
      P1=0xff;LEDLOCK=1;LEDLOCK=0;
  led1=dispbuf[5];P0=ledcode[led1];
  P1=0xfe;LEDLOCK=1;LEDLOCK=0;
      delay(1);

  P1=0xff;LEDLOCK=1;LEDLOCK=0;
  led1=dispbuf[4];P0=ledcode[led1];
  P1=0xfd;LEDLOCK=1;LEDLOCK=0;
      delay(1);

  P1=0xff;LEDLOCK=1;LEDLOCK=0;  //關(guān)顯示
  led1=dispbuf[3];P0=ledcode[led1];
  P1=0xfb;LEDLOCK=1;LEDLOCK=0;
  delay(1);

  P1=0xff;LEDLOCK=1;LEDLOCK=0;
  led1=dispbuf[2];P0=ledcode[led1];
  P1=0xf7;LEDLOCK=1;LEDLOCK=0;
  delay(1);

  P1=0xff;LEDLOCK=1;LEDLOCK=0;  //關(guān)顯示
  led1=dispbuf[1];P0=ledcode[led1];
  P1=0xdf;LEDLOCK=1;LEDLOCK=0;
  delay(1);

  P1=0xff;LEDLOCK=1;LEDLOCK=0;
  led1=dispbuf[0];P0=ledcode[led1];
  P1=0xef;LEDLOCK=1;LEDLOCK=0;
  delay(1);


}


void delay(unsigned int timea)              
{
unsigned int j;  
while(timea--)            
{
  for(j=124;j!=0;j--)      
  {;}                  
}
}

7樓: >>參與討論
wyh7724

鍵盤掃描總要出現(xiàn)重復(fù)顯現(xiàn)。還不能對(duì)對(duì)小數(shù)/負(fù)號(hào)進(jìn)行計(jì)算,有那位高手能指點(diǎn)小弟下。

8樓: >>參與討論
zhenni8000

想請(qǐng)教一下,如何用單片機(jī)編寫一個(gè)簡(jiǎn)單的加減乘除運(yùn)算程序,能否告知一下,謝謝了!

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
[求助]找汽車AV類產(chǎn)品供應(yīng)商(機(jī)芯/屏/收音頭/電視接收...
微機(jī)原理
編碼器精度跟分辨率的關(guān)系
寫給想學(xué)單片機(jī)的朋友們!
請(qǐng)教高手:AVR的鍵盤讀入是不是和51的有很大區(qū)別?
免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)