家用定时供电插座的设计Word文档格式.docx

上传人:b****6 文档编号:20831108 上传时间:2023-01-25 格式:DOCX 页数:16 大小:277.55KB
下载 相关 举报
家用定时供电插座的设计Word文档格式.docx_第1页
第1页 / 共16页
家用定时供电插座的设计Word文档格式.docx_第2页
第2页 / 共16页
家用定时供电插座的设计Word文档格式.docx_第3页
第3页 / 共16页
家用定时供电插座的设计Word文档格式.docx_第4页
第4页 / 共16页
家用定时供电插座的设计Word文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

家用定时供电插座的设计Word文档格式.docx

《家用定时供电插座的设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《家用定时供电插座的设计Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

家用定时供电插座的设计Word文档格式.docx

通过这次课程设计不仅使我巩固了本课程所学的基本知识,还使我具有了撰写科研报告的初步训练能力,我相信这些能力在我以后的工作或者是再学习中一定会起到不小的作用,一切的辛苦和艰难都是值得的。

在设计前应该对所要实现的功能有一定的了解,定下有大概的流程图,把设计模块化,写程序时也应该一个模块一个模块的写,这样方便理解,也方便以后的检查。

在仿真和实物的过程中要了解所使用芯片的功能及引脚的排列方式,这样焊接时比较方便。

 

五、C语言程序

#include<

reg52.h>

#defineucharunsignedchar

#defineuintunsignedint

ucharcodetable1[]="

00:

00"

;

sbitdula=P2^6;

sbitwela=P2^7;

sbitlcden=P3^4;

//位定义

sbitlcdrw=P3^6;

sbitlcdrs=P3^5;

sbits1=P3^0;

sbits2=P3^1;

sbits3=P3^2;

sbitrd=P3^7;

sbitbeep=P2^3;

//定义蜂鸣器

sbitreplay=P0^6;

定义继电器

ucharnum,count,s1num;

//显示的位数;

响应中断数;

按键次数;

uinti;

charshi,fen,miao,shi1,fen1,miao1;

voiddelay(uintz)//延时程序

{

uintx,y;

for(x=z;

x>

0;

x--)

for(y=110;

y>

y--);

}

voidwrite_com(ucharcom)//控制指令

lcdrs=0;

//低电平时选择指令寄存器

lcdrw=0;

//低电平时进行写操作

delay(5);

lcden=1;

//E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令

P0=com;

lcden=0;

voidwrite_data(uchardate)//数据指令

lcdrs=1;

//均为高时是读出数据的内容

P0=date;

voidinit()//初始化

dula=0;

wela=0;

delay(15);

write_com(0x38);

//设置为4位总线,单行显示

//重复多次以确定可以正确设置

write_com(0x08);

//无光标正常显示

write_com(0x01);

//清显示

write_com(0x06);

//向右显示

write_com(0x0c);

//显示开关控制。

write_com(0x80+1);

//d7为高时,显示数据存储地址

TMOD=0x11;

//工作方式3

TH0=(65536-50000)/256;

//定时时间为50ms

TL0=(65536-50000)%256;

EA=1;

//开总中断

ET0=1;

//打开定时器

TR0=1;

//启动定时器

write_com(0x80+4);

//秒的设定

for(num=0;

num<

8;

num++)

{

write_data(table1[num]);

delay(20);

}

write_com(0x80+0x40+4);

voidwrite_sfm(ucharadd,uchardate)//调整时间

ucharshi,ge;

shi=date/10;

ge=date%10;

write_com(0x80+0x40+add);

//控制指令,0x40:

字符发生器RAM地址设置进行加

write_data(0x30+shi);

//数据指令

write_data(0x30+ge);

voidwrite_shedingsfm(ucharadd1,uchardate1)//设定定时时间

ucharshi1,ge1;

shi1=date1/10;

ge1=date1%10;

write_com(0x80+add1);

//控制指令

write_data(0x30+shi1);

write_data(0x30+ge1);

voidkeyscan()

rd=0;

if(s1==0)

s1num++;

while(!

s1);

//s1按下

if(s1num==1)//按下次数

TR0=0;

//停止定时器工作

write_com(0x80+0x40+11);

//调整时间设置,控制秒设定

write_com(0x0f);

//光标显示

if(s1num==2)

{

write_com(0x80+0x40+8);

//控制分钟设定

write_com(0x0f);

//控制光标闪烁

if(s1num==3)

write_com(0x80+0x40+5);

//控制时设定

if(s1num==4)

{TR0=1;

//启动定时器,定时时间的设定

write_com(0x80+11);

//控制秒的设定

//光标显示

if(s1num==5)

write_com(0x80+8);

//定时分钟的设定

if(s1num==6)

write_com(0x80+5);

//定时时的显示

if(s1num==7)

s1num=0;

//按键次数清零

//显示此时为无光标状态

if(s1num!

=0)//有按键时

if(s2==0)

while(!

s2);

if(s1num==1)

miao++;

if(miao==60)

{

miao=0;

}

write_sfm(10,miao);

//第10位进行秒的设定

fen++;

if(fen==60)

fen=0;

write_sfm(7,fen);

shi++;

if(shi==24)

shi=0;

}

write_sfm(4,shi);

if(s1num==4)

TR0=1;

//定时器启动

miao1++;

if(miao1==60)

miao1=0;

write_shedingsfm(10,miao1);

fen1++;

if(fen1==60)

fen1=0;

write_shedingsfm(7,fen1);

shi1++;

if(shi1==24)

shi1=0;

write_shedingsfm(4,shi1);

if(s3==0)

if(s3==0)

s3);

miao--;

if(miao==-1)

miao=59;

fen--;

if(fen==-1)

fen=59;

shi--;

if(shi==-1)

shi=23;

if(s1num==4)

miao1--;

if(miao1==-1)

miao1=59;

fen1--;

if(fen1==-1)

fen1=59;

shi1--;

if(shi1==-1)

shi1=23;

voidmain()//主函数

init();

//初始化函数

while

(1)

keyscan();

//键盘扫描

if(count==20)//响应中断20次,时间1s

count=0;

//清零

//秒加1

if(miao==60)//60秒时分加1

fen++;

if(fen==60)//60分时时加1

{

fen=0;

shi++;

if(shi==24)//24时时时全为0,从00:

00:

00开始计时

{

shi=0;

}

write_sfm(4,shi);

//修改时

}

write_sfm(7,fen);

//修改分

write_sfm(10,miao);

//修改秒

if((shi==shi1)&

&

(fen==fen1)&

(miao==miao1))//蜂鸣器电路的运行

for(i=0;

i<

10;

i++)

beep=0;

//蜂鸣器响

delay(50);

beep=1;

replay=0;

}

voidtimer0()interrupt1//中断函数

count++;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1