单片机c语言

<>欢迎进入51单片机学习网论坛讨论

本站新域名www.8951.com开通WWW.51C51.COM

中国单片机编程技术普及推广第一站!

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.汇编源程序

T5HZEQU 30H

T7HZEQU 31H

T05SAEQU 32H

T05SBEQU 33H

FLAGBIT 00H

STOPBIT 01H

SP1BIT 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

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;

}

}

}

单片机叮咚c语言,单片机试验19“叮咚”门铃相关推荐

  1. 单片机 switch c语言,单片机入门-C51语言switch-case语句电路应用实例

    原标题:单片机入门-C51语言switch-case语句电路应用实例 教学视频如下: 本例介绍switch-case选择语句的应用,用按钮控制LED灯作为实例,介绍如何使用该语句做设计.绘制了相应的电 ...

  2. 单片机秒表c语言,单片机制作秒表计时器(c语言)

    利用计数器中断,外部中断(按钮)编写的机遇c语言的秒表计时器 利用单片机制作秒表计时器 (c语言) #include//包含单片机对应的头文件 int MM=0,SS=0,MS=0; int time ...

  3. 单片机推挽输出c语言,单片机IO口科普:推挽输出、开漏输出详解

    原标题:单片机IO口科普:推挽输出.开漏输出详解 在学单片机和选用逻辑器件的时候我们常别人说这款芯片是推挽输出驱动能力强,这个引脚是开漏输出需要加上拉电阻. 是不是有时候感觉一头雾水? 今天就详解一下 ...

  4. 数字时钟单片机程序c语言,单片机数字时钟C语言程序

    单片机程序 /********************************************************/ #include // 包含51单片机寄存器定义的头文件 unsign ...

  5. 51单片机指针c语言,单片机C语言教程:C51指针的使用

    #include //预处理文件里面定义了特殊寄存器的名称如 P1 口定义为 P1 void main(void) { //定义花样数据,数据存放在片内 CODE 区中 unsigned char c ...

  6. 单片机 rs232 c语言,单片机与RS232串口通信C51程序

    /*************************************************************************/ #i nclude "iom16v.h ...

  7. c语言时钟ppt单片机,89c51 C语言单片机 时钟程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 谁可以帮忙在这个程序里加个闹钟程序 刚学不懂 顺便讲解一下 谢了 #include #include unsigned char code digit[1 ...

  8. c语言使单片机输出低电平,单片机开发中的一些实用技巧

    很多朋友正在学习单片机开发技术,但开发中免不了要碰到这样.那样的问题,有些问题可能无碍大局,但有一些问题却直接影响到产品的成本.体积.性能.这里介绍笔者的几个技巧,希望对大家的工作有帮助. 一.C语言 ...

  9. 《例说51单片机(C语言版)(第3版)》一1.7 实时练习

    本节书摘来自异步社区<例说51单片机(C语言版)(第3版)>一书中的第1章,第1.7节,作者 张义和 , 王敏男 , 许宏昌 , 余春长,更多章节内容可以访问云栖社区"异步社区& ...

最新文章

  1. 来翻翻百度的老底:当年你是怎么赢的谷歌?
  2. Python如何使用不同分隔符切分字符串
  3. Head First JSP---随笔六
  4. 面向对象编程03—封装、继承、重写、MRO、多态
  5. 【Linux】一步一步学Linux——whoami命令(96)
  6. 20165326 java第四周学习笔记
  7. 腾讯安全携手华夏银行“论道”金融风控,传递在线反欺诈干货建议
  8. php 热点图,JavaScript_javascript如何写热点图,在gis中,你如果用js来写热点 - phpStudy...
  9. 分布式事务键值数据库 TiKV 加入 CNCF 沙箱孵化器
  10. 公务员“上班睡觉”为何会被强势围观?
  11. 从数据治理、数据资产管理,到数据中台的落地实战!
  12. Source Insight 4.0黑色仿IDEA主题
  13. 数据分析--优化模型
  14. 网络安全术语基础知识
  15. Reflex WMS中阶系列7:已经完成拣货尚未Load的HD如果要取消拣货,该如何处理?
  16. 神秘的古文明 ———— 埃及文化
  17. 【进阶数据挖掘技术】进阶数据挖掘技术介绍
  18. 如何选择终端桌面管理软件?
  19. matplotlib画图之设置横轴坐标上下限的两种方法
  20. 美签 计算机 敏感专业,美国签证敏感专业列表

热门文章

  1. Oracle plsql 计算日期间工作日天数
  2. React Profiler Chrome Tool
  3. 八进制在计算机系统中的应用场景,二进制、八进制、十进制、十六进制都能干什么? 十六进制计算器使用场景...
  4. Jackson JsonParser 和 JsonGenerator
  5. hdu 4416 后缀数组
  6. reverse()的使用
  7. linux 查找替换
  8. 数据中心光纤布线的发展趋势
  9. Centos7 双网卡配置
  10. Android自定义键盘之汉字键盘