新聞中心

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

        電子秤AD TM7710/TM7709測(cè)試程序

        作者: 時(shí)間:2016-11-29 來(lái)源:網(wǎng)絡(luò) 收藏
        void keyin(void) interrupt 0 using 0 // 中斷 0 服務(wù)程序
        {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; // 清單價(jià)
        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; // 點(diǎn)
        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); // 等待鍵盤(pán)松開(kāi)
        }
        /*
        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;
        } */
        // 初始頁(yè)面
        void ini() // 輸入收銀員編號(hào) , 日期
        {short i,j;
        char X;
        lcdi_send(0x80); // 提示輸入收銀員編號(hào)
        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); // 光標(biāo)右移, 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++); // 延時(shí) 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++); // 延時(shí) 50us
        for(i=7;i>=0;i--)
        {j=j<
        dio7289=X&j;
        j=1;j=1;clk7289=1;
        for(dealy=0;dealy<1;dealy++) ; // 延時(shí) 10us
        clk7289=0;
        for(dealy=0;dealy<1;dealy++) ; // 延時(shí) 10us
        }
        dio7289=0;
        }
        short receive() //7289 接收數(shù)據(jù)子程序
        {short i,X=0;
        dio7289=1;
        for(dealy=0;dealy<6;dealy++); // 延時(shí) 50us
        for(i=0;i<=7;i++)
        {clk7289=1;
        for(dealy=0;dealy<1;dealy++); // 延時(shí) 10us
        X=X<<1;
        if(dio7289)X++;
        clk7289=0;
        for(dealy=0;dealy<1;dealy++); // 延時(shí) 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++);
        }
        }
        參考書(shū)目:
        《電子電路設(shè)計(jì)與實(shí)踐》 山東科學(xué)技術(shù)出版社 姚福安著
        《新型集成電路》 西安電子科技大學(xué)出版社 楊振江著
        《 8051 單片機(jī)實(shí)踐與應(yīng)用》 清華大學(xué)出版社 吳金戎著
        《積分式 A/D 轉(zhuǎn)換器其他專(zhuān)用集成電路分冊(cè)》
        上一頁(yè) 1 2 下一頁(yè)

        評(píng)論


        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 鲜城| 溆浦县| 偏关县| 三原县| 兴国县| 玉田县| 霍林郭勒市| 渭源县| 怀化市| 辽宁省| 淄博市| 道孚县| 尖扎县| 五原县| 依兰县| 昌乐县| 泰宁县| 尤溪县| 乌苏市| 喀喇| 富宁县| 阜阳市| 淮南市| 宁河县| 得荣县| 万载县| 宁夏| 马公市| 平果县| 卓资县| 临泽县| 常德市| 黔东| 通化市| 安宁市| 嘉义县| 喀喇沁旗| 全南县| 弋阳县| 兴化市| 铅山县|