带报警的电子表.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

带报警的电子表

带报警的电子表

PAGE/NUMPAGES

带报警的电子表

基于51单片机的带报警的电子表

1.实验任务

利用单片机AT89C51与1602设计一个电子表,当满60秒时候溢出,喇叭响一次。

2.电路原理图

3.系统板上硬件连线

1).P0口与1602的数据输入输出口相连;

2).使能端相连,ES,RW,EN分别与P2.0,P2.1,P2.2相连;

3).蜂鸣器与P3.7相连;

4).上图12864也可以实现(程序未列);

4.c语言程序设计

#includereg52.h

#defineucharunsignedchar

#defineuintunsignedint

sbitrs=P2^0;//1602设置

sbitlcde=P2^2;

sbitrw=P2^1;

sbitbeep=P3^7;

ucharcodetable[]=2012-10-26;

ucharcodetable1[]=00-00-00;

ucharnum,t,num1;

ucharsec,min,hour,g,s;

voidinit();

voidwrite_cmd(ucharcmd);

voidwrite_date(uchardate);

voiddisplay(ucharadd,uchardate);

unsignedcharfrq;

voidDelayUs2x(unsignedchart);//函数声明

voidDelayMs(unsignedchart);

voidDelayUs2x(unsignedchart)

{

while(--t);

}

/*

mS延时函数,含有输入参数unsignedchart,无返回值

unsignedchar是定义无符号字符变量,其值的范围是

0~255这里使用晶振12M,精确延时请使用汇编

*/

voidDelayMs(unsignedchart)

{

while(t--)

{

//大致延时1mS

DelayUs2x(245);

DelayUs2x(245);

}

}

voiddelay(uintz)//延时

{

uintx,y;

for(x=115;x0;x--)

for(y=z;y0;y--);

}

voidinit()//初始化

{

write_cmd(0x38);

write_cmd(0x0C);

write_cmd(0x06);

write_cmd(0x80+3);

for(num=0;num10;num++)

{

write_date(table[num]);

delay(1);

}

write_cmd(0x80+0x40+4);

for(num=0;num8;num++)

{

write_date(table1[num]);

delay(1);

}

TMOD=0x01;

TH0=(65536-46080)/256;

TL0=(65536-46080)%256;

EA=1;

ET0=1;

TR0=1;

}

voidwrite_cmd(ucharcmd)//1602写命令

{

rs=0;

rw=0;

P0=cmd;

lcde=0;

delay(1);

lcde=1;

delay(1);

lcde=0;

delay(1);

}

voidwrite_date(uchardate)//1602写数据

{

rs=1;

rw=0;

P0=date;

lcde=0;

delay(1);

lcde=1;

delay(1);

lcde=0;

delay(1);

}

voiddisplay(ucharadd,uchardate)//1602显示

{

g=date%10;

s=date/10;

write_cmd(0x80+0x40+add);

write_date(0x30+s);

write_date(0x30+g);

}

voidmain()

{ uinti;

init();

while(1)

{

if(t==20)

文档评论(0)

135****1100 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档