模吧

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

[单片机课堂] 第十八课:小弟出马——定时器

  [复制链接]
发表于 2017-2-6 05:58:51 | 显示全部楼层
好期待,楼主更新,学到新知识
发表于 2017-2-6 06:01:24 | 显示全部楼层
xiancun010 发表于 2017-1-22 00:07
坐等更新啊,罗大神。

我回复好象无效
发表于 2017-2-13 16:04:07 | 显示全部楼层

按键调节占空比
发表于 2017-2-16 14:49:50 | 显示全部楼层
继续更新啊,萝莉。等的花儿都谢了。
发表于 2017-2-20 11:51:39 | 显示全部楼层

不用肖特基二极管对场效应管的使用寿命大减折扣,管的A数成本也会增加。
发表于 2017-5-14 15:35:28 | 显示全部楼层
为啥引脚输出电压只有一半?大神
#include<reg51.h>
#include<intrins.h>    //µ÷ÓÃ_nop_();


sfr P5=0xC8;          //ÉùÃ÷P5Òý½Å¼Ä´æÆ÷


sfr P2M0=0x96;       //ÉùÃ÷P2Òý½Åģʽ¼Ä´æÆ÷
sfr P3M0=0xb2;       //ÉùÃ÷P3Òý½Åģʽ¼Ä´æÆ÷
sfr P1ASF=0x9D;      //ÉùÃ÷P1¿ÚÄ£Ä⹦ÄܼĴæÆ÷
sfr ADC_RES=0xBD;    //ÉùÃ÷ADCת»»½á¹û¼Ä´æÆ÷
sfr ADC_CONTR=0xBC;  //ÉùÃ÷ADC¿ØÖƼĴæÆ÷

sbit DA=P2^4;       //ÊýÂë¹Üÿ¸öÒý½Å               
sbit DB=P3^2;
sbit DC=P3^6;
sbit DD=P2^0;
sbit DE=P2^1;
sbit DF=P2^3;
sbit DG=P3^5;
sbit DP=P3^7;

sbit B1=P2^5;       //ËĸöÊýÂë¹ÜµÄÒý½Å¶¨Òå               
sbit B2=P2^2;
sbit B3=P3^3;
sbit B4=P3^4;

sbit Key=P3^0;

sbit OUT=P5^5;      //¶¨ÒåÒ»¸öÊä³öÒý½Å


unsigned char Key_old;
unsigned char Key_action;
unsigned char display_time;    //¶¨Òå±ê±äÁ¿ÓÃÓÚÏÔʾ´ÎÊý   

unsigned char Data1;         //µÚÒ»¸öÊýÂë¹ÜÒªÏÔʾµÄÊý¾Ý
unsigned char Data2;         //
unsigned char Data3;         //
unsigned char Data4;         //

unsigned char count;         //¼Æʱ

unsigned char BBBBB;
unsigned char mode;
unsigned int adc;            //ADת»»¼ÆËã
unsigned int L;              //¸ßµçƽʱ¼ä

void Delay10us()                //@12.000MHz
{
        unsigned char i;
        
        _nop_();
        _nop_();
        i = 24;
        while (--i);
}

void delay_n_10us(unsigned int n)     //ÑÓʱn¸ö10usµÄº¯Êý
{
        while(n)      
        {
                Delay10us();
                n=n-1;          //ÿѭ»·Ò»´În¼õ1
        }
}



