基于at89c51的自动喷水系统毕业设计(编辑修改稿)内容摘要:

[6]。 U16 U16temp1,U16temp2。 uchar shi,fen,miao,nam,dkey,num,key。 uchar code wei[]={0x01,0x02,0x04,0x08,0x10,0x20}。 //八位位选码表 uchar code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}。 //数码管显示编码 (1F) void SendData(U8 *a) {outdata[0] = a[0]。 outdata[1] = a[1]。 outdata[2] = a[2]。 outdata[3] = a[3]。 outdata[4] = a[4]。 outdata[5] = a[5]。 count = 1。 SBUF=outdata[0]。 } void delay1(U16 t) {U16 i,j。 for(i=t。 i0。 i) for(j=25。 j0。 j)。 } void delay2(U8 z) {uint i,j。 for(i=z。 i0。 i) for(j=110。 j0。 j)。 } void Delay(U16 j) {U8 i。 for(。 j0。 j) {for(i=0。 i27。 i++)。 } } void Delay_10us(void) {U8 i。 i。 i。 i。 i。 i。 i。 } void COM(void) {U8 i。 for(i=0。 i8。 i++) {U8FLAG=2。 while((!HR)amp。 amp。 U8FLAG++)。 Delay_10us()。 Delay_10us()。 Delay_10us()。 U8temp=0。 if(HR)U8temp=1。 U8FLAG=2。 while((HR)amp。 amp。 U8FLAG++)。 //超时则跳出 for 循环 if(U8FLAG==1)break。 //判断数据位是 0 还是 1 // 如果高电平高过预定 0 高电平值则数据位为 1 U8data=1。 U8data|=U8temp。 //0 }//rof } void RH(void) {//主机拉低 18ms HR=0。 Delay(180)。 HR=1。 //总线由上拉电阻拉高 主机延时 20us Delay_10us()。 Delay_10us()。 Delay_10us()。 Delay_10us()。 //主机设为输入 判断从机响应信号 HR=1。 //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行 if(!HR) //T ! {U8FLAG=2。 //判断从机是否发出 80us 的低电平响应信号是否结束 while((!HR)amp。 amp。 U8FLAG++)。 U8FLAG=2。 //判断从机是否发出 80us 的高电平,如发出则进入数据接收状态 while((HR)amp。 amp。 U8FLAG++)。 //数据接收状态 COM()。 U8RH_data_H_temp=U8data。 COM()。 U8RH_data_L_temp=U8data。 COM()。 U8T_data_H_temp=U8data。 COM()。 U8T_data_L_temp=U8data。 COM()。 U8checkdata_temp=U8data。 HR=1。 //数据校验 U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp)。 if(U8temp==U8checkdata_temp) {U8RH_data_H=U8RH_data_H_temp。 U8RH_data_L=U8RH_data_L_temp。 U16temp1 =U8RH_data_H。 U16temp1 = 8。 U16temp1 |= U8RH_data_L。 //获得完整的湿度 tab[0]=U16temp1/100。 //湿度百位 tab[1]=U16temp1%100/10。 //湿度十位 tab[2]=U16temp1%10。 //湿度个位 U8T_data_H=U8T_data_H_temp。 U8T_data_L=U8T_data_L_temp。 U16temp2 = U8T_data_H。 U16temp2=8。 U16temp2 |= U8T_data_L。 //获得完整的温度 tab[3]=U16temp2/100。 //温度百位 tab[4]=U16temp2%100/10。 //温度十位 tab[5]=U16temp2%10。 //温度个位 U8checkdata=U8checkdata_temp。 //校验位 } } } void time_display(int a,int b,int c) {uchar s,g。 s=a/10。 g=a%10。 clk=0。 P2=wei[5]。 P0=duan[s]。 clk=1。 delay2(1)。 clk=0。 P2=0。 clk=1。 delay2(1)。 clk=0。 P2=wei[4]。 P0=duan[g]|0x80。 clk=1。 delay2(1)。 clk=0。 P2=0。 clk=1。 delay2(1)。 s=b/10。 g=b%10。 clk=0。 P2=wei[3]。 P0=duan[s]。 clk=1。 delay2(1)。 clk=0。 P2=0。 clk=1。 delay2(1)。 clk=0。 P2=wei[2]。 P0=duan[g]|0x80。 clk=1。 delay2(1)。 clk=0。 P2=0。 clk=1。 delay2(1)。 s=c/10。 g=c%10。 clk=0。 P2=wei[1]。 P0=duan[s]。 clk=1。 delay2(1)。 clk=0。 P2=0。 clk=1。 delay2(1)。 clk=0。 P2=wei[0]。 P0=duan[g]。 clk=1。 delay2(1)。 clk=0。 P2=0。 clk=1。 delay2(1)。 } void time1_display() {uchar s,g。 s=shi/10。 g=shi%10。 clk=0。 P2=wei[5]。 P0=duan[s]。 clk=1。 delay2(1)。 clk=0。 P2=0。 clk=1。 delay2(1)。 clk=0。 P2=wei[4]。 P0=duan[g]|0x80。 clk=1。 delay2(1)。 clk=0。 P2=0。 clk=1。 delay2(1)。 s=fen/10。 g=fen%10。 clk=0。 P。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。