<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 電子秤AD TM7710/TM7709測試程序

          電子秤AD TM7710/TM7709測試程序

          作者: 時間:2016-11-29 來源:網(wǎng)絡 收藏
          void keyin(void) interrupt 0 using 0 // 中斷 0 服務程序
          {char X,i;
          long int y;
          send7289(0x15); // 接收數(shù)據(jù)
          X=receive();
          cs7289=1;
          X=X&0x1f;
          switch(X)
          {case 0xf : {zongjia=zongjia+jine;
          qingdan[qb][0]=sh;
          qingdan[qb][1]=danjia[sh];
          qingdan[qb][2]=shizhong;
          qingdan[qb][3]=jine;
          qb++; sh=0;dot=0;
          danjia[0]=0;
          for(i=0;i<6;i++) jiage[i]=0;
          }
          break; // 累加
          case 0xe : pizhong=zhongliang; break; // 去皮
          case 0xd : {danjia[sh]=0;dot=0;} break; // 清單價
          case 0xc : {zongjia=0;jine=0;dot=0;list=0;qb=0;pizhong=0;
          if(sh==0) danjia[sh]=0;} break; // 總清
          case 0xa : dot=1;break; // 點
          case 0xb : list=1;break; // 清單
          case 0x19 : sh=10;break;
          case 0x18 : sh=9;break;
          case 0x17 : sh=8;break;
          case 0x16 : sh=7;break;
          case 0x15 : sh=6;break;
          case 0x14 : sh=5;break;
          case 0x13 : sh=4;break;
          case 0x12 : sh=3;break;
          case 0x11 : sh=2;break;
          case 0x10 : sh=1;break;
          case 0x1f :
          case 0x1e :
          case 0x1d :
          case 0x1c :
          case 0x1a : break;
          case 0x1b : dot=1;break;
          default :{ if(dot==0) {jiage[0]=jiage[1];jiage[1]=jiage[2];jiage[2]=X;}
          if(dot==1) {jiage[4]=X;dot++; }
          else if(dot==2) {jiage[5]=X; dot++;}
          else if(dot>2) break;
          // lcdi_send(0x84);
          y=jiage[0];
          y=y*10+jiage[1];
          y=y*10+jiage[2];
          y=y*10+jiage[4];
          danjia[sh]=y*10+jiage[5];
          }
          }
          while(key7289==0); // 等待鍵盤松開
          }
          /*
          void ad(void) interrupt 2 using 1
          {short x,y;
          x=ad_244;
          y=x;
          if(x&0x80) baojing();
          else x=x>>4;
          y=y&0xf;
          bcd[x]=y;
          } */
          // 初始頁面
          void ini() // 輸入收銀員編號 , 日期
          {short i,j;
          char X;
          lcdi_send(0x80); // 提示輸入收銀員編號
          i=0;
          while(message1[i]) lcdd_send(message1[i++]);
          for(i=8;i<12;i++)
          {
          while(key7289);
          send7289(0x15); // 接收數(shù)據(jù)
          X=receive();
          cs7289=1;
          bianhao[i]=X+0x30;
          lcdi_send(0x93);
          for(j=8;j<16;j++) lcdd_send(bianhao[j]);
          while(key7289==0);
          }
          lcdi_send(0x88); // 提示輸入日期
          i=0;
          while(message2[i]) lcdd_send(message2[i++]);
          for(i=0;i<10;i++) // 輸入日期
          {if(i==4||i==7) i++;
          while(key7289==1);
          send7289(0x15); // 接收數(shù)據(jù)
          X=receive();
          cs7289=1;
          riqi[i]=X+0x30;
          j=0;
          lcdi_send(0x9a);
          for(j=0;j<10;j++) lcdd_send(riqi[j]);
          while(key7289==0);
          }
          while(key7289);
          nop1();
          while(key7289==0);
          nop1();
          lcdi_send(0x1);
          }
          //LCD 子程序
          void ini_lcd() //LCD 初始化子程序
          {
          lcdi_send(0x30);
          lcdi_send(0x1); // 總清
          lcdi_send(0xc);
          lcdi_send(0x2); // 光標右移, AC+1
          }
          void lcdd_send(short X) //LCD 發(fā)送數(shù)據(jù)子程序
          {chk_busy();
          nop1();
          lcd_di=1;lcd_rw=0;lcd_e=0;
          P0=X;
          for(dealy=0;dealy<5;dealy++);//
          lcd_e=1; X=X;
          P0=0xff;
          }
          void lcdi_send(short X) //LCD 發(fā)送指令子程序
          {chk_busy();
          nop1();
          lcd_di=0;lcd_rw=0;lcd_e=0;
          P0=X;
          for(dealy=0;dealy<5;dealy++);//
          lcd_e=1; X=X;
          P0=0xff;
          }
          void chk_busy()
          {short i=0xff;
          while(i&0x80)
          {lcd_di=0;
          lcd_rw=1;
          lcd_e=0;
          i=P0;
          lcd_e=1;
          }
          }
          //7289 子程序
          void ini_7289()
          {short i;
          cs7289=1; key7289=1; dio7289=1; //7289 初始化子程序
          for(i=0;i<50;i++)
          for(dealy=0;dealy<5000;dealy++); // 延時 25ms
          send7289(0xa4); cs7289=1;
          }
          void send7289(short X) //7289 發(fā)送數(shù)據(jù)子程序
          {short i,j=1;
          cs7289=0;
          for(dealy=0;dealy<6;dealy++); // 延時 50us
          for(i=7;i>=0;i--)
          {j=j<
          dio7289=X&j;
          j=1;j=1;clk7289=1;
          for(dealy=0;dealy<1;dealy++) ; // 延時 10us
          clk7289=0;
          for(dealy=0;dealy<1;dealy++) ; // 延時 10us
          }
          dio7289=0;
          }
          short receive() //7289 接收數(shù)據(jù)子程序
          {short i,X=0;
          dio7289=1;
          for(dealy=0;dealy<6;dealy++); // 延時 50us
          for(i=0;i<=7;i++)
          {clk7289=1;
          for(dealy=0;dealy<1;dealy++); // 延時 10us
          X=X<<1;
          if(dio7289)X++;
          clk7289=0;
          for(dealy=0;dealy<1;dealy++); // 延時 10us
          }
          dio7289=0;
          return(X);
          }
          //ad
          //AD 子程序
          int ad1()
          {short k,x;
          int ad_zhi=0,xz;
          EA=0;
          ad_start=1;
          for(k=0;k<5;k++)
          { while(ad_stb);
          x=ad_244;
          x=x&0xf;
          ad_zhi=ad_zhi*10+x;
          }
          ad_start=0;
          EA=1;EX0=1;
          ad_zhi=ad_zhi>>1;
          xz=ad_zhi-50;
          xz=xz/100;
          ad_zhi=ad_zhi+xiuzheng[xz];
          return(ad_zhi);
          void d_change(long X)
          {char qian,bai,shi,ge,shifen,baifen;
          long int yu;
          if(X>999999) error1();
          qian=X/100000; yu=X%100000;
          bai=yu/10000; yu=yu%10000;
          shi=yu/1000; yu=yu%1000;
          ge=yu/100; yu=yu%100;
          shifen=yu/10;
          baifen=yu%10;
          qian=qian+0x30;
          bai=bai+0x30;
          shi=shi+0x30;
          ge=ge+0x30;
          shifen=shifen+0x30;
          baifen=baifen+0x30;
          if(qian==0x30)
          {qian=0x20;
          if(bai==0x30)
          {bai=0x20;
          if(shi==0x30) shi=0x20;
          }
          }
          shuju[0]=qian;
          shuju[1]=bai;
          shuju[2]=shi;
          shuju[3]=ge;
          shuju[4]=.;
          shuju[5]=shifen;
          shuju[6]=baifen;
          }
          void baojing()
          {short i;
          for(i=0;i<50;i++)
          {baoj=0;
          for(dealy=0;dealy<10;dealy++);
          baoj=1;
          for(dealy=0;dealy<10;dealy++);
          }
          }
          參考書目:
          《電子電路設計與實踐》 山東科學技術出版社 姚福安著
          《新型集成電路》 西安電子科技大學出版社 楊振江著
          《 8051 單片機實踐與應用》 清華大學出版社 吳金戎著
          《積分式 A/D 轉換器其他專用集成電路分冊》
          上一頁 1 2 下一頁

          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();