课程设计报告蓝牙校时电子钟Word文件下载.docx
- 文档编号:22349821
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:15
- 大小:619.70KB
课程设计报告蓝牙校时电子钟Word文件下载.docx
《课程设计报告蓝牙校时电子钟Word文件下载.docx》由会员分享,可在线阅读,更多相关《课程设计报告蓝牙校时电子钟Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
开发板USB接口
排阻
电位器
电路仿真图:
实验结果:
该电子钟具有5个按键,三个控制时分秒的增加,一个控制蓝牙校时,一个控制闹钟设计。
LCD第一排显示当前时间,第二排显示闹钟,蓝牙校时及闹钟设置由手机app完成数据发送。
数字钟源程序:
//*头文件*/
#include<
reg52.h>
#include<
intrins.h>
#defineuintunsignedint
#defineucharunsignedchar
#defineyh0x80//LCD第一行的初始位置
#defineer0x80+0x40//LCD第二行初始位置
sbita1=P1^0;
//“秒加”键K1
sbita2=P1^1;
//“分钟加”键K2
sbita3=P1^2;
//“小时加”键K3
sbitb1=P1^3;
//“校时”键K1
sbitb2=P1^4;
sbitc=P1^5;
sbitrs=P2^7;
sbitrw=P2^6;
sbiten=P2^5;
uchara;
uchari=0;
ucharseconde=0;
ucharminite=0;
ucharhour=12;
ucharmstcnt=0;
ucharcodetab1[]={"
Time:
:
"
};
//显示的固定字符
ucharcodetab2[]={"
Clock:
uchartate[6];
ucharldat[6]="
130000"
;
uchartime[6]="
120000"
voiddelay_1ms(uintxms)//延时函数,有参函数
{
uintx,y;
for(x=xms;
x>
0;
x--)
for(y=124;
y>
y--);
}
//****液晶写入指令函数****//
voidwrite_1602com(ucharcom)
{
rs=0;
//数据/指令选择置为指令
rw=0;
delay_1ms
(1);
P0=com;
//送入数据
en=1;
//拉高使能端,为制造有效的下降沿做准备
en=0;
//en由高变低,产生下降沿,液晶执行命令
//***液晶写入数据函数****//
voidwrite_1602dat(uchardat)
rs=1;
//数据/指令选择置为数据
P0=dat;
//en置高电平,为制造下降沿做准备
//en由高变低,产生下降沿,液晶执行命令
//***液晶初始化函数****//
voidlcd_init()
write_1602com(0x38);
//设置液晶工作模式,意思:
16*2行显示,5*7点阵,8位数据
delay_1ms(5);
write_1602com(0x0c);
//开显示不显示光标
write_1602com(0x06);
//整屏不移动,光标自动右移
write_1602com(0x01);
//清显示
write_1602com(er+0);
for(a=0;
a<
14;
a++)
{
write_1602dat(tab2[a]);
}
write_1602com(yh+0);
13;
write_1602dat(tab1[a]);
voidpro_value()
{
tate[0]=hour/10;
//将湿度的整数部分的十位和个位分开
tate[1]=hour%10;
tate[2]=minite/10;
tate[3]=minite%10;
tate[4]=seconde/10;
tate[5]=seconde%10;
write_1602com(yh+6);
2;
write_1602dat(tate[a]+0x30);
write_1602com(yh+9);
for(a=2;
4;
write_1602com(yh+12);
for(a=4;
6;
voidpros_data()
write_1602com(er+7);
{
write_1602dat(time[a]);
write_1602com(er+10);
write_1602com(er+13);
voiddisplay1()//设置显示
pros_data();
voidtime_pro(void)
if(seconde==60)//秒钟设为60进制
{seconde=0;
minite++;
if(minite==60)//分钟设为60进制
{minite=0;
hour++;
if(hour==24)//时钟设为24进制
{hour=0;
voidkeyscan(void)
if(a1==0)//按键1秒的调整
delay_1ms(30);
if(a1==0)
seconde++;
if(seconde==60)
{seconde=0;
if(a2==0)//按键2分的调整
if(a2==0)
if(minite==60)
{minite=0;
if(a3==0)//按键3小时的调整
if(a3==0)
if(hour==24)
voidtimer0(void)interrupt1using0//定时器0方式1,50ms中断一次
TH0=0x3c;
TL0=0xb0;
TMOD=0x11;
mstcnt++;
if(mstcnt==20)
mstcnt=0;
//注意点。
对计数单元的清零十分的重要,本次调试中就是
}//因为忽略了这一点,给我早成了很大的被动。
voidlanyaInit(void)
TMOD=0x21;
SCON=0x50;
EA=1;
ES=1;
TR1=1;
TH1=0xfd;
TL1=0xfd;
voidreceive()interrupt4
if(RI)
ldat[i]=SBUF;
RI=0;
SBUF=ldat[i];
while(!
TI);
TI=0;
i++;
if(i>
=6){
i=0;
voidcheck()
if(b1==0)
delay_1ms(30);
if(b1==0)
{
hour=(ldat[0]-48)*10+(ldat[1]-48);
minite=(ldat[2]-48)*10+(ldat[3]-48);
seconde=(ldat[4]-48)*10+(ldat[5]-48);
}
if(b2==0)
if(b2==0)
for(a=0;
{
time[a]=ldat[a];
}
voidclock()
if(minite==0)
if(seconde==0)
c=1;
delay_1ms(3000);
c=0;
if(hour==((time[0]-48)*10+(time[1]-48)))
if(minite==((time[2]-48)*10+(time[3]-48)))
if(seconde==((time[4]-48)*10+(time[5]-48)))
c=1;
delay_1ms(3000);
c=0;
/**********主函数******************/
voidmain()
lcd_init();
display1();
P1=0xff;
TMOD=0x21;
//time0为定时器,方式1
TH0=0x3c;
//预置计数初值
EA=1;
ET0=1;
TR0=1;
c=0;
while
(1)
keyscan();
//按键扫描
time_pro();
pro_value();
pros_data();
lanyaInit();
check();
clock();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报告 蓝牙 电子钟