新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機中斷測量速度的程序帶仿真文件

        單片機中斷測量速度的程序帶仿真文件

        作者: 時間:2016-12-02 來源:網絡 收藏

        用protues仿真的,仿真文件從http://www.51hei.com/bbs/dpj-19412-1.html下載,電路圖都在里面.下面是源代碼是用單片機的int0中斷來實現的.

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

        #include "d:c51eg51.h"
        #include "d:c51intrins.h"


        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;
        }


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 蓝田县| 宁南县| 通道| 正阳县| 平和县| 喀喇沁旗| 剑川县| 湘潭县| 晋城| 汨罗市| 鹤庆县| 和静县| 梅河口市| 广昌县| 扶绥县| 嘉禾县| 边坝县| 陆河县| 镇雄县| 沅江市| 中牟县| 藁城市| 武定县| 绥阳县| 长汀县| 宽城| 宁津县| 宁安市| 柳州市| 通辽市| 应城市| 读书| 正镶白旗| 海淀区| 封丘县| 昭觉县| 云龙县| 宜兰县| 凤山市| 育儿| 玛沁县|