#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit scl=P1^3
sbit sda=P1^4
sbit key1=P1^6
sbit key2=P1^7
sbit key3=P2^0
sbit key4=P2^1
sbit lcrs=P3^7//数据/命令
sbit lcwr=P3^5//读/写
sbit lcden=P3^4//使能
sbit DS=P2^2
/*sbit lcrs=P3^4//数据/命令
sbit lcwr=P3^7//读/写
sbit lcden=P3^5//使能
*/
sbit jrk=P2^2
sbit cyk=P2^3
sbit xhk=P2^4
bit flag=0,rsg=0,not=0,he=0,in=0
int acon=0,bcon=0,dcon=0,econ=0,
temp=0,y=0,j=0,l=0,cfj=0,ec=0,dc=0,at
uchar code table[]={48,49,50,51,52,53,54,55,56,57}
uchar code ta1[]={"Temperature UP"}
uchar code ta2[]={"Temperature DN"}
uchar code ta3[]={"Inflator Cycle"}
uchar code ta4[]={"Inflator Time "}
uchar code ta5[]={" Heating UP "}
uchar code ta6[]={"Inflator"}
uchar code table7[]={"Temperature"}
uchar table1[]={0,0,0,'.',0}
uchar table3[]={"AptitudeAquarium"}
uchar table4[]={0,0,0,0,0}
uchar n,c=0
void delay(uchar)
void wen_kong()
void xh()
void rso()
void weno()
void Init_Com(void)
{
TMOD = 0x11
PCON = 0x00
TH1=0x61
TL1=0x99
EA=1
ET1=1
TR1=1
}
void delay(uchar count) //delay
{
uint i
while(count)
{
i=200
while(i>0)
i--
count--
}
}
////初始化18B20/////////
bit init18b20(void)
{
uint i
bit no
DS=0
i=103
while(i>0)i--
DS=1
i=4
while(i>0)i--
no=DS
if(no==0)
{
DS=1
i=100
while(i>0)i--
no=DS
if(no==1)
not=0
else
not=1
}
else
not=1
return (not)
}
bit tmpreadbit(void) //读一位
{
uint i
bit dat
DS=0
i++
DS=1
i++i++
dat=DS
i=8while(i>0)i--
return (dat)
}
uchar tmpread(void) //读一个字节
{
uchar i,j,dat
dat=0
for(i=1i<=8i++)
{
j=tmpreadbit()
dat=(j<<7)|(dat>>1)//读出的数据最低位在最前面,这样刚好一个字节在DAT里
}
return(dat)
}
void tmpwritebyte(uchar dat) //写一个字节到 ds18b20
{
uint i
uchar j
bit testb
for(j=1j<=8j++)
{
testb=dat&0x01
dat=dat>>1
if(testb) //write 1
{
DS=0
i++i++
DS=1
i=8while(i>0)i--
}
else
{
DS=0 //write 0
i=8
while(i>0)i--
DS=1
i++i++
}
}
}
int tmp() //DS18B20温度读取
{
float tt
int a,b
if(init18b20()==0)
{
WDT_CONTR=0x36 /////喂狗
EA=0
delay(1)
tmpwritebyte(0xcc) // 跳过读ROM *** 作
tmpwritebyte(0x44) // 启动温度转换
delay(10)
init18b20()
delay(1)
tmpwritebyte(0xcc)
tmpwritebyte(0xbe)
a=tmpread()
b=tmpread()
temp=b
temp<<=8 //将高字节温度数据与低字节温度数据整合
temp=temp|a
c=b>>4
tt=temp*0.0625
temp=tt*10+0.5//放大10倍输出并四舍五入
EA=1
return temp
}
else
not=1
}
//////1062/////////
void ydelay(uint x)
{
uint a,b
for(a=xa>0a--)
for(b=10b>0b--)
}
void write_com(uchar com)
{
P0=com
lcwr=0
lcrs=0
lcden=0
ydelay(10)
lcden=1
ydelay(10)
lcden=0
lcwr=1
}
void write_date(uchar date)//写数据
{
P0=date
lcwr=0
lcrs=1
lcden=0
ydelay(10)
lcden=1
ydelay(10)
lcden=0
lcwr=1
}
void init1602()//初始化
{
write_com(0x38)//设置显示模式
ydelay(20)
write_com(0x0c)//开显示
ydelay(20)
write_com(0x06)//指针和光标自动加一
ydelay(20)
write_com(0x01)//清屏指令
ydelay(20)
}
///////显示程序//////
void display(int num)
{
uint i,A1,A2
WDT_CONTR=0x35 /////喂狗
if(c!=0)
num=~num+1
A1=num/1000
A2=num%1000/100
if(not==0)
{
if(c!=0)
{
c=0
table1[0]='-'
}
else if(A1==0)
table1[0]=' '
else
table1[0]=table[A1]
if(A1==0)
if(A2==0)
table1[1]=' '
else
table1[1]=table[A2]
table1[2]=table[num%1000%100/10]
table1[4]=table[num%1000%100%10]
}
else
{
table1[0]='?'
table1[1]='?'
table1[2]='?'
table1[4]='?'
}
write_com(0x80)
for(i=0i<11i++)
{write_date(table7[i])
delay(2)}
write_com(0x8b)
for(i=0i<5i++)
{write_date(table1[i])
delay(2)}
write_com(0xc0)
for(i=0i<16i++)
{
if(he==1)
write_date(ta5[i])
else if(in==1)
write_date(ta6[i])
else
write_date(table3[i])
}
c=0
WDT_CONTR=0x35 /////喂狗
}
////显示2////////////////////
display2(uchar bh,int dat)
{
uchar a,A,B
WDT_CONTR=0x35 /////喂狗
//write_com(0x01)//清屏指令
y=dat
y=y&0x8000
if(y!=0)
dat=~dat+1
A=dat/1000
B=dat%1000/100
if((bh!=4)&&(bh!=5))
{
if(A!=0)
table4[0]=table[dat/1000]
else if((c!=0)||(y!=0))
{
c=0y=0
table4[0]='-'
}
else
table4[0]=' '
if(B!=0)
table4[1]=table[B]
else
table4[1]=' '
table4[2]=table[dat%1000%100/10]
table4[3]='.'
table4[4]=table[dat%1000%100%10]
}
else
{
table4[0]=' '
if((c!=0)||(y!=0))
{
c=0y=0
table4[1]='-'
}
else
table4[1]=' '
table4[2]=' '
table4[3]=table[dat%1000%100/10]
table4[4]=table[dat%1000%100%10]
}
write_com(0xc4)
delay(2)
for(a=0a<5a++)
write_date(table4[a])
delay(2)
write_com(0x80)
switch(bh)
{
case 1:for(a=0a<14a++)write_date(ta1[a])break
case 2:for(a=0a<14a++)write_date(ta2[a])break
case 3:for(a=0a<14a++)write_date(ta3[a])break
case 4:for(a=0a<14a++)write_date(ta4[a])break
default:break
}
}
///////////x24c02//////////////////
void delay24()
{ }
void init24c02() //初始化
{
sda=1
delay24()
scl=1
delay24()
}
void start() //开始信号
{
sda=1
delay24()
scl=1
delay24()
sda=0
delay24()
}
void stop() //停止
{
sda=0
delay24()
scl=1
delay24()
sda=1
delay24()
}
void respons() //应答
{
uchar i
scl=1
delay24()
while((sda==1)&&(i<250))i++
scl=0
delay24()
}
void write_byte(uchar date) // 写数据子函数
{
uchar i,temp
temp=date
for(i=0i<8i++)
{
temp=temp<<1
scl=0
delay24()
sda=CY
delay24()
scl=1
delay24()
}
scl=0
delay24()
sda=1
delay24()
}
uchar read_byte() // 读数据子函数
{
uchar i,k
scl=0
delay24()
sda=1
delay24()
for(i=0i<8i++)
{
scl=1
delay24()
k=(k<<1)|sda
scl=0
delay24()
}
return k
}
///////写数据函数///////////////////
void write_add(uchar address,uint date)
{
start()
write_byte(0xa0)
respons()
write_byte(address)
respons()
write_byte(date/256)
respons()
write_byte(date%256)
respons()
stop()
}
uchar read_add(uchar address) //读数据函数
{
uchar date
start()
write_byte(0xa0)
respons()
write_byte(address)
respons()
start()
write_byte(0xa1)
respons()
date=read_byte()
stop()
return date
}
void delay1ms(uchar ms)
{
uchar i
while(ms--)
{
for(i = 0i<250i++)
{
_nop_()
_nop_()
_nop_()
_nop_()
}
}
}
int keyf(int *num,int up,int dn)
{
uint i
uchar z
for(i=0i<600i++)
{
display2(n,*num)
if(key1==0)
{
delay1ms(30)
if(key1==0)
{
i=0
n++
if(n>=9)
n=0
while(!key1)
display2(n,*num)
break
}
}
if(key2==0)
{
delay1ms(10)
if(key2==0)
{
i=0
if(*num>=up)
*num=up
else if(n!=4)
*num=*num+1
else if(*num<100)
*num=*num+5
else
*num=*num+10
for(z=0z<65z++)
{
display2(n,*num)
if(key2!=0)
break
}
while(!key2)
{
for(z=0z<2z++)
display2(n,*num)
if(*num>=up)
*num=up
else if(n!=4)
*num=*num+1
else if(*num<100)
*num=*num+5
else
*num=*num+10
}
}
}
if(key3==0)
{
delay1ms(10)
if(key3==0)
{
i=0
if(*num<=dn)
*num=dn
else if(n!=4)
*num=*num-1
else if(*num<100)
*num=*num-5
else
*num=*num-10
for(z=0z<65z++)
{
display2(n,*num)
if(key3!=0)
break
}
while(!key3)
{
for(z=0z<2z++)
display2(n,*num)
if(*num<=dn)
*num=dn
else if(n!=4)
*num=*num-1
else if(*num<100)
*num=*num-5
else
*num=*num-10
}
}
}
}
return(*num)
}
void keyjc()
{
uchar i=0
if(key1==0)
{
delay1ms(10)
if(key1==0)
{
EA=0
for(i=0i<20i++)
{
display(tmp())
}
if(key1==0)
{
write_com(0x01)//清屏指令
n++
if(n>=5)
n=0
while(!key1)
{
switch(n)
{
case 1:display2(n,acon)break
case 0:break
}
}
if(n==1)
{
keyf(&acon,1250,-530)
if((acon-bcon)<3)
bcon=acon-3
}
if(n==2)
{
keyf(&bcon,1240,-550)
if((acon-bcon)<3)
acon=bcon+3
}
write_add(1,acon)//A
delay1ms(15)
write_add(3,bcon)//B
n=0
write_com(0x01)//清屏指令
}
EA=1
}
}
}
key()
{
uint i
if(key4==0)
delay1ms(50)
if(key4==0)
{
write_com(0x01)//清屏指令
for(i=0i<500i++)
{
if(key4==0)
{
delay1ms(15)
if(key4==0)
{
i=0
n++
if(n>=5)
n=0
while(!key4)
{
switch(n)
{
case 1: display2(1,acon)break
case 2: display2(2,bcon)break
default: break
}
}
}
}
switch(n)
{
case 1: display2(1,acon)break
case 2: display2(2,bcon)break
default: break
}
}
n=0
}
}
///////滤波////////
int filter()
{
int tm,buf[6]
uchar i,j
EA=0
for(i=0i<6i++)
{
buf[i]=tmp()
delay1ms(20)
WDT_CONTR=0x35 /////喂狗
}
for(j=0j<5j++)
for(i=0i<5-ji++)
if(buf[i]>buf[i+1])
{
tm=buf[i]
buf[i]=buf[i+1]
buf[i+1]=tm
}
tm=((buf[2]+buf[3])/2)
EA=1
return (tm)
}
void main()
{
uchar b,c
Init_Com()
init1602()
init24c02()
b=read_add(1)
delay1ms(15)
c=read_add(2)
delay1ms(15)
acon=b*256+c
b=read_add(3)
delay1ms(15)
c=read_add(4)
delay1ms(15)
bcon=b*256+c
AUXR=0x01// 禁止ALE输出
WDT_CONTR=0x35//启动看门狗
write_com(0x01)//清屏指令
while(1)
{
at=filter()
display(at)
keyjc()
key()
wen_kong()
weno()
}
}
//////温度控制//////////////
void wen_kong()
{
if((flag==0)&&(not==0))
{
at=filter()
if(at<=bcon)
{
flag=1
jrk=0
xhk=0
he=1
}
}
}
void weno()
{
if(flag)
{
at=filter()
if(at>=acon)
{
flag=0
jrk=1
if(rsg)
xhk=0
else
xhk=1
he=0
}
}
if(not==1)
{
flag=0
jrk=1
if(rsg)
xhk=0
else
xhk=1
he=0
}
}
唧(jī)唧复唧唧,木兰当户织。不闻机杼(zhù)声,惟闻女叹息。 问女何所思,问女何所忆。女亦无所思,女亦无所忆。昨夜见军帖(tiě),可汗(kè hán)大点兵。军书十二卷,卷卷有爷名。阿爷无大儿,木兰无长兄。愿为(wèi)市鞍(ān)马,从此替爷征。东市买骏马,西市买鞍鞯(jiān),南市买辔(pèi)头,北市买长鞭。旦辞爷娘去,暮宿黄河边。不闻爷娘唤女声,但闻黄河流水鸣溅溅(jiān jiān)。旦辞黄河去,暮至黑山头。不闻爷娘唤女声,但闻燕山胡骑(jì)鸣啾啾(jiū jiū)。万里赴戎(róng)机,关山度若飞。朔(shuò)气传金柝(tuò),寒光照铁衣。将军百战死,壮士十年归。归来见天子,天子坐明堂。策勋十二转,赏赐百千强(qiáng)。可汗问所欲,木兰不用尚书郎,愿驰千里足,送儿还故乡。
爷娘闻女来,出郭相扶将(jiāng);阿姊(zǐ)闻妹来,当户理红妆;小弟闻姊来,磨刀霍霍(huò huò)向猪羊。开我东阁门,坐我西阁床。脱我战时袍,著(zhuó)我旧时裳(cháng)。当窗理云鬓(bìn),对镜帖(tiē)花黄。出门看火伴,火伴皆惊惶。同行十二年,不知木兰是女郎。
雄兔脚扑朔,雌兔眼迷离;双兔傍(bàng)地走,安能辨我是雄雌?
《木兰诗》诗意画 译文
叹息声一声接着一声传出,木兰对着房门织布。听不见织布机织布的声音,只听见木兰在叹息。问木兰在想什么?问木兰在惦记什么?(木兰答道)我也没有在想什么,也没有在惦记什么。昨天晚上看见征兵文书,知道君主在大规模征兵,那么多卷征兵文册,每一卷上都有父亲的名字。父亲没有大儿子,木兰(我)没有兄长,木兰愿意为此到集市上去买马鞍和马匹,就开始替代父亲去征战。
在集市各处购买马具。第二天早晨离开父母,晚上宿营在黄河边,听不见父母呼唤女儿的声音,只能听到黄河水流水声。第二天早晨离开黄河上路,晚上到达黑山头,听不见父母呼唤女儿的声音,只能听到燕山胡兵战马的啾啾的鸣叫声。
不远万里奔赴战场,翻越重重山峰就像飞起来那样迅速。北方的寒气中传来打更声,月光映照着战士们的铠甲。将士们身经百战,有的为国捐躯,有的转战多年胜利归来。胜利归来朝见天子,天子坐在殿堂(论功行赏)。给木兰记很大的功勋,得到的赏赐有千百金还有余。天子问木兰有什么要求,木兰说不愿做尚书郎,希望骑上千里马,回到故乡。父母听说女儿回来了,互相搀扶着到城外迎接她;姐姐听说妹妹回来了,对着门户梳妆打扮起来;弟弟听说姐姐回来了,忙着霍霍地磨刀杀猪宰羊。每间房都打开了门进去看看,脱去打仗时穿的战袍,穿上以前女孩子的衣裳,当着窗子、对着镜子整理漂亮的头发,对着镜子在面部贴上装饰物。走出去看一起打仗的伙伴,伙伴们很吃惊,(都说我们)同行数年之久,竟然不知木兰是女孩。
(提着兔子耳朵悬在半空中时)雄兔两只前脚时时动d、雌兔两只眼睛时常眯着,所以容易分辨。雄雌两兔一起并排跑,怎能分辨哪个是雄兔哪个是雌兔呢?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)