完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include #include typedef unsigned char uint8; typedef unsigned int uint16; uint16 number[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; ***it key4=P2^4; ***it key5=P2^5; ***it key6=P2^6; ***it key7=P2^7; ***it keyout1=P2^3; ***it ENLED = P1^4; ***it ADDR0 = P1^0; ***it ADDR1 = P1^1; ***it ADDR2 = P1^2; ***it ADDR3 = P1^3; ***it L1= P0^0; ***it L2=P0^1; ***it buzz=P1^6; uint8 i[8];//申请寄存 uint8 y,n,x=0,a=50;//y报警变量,模拟数据n,状态转换选择变量x a阀值设置变量 void ref(); void conversion(); void aut_ref(); void aut(); void aut_key(void); void CTP(); void _manual(); void delay(uint8 z)//延时函数 { while(z--); } void ref() //数码管刷新函数 { uint8 j=0; switch(j) { case 0:ADDR0 = 0;ADDR1 = 0;ADDR2 = 0;ADDR3 = 1;P0 = number[i[0]%10];j++;break; case 1:ADDR0 = 1;ADDR1 = 0;ADDR2 = 0;ADDR3 = 1;P0 = number[i[0]/10];j=0;break; //case 2:ADDR0 = 0;ADDR1 = 1;ADDR2 = 0;ADDR3 = 1;P0 = 0xbf;j++;break; // case 3:ADDR0 = 1;ADDR1 = 1;ADDR2 = 0;ADDR3 = 1;P0 = 0xbf;j=0;break; // case 4:ADDR0 = 0;ADDR1 = 0;ADDR2 = 1;ADDR3 = 1;P0 = number[0];delay(1);j++;break; // case 5:ADDR0 = 1;ADDR1 = 0;ADDR2 = 1;ADDR3 = 1;P0 = number[0];delay(1);j++;break; // case 6:if(i default:break; } } void conversion()//状态转换函数 { while(1) { if(key7==0) { delay(1000); if(key7==0) x=1;//状态1------自动状态 while(!key7); } if(x==1) { if(key7==0) { delay(1000); if(key7==0) x=2;//状态2---手动状态 while(!key7); } } aut(); manual(); } } void aut_ref()//自动状态设置阀值显示刷新 { uint8 j=0; while(1) { switch(j) { case 0:ADDR0 = 0;ADDR1 = 0;ADDR2 = 0;ADDR3 = 1;P0 = number[a%10];j++;break; case 1:ADDR0 = 1;ADDR1 = 0;ADDR2 = 0;ADDR3 = 1;P0 = number[a/10];j++;break; case 2:ADDR0 = 0;ADDR1 = 1;ADDR2 = 0;ADDR3 = 1;P0 = 0xbf;j++;break; case 3:ADDR0 = 1;ADDR1 = 1;ADDR2 = 0;ADDR3 = 1;P0 = 0xbf;j=0;break; default:break; } } } void aut()//自动状态提示L1亮0xfe { while(1) { if(((x==1)||(x==0))&&(n { ADDR0 = 0;ADDR1 = 1;ADDR2 = 1;ADDR3 = 1; P0=0xfe; } aut_key(); } } void aut_key(void)//自动状态阀值设置 { uint8 m=0; while(1) { if(key6==0) { delay(1000); if(key6==0) { m=1; a=i[0]; if(key5==0) { delay(1000); if(key5==0) a=a+1; } if(key4==0) { delay(1000); if(key4==0) a=a-1; } aut_ref(); } } i[0]=a;//需要送给eeprom if(m==1&&key6==0) { delay(1000); if(key6==0) //a送给eeprom //返回自动状态 aut(); m=0; while(!key6); } } } void CTP()//Call the police手动状态报警 { uint8 m,n; while(1) { if(n>i[0]) { buzz=1; if(key6==0) { delay(1000); if(key6==0) { //关蜂鸣器 y=1; m=1; } } else m=0; if(m==1) buzz=0; if(y==1) { y=0; if(key6==0) { delay(1000); if(key6==0) n=1; } } else n=0; if(n==1) buzz=1;//开蜂鸣器 } } } void _manual()//手动状态提示 { uint8 m,n; while(1) { if(x==2) { CTP(); ref(); ADDR0 = 0;ADDR1 = 1;ADDR2 = 1;ADDR3 = 1; if(key5==0)//S5开灌溉系统L2亮 { delay(1000); if(key5==0) { m=1; while(!key5); } } else m=0; if(m==1) P0=0xfd; if(key4==0)//S4关灌溉系统L2灭 { delay(1000); { if(key4==0) { n=1; while(!key4); } } } else n=0; if(n==1) P0=0xff; } } } void mian() { uint16 counter; i[0]=a; ENLED = 0; TMOD = 0x01; TH0 = 0xFC; TL0 = 0x67; TR0 = 1; while(1) { if(1 == TF0) { TF0 = 0; TH0 = 0xFC; TL0 = 0x67; counter++; } if(1000 == counter) { counter = 0; n++; } ref(); conversion(); if(n == 55) { n = 35; } } } |
|
相关推荐
9个回答
|
|
觉得你要说一下你要实现的 目的啊 不然谁看的懂
|
|
|
|
楼上正解!!!
|
|
|
|
那你也得说清楚基本现象啊!是怎么不实现
|
|
|
|
话说这样看着真费劲啊,你要实现什么功能,出现什么问题?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
都没实现,程序编的时候是至底向上编译的,就是没有每个模块的拿来烧录检测,反复检查和编程之前的程序图对比,发现都没问题,不知道是不是这个思想上出错误了
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-spi编程示例之spi编写程序
536 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第三十七章 image图像对比实验
524 浏览 0 评论
477 浏览 1 评论
479 浏览 0 评论
关于RT-Thread studio添加freemodbus控件失败的问题
808 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11636 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-8 10:50 , Processed in 1.099510 second(s), Total 90, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号