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

  • 皇甫随心
  • LV0工程师
  • |      2015-06-17 18:53:53
  • 浏览量 876
  • 回复:7

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

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

登录后可评论,请 登录注册

所有回答 数量:6
littleHi 2015-07-09
楼上是可以的
0   回复
举报
发布
执念 2015-07-02
这个程序不难写,,先帮顶了,明天给你试试..
0   回复
举报
发布
s112 2015-06-18
图看的不是很清楚啊,最好把原仿真文件发上来
0   回复
举报
发布
武力戡乱 2015-06-17
很好,这明显是一个Proteus仿真
0   回复
举报
发布
马超飞燕 2015-06-17

你把Proteus仿真文件发上么

帮顶一个

0   回复
举报
发布
李瑞涛 2015-06-17
¡ñ    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 币

0   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子