在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)紅外遙控+步進(jìn)電機(jī)+1602液晶顯示c語(yǔ)言源程序

            單片機(jī)紅外遙控+步進(jìn)電機(jī)+1602液晶顯示c語(yǔ)言源程序

            作者: 時(shí)間:2012-12-05 來源:網(wǎng)絡(luò) 收藏

            這是我做的控制的1602顯示轉(zhuǎn)速和轉(zhuǎn)向的c語(yǔ)言原程序,已經(jīng)調(diào)試成功!有些模塊是以前做其他實(shí)驗(yàn)時(shí)做的,現(xiàn)在是直接調(diào)用的,包括顯示技術(shù),TC9012紅外解碼,然后就是四相的控制程序了,我是把這些東西結(jié)合起來。對(duì)這個(gè)東西有興趣的或者要做畢業(yè)設(shè)計(jì)的可以看看啊,不懂的請(qǐng)上論壇http://www.51hei.com/bbs/ 公開討論,我會(huì)給大家做出詳細(xì)的解答。

            #include AT89X51.h>

            #includestdio.h>
            #includeintrins.h>
            #define uchar unsigned char
            #define uint unsigned int
            static unsigned int count; //計(jì)數(shù)
            unsigned int hour,minute,second,count;

            sbit RS = P2^3;//Pin4
            sbit RW = P2^2; //Pin5
            sbit E = P2^4;//Pin6

            #define Data P0 //數(shù)據(jù)端口
            static int step_index; //步進(jìn)索引數(shù),值為0-7
            bit k=0; //紅外解碼判斷標(biāo)志位,為0則為有效信號(hào),為1則為無效
            uchar n=0; //用來控制外部中斷
            static bit turn; //轉(zhuǎn)動(dòng)方向
            static bit stop_flag; //步進(jìn)電機(jī)停止標(biāo)志
            static int speedlevel; //步進(jìn)電機(jī)轉(zhuǎn)速參數(shù),數(shù)值越大速度越慢,最小值為1,速度最快
            static int spcount; //步進(jìn)電機(jī)轉(zhuǎn)速參數(shù)計(jì)數(shù)
            void delay(unsigned int endcount); //延時(shí)函數(shù),延時(shí)為endcount*0.5毫秒
            void gorun(); //步進(jìn)電機(jī)控制步進(jìn)函數(shù)
            uchar data date[4]; //date數(shù)組為存放地址原碼,反碼,數(shù)據(jù)原碼,反碼
            char data Test1[]=" ";
            #define IR_RE P3_2
            void DelayUs(unsigned char us)//delay us
            {
            unsigned char uscnt;
            uscnt=us>>1;/* Crystal frequency in 12MHz*/
            while(--uscnt);
            }
            /*****************************************************/
            void DelayMs(unsigned char ms)//delay Ms
            {
            while(--ms)
            {
            DelayUs(250);
            DelayUs(250);
            DelayUs(250);
            DelayUs(250);
            }
            }
            void WriteCommand(unsigned char c)
            {
            DelayMs(5);//short delay before operation
            E=0;
            RS=0;
            RW=0;
            _nop_();
            E=1;
            Data=c;
            E=0;
            }
            /******************************************************/
            void WriteData(unsigned char c)
            {
            DelayMs(5); //short delay before operation
            E=0;
            RS=1;
            RW=0;
            _nop_();
            E=1;
            Data=c;
            E=0;
            RS=0;
            }
            /***********http://www.51hei.com原創(chuàng)作品******************/
            void ShowChar(unsigned char pos,unsigned char c)
            {
            unsigned char p;
            if (pos>=0x10)
            p=pos+0xb0; //是第二行則命令代碼高4位為0xc
            else
            p=pos+0x80; //是第二行則命令代碼高4位為0x8
            WriteCommand (p);//write command
            WriteData (c); //write data
            }
            /********************************************************/
            void ShowString (unsigned char line,char *ptr)
            {
            unsigned char l,i;
            l=line4;
            for (i=0;i16;i++)
            ShowChar (l++,*(ptr+i));//循環(huán)顯示16個(gè)字符
            }
            /*******************************************************/
            void InitLcd()
            {
            DelayMs(15);
            WriteCommand(0x38); //display mode
            WriteCommand(0x38); //display mode
            WriteCommand(0x38); //display mode
            WriteCommand(0x06); //顯示光標(biāo)移動(dòng)位置
            WriteCommand(0x0c); //顯示開及光標(biāo)設(shè)置
            WriteCommand(0x01); //顯示清屏

            }

            /*--------------------------延時(shí)1ms程子程序-----------------------*/
            delay1000()
            {
            uint i,j;
            for(i=0;i1;i++)
            for(j=0;j124;j++)
            ;
            }

            /*---------------------------延時(shí)882us子程序-----------------------*/

            delay882()
            {
            uint i,j;
            for(i=0;i1;i++)
            for(j=0;j109;j++)
            ;
            }

            /*--------------------------延時(shí)2400ms程子程序-----------------------*/

            delay2400()
            {
            uint i,j;
            for(i=0;i3;i++)
            for(j=0;j99;j++)
            ;
            }
            void IR_decode()
            {
            uchar i,j;
            while(IR_RE==0);
            delay2400();
            if(IR_RE==1) //延時(shí)2.4ms后如果是高電平則是新碼
            {
            delay2400(); //延時(shí)4.8ms避開4.5ms的高電平
            for(i=0;i4;i++)
            {
            for(j=0;j8;j++)
            {
            while(IR_RE==0); //等待地址碼第1位高電平到來
            delay882(); //延時(shí)882ms判斷此時(shí)引腳電平
            ///CY=IR_RE;
            if(IR_RE==0)
            {
            date[i]>>=1;
            date[i]=date[i]0x7f;
            }
            else if(IR_RE==1)
            {
            delay1000();
            date[i]>>=1;
            date[i]=date[i]|0x80;
            }
            } //1位數(shù)據(jù)接收結(jié)束
            } //32位二進(jìn)制碼接收結(jié)束

            }
            if (date[2]==0x16)
            TR0 = 0;
            else if(date[2]==0x14)
            {TR0 = 1;
            }
            else if(date[2]==0x10)
            {if (speedlevel>1)
            speedlevel--;
            else
            speedlevel=1;
            }
            else if(date[2]==0x1A)
            {if(speedlevel5)
            speedlevel++;
            else
            speedlevel=5;
            }
            else if(date[2]==0x11)
            turn=~turn;

            紅外遙控器相關(guān)文章:紅外遙控器原理

            51單片機(jī)相關(guān)文章:51單片機(jī)教程


            c語(yǔ)言相關(guān)文章:c語(yǔ)言教程



            上一頁(yè) 1 2 下一頁(yè)

            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