找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4448|回复: 9
收起左侧

抛砖之三”或许只是一个传说“

[复制链接]
ID:67370 发表于 2014-10-27 19:49 | 显示全部楼层 |阅读模式
     妻深谙“要管住丈夫的心,先要管住丈夫的胃”的道理,做的一手好菜,可谓厨艺高手。一日,妻看着夫品着自己做的美味时,叹曰:“烹饪的最高境界是掌握火候”。夫思忖:“掌握火候不就是控制烹调时间么。这个容易只要把此前抛出的‘两块砖’信手拈来即可。”于是夫找来了C51单片机、数码管、蜂鸣器等元器件,搭建了一个电路简洁,计时精准,声音响亮、调时方便的100-0分钟递减的计时报警器。给妻烹饪时掌握火候。    妻爱不释手,喜曰:“烹小鲜,如治大国矣。”
    夫心曰:“治小家,一定要学单片机。”

#include< reg52.h >              //包含头文件
#define INT8 unsigned char       //预定义关键词
#define INT16 unsigned int  

sbit Key1 = P1 ^ 6;              //十位按键加
sbit Key2 = P1 ^ 7;              //个位按键加
sbit BUZZER = P1 ^ 0;

/*
INT8 code table[] =                      //共阴码表。
{                  
        0x3F, 0x06, 0x5B, 0x4F, 0x66,
        0x6D, 0x7D, 0x07, 0x7F, 0x6F
};
*/

INT8 code table[] =                      //共阳码表。
{                   
        0xC0, 0xF9, 0xA4, 0xB0, 0x99,
        0x92, 0x82, 0xF8, 0x80, 0x90
};
       
INT8 T_count = 0, Second = 0;
INT8 Minute_1 = 1, Minute_2 = 5; //初始设定为15分钟,可以选择最常用的时间为初始值。

void Delay( INT16 xms )          //延时函数,有参函数
{  
        INT16 x, y;   
        for( x = xms; x > 0; x -- )   
                for( y = 110; y > 0; y -- );  
}

void Keyscan()                   //按键扫描函数
{            
        if( Key1 == 0 )              //十位加
        {
                Delay( 10 );
                if( Key1 == 0 )
                {
                        while( !Key1 )
                        P1 = 0xC0;
                        {
                                Minute_1 ++;
                                if( Minute_1 == 10 )               
                                Minute_1 =0;
                        }
                }
        }
        if( Key2 == 0 )                     //个位加
        {
                Delay( 10 );
                if( Key2 == 0 )
                {
                        while( !Key2 )
                        P1 = 0xC0;
                        {
                                Minute_2 ++;
                                if( Minute_2 == 10 )  
                                Minute_2 = 0;
                        }
                }
        }
}

void main()  
{      
        TMOD |= 0x10;
        TMOD &= 0xDF;  
        TR1 = 1;      
        ET1 = 1;      
        EA = 1;         
        while( 1 )
        {            
                P2 = table[ Minute_1 ];        
                P3 = table[ Minute_2 ];        
                Keyscan();
        }
}

void Buzzer( INT16 Number, INT8 Time )          //可以选择鸣响次数和时间
{
        INT8 h,j;
        INT16 i ;
        for ( h = 0; h < Number; h ++ )
        {
                for ( i = 0; i < Time; i ++ )
                {
                        BUZZER =~ BUZZER;              //BEEP取反
                        for ( j = 0; j < 75; j ++ );   //需要产生方波,调节音频
                }
                Delay( 100 );                               //间隔时间
        }
        BUZZER = 0;                            //PNP-0;NPN-1关闭蜂鸣器
}

void interrupt_timer1()        interrupt 3
{
        TH1 = ( 65536 - 50000 ) / 256;      
        TL1 = ( 65536 - 50000 ) % 256;      
        T_count ++;                           //定时器中断计数器加一   
        if( T_count == 20 )                   //计数20次  
        {   
                T_count = 0;                      //清零定时器中断计数器   
                Second ++;                        //秒计数器加一   
                if( Second >= 60 )                //秒计数器等于100   
                {     
                        Second = 0;                                    //秒计数器清零
                        Minute_2 --;
                        if( Minute_2 == -1 && Minute_1 >> 0 )
                        {
                                Minute_2 = 9;
                                Minute_1 --;
                        }  
                }  
        }
        if( Minute_1 == 0 && Minute_2 == -1 )
        {
                Minute_1 = 0;
                Minute_2 = 0;
                Buzzer( 200,100 );
                while( 1 );
                {
                ;
                }
        }
}




100-0分钟报警器.png
DSC01636.JPG

评分

参与人数 1威望 +50 黑币 +50 收起 理由
admin + 50 + 50 共享资料的积分奖励!

查看全部评分

回复

使用道具 举报

ID:67370 发表于 2014-10-27 20:04 | 显示全部楼层
不好意思,电路有点错误,现更正。
100-0分钟报警器.png
回复

使用道具 举报

ID:133 发表于 2014-10-27 21:07 | 显示全部楼层
楼主一出手 基本都是精品贴啊  我先看看  
回复

使用道具 举报

ID:133 发表于 2014-10-27 21:08 | 显示全部楼层
楼主这技术 这工艺  简直是可以出产品了
回复

使用道具 举报

ID:67370 发表于 2014-10-27 21:15 | 显示全部楼层
愿意为初学者提供一点帮助,也为本论坛做点贡献。
回复

使用道具 举报

ID:61875 发表于 2014-10-28 09:59 | 显示全部楼层
谢谢楼主的奉献
回复

使用道具 举报

ID:67844 发表于 2014-10-30 15:06 | 显示全部楼层
学习啊
回复

使用道具 举报

ID:67370 发表于 2014-10-31 19:46 | 显示全部楼层
只是普通的塑料盒。
回复

使用道具 举报

ID:56563 发表于 2014-11-1 18:50 | 显示全部楼层
楼主手艺不错。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表