• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

求大神帮忙编一个C51单片机的程序

皇甫随心 2015-06-17 浏览量:921

本设计中的蜂鸣器是在最后程序技术的时候起提醒人们的作用。。。。。。。

打开开关,首先是电机1开始工作,工作时间为10秒后停止;其次是电机2开始工作,工作5秒后停止;在其次是电机3和电机4同时工作,电机3工作5秒后停止,电机4工作10秒后停止;最后电机5开始工作,工作5秒后停止。求大神帮忙编一个C51单片机的程序求大神帮忙编一个C51单片机的程序求大神帮忙编一个C51单片机的程序
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • ¡ñ    0ºÅ¶¨Ê±Æ÷ÉèÖÃ×Ó³ÌÐò
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // º¯ÊýÃû£º        SetTimer0
    // ¹¦ÄÜ˵Ã÷£º    ÅäÖö¨Ê±¼ÆÊýÆ÷0
    // Èë¿Ú²ÎÊý£º    ¹¤×÷·½Ê½
    //                 ¶¨Ê±¼ÆÊýģʽ
    //                 ¿ØÖÆ·½Ê½Ñ¡Ôñ
    //                 µÚÒ»³õÖµ
    //                 µÚ¶þ³õÖµ
    // ·µ»Ø²ÎÊý£º    ²Ù×÷½á¹û
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    char SetTimer0(char mode, char tc,char ctrl,int value0,int value1)
    {
        switch(mode)            //¹¤¼þ·½Ê½ÉèÖÃ
        {
            case 0:                //¹¤×÷·½Ê½0
                TMOD = (TMOD & 0xF0) | 0x00;
                TH0 = value0 >> 0x05;
                TL0 = value0 << 0x03;
                break;
            case 1:                //¹¤×÷·½Ê½1
                TMOD = (TMOD & 0xF0) | 0x01;
                TH0 = value0 >> 0x08;
                TL0 = value0 ;
                break;
            case 2:                //¹¤×÷·½Ê½2
                TMOD = (TMOD & 0xF0) | 0x02;
                TH0 = value0 ;
                TL0 = value0 ;
                break;
            case 3:                //¹¤×÷·½Ê½3
                TMOD = (TMOD & 0xF0) | 0x03;
                TH0 = value0;
                TL0 = value1;
                break;
            default:
                return 0;
        }
        switch(tc)            //¶¨Ê±¼ÆÊýÆ÷ģʽ
        {
            case 0:            //¶¨Ê±Æ÷
                TMOD |= 0x00;
                break;
            case 1:            //¼ÆÊýÆ÷
                TMOD |= 0x04;
                break;
            default:
                return 0;
        }
        switch(ctrl)        //Æô¶¯Ä£Ê½
        {
            case 0:            //TR0¿ØÖÆÆô¶¯
                TMOD |= 0x00;
                break;
            case 1:            //Òý½Å/INT0¿ØÖÆÆô¶¯
                TMOD |= 0x08;
                break;
            default:
                return 0;
        }
        return 1;
    }
    ¡ñ    ´ò¿ª0ºÅ¶¨Ê±Æ÷×Ó³ÌÐò

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // º¯ÊýÃû£º        OpenTimer0
    // ¹¦ÄÜ˵Ã÷£º    ´ò¿ª¶¨Ê±¼ÆÊýÆ÷0
    // Èë¿Ú²ÎÊý£º    ¹¤×÷·½Ê½
    // ·µ»Ø²ÎÊý£º    ²Ù×÷½á¹û
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    char OpenTimer0(char mode)
    {
        switch(mode)            //¹¤¼þ·½Ê½ÉèÖÃ
        {
            case 0:                //¹¤×÷·½Ê½0
                ET0 = 1;
                EA = 1;
                TR0 = 1;
                break;
            case 1:                //¹¤×÷·½Ê½1
                ET0 = 1;
                EA = 1;
                TR0 = 1;
                break;
            case 2:                //¹¤×÷·½Ê½2
                ET0 = 1;
                EA = 1;
                TR0 = 1;
                break;
            case 3:                //¹¤×÷·½Ê½3
                ET0 = 1;
                ET1 = 1;
                EA = 1;
                TR0 = 1;
                TR1 = 1;
                break;
            default:
                return 0;
        }
        return 1;
    }

    ¡ñ    1ºÅ¶¨Ê±Æ÷ÉèÖÃ×Ó³ÌÐò
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // º¯ÊýÃû£º        SetTimer1
    // ¹¦ÄÜ˵Ã÷£º    ÅäÖö¨Ê±¼ÆÊýÆ÷1
    // Èë¿Ú²ÎÊý£º    ¹¤×÷·½Ê½
    //                 ¶¨Ê±¼ÆÊýģʽ
    //                 ¿ØÖÆ·½Ê½Ñ¡Ôñ
    //                 µÚÒ»³õÖµ
    // ·µ»Ø²ÎÊý£º    ²Ù×÷½á¹û
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    char SetTimer1(char mode, char tc,char ctrl,int value0)
    {
        switch(mode)            //¹¤¼þ·½Ê½ÉèÖÃ
        {
            case 0:                //¹¤×÷·½Ê½0
                TMOD = (TMOD & 0x0F) | 0x00;
                TH0 = value0 >> 0x05;
                TL0 = value0 << 0x03;
                break;
            case 1:                //¹¤×÷·½Ê½1
                TMOD = (TMOD & 0x0F) | 0x10;
                TH0 = value0 >> 0x08;
                TL0 = value0 ;
                break;
            case 2:                //¹¤×÷·½Ê½2
                TMOD = (TMOD & 0x0F) | 0x20;
                TH0 = value0 ;
                TL0 = value0 ;
                break;
            default:
                return 0;
        }
        switch(tc)            //¶¨Ê±¼ÆÊýÆ÷ģʽ
        {
            case 0:            //¶¨Ê±Æ÷
                TMOD |= 0x00;
                break;
            case 1:            //¼ÆÊýÆ÷
                TMOD |= 0x40;
                break;
            default:
                return 0;
        }
        switch(ctrl)        //Æô¶¯Ä£Ê½
        {
            case 0:            //TR0¿ØÖÆÆô¶¯
                TMOD |= 0x00;
                break;
            case 1:            //Òý½Å/INT0¿ØÖÆÆô¶¯
                TMOD |= 0x80;
                break;
            default:
                return 0;
        }
        return 1;
    }
    ¡ñ    ´ò¿ª1ºÅ¶¨Ê±Æ÷×Ó³ÌÐò
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // º¯ÊýÃû£º        OpenTimer1
    // ¹¦ÄÜ˵Ã÷£º    ´ò¿ª¶¨Ê±¼ÆÊýÆ÷1
    // Èë¿Ú²ÎÊý£º    ¹¤×÷·½Ê½
    // ·µ»Ø²ÎÊý£º    ²Ù×÷½á¹û
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    char OpenTimer1(char mode)
    {
        switch(mode)            //¹¤¼þ·½Ê½ÉèÖÃ
        {    case 0:                //¹¤×÷·½Ê½0
                ET1 = 1;
                EA = 1;
                TR0 = 1;
                break;
            case 1:                //¹¤×÷·½Ê½1
                ET1 = 1;
                EA = 1;
                TR0 = 1;
                break;
            case 2:                //¹¤×÷·½Ê½2
                ET1 = 1;
                EA = 1;
                TR0 = 1;
                break;
            default:
                return 0;
        }
        return 1;
    }

    根据这个定时器的设置做五次就可以,给不了你太多

    记得ic 币

    • 发布于 2015-06-17
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:6

  • 很好,这明显是一个Proteus仿真
    • 发布于2015-06-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 51单片机控制电机代码直接一改动就好了,网上很多
    • 发布于2015-06-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 图看的不是很清楚啊,最好把原仿真文件发上来
    • 发布于2015-06-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个程序不难写,,先帮顶了,明天给你试试..
    • 发布于2015-07-02
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

求大神帮忙编一个C51单片机的程序