|
本程序可以設(shè)置切斷物品的長度(mm),批次。速度。每批次切斷的數(shù)量。
名稱:切管機
功能:可設(shè)置長度.速度,批次,產(chǎn)量
12864顯示
24C02存儲
編寫:鞠寶倫
版本:I
編寫日期:2016.03.025
修改:無
修改日期:無
- #include<reg52.h>
- #include"12864.h"
- #include"delay.h"
- #include"i2c.h"
- #include"def.h"
- //uchar fer[4];
- #define AT24C02 0xa0 //AT24C02 地址 這個地址是自己設(shè)置的 全局宏定義
- //unsigned char xdata fer[40]; //外部數(shù)據(jù)存儲器
- sbit set=P3^2;//設(shè)置。
- sbit up=P3^3;//加.
- sbit down=P3^4;//減.
- sbit strat=P3^5;//啟動.
- uchar set_num=0;
- uint Changdu=10,pici=10,sudu=10,Changdu1=0,pici1=0,sudu1=0,mcsl=10;
- uint i=0,o=0,k=0,count,cou=0;
- uchar FFW_flag=0;
- //uchar REV_flag=0;
- uchar stop_flag=0;
- uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};
- //uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};
- uchar code lineA_data[]={" 福泰克 "};
- uchar code lineB_data[]={" 電子有限公司 "};
- uchar code lineC_data[]={" 我愛單片機 "};
-
- uchar code line0_data[]={"長度: mm "};
- uchar code line1_data[]={"切斷: 000/ 次"};
- uchar code line2_data[]={"速度: r/s "};
- uchar code line3_data[]={"產(chǎn)量: 000/ PCS"};
- uchar code linea0_data[]={"長度設(shè)定: mm"};//長度設(shè)定。
- uchar code linea1_data[]={"切斷批次: 次"};//批次設(shè)定
- uchar code linea2_data[]={"速度設(shè)定: rs"};//速度設(shè)定。
- uchar code linea3_data[]={"產(chǎn)量設(shè)定: pcs"}; //計數(shù)器
-
- /////////////////////////////////////////////////////////
- void lcd_pos(uchar X,uchar Y)
- {
- uchar pos;
- if (X==1) {X=0x80;}
- else if (X==2) {X=0x90;}
- else if (X==3) {X=0x88;}
- else if (X==4) {X=0x98;}
- pos = X+Y ;
- lcd_wcmd(pos); //顯示地址
- }
- /////////////////////////////////////////////////////////////
- void Changdu_display() //長度
- {
- lcd_wdat(Changdu/100%10+0x30);
- lcd_wdat(Changdu/10%10+0x30);
- lcd_wdat(Changdu%10+0x30);
- }
- void pici_display() //批次
- {
- lcd_wdat(pici/100%10+0x30);
- lcd_wdat(pici/10%10+0x30);
- lcd_wdat(pici%10+0x30);
- }
- void sudu_display() //速度
- {
- // lcd_wdat(sudu/100%10+0x30);
- lcd_wdat(sudu/10%10+0x30);
- lcd_wdat(sudu%10+0x30);
- }
- void count_display() //延時時間
- {
- lcd_wdat(count/100%10+0x30);
- lcd_wdat(count/10%10+0x30);
- lcd_wdat(count%10+0x30);
- }
- void display()
- {
- lcd_pos(1,5);
- lcd_wdat(Changdu/100%10+0x30);
- lcd_wdat(Changdu/10%10+0x30);
- lcd_wdat(Changdu%10+0x30);
- lcd_pos(2,5);
- lcd_wdat(pici/100%10+0x30);
- lcd_wdat(pici/10%10+0x30);
- lcd_wdat(pici%10+0x30);
- lcd_pos(3,5);
- // lcd_wdat(sudu/100%10+0x30);
- lcd_wdat(sudu/10%10+0x30);
- lcd_wdat(sudu%10+0x30);
- lcd_pos(4,5);
- lcd_wdat(count/100%10+0x30);
- lcd_wdat(count/10%10+0x30);
- lcd_wdat(count%10+0x30);
- }
- /////////////////////////////////////////////////////////////
- void display1() //設(shè)置過后的數(shù)據(jù)顯示
- {
- lcd_pos(1,3);
- lcd_wdat(Changdu/100%10+0x30);
- lcd_wdat(Changdu/10%10+0x30);
- lcd_wdat(Changdu%10+0x30);
- delay_ms(2);
-
- lcd_pos(2,5);
- lcd_wdat(pici/100%10+0x30);
- lcd_wdat(pici/10%10+0x30);
- lcd_wdat(pici%10+0x30);
- delay_ms(2);
- lcd_pos(2,3);
- lcd_wdat(pici1/100%10+0x30);
- lcd_wdat(pici1/10%10+0x30);
- lcd_wdat(pici1%10+0x30);
- delay_ms(2);
- lcd_pos(3,3);
- // lcd_wdat(sudu/100%10+0x30);
- lcd_wdat(sudu/10%10+0x30);
- lcd_wdat(sudu%10+0x30);
- delay_ms(2);
- lcd_pos(4,3);
- lcd_wdat(cou/100%10+0x30);
- lcd_wdat(cou/10%10+0x30);
- lcd_wdat(cou%10+0x30);
- delay_ms(2);
- lcd_pos(4,5);
- lcd_wdat(count/100%10+0x30);
- lcd_wdat(count/10%10+0x30);
- lcd_wdat(count%10+0x30);
- }
- void ds_display()
- {
- lcd_pos(1,0);
- for(i=0;i<16;i++)
- {
- lcd_wdat(line0_data[i]);
- delay_ms(1);
- }
- lcd_pos(2,0);
- for(i=0;i<16;i++)
- {
- lcd_wdat(line1_data[i]);
- delay_ms(1);
- }
- lcd_pos(3,0);
- for(i=0;i<16;i++)
- {
- lcd_wdat(line2_data[i]);
- delay_ms(1);
- }
- lcd_pos(4,0);
- for(i=0;i<16;i++)
- {
- lcd_wdat(line3_data[i]);
- delay_ms(1);
- }
-
- }
- ////////////////////////////////初始化廣告圖表////////////////////////////////
- void cs_display()
- {
- lcd_pos(1,0);
- for(i=0;i<16;i++)
- {
- lcd_wdat(lineA_data[i]);
- delay_ms(1);
- }
- lcd_pos(2,0);
- for(i=0;i<16;i++)
- {
- lcd_wdat(lineB_data[i]);
- delay_ms(1);
- }
- lcd_pos(4,0);
- for(i=0;i<16;i++)
- {
- lcd_wdat(lineC_data[i]);
- delay_ms(1);
- }
-
- }
- ///////////////////////////////////////////////////////////////////
- void scankey()
- {
- uchar mun=0;
- if(set==0) //設(shè)置
- {
- delay_ms(10);
- if(set==0)
- {
- delay_ms(10);
- while(!set);
- set_num++;
- lcd_clr();
- lcd_pos(1,0);
- for(i=0;i<16;i++)
- {
- lcd_wdat(linea0_data[i]);
- delay_ms(1);
- }
- lcd_pos(2,0);
- for(i=0;i<16;i++)
- {
- lcd_wdat(linea1_data[i]);
- delay_ms(1);
- }
- lcd_pos(3,0);
- for(i=0;i<16;i++)
- {
- lcd_wdat(linea2_data[i]);
- delay_ms(1);
- }
- lcd_pos(4,0);
- for(i=0;i<16;i++)
- {
- lcd_wdat(linea3_data[i]);
- delay_ms(1);
- }
- display();
- if(set_num==1)
- {
-
- lcd_wcmd(0x0c); //關(guān)光標(biāo)關(guān)閃爍
- lcd_pos(1,5);
- Changdu_display();
-
- lcd_pos(1,6);
- lcd_wcmd(0x0f); //開光標(biāo)并閃爍
-
- }
- if(set_num==2)
- {
- lcd_wcmd(0x0c); //關(guān)光標(biāo)關(guān)閃爍
- lcd_pos(2,5);
- pici_display();
- lcd_pos(2,6);
- lcd_wcmd(0x0f); //開光標(biāo)并閃爍
- }
- if(set_num==3)
- {
- lcd_wcmd(0x0c); //關(guān)光標(biāo)關(guān)閃爍
- lcd_pos(3,5);
- sudu_display();
- lcd_pos(3,6);
- lcd_wcmd(0x0f); //開光標(biāo)并閃爍
- }
- if(set_num==4)
- {
- lcd_wcmd(0x0c); //關(guān)光標(biāo)關(guān)閃爍
- lcd_pos(4,5);
- count_display();
- lcd_pos(4,6);
- lcd_wcmd(0x0f); //開光標(biāo)并閃爍
- }
-
- if(set_num==5)
- {
- set_num=0;
- display();
- //display1();
- delay_ms(5);
- lcd_wcmd(0x0c); //關(guān)光標(biāo)關(guān)閃爍
- write24c02(110,Changdu);
- write24c02(111,pici);
- write24c02(112,sudu);
- write24c02(113,count);
- // write24c02(114,old5);
- // write24c02(115,old6);
- delay_ms(1);
- lcd_clr();
- ds_display();
- //display();
-
- display1(); //設(shè)置過后的數(shù)據(jù)顯示
-
- }
-
- }
- }
- if(set_num!=0)
- {
- if(down==0) //--
- {
- delay_ms(5);
- if(down==0)
- {
- if(set_num==1)
- {
- Changdu--;
- if(Changdu==0)Changdu=100;lcd_pos(1,5);Changdu_display();lcd_pos(1,6);
- }
- if(set_num==2)
- {
- pici--;
- if(pici==0)pici=100;lcd_pos(2,5);pici_display();lcd_pos(2,6);
- }
- if(set_num==3)
- {
- sudu--;
- if(sudu==0)sudu=30;lcd_pos(3,5);sudu_display();lcd_pos(3,6);
- }
- if(set_num==4)
- {
- count--;
- if(count==0)count=100;lcd_pos(4,5);count_display();lcd_pos(4,6);
- }
-
- mun=0;
- while(!down)
- {
- delay_ms(5);
- if(mun!=100)mun++;
- else
- {
- if(set_num==1)
- {
- Changdu--;
- if(Changdu==0)Changdu=100;lcd_pos(1,5);Changdu_display();lcd_pos(1,6);
- }
- if(set_num==2)
- {
- pici--;
- if(pici==0)pici=100;lcd_pos(2,5);pici_display();lcd_pos(2,6);
- }
- if(set_num==3)
- {
- sudu--;
- if(sudu==0)sudu=30;lcd_pos(3,5);sudu_display();lcd_pos(3,6);
- }
- if(set_num==4)
- {
- count--;
- if(count==0)count=100;lcd_pos(4,5);count_display();lcd_pos(4,6);
- }
-
- }
- }
- }
- }
- if(up==0) //++
- {
- delay_ms(5);
- if(up==0)
- {
- if(set_num==1)
- {
- Changdu++;
- if(Changdu>100)Changdu=0;lcd_pos(1,5);Changdu_display();lcd_pos(1,6);
- }
- if(set_num==2)
- {
- pici++;
- if(pici>100)pici=0;lcd_pos(2,5);pici_display();lcd_pos(2,6);
- }
- if(set_num==3)
- {
- sudu++;
- if(sudu>30)sudu=0;lcd_pos(3,5);sudu_display();lcd_pos(3,6);
- }
- if(set_num==4)
- {
- count++;
- if(count>100)count=0;lcd_pos(4,5);count_display();lcd_pos(4,6);
- }
-
- mun=0;
- while(!up)
- {
- delay_ms(5);
- if(mun!=100)mun++;
- else
- {
- if(set_num==1)
- {
- Changdu++;
- if(Changdu>100)Changdu=0;lcd_pos(1,5);Changdu_display();lcd_pos(1,6);
- }
- if(set_num==2)
- {
- pici++;
- if(pici>100)pici=0;lcd_pos(2,5);pici_display();lcd_pos(2,6);
- }
- if(set_num==3)
- {
- sudu++;
- if(sudu>30)sudu=0;lcd_pos(3,5);sudu_display();lcd_pos(3,6);
- }
- if(set_num==4)
- {
- count++;
- if(count>100)count=0;lcd_pos(4,5);count_display();lcd_pos(4,6);
- }
-
- }
- }
- }
- }
- }
- }
- void motor_ffw()
- {
-
- //圓的周長=400脈沖=10MM //1MM=10MM除以400脈沖=40脈沖
- unsigned long zhongmaicong; //總脈沖
- uchar i;
- zhongmaicong=(Changdu*40)*mcsl;//長度*1MM*每次數(shù)量
- while(zhongmaicong)
- {
- P1=FFW[i];
- delay_ms(sudu);
- i++;k++;o++;
- if(i==8)i=0;
- if(o==Changdu*40)
- {
- o=0;
- cou++;
- display1();
- }
- if(k==(Changdu*40)*mcsl)
- {
- pici1++;
- display1();
- }
- zhongmaicong--;
-
- }
- FFW_flag=0;
- }
-
- //////////////////////////////////////////////////////////////////////////
- void main()
- {
- //uchar z;
- lcd_init();
- lcd_clr();
- init(); //初始化24C02
- cs_display();//廣告圖表
-
- /*********下面的一小段程序的功能為格式化密碼存儲區(qū)。************
- ******當(dāng)24c02中這些存儲區(qū)由于其他程序的運行而導(dǎo)致***************
- *******所存數(shù)據(jù)發(fā)生了變化,或者密碼遺忘時, ********************
- ******可以刪掉其前面的注釋線,然后重新編譯下載。****************
- ******而將密碼還原為000000后,請將下面的程序用******************
- ******注釋屏蔽掉,重新編譯、下載,方可正常使用****************/
- // write24c02(110,0x00);
- // write24c02(111,0x00);//24c02的第110到115地址單元作為密碼存儲區(qū)
- // write24c02(112,0x00);
- // write24c02(113,0x00);
- // write24c02(114,0x00);
- // write24c02(115,0x00);
- //////////////////////////////////////////////////////////
- Changdu=read24c02(110);
- pici=read24c02(111);
- sudu=read24c02(112);
- count=read24c02(113);
- delay_ms(100);
- ds_display();
- display1(); //設(shè)置過后的數(shù)據(jù)顯示
- while(1)
- {
- scankey();
- if(set_num==0)
- {
- if(!strat)
- {
- delay_ms(2);
- while(!strat)
- {
- motor_ffw();
- display1(); //設(shè)置過后的數(shù)據(jù)顯示
- }
- }
- }
- if((up==0)&down==0)
- {
- delay_ms(2);
- if((up==0)&down==0)
- {
- while(!(up&down));
- {
- pici1=0;cou=0;
- display1();
- }
- }
- }
- }
- }
- /*void timer0()interrupt 1
- {
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- a++;
- if(a==2)
- {
- a=0;
- keyprocess();
-
- }
- TR0=0;
- }*/
復(fù)制代碼
附件如下:
|
評分
-
查看全部評分
|