void display(unsigned char x)   //¿ØÖÆÊýÂë¹ÜÏÔʾÄÚÈݵĺ¯Êý
{
      //ÅжÏxµÄÖµÀ´¾ö¶¨ÏÔʾʲô
        if(x==0){DA=1;DB=1;DC=1;DD=1;DE=1;DF=1;DG=0;DP=0;} //ÏÔʾ¡°0¡±
        if(x==1){DA=0;DB=1;DC=1;DD=0;DE=0;DF=0;DG=0;DP=0;} //    1
        if(x==2){DA=1;DB=1;DC=0;DD=1;DE=1;DF=0;DG=1;DP=0;} //    2
        if(x==3){DA=1;DB=1;DC=1;DD=1;DE=0;DF=0;DG=1;DP=0;} //    3
        if(x==4){DA=0;DB=1;DC=1;DD=0;DE=0;DF=1;DG=1;DP=0;} //    4
        if(x==5){DA=1;DB=0;DC=1;DD=1;DE=0;DF=1;DG=1;DP=0;} //    5
        if(x==6){DA=1;DB=0;DC=1;DD=1;DE=1;DF=1;DG=1;DP=0;} //    6
        if(x==7){DA=1;DB=1;DC=1;DD=0;DE=0;DF=0;DG=0;DP=0;} //    7
        if(x==8){DA=1;DB=1;DC=1;DD=1;DE=1;DF=1;DG=1;DP=0;} //    8
        if(x==9){DA=1;DB=1;DC=1;DD=1;DE=0;DF=1;DG=1;DP=0;} //    9
                                                        
        if(x==10){DA=1;DB=1;DC=1;DD=1;DE=1;DF=1;DG=0;DP=1;} //          if(x==11){DA=0;DB=1;DC=1;DD=0;DE=0;DF=0;DG=0;DP=1;} //     
        if(x==12){DA=1;DB=1;DC=0;DD=1;DE=1;DF=0;DG=1;DP=1;} //     
        if(x==13){DA=1;DB=1;DC=1;DD=1;DE=0;DF=0;DG=1;DP=1;} //
        if(x==14){DA=0;DB=1;DC=1;DD=0;DE=0;DF=1;DG=1;DP=1;} //     
        if(x==15){DA=1;DB=0;DC=1;DD=1;DE=0;DF=1;DG=1;DP=1;} //   
        if(x==16){DA=1;DB=0;DC=1;DD=1;DE=1;DF=1;DG=1;DP=1;} //
        if(x==17){DA=1;DB=1;DC=1;DD=0;DE=0;DF=0;DG=0;DP=1;} //   
        if(x==18){DA=1;DB=1;DC=1;DD=1;DE=1;DF=1;DG=1;DP=1;} //
        if(x==19){DA=1;DB=1;DC=1;DD=1;DE=0;DF=1;DG=1;DP=1;}                                 if(x==20){DA=1;DB=1;DC=0;DD=0;DE=1;DF=1;DG=1;DP=0;}
                                if(x==21){DA=1;DB=0;DC=0;DD=1;DE=1;DF=1;DG=1;DP=0;}
}

