Proteus—40个单片机初学程序-19.“叮咚”门铃.docVIP

  • 94
  • 0
  • 约3.19千字
  • 约 5页
  • 2018-05-30 发布于广东
  • 举报

Proteus—40个单片机初学程序-19.“叮咚”门铃.doc

第四章 实验及实践课题(19) “叮咚”门铃 当按下开关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的定时。 (忘记的请看1.闪光灯中单片机的延时及时序分析.mht) 信号产生的方法:500Hz信号周期为2ms,信号电平为每1ms(4X250us)变反1次, (2.?在设计过程,只有当按下SP1之后,才启动T0开始工作,当T0工作完毕,回到最初状态。 (3. “叮”和“咚”声音各占用0.5秒,因此定时/计数器T0要完成0.5秒的定时,对于以250us为基准定时2000次才可以。 程序框图 主程序框图 T0中断服务程序框图 图4.19.2 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 ;工作方式2就具有自动重装载功能,即自动加载计数初值,所以也有的文献称之为自动重加载工作方式。在这种工作方式中,16位计数器分为两部分,即以TL0为计数器,以TH0作为预置寄存器,初始化时把计数初值分别加载至TL0和TH0中,当计数溢出时,不再象方式0和方式1那样需要“人工干预”,由软件重新赋值,而是由预置寄存器TH以硬件方法自动给计数器TL0重新加载。 MOV TH0,#06H ;用于自动恢复定时初值 MOV TL0,#06H ;置T0定时初值50us ( 2?的 SETB ET0 SETB EA NSP: JB SP1,NSP LCALL DELY10MS JB SP1,NSP SETB TR0 ;TR0置1,启动定时器 允许定时/计数器计数 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 ;当FLAG为1转到STP,进而结束 CPL FLAG ;当T05S到了2000次时,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

文档评论(0)

1亿VIP精品文档

相关文档