zoukankan      html  css  js  c++  java
  • 单片机数码管和喇叭的初步使用

    第一次用单片机,经过从完全陌生开始的几天学习,作为自己这次磕磕绊绊经历的总结,也记录一些在过程中遇到的问题及解决方法,希望能帮到

    遇到同样问题的小伙伴。

    *********************************************************************码表*******************************************************************************

    扫描方式驱动的话,频率低就更亮,但太低会显得闪烁,所以尽量频率在60Hz以上

    想用数码管做一个码表,开始用了几个for循环来做,但是忽略了每执行一条指令所消耗的时间,所以秒表总是不准确,而且误差算相当大的一分钟差三秒左右。

    #include<stc15.h>     
    unsigned char scan;
    unsigned char i,j,n,m;
    unsigned char  smg_dw[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
    sbit dit1=P4^4;
    sbit dit2=P4^5;
    
    void Delay1(int x)  
    { 
      int t;  
      while(x--) for(t=0;t<1;t++); 
    } 
    
    main()
    {
      P4M0 = 0xff;
      P4M1 = 0x00;
      while(1)
      { 
        for(j=0;j<10;j++)
        {
    
            for(i=0;i<10;i++)
            {
              for(n=0;n<79;n++)
               {
                  for(m=0;m<255;m++)
                {
                P2=smg_dw[j];
                dit1=0;
                dit2=1;
                Delay1(4);
                                                                          
                P2=smg_dw[i];
                dit1=1;
                dit2=0;
                Delay1(4);
              }
            }          
          }
        
        }
    
      }
    }

    后来在书上看到应该采用中断的方法,那么现在就来学习一下。

    中断是什么,中断就是暂时放下目前执行的程序,先去执行特定的程序,以提高效率。

    【中断的应用】:包括中断向量的设置,和中断子程序的编写。

    中断向量:外部中断,定时器/计数器中断,串行口中断

    中断子程序格式:void 中断子程序名称(void) interrupt中断编号 using寄存器组 

            {

              子程序

              }

    ***********************************************************简易电子琴**************************************************************

     首先用到了一个三极管,三极管是什么呢?

    三极管,全称应为半导体三极管,也称双极型晶体管、晶体三极管,是一种控制电流的半导体器件其作用是把微弱信号放大成幅度值较大的电信号, 也用作无触点开关。晶体三极管,是半导体基本元器件之一,具有电流放大作用,是电子电路的核心元件。三极管是在一块半导体基片上制作两个相距很近的PN结,两个PN结把整块半导体分成三部分,中间部分是基区,两侧部分是发射区和集电区,排列方式有PNP和NPN两种。

    也就是说它的作用是放大信号及控制电路

    明白了这些我就有点疑问了,我手里这个三极管是PNP还是NPN呢,只要对应地查一下三极管上的型号就可以了,型号是8050

    从百科就可以得到答案,是NPN型,图示如下

    三极管管脚识别方法: 
    (a) 判定基极。用万用表R×100或R×1k挡测量管子三个电极中每两个极之间的正、反向电阻值。当用第一根表笔接某一电极,而第二表笔先后接触另外两个电极 均测得低阻值时,则第一根表笔所接的那个电极即为基极b。这时,要注意万用表表笔的极性,如果红表笔接的是基极b。黑表笔分别接在其他两极时,测得的阻值 都较小,则可判定被测管子为PNP型三极管;如果黑表笔接的是基极b,红表笔分别接触其他两极时,测得的阻值较小,则被测三极管为NPN型管如 8050,9014,9018。
    (b) 判定三极管集电极c和发射极e。(以PNP型三极管为例)将万用表置于R×100或R×1K挡,红表笔集电极c,用黑表笔分别接触另外两个管脚时,所测得的 两个电阻值会是一个大一些,一个小一些。在阻值小的一次测量中,黑表笔所接管脚为基极;在阻值较大的一次测量中,黑表笔所接管脚为发射极。

     既然说三极管的功能是放大信号,那他是如何放大信号的呢?在网上看到讲的蛮清晰的一篇文章,分享大家

    http://blog.163.com/haiyu_tian/blog/static/52604816201011204222718/

      仅允许非商业转载,转载请注明出处

  • 相关阅读:
    Linux C/C++编程之(十四)文件操作相关函数
    javascript语法之循环语句
    javascript语法之流程控制语句
    javascript语法之字符串转换成数字
    javascript语法之声明变量
    认识javascript
    css之定位
    css之盒子模型案例
    常见Css样式
    Css详解之(伪类选择器)
  • 原文地址:https://www.cnblogs.com/Archimedes/p/7045755.html
Copyright © 2011-2022 走看看