单片机叮咚c语言,单片机试验19“叮咚”门铃
单片机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“叮咚”门铃相关推荐
- 单片机 switch c语言,单片机入门-C51语言switch-case语句电路应用实例
原标题:单片机入门-C51语言switch-case语句电路应用实例 教学视频如下: 本例介绍switch-case选择语句的应用,用按钮控制LED灯作为实例,介绍如何使用该语句做设计.绘制了相应的电 ...
- 单片机秒表c语言,单片机制作秒表计时器(c语言)
利用计数器中断,外部中断(按钮)编写的机遇c语言的秒表计时器 利用单片机制作秒表计时器 (c语言) #include//包含单片机对应的头文件 int MM=0,SS=0,MS=0; int time ...
- 单片机推挽输出c语言,单片机IO口科普:推挽输出、开漏输出详解
原标题:单片机IO口科普:推挽输出.开漏输出详解 在学单片机和选用逻辑器件的时候我们常别人说这款芯片是推挽输出驱动能力强,这个引脚是开漏输出需要加上拉电阻. 是不是有时候感觉一头雾水? 今天就详解一下 ...
- 数字时钟单片机程序c语言,单片机数字时钟C语言程序
单片机程序 /********************************************************/ #include // 包含51单片机寄存器定义的头文件 unsign ...
- 51单片机指针c语言,单片机C语言教程:C51指针的使用
#include //预处理文件里面定义了特殊寄存器的名称如 P1 口定义为 P1 void main(void) { //定义花样数据,数据存放在片内 CODE 区中 unsigned char c ...
- 单片机 rs232 c语言,单片机与RS232串口通信C51程序
/*************************************************************************/ #i nclude "iom16v.h ...
- c语言时钟ppt单片机,89c51 C语言单片机 时钟程序
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 谁可以帮忙在这个程序里加个闹钟程序 刚学不懂 顺便讲解一下 谢了 #include #include unsigned char code digit[1 ...
- c语言使单片机输出低电平,单片机开发中的一些实用技巧
很多朋友正在学习单片机开发技术,但开发中免不了要碰到这样.那样的问题,有些问题可能无碍大局,但有一些问题却直接影响到产品的成本.体积.性能.这里介绍笔者的几个技巧,希望对大家的工作有帮助. 一.C语言 ...
- 《例说51单片机(C语言版)(第3版)》一1.7 实时练习
本节书摘来自异步社区<例说51单片机(C语言版)(第3版)>一书中的第1章,第1.7节,作者 张义和 , 王敏男 , 许宏昌 , 余春长,更多章节内容可以访问云栖社区"异步社区& ...
最新文章
- 来翻翻百度的老底:当年你是怎么赢的谷歌?
- Python如何使用不同分隔符切分字符串
- Head First JSP---随笔六
- 面向对象编程03—封装、继承、重写、MRO、多态
- 【Linux】一步一步学Linux——whoami命令(96)
- 20165326 java第四周学习笔记
- 腾讯安全携手华夏银行“论道”金融风控,传递在线反欺诈干货建议
- php 热点图,JavaScript_javascript如何写热点图,在gis中,你如果用js来写热点 - phpStudy...
- 分布式事务键值数据库 TiKV 加入 CNCF 沙箱孵化器
- 公务员“上班睡觉”为何会被强势围观?
- 从数据治理、数据资产管理,到数据中台的落地实战!
- Source Insight 4.0黑色仿IDEA主题
- 数据分析--优化模型
- 网络安全术语基础知识
- Reflex WMS中阶系列7:已经完成拣货尚未Load的HD如果要取消拣货,该如何处理?
- 神秘的古文明 ———— 埃及文化
- 【进阶数据挖掘技术】进阶数据挖掘技术介绍
- 如何选择终端桌面管理软件?
- matplotlib画图之设置横轴坐标上下限的两种方法
- 美签 计算机 敏感专业,美国签证敏感专业列表