| 注意:访问本站需要Cookie和JavaScript支持!请设置您的浏览器! • 打开购物车 • 查看留言 • 付款方式 • 联系我们 | 
![]()  | 
| 首页 | 电子入门 | 学单片机 | 免费资源 | 下载中心 | 商品列表 | 象棋在线 | 在线绘图 | 加盟五一 | 加入收藏 | 设为首页 | 
|   选择分类:当前分类——学单片机    相关联或者相类似的文章:    19.            “叮咚”门铃(618) 汉字的动态编码与显示方案(616) 初识PIC单片机 (610) 功能齐全的单片机音乐程序(608) 22. 电子琴(606) 基于 PCF8563 时钟芯片的万年历制作(605) 5. 广告灯(利用取表方式)(600) 用单片机制作测速仪 (598) 四个DS1820温度读取C源程序 (598) ★无线电遥控七路开关解码程序(595) 15. 定时计数器T0作定时应用技术(一)(591) 13. 动态数码显示技术(591) 步进电机、步进电机驱动器常见问题解答 (587) ★六位数显电子钟加24路输出(587) MCS-51单片机实用子程序库(96年版)(586) 8*8LED点阵显示实验(585) 用VB进行串口实时数据采集(585) 32. 电子密码锁设计 (583) 设计巧妙的数显抢答器 (582) [转载]绝对经典奉献!5.1音响遥控解码程序!(581) 首页 前页 后页 尾页  本站推荐:        |    19.            “叮咚”门铃 1. 实验任务  
当按下开关SP1,AT89S51单片机产生“叮咚”声从P1.0端口输出到LM386,经过放大之后送入喇叭。 
2. 电路原理图  
![]() 图4.19.1 
3. 系统板上硬件连线  
(1.       把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上; 
(2.       在“音频放大模块”区域中的SPK OUT端口上接上一个8欧或者是16欧的喇叭;  
(3.       把“单片机系统”区域中的P3.7/RD端口用导线连接到“独立式键盘”区域中的SP1端口上;  
4. 程序设计方法  
(1.       我们用单片机实定时/计数器T0来产生700HZ和500HZ的频率,根据定时/计数器T0,我们取定时250us,因此,700HZ的频率要经过3次250us的定时,而500HZ的频率要经过4次250us的定时。 
(2.       在设计过程,只有当按下SP1之后,才启动T0开始工作,当T0工作完毕,回到最初状态。  
(3.       “叮”和“咚”声音各占用0.5秒,因此定时/计数器T0要完成0.5秒的定时,对于以250us为基准定时2000次才可以。  
6. 汇编源程序  
T5HZ                  EQU 30H  
T7HZ                  EQU 31H  
T05SA                EQU 32H  
T05SB                 EQU 33H  
FLAG                 BIT 00H  
STOP                  BIT 01H  
SP1                      BIT P3.7  
                            ORG 00H  
                            LJMP START  
                            ORG 0BH  
                            LJMP INT_T0  
START:               MOV TMOD,#02H  
                            MOV TH0,#06H  
                            MOV TL0,#06H  
                            SETB ET0  
                            SETB EA  
NSP:                   JB SP1,NSP  
                            LCALL DELY10MS  
                            JB SP1,NSP  
                            SETB TR0  
                            MOV T5HZ,#00H  
                            MOV T7HZ,#00H  
                            MOV T05SA,#00H  
                            MOV T05SB,#00H  
                            CLR FLAG  
                            CLR STOP                    
                            JNB STOP,$  
                            LJMP NSP  
DELY10MS:       MOV R6,#20  
D1:                      MOV R7,#248  
                            DJNZ R7,$  
                            DJNZ R6,D1  
                            RET  
INT_T0:             INC T05SA  
                            MOV A,T05SA  
                            CJNE A,#100,NEXT  
                            MOV T05SA,#00H  
                            INC T05SB  
                            MOV A,T05SB  
                            CJNE A,#20,NEXT  
                            MOV T05SB,#00H  
                            JB FLAG,STP  
                            CPL FLAG  
                            LJMP NEXT  
STP:                    SETB STOP  
                            CLR TR0  
                            LJMP DONE  
NEXT:                JB FLAG,S5HZ  
                            INC T7HZ  
                            MOV A,T7HZ  
                            CJNE A,#03H,DONE  
                            MOV T7HZ,#00H  
                            CPL P1.0  
                            LJMP DONE  
S5HZ:                 INC T5HZ  
                            MOV A,T5HZ  
                            CJNE A,#04H,DONE  
                            MOV T5HZ,#00H  
                            CPL P1.0  
                            LJMP DONE  
DONE:                RETI  
                            END  
7. C语言源程序  
#include <AT89X51.H>  
unsigned char t5hz;  
unsigned char t7hz;  
unsigned int tcnt;  
bit stop;  
bit flag;  
void main(void)  
{  
  unsigned char i,j;  
  TMOD=0x02;  
  TH0=0x06;  
  TL0=0x06;  
  ET0=1;  
  EA=1;  
  while(1)  
    {  
      if(P3_7==0)  
        {  
          for(i=10;i>0;i--)  
          for(j=248;j>0;j--);  
          if(P3_7==0)  
            {  
              t5hz=0;  
              t7hz=0;  
              tcnt=0;  
              flag=0;  
              stop=0;  
              TR0=1;  
              while(stop==0);  
            }  
        }  
    }  
}  
void t0(void) interrupt 1 using 0  
{  
  tcnt++;  
  if(tcnt==2000)  
    {  
      tcnt=0;  
      if(flag==0)  
        {  
          flag=~flag;  
        }  
        else  
          {  
            stop=1;  
            TR0=0;  
          }  
    }  
  if(flag==0)  
    {  
      t7hz++;  
      if(t7hz==3)  
        {  
          t7hz=0;  
          P1_0=~P1_0;  
        }  
    }  
    else  
      {  
        t5hz++;  
        if(t5hz==4)  
          {  
            t5hz=0;  
            P1_0=~P1_0;  
          }  
      }  
}  1、 本站不保证以上观点正确,就算是本站原创作品,本站也不保证内容正确。  2、如果您拥有本文版权,并且不想在本站转载,请书面通知本站立即删除并且向您公开道歉!  |   
| 
 本站协议 |
 版权信息 | 
 关于我们 | 
 本站地图 | 
 营业执照 | 
 发票说明 | 
 付款方式 | 
 联系方式
 深圳市宝安区西乡五壹电子商行——粤ICP备16073394号-1;地址:深圳西乡河西四坊183号;邮编:518102 E-mail:51dz$163.com($改为@);Tel:(0755)27947428 工作时间:9:30-12:00和13:30-17:30和18:30-20:30,无人接听时可以再打手机13537585389  |