新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機測量自行車的速度程序-帶仿真

        單片機測量自行車的速度程序-帶仿真

        作者: 時間:2016-11-30 來源:網絡 收藏
        這是一個用51單片機來測量自行車速度的小制作,

        電路圖和仿真文件請到http://www.51hei.com/bbs/dpj-20396-1.html這里下載
        下面是程序源代碼:
        #include "d:c51eg51.h"
        #include "d:c51intrins.h"

        本文引用地址:http://www.104case.com/article/201611/323802.htm


        sbit LCM_RS=P3^0;
        sbit LCM_RW=P3^1;
        sbit LCM_EN=P3^7;

        #define BUSY 0x80 //常量定義
        #define DATAPORT P1
        #define uchar unsigned char
        #define uint unsigned int
        #define L50

        uchar str0[16],str1[16],count;
        uint speed;
        unsignedlongtime;

        void ddelay(uint);
        void lcd_wait(void);
        void display();
        void initLCM();
        void WriteCommandLCM(uchar WCLCM,uchar BusyC);
        void STR();
        void account();


        /*********延時K*1ms,12.000mhz**********/

        void int0_isr(void) interrupt 0 /*遙控使用外部中斷0,接P3.2口*/
        {
        unsigned int temp;
        time=count;
        TR0=0;
        temp=TH0;
        temp=((temp << 8) | TL0);
        TH0=0x3c;
        TL0=0xaf;
        count=0;
        TR0=1;
        time=time*50000+temp;
        }

        void time0_isr(void) interrupt 1 /*遙控使用定時計數器1 */
        {
        TH0 =0x3c;
        TL0 =0xaf;
        count++;
        }

        void main(void)
        {
        TMOD=0x01; /*TMOD T0選用方式1(16位定時) */
        IP|=0x01; /*INT0 中斷優先*/
        TCON|=0x11; /*TCON EX0下降沿觸發,啟動T0*/
        IE|=0x83;
        TH0=0x3c;
        TL0=0xaf;

        initLCM();
        WriteCommandLCM(0x01,1); //清顯示屏
        for(;;)
        {
        account();
        display();
        }
        }

        void account()
        {
        unsignedlonga;
        if (time!=0)
        {
        a=L*360000000/time;
        }
        speed=a;
        }

        void STR()
        {
        str0[0]=S;
        str0[1]=p;
        str0[2]=e;
        str0[3]=e;
        str0[4]=d;
        str0[5]= ;
        str0[6]=(speed%100000)/10000+0x30;
        str0[7]=(speed%10000)/1000+0x30;
        str0[8]=(speed%1000)/100+0x30;
        str0[9]=.;
        str0[10]=(speed%100)/10+0x30;
        str0[11]=speed%10+0x30;
        str0[12]=k;
        str0[13]=m;
        str0[14]=/;
        str0[15]=h;
        }

        void ddelay(uint k)
        {
        uint i,j;
        for(i=0;i {
        for(j=0;j<60;j++)
        {;}
        }
        }


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 湖北省| 苗栗市| 武川县| 灵武市| 隆安县| 舒城县| 永仁县| 顺昌县| 女性| 宁海县| 祁阳县| 太白县| 朝阳市| 三明市| 三门县| 连州市| 个旧市| 观塘区| 长治市| 安平县| 兴国县| 梨树县| 兴和县| 淳化县| 开封市| 科技| 大邑县| 蒙阴县| 佛教| 全南县| 麻阳| 齐齐哈尔市| 宾川县| 新余市| 贺州市| 楚雄市| 台北县| 兰溪市| 江达县| 高邑县| 绩溪县|