| 注意:访问本站需要Cookie和JavaScript支持!请设置您的浏览器! • 打开购物车 • 查看留言 • 付款方式 • 联系我们 | 
|  | 
| 首页 | 电子入门 | 学单片机 | 免费资源 | 下载中心 | 商品列表 | 象棋在线 | 在线绘图 | 加盟五一 | 加入收藏 | 设为首页 | 
| 选择分类:当前分类——学单片机   相关联或者相类似的文章:    电子线路中的噪声(511) BA1404调频立体声发射芯片的原理与应用(511) BA1404/1404F 调频立体声发射电路(511) 健忘(510) 用PROTEL DXP电路板设计的一般原则(510) 业余条件下制作电路板七种方法(509) 电子元器件基本常识:常见的液晶显示器(509) 电热毯自动保护恒温器(509) 10. 00-99计数器(509) 利用TL431作大功率可调稳压电源(509) 数字化的优点(508) 也能称为“公益事业”(508) 半导体二极管的基本知识(508) 婚前婚后(508) 什么是闪存和缓存(508) BH1417的高保真锁相环调频立体声发射模块(508) 实用电工速算口诀集(507) 怎样用多个开关控制一盏灯(507) 密封铅酸蓄电池充电器设计实例(506) 浅谈干簧管的应用(506) 首页 前页 后页 尾页  本站推荐: | 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 |