void main()
{
        P2M0=0x1B;             P3M0=0xE4;                  P1ASF=0x80;            Key_old=1;
        while(1)
        {
                                        delay_n_10us(100);
                                ////////////////////////////////       
                                        BBBBB=BBBBB+1;
                                        if(BBBBB>9)
                                        {
                                                BBBBB=0;
                                       
                                       
                                        if(Key==1)
                                        {
                                                if(Key_old==0)
                                                {
                                                        Key_action=1;
                                                }
                                        }
                                         Key_old=Key;
                                }
                                       
                                /////////////////////////////////////       
                                        if(Key_action==1)
                                        {
                                                Key_action=0;
                                                mode++;
                                                if(mode>1)
                                                {
                                                        mode=0;
                                                }
                                        }
                                        ///////////////////////////////////
                                        if(mode==1)
                                        {
              
                count=count+1;
                if(count>19)                     {
                        count=0;
                        B1=1;B2=1;B3=1;B4=1;                        
                        ADC_CONTR=0x88+7;                            delay_n_10us(5);                             adc=ADC_RES;                              
                        L=adc;                                                           if(L>200)L=200;                             if(L<100)L=100;                           
                        OUT=1;
                        delay_n_10us(L);                           OUT=0;                                    
                       //ÏÔʾLµÄ´óС
                        Data1=20;
                        Data2=(L-100)/100;                                                                           
                        Data3=(L-100)%100/10;                    
                        Data4=(L-100)%10;                     }
                                                        }
                                                        ////////////////////////////////////////////////
                                                        if(mode==0)
                                                        {

               
                                                                B1=1;B2=1;B3=1;B4=1;
                        
                        ADC_CONTR=0x88+7;   
                        delay_n_10us(5);   
                        adc=ADC_RES;         
                        
                        L=adc;
                                                                if(L>100)L=100;
                                                                        OUT=1;
                        delay_n_10us(L);  

                                                               
                        OUT=0;
                                                                        Data1=21;
                        Data2=(L)/100;     
                                                
                        
                        Data3=(L)%100/10;           
                        Data4=(L)%10;
                                                        }
                                               
               
               
                ///////////////////////////////////////////////////////
                              
                display_time=display_time+1;
                if(display_time>3)
                {
                        display_time=0;                 }
               
                if(display_time==0)                   {
                        B1=0;B2=1;B3=1;B4=1;        
                        display(Data1);         
                }
               
                if(display_time==1)
                {
                        B1=1;B2=0;B3=1;B4=1;        
                        display(Data2);               
                }
               
                if(display_time==2)
                {
                        B1=1;B2=1;B3=0;B4=1;        
                        display(Data3);              
                }
               
                if(display_time==3)
                {
                        B1=1;B2=1;B3=1;B4=0;        
                        display(Data4);               
                }
        }
}
发表于 2017-6-14 15:39:04 | 显示全部楼层
谢谢分享,学习了
发表于 2017-8-17 08:48:45 | 显示全部楼层
学习,学习,再学习
发表于 2017-8-28 23:16:57 | 显示全部楼层
a13621146 发表于 2017-5-14 15:35
为啥引脚输出电压只有一半?大神
#include
#include    //µ÷ÓÃ_nop_();

看不懂了,太多了
发表于 2017-8-29 09:21:19 | 显示全部楼层
66666666666666666666666666666666
发表于 2017-9-9 20:35:53 | 显示全部楼层
第十八课:小弟出马——定时器  作者:mrslizhihua 6223 第十八课:小弟出马——定时器  作者:mrslizhihua 8654 第十八课:小弟出马——定时器  作者:mrslizhihua 8716 {:1_16:}{:1_16:}{:1_16:}{:1_16:}{:1_16:}
发表于 2018-5-5 00:07:36 | 显示全部楼层
第十八课:小弟出马——定时器  作者:addison88 9441 第十八课:小弟出马——定时器  作者:addison88 1004 第十八课:小弟出马——定时器  作者:addison88 2214 {:1_1:}{:1_1:}{:1_1:}
回复 支持 反对

使用道具 举报

发表于 2019-6-13 06:44:22 | 显示全部楼层
怎么没有后续了,期待中。。。。。。
回复 支持 反对

使用道具 举报

发表于 2019-10-5 22:03:19 | 显示全部楼层
怎么不更新了啊
回复 支持 反对

使用道具 举报

发表于 2019-10-12 17:36:38 | 显示全部楼层
小白我也能看得懂讲得太好了,更新啊
回复 支持 反对

使用道具 举报

发表于 2020-1-5 20:43:04 | 显示全部楼层
老师辛苦了,谢谢!
回复 支持 反对

使用道具 举报

发表于 2020-1-23 11:31:34 | 显示全部楼层
本帖最后由 Rocklive 于 2020-1-23 11:34 编辑

老师辛苦了,感觉第十七、十八节课还未上完,讲解一下程序和原理就好了,谢谢!
回复 支持 反对

使用道具 举报

发表于 2020-2-7 11:08:37 | 显示全部楼层
萝莉大神辛苦了,时隔几年我才有机会把这18节课全部学习完,感觉就是醍醐灌顶,有种顿悟的感觉,为您这无私开源又授课点个大赞,期待能有新的课程出现,期待定时器、中断、指针、内存管理及无线通讯等这些高端的内容。谢谢!!!
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|关于模吧|APP下载|广告报价|手机版|企业会员|商城入驻|联系我们|模吧 ( 黔ICP备2022002348号-1 )

© 2013-2020 Moz8.com 模吧,玩出精彩!