久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

1602制作計算器

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:243612 發(fā)表于 2017-10-31 14:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
有誰可以幫忙看下程序嗎?就是程序無法做運算?
#include<reg52.h>
#include<stdio.h>
#define        uint unsigned int
#define uchar unsigned char
sbit lcdrs=P2^6;
sbit lcdrw=P2^5;
sbit lcden=P2^7;
void delay(uint z)
{
      uint x,y;
          for(x=z;x>0;x--)
              for(y=110;y>0;y--);
}
void write_com(uchar com)
{
   lcdrs=0;
   lcden=0;
   P0=com;
   delay(5);
   lcden=1;                                  
   delay(5);
   lcden=0;
}
void write_data(uchar date)
{
   lcdrs=1;
   lcden=0;
   P0=date;
   delay(5);
   lcden=1;
   delay(5);
   lcden=0;
}
void init()
{
   lcden=0;
   lcdrw=0;
   write_com(0x38);
   write_com(0x0c);
   write_com(0x06);
   write_com(0x01);
   write_com(0x30);
   write_com(0x80);
}
void write_char(uchar x,uchar y,uchar dat)
{
  if(y==0)
  {
    write_com(0x80+x);
  }
  else
  {
    write_com(0xc0+x);
  }
  write_data( dat);
}
void write_string(uchar x,uchar y,uchar *s)
{
   if(y==0)
  {
    write_com(0x80+x);
  }
  else
  {
    write_com(0xc0+x);
  }
  while(*s)
  {
    write_data(*s);
        s++;
  }
}
uchar keyscan()
{
  unsigned char cord_h,cord_l;
  P1=0x0f;
  cord_h=P1&0x0f;
   if(cord_h!=0x0f)
   {
     delay(50);
         if((P1&0x0f)!=0x0f)
         {
            cord_h=P1&0x0f;
                 P1=cord_h|0xf0;
                 cord_l=P1&0xf0;
                  while((P1&0xf0)!=0xf0);
                   return(cord_h+cord_l);
         }
   }
    return(0xff);
}
unsigned char keypro()
{
   switch(keyscan())
   {
        case 0x77:return '+';break;
            case 0x7b:return '-';break;
                case 0x7d:return 'x';break;
                case 0x7e:return '/';break;
                case 0xbb:return '3';break;
                case 0xbd:return '6';break;
                case 0xbe:return '9';break;
                case 0xb7:return '=';break;
            case 0xdb:return '2';break;
            case 0xdd:return '5';break;
                case 0xde:return '8';break;
            case 0xd7:return '0';break;
                case 0xeb:return '1';break;
                case 0xed:return '4';break;
                case 0xee:return '7';break;
                case 0xe7:return '.';break;
                default:return 0xff;break;
   }
}
  void main()
{
    unsigned char i,num,sign;
        unsigned char temp[16];
        bit firstflag;
        float a=0,b=0;
        unsigned char s;
        init();
        delay(10);
        write_com(0x01);
        while(1)
        {
          num=keypro();
          if(num!=0xff)
          {
            if(i==0)
                write_com(0x01);
                if(('+'==num)||(i==16)||('-'==num)||('*'==num)||('='==num)||('/'==num))
                {
                i=0;
                if(firstflag==0)
                  {
                   sscanf(temp,"%f",&a);
                   firstflag=1;
                   }
                   else
                   sscanf(temp,"%f",&b);
                        for(s=0;s<16;s++)
                        temp[s]=0;
                        write_char(0,1,num);
                        if(num!='=')
                        {
                        write_char(0,0,num);
                        sign=num;
                        }
                   else
                   {
                     firstflag=0;
                         switch(sign)
                         {
                           case '+':a=a+b;break;
                           case '-':a=a-b;break;
                           case '*':a=a*b;break;
                           case '/':a=a/b;break;
                           default:break;
                         }
                        sprintf(temp,"%f",a);
                        write_string(1,1,temp);
                        sign=0;a=b=0;
                        for(s=0;s<16;s++)
                        temp[s]=0;
                   }
                }
                else if(i<16)
                {
                  if((0==i)&&(temp[0]=0))
                  {
                    if(num=='0')
                        {
                          write_com(0x01);
                        }
                        else
                        {
                           temp[0]=num;
                           i++;
                           write_char(0,0,num);
                        }
                  }
                  else
                  {
                    temp[i]=num;
                        write_char(i,0,num);
                        i++;
                  }
                }
          }
        }

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

使用道具 舉報

沙發(fā)
ID:244827 發(fā)表于 2017-11-1 09:32 | 只看該作者
好厲害
回復(fù)

使用道具 舉報

板凳
ID:244857 發(fā)表于 2017-11-1 10:32 來自手機 | 只看該作者
厲害了
回復(fù)

使用道具 舉報

地板
ID:244874 發(fā)表于 2017-11-1 10:48 | 只看該作者
厲害了
回復(fù)

使用道具 舉報

5#
ID:244874 發(fā)表于 2017-11-1 10:49 | 只看該作者
厲害啊,學(xué)習(xí)
回復(fù)

使用道具 舉報

6#
ID:241249 發(fā)表于 2017-11-2 21:04 | 只看該作者
運行不起來么
回復(fù)

使用道具 舉報

7#
ID:245732 發(fā)表于 2017-11-3 16:02 | 只看該作者
#include <reg51.h>
    sbit K1=P2^0;
    sbit K2=P2^1;
    sbit K3=P2^2;
    sbit K4=P2^3;
    sbit K5=P2^4;
        sbit K6=P2^5;
        sbit K7=P2^6;
        sbit K8=P2^7;
        sbit K9=P1^5;
        sbit K10=P1^6;
        sbit bell=P1^7;
        sbit RS = P1^0;
    sbit RW = P1^1;
    sbit E  = P1^2;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
        void init();
        void wcom(unsigned char i);       
    void wdata(unsigned char i);
    void ifnotbusy(void);
        unsigned char code music_H[]={0xfc,0xfc,0xfd,0xfd,0xfd,0xfd,0xfe,0xfe, 0xfa,0xfb,0xfb,0xfb,0xfa,    0xf9,0xfa,0xfb,   0xfb,0xfa,0xfb,0xfb,0xfa,0xf9,0xf9,0xfa,0xf9,0xfb,0xfa,0xfa,0xf9,0xf9,0xfb,0xf9,0xf9,0xfb,0xf9,    0xf9,0xf9,0xfa,    0xf9,0xf9,0xfa,    0xfb,0xfb,0xfb,0xfb,0xfb,0xf9,0xfa};
         unsigned char code music_L[]={0x8f,0xef,0x45,0x6c,0xb4,0xf4,0x2e,0x3d, 0x8c,0x68,0xe9,0x68,0xbc,    0xe1,0x8c,0x68,   0x68,0x8c,0x68,0x68,0x8c,0xe1,0x21,0x8c,0xe1,0x68,0xd8,0x8c,0x21,0xe1,0x68,0x21,0xe1,0x68,0x21,    0x21,0x21,0x8c,    0x21,0x21,0x8c,    0xe9,0xe9,0xe9,0xe9,0x68,0x21,0x8c};
         unsigned char code Time[]={500,500,500,500,500,500,500,500,500,500,500,500,500,250,250,500,500,800,500,500,500,500,250,250,500,500,800,500,500,1000,500,500,1000,500,500,500,500,500,500,500,500,500,500,500,500,500};
         int i;
         void fy();
         void delay( int k);
        main()
        {
    TMOD=0x01; //選擇方式1
    TH0=music_H[i]; //        高八位
    TL0=music_L[i]; //低八位
    //TR0=1;   //啟動計時
         while(1){
           if(K1==0)
           {delay(10);
              if(K1==0)
                  {         
                      i=0;
                      fy();
                          init();
                           wcom(0x80);
                           wdata(0x31);

                  }
                }
                 
           if(K2==0)
           {delay(10);
              if(K2==0)
                  {
                     i=1;
                         fy();
                         init();
                         wcom(0x80);
                           wdata(0x32);

                  }
                  }
                  if(K3==0)
           {delay(10);
              if(K3==0)
                  {
                             i=2;
                         fy();
                         init();
                         wcom(0x80);
                           wdata(0x33);
                  }
                  }
                 if(K4==0)
           {delay(10);
              if(K4==0)
                  {             i=3;
                         fy();
                         init();
                         wcom(0x80);
                           wdata(0x34);
                  }
                  }                
                  if(K5==0)
           {delay(10);

              if(K5==0)
                  {             i=4;
                         fy();
                         init();
                         wcom(0x80);
                           wdata(0x35);
                  }
                  }          
                  if(K6==0)
           {delay(10);
              if(K6==0)
                  {             i=5;
                         fy();
                         init();
                                  wcom(0x80);
                           wdata(0x36);
                  }
                  }          
                            if(K7==0)
           {delay(10);
              if(K7==0)
                  {               i=6;

                         fy();
                         init();
                         wcom(0x80);
                           wdata(0x37);
                  }
                  }
                   if(K8==0)
           {delay(10);
              if(K8==0)
                  {               i=7;

                         fy();
                         init();
                         wcom(0x80);
                           wdata(0x38);
                  }
                  }
                  if(K9==0)
           {delay(10);
              if(K9==0)       
                  
                  {           i=8;
                           wcom(0x80);
                           wdata('l');
                           wcom(0x81);
                           wdata('z');
                           wcom(0x82);
                           wdata('l');
                           wcom(0x83);
                           wdata('h');

                  while(1)
                  {
                     fy();
                          i++;
                           if(i>=25)
                          break;
                          
                           }
                        }
               
                   }
                             if(K10==0)
           {delay(10);
              if(K10==0)       
                  
                  {           i=40;
                           wcom(0x80);
                           wdata('h');
                           wcom(0x81);
                           wdata('l');
                           wcom(0x82);
                           wdata('w');

                  while(1)
                  {
                     fy();
                          i++;
                           if(i>=53)
                          break;
                          
                           }
                        }
               
                   }
                  }
                  }       
               

       
  void fy()
  {        int j=0;
    TR0=1;
    while(j<Time[i])         //Time[i]music_Time[i]
   { if(TF0==1)         //定時/計數(shù)器溢出標(biāo)志位 TF0=1 表示溢出
           { TF0=0;
             TH0=music_H[i];
                 TL0=music_L[i];
                 bell=!bell;
                 j++;
                }
    }
           TR0=0;
  }       
  void delay(int k)
  {
    int b,d;
         for (d=0;d<k;d++)
         {
    for(b=0;b<250;b++);
  }                                          
  }
  void init()
  {         
    wcom(0x01);
    wcom(0x38);
    wcom(0x06);
    wcom(0x0c);

  }
  void ifnotbusy()
{ P0=0xff;
RS=0;
RW=1;
E=0;
E=1;
while(P0&0x80)
{
E=0;E=1;
}
}
void wcom(unsigned char j)
{ifnotbusy();
E=0;
RS=0;
RW=0;
P0=j;
E=1;
E=0;
}                  
void wdata(unsigned char j)
{ifnotbusy();
E=0;
RS=1;
RW=0;
P0=j;
E=1;
E=0;
}
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 99re超碰| 不卡一区| 中文字幕在线第一页 | 亚洲成av | 欧美一区二区三区在线 | 亚洲精品乱码久久久久v最新版 | 成人国产在线观看 | 一区二区三区四区免费在线观看 | 国产精品自产拍在线观看蜜 | 超碰在线播 | 99热这里都是精品 | 欧美日韩在线一区二区三区 | 久久人体视频 | 日本欧美在线视频 | 日韩中文字幕在线观看 | 华丽的挑战在线观看 | 亚洲国产成人精品女人久久久 | 成av在线| 中文字幕亚洲一区二区三区 | 国产乱码精品一区二区三区五月婷 | 视频一区二区在线观看 | 91国内产香蕉 | 欧美一级视频免费看 | 国产色| 涩涩视频网站在线观看 | 亚洲成人综合网站 | 精品久久中文 | 欧美一级免费看 | 久久精品免费观看 | 午夜黄色| 色综合欧美 | 国产精品99精品久久免费 | 欧美精品二区 | 99久久免费观看 | 激情久久久久 | 亚洲欧洲精品成人久久奇米网 | 四季久久免费一区二区三区四区 | 嫩草视频网站 | 成人久久| 三级免费毛片 | 久久久久资源 |