万年历用单片机设计带仿真图1Word格式文档下载.docx
- 文档编号:18950201
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:27
- 大小:38.06KB
万年历用单片机设计带仿真图1Word格式文档下载.docx
《万年历用单片机设计带仿真图1Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《万年历用单片机设计带仿真图1Word格式文档下载.docx(27页珍藏版)》请在冰豆网上搜索。
sbits3=P3^3;
sbits4=P3^4;
sbits5=P3^5;
sbits6=P3^6;
sbits7=P3^7;
sbits8=P3^0;
sbiten=P2^0;
sbitrs=P2^1;
sbitsounder=P2^3;
sbitbutton1=P2^4;
sbits00=P0^0;
sbits01=P0^1;
sbits02=P0^2;
sbits03=P0^3;
sbits04=P0^4;
sbits05=P0^5;
sbits06=P0^6;
sbits07=P0^7;
sbits08=P2^5;
sbits9=P3^1;
sbits10=P2^6;
sbits11=P2^7;
sbitds=P2^2;
charnum,yue=4,xingqi=5,ri=22,miao=20,fen=36,shi=20,naoshi=20,naofen=53,naomiao=59,naoxingqi;
intnian=2012;
ucharnaomiao1,naofen1,naoshi1=66,naomiao2,naofen2,naoshi2=66,naomiao3,naofen3,naoshi3=66,naoxingqi1,naoxingqi2,naoxingqi3;
uinta,b,c,d,e,f,g,h,i;
ucharu;
voidwritecom(ucharcom);
voidwritedate(uchardate);
voidfengmingqi(void);
voiddelay(intx)//自定义延时时间
{
uinti,j;
for(i=0;
i<
x;
i++)
for(j=0;
j<
110;
j++);
}
voiddelayms(uinta)//Ms延时
for(i=a;
i>
0;
i--)
for(j=100;
j>
j--);
voiddsinit()//复位命令
{
uinti;
ds=0;
i=100;
while(i>
0)
i--;
ds=1;
i=4;
voiddsWait()//延时等待
while(ds);
while(~ds);
i=10;
0)i--;
bitreadBit()
bitb;
ds=0;
i++;
ds=1;
b=ds;
i=8;
returnb;
unsignedcharreadByte()//从单总线上读一个字节
ucharj,dat;
dat=0;
8;
{
j=readBit();
dat=(j<
<
7)|(dat>
>
1);
}
returndat;
voidwriteByte(unsignedchardat)//向单总线上写一个字节
ucharj;
j++)
ds=dat&
0x01;
delay(5);
ds=1;
dat=dat/2;
}//温度转换
voidsendchangecmd()
dsinit();
dsWait();
delayms
(1);
writeByte(0xcc);
writeByte(0x44);
voidsendreadcmd()
//读取数据
writeByte(0xbe);
}//读取温度
intgettmpvalue()
uinttmpvalue;
intvalue;
floatt;
ucharlow,high;
sendreadcmd();
low=readByte();
high=readByte();
tmpvalue=high;
tmpvalue<
=8;
tmpvalue|=low;
value=tmpvalue;
t=value*0.0625;
value=t*100+(value>
0?
0.5:
-0.5);
returnvalue;
voiddisplay(intv)//显示温度
ucharcount;
uchardatas[]={0};
uinttmp=abs(v);
datas[0]=tmp/10000;
datas[1]=tmp%10000/1000;
datas[2]=tmp%1000/100;
datas[3]=tmp%100/10;
datas[4]=tmp%10;
writecom(0xc0+14);
if(v<
0)
writedate('
-'
);
else
+'
if(datas[0]!
=0)
+datas[0]);
for(count=1;
count!
=5;
count++)
+datas[count]);
if(count==2)
.'
voidcgdingnaozhong()//成功定闹钟画面
writecom(0x01);
writecom(0x83);
writedate('
u'
c'
e'
s'
f'
l'
delay(1000);
writecom(0x01);
delayms(10);
;
voidtsdingnaozhong()//提示设置的闹钟1
writecom(0x80);
P'
a'
'
t'
writecom(0x80+0x40+7);
h'
r'
m'
delayms(10);
voidtsdingnaozhong1()//提示设置闹钟2
delay(1100);
voidtsdingnaozhong2()//提示设置闹钟3
delay(1000);
voidxianshinaozhong()//显示所有闹钟
{writecom(0x01);
^'
writedate(table[g/10]);
writedate(table[g%10]);
writedate(table[d/10]);
writedate(table[d%10]);
writedate(table[a/10]);
writedate(table[a%10]);
writecom(0x80+12);
writecom(0x80+0x40);
writedate(table[h/10]);
writedate(table[h%10]);
writedate(table[e/10]);
writedate(table[e%10]);
writedate(table[b/10]);
writedate(table[b%10]);
writedate(table[i/10]);
writedate(table[i%10]);
writedate(table[f/10]);
writedate(table[f%10]);
writedate(table[c/10]);
writedate(table[c%10]);
delay(4000);
voidnaozhong1()//闹钟显示文字1
{
writecom(0x80+8);
i'
writecom(0x80+0x40+6);
p'
!
fengmingqi();
voidnaozhong2()//闹钟显示文字2
G'
n'
o'
w'
}
voidnaozhong3()//闹钟显示文字3
q'
k'
y'
voidfengmingqi(void)//蜂鸣实现闹钟
while(u<
3)
{sounder=!
sounder;
delay(u);
voidwritecom(ucharcom)//写命令
rs=0;
P1=com;
delay(5);
en=1;
en=0;
voidwritedate(uchardate)//写数据
rs=1;
P1=date;
voidinit()//初始化
writecom(0x38);
writecom(0x0c);
writecom(0x06);
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
IT0=1;
EX0=1;
voidmain()//主函数开始
{uintq;
sendchangecmd();
init();
if(button1==0)//按键实现开机程序
for(q=0;
q<
1;
q++);
if(button1==0)
while
(1)
{
while(miao==naomiao1&
&
fen==naofen1&
shi==naoshi1)//设置第一个闹钟时间
{naozhong1();
//闹钟时间到显示的文字
while(miao==naomiao2&
fen==naofen2&
shi==naoshi2)
{naozhong2();
while(miao==naomiao3&
fen==naofen3&
shi==naoshi3)
{naozhong3();
writecom(0x80);
//开始写数据
writedate(table[shi/10]);
writedate(table[shi%10]);
writedate(table[10]);
writedate(table[fen/10]);
writedate(table[fen%10]);
writedate(table[10]);
writedate(table[miao/10]);
writedate(table[miao%10]);
writecom(0x80+11);
writedate(0x22);
writedate(table[naoshi/10]);
//显示闹钟设置时间
writedate(table[naoshi%10]);
writedate(table[naofen/10]);
writedate(table[naofen%10]);
writedate(table[naomiao/10]);
writedate(table[naomiao%10]);
writecom(0x80+0x40);
writedate(table[nian/1000]);
writedate(table[nian%1000/100]);
writedate(table[nian%100/10]);
writedate(table[nian%10]);
writedate(table[yue/10]);
writedate(table[yue%10]);
writedate(table[ri/10]);
writedate(table[ri%10]);
writecom(0x80+0x40+11);
writedate(table2[xingqi]);
writedate(table3[xingqi]);
writedate(table4[xingqi]);
display(gettmpvalue());
//显示温度
sendchangecmd();
while(button1==1)
writecom(0x80+4);
C'
writecom(0x80+0x40+3);
b'
K'
}
voidT0_time()interrupt1
num++;
if(num==20)
{num=0;
u++;
if(u>
u=0;
miao++;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 万年历 单片机 设计 仿真