标题:
51单片机LCD12864万年历源程序+Proteus仿真 年月日 星期 温度显示
[打印本页]
作者:
吧更符合个
时间:
2020-7-7 14:32
标题:
51单片机LCD12864万年历源程序+Proteus仿真 年月日 星期 温度显示
这是一个电子时钟,具有显示温度调时,闹钟等功能。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
11.png
(416.4 KB, 下载次数: 64)
下载附件
2020-7-7 14:32 上传
单片机源程序如下:
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
#include<show.h>
#include<beep.h>
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
unsigned int State=0;//读时间标志
sbit K1=P0^0;
sbit K2=P0^1;
sbit K3=P0^2;
sbit K4=P0^3;
sbit led2=P0^4;
void delay(unsigned int ms);
void button();//按键扫描函数
void compare();//闹铃函?
void alarmshow();
unsigned char d;
void delay(unsigned int ms)
{
while(ms--);//大约为10us
}
void main()
{
u8 temperature[2];
Lcd_Initial();
DS1302_Init();
led2=0;
while(1)
{
if(State==0)DS1302_R();
button();
show();
compare();
Sensor_Fresh(temperature);
Lcd_Temperture(temperature);
}
}
unsigned int onf,kk;//闹钟开启标志位
unsigned int State;
unsigned int SetPlace=0;//调时选择标志位
unsigned int alack=0;//闹铃选择标志位
unsigned int MH; //月份选择
unsigned int YB;//年份标志
unsigned char a1,a2,a3,a4,a5;
unsigned char a6,a7,a8,a9;
void button()
{
if(a1==0)
{
if(K1==0&&a9==1)
{
delay(1000);
if(K1==0&&a9==1){d=0;a9=0;a8=0;a=0;AFlag[alack]=1;}
while(!K1);
}
if(K1==0&&a2==0)
{
delay(1000);
if(K1==0&&a2==0){;}
while(!K1);
}
if(K1==0&&a2==1){
delay(1000);
if(K1==0&&a2==1){
led2=~led2;a4=0;DS1302_Init();a2=0;a5=0;CFlag[SetPlace]=1;}while(!K1);}
}
if(a3==0)
{
if(K2==0&&a4==0)
{
delay(1000);
if(K2==0&&a4==0){State=~State;a4=1;a2=1;}
while(!K2);
}
if(K2==0&&a4==1)
{
delay(1000);
if(K2==0&&a4==1){SetPlace++;CFlag[SetPlace]=0;CFlag[SetPlace-1]=1;if(SetPlace>7)SetPlace=0;a5=1;}
while(!K2);
}
}
if(a6==0)
{
if(K3==0&&a5==0)
{
delay(1000);
if(K3==0&&a5==0){a=1;alack++;AFlag[alack]=0;AFlag[alack-1]=1;if(alack>3)alack=0;
d=1;a8=1;}while(!K3);}
if(K3==0&&a5==1)
{
delay(1000);
if(K3==0&&a5==1){TIME[(SetPlace-1)]++;
if((TIME[(SetPlace-1)]&0x0f)>9)TIME[(SetPlace-1)]=TIME[(SetPlace-1)]+6;
if(SetPlace<=2&&TIME[(SetPlace-1)]>=0x60){TIME[(SetPlace-1)]=0;}
if(SetPlace==3&&TIME[(SetPlace-1)]>=0x24){TIME[(SetPlace-1)]=0;}
if(SetPlace==4&&(TIME[4]==1||TIME[4]==3
||TIME[4]==5||TIME[4]==7||TIME[4]==8)&&TIME[SetPlace-1]>0x31){TIME[SetPlace-1]=1;}
if(SetPlace==4&&(TIME[4]==4||TIME[4]==6
||TIME[4]==9)&&TIME[SetPlace-1]>0x30){TIME[SetPlace-1]=1;}
if(SetPlace==5&&TIME[SetPlace-1]>0x12){TIME[SetPlace-1]=1;}
if(SetPlace==6&&TIME[SetPlace-1]>0x07){TIME[SetPlace-1]=1;}
if(SetPlace==7&&TIME[SetPlace-1]>0x99){TIME[SetPlace-1]=0;}
if(TIME[4]==2&&twoflag==0&&TIME[SetPlace-1]>0x28)TIME[SetPlace-1]=0x01;
if(TIME[4]==2&&twoflag==1&&TIME[SetPlace-1]>0x29)TIME[SetPlace-1]=0x01;
}
while(!K3);
}
}
if(a7==0)
{
if(K4==0&&a5==1)
{
delay(1000);
if(K4==0&&a5==1){TIME[(SetPlace-1)]--;
if((TIME[(SetPlace-1)]&0x0f)>9)TIME[(SetPlace-1)]=TIME[(SetPlace-1)]-6;
if((TIME[4]==4||TIME[4]==6||TIME[4]==9)&&(TIME[SetPlace-1]<0x01))TIME[SetPlace-1]=0x30;
if((TIME[4]==1||TIME[4]==3||TIME[4]==5)&&(TIME[SetPlace-1]<0x01))TIME[SetPlace-1]=0x31;
if(TIME[4]==2&&twoflag==1&&TIME[SetPlace-1]<0x01)TIME[SetPlace-1]=0x29;
if(TIME[4]==2&&twoflag==0&&TIME[SetPlace-1]<0x01)TIME[SetPlace-1]=0x28;
}
while(!K4);
}
if(K4==0&&a8==1)
{
delay(1000);
if(K4==0&&a8==1){alck[(alack-1)]++;
if((alck[(alack-1)]&0x0f)>9)alck[(alack-1)]=alck[(alack-1)]+6;
if(alack<=2){if(alck[(alack-1)]>=0x60){alck[(alack-1)]=0;}}
if(alack==3&&alck[alack-1]>=0x24){alck[(alack-1)]=0;}a9=1;
}
while(!K4);
}
}
if(K4==0&&kk==0)
{
delay(1000);
if(K4==0&&kk==0){onf=~onf; led2=~led2;
}
while(!K4);
}
}
void compare()
{
if(!onf){
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
设计.rar
(1.55 MB, 下载次数: 210)
2020-7-7 14:28 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
3042974988
时间:
2021-7-15 20:38
SetPlace++;是什么意思
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1