3实验三_定时计数器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三定时计数器实验

(实验前一定要先完成仿真电路设计,没有完成的不能进入实验室)

一、实验要求

设计一个如图所示的门铃电路,当按下按钮开关时,喇叭发出叮咚的门铃声音。

二、实验目的

掌握单片机定时计数器的定时模式及编程。

三、实验步骤

1、按实验一的方法设计电路原理图。

本实验需要选取的元器件有单片机AT89C51、瓷片电容CAP、电解电容CAP-ELEC、电阻RES、晶振CRYSTAL、按钮BUTTON、普通三极管PN2222、喇叭SPEAKER等。本实验中的元器件参数值:晶振X1频率为12MHz,瓷片电容C1、C2的值为30pF,电解电容C3的值为10uF,电阻R1为470,R2、R3的值为10K,单片机AT89c51的时钟频率12MHz。

2、编写源程序

程序设计方法

1.我们用单片机实定时/计数器T0的方式2来产生700HZ和500HZ的频率,根据定时/计数器T0,我们取定时250us,因此,700HZ的频率要经过3次250us的定时,而500HZ 的频率要经过4次250us的定时。

2.在设计过程,只有当按下k1之后,才启动T0开始工作,当T0工作完毕,回到最初状态。

3.“叮”和“咚”声音各占用0.5秒,因此定时/计数器T0要完成0.5秒的定时,对于以250us为基准定时2000次才可以。也就是前0.5秒P3.2输出700HZ的频率,后0.5秒输出500HZ的频率。

四、仿真。

在PROTEUS ISIS环境,加载.HEX文件进行仿真。

五、写入实验箱单片机测试

启动ISP在线写程序,将仿真通过的.HEX文件写入综合实验箱的单片机中进行测试。检查是否和仿真的效果相同。

#include

unsigned char t500hz;

unsigned char t700hz;

unsigned int tcnt;

bit stop;

bit flag;

sbit SP1=P3^3;

sbit SPOUT=P3^2;

void main(void) {

TMOD=0x02;

TH0=0x06;

TL0=0x06;

ET0=1;

EA=1;

{

if(SP1==0)

{

//delay5ms();

if(SP1==0)

{

t500hz=0;

t700hz=0;

tcnt=0;

flag=0;

stop=0;

TR0=1;

//while(SP1==0);

//do{delay5ms();}

while(SP1==0);

}}

}}

void t0(void) interrupt 1 using 0 { tcnt++;

if(tcnt==2000)

{ tcnt=0;

if (flag==0)

{flag=~flag;}

else

{

TR0=0;

} }

if(flag==0) {

t700hz++;

if(t700hz==3) {t700hz=0; SPOUT=~SPOUT; } }

else

{

t500hz++;

if(t500hz==4) {

t500hz=0; SPOUT=~SPOUT; } }

}

相关文档
最新文档