zzzqiu
获得 0 次赞
帮助过631人
由于本论坛禁止直接求程序禁止伸手党所以向大家请教一下大致的实现方法与思路理清头绪后我自己来写程序去实现 1614253066(1).jpg (37.18 KB 下载次数: 0) 下载附件 保存到相册 求实现功能的大致思路。特别是第三条,自动识别特殊车辆放行2021-2-25 19:38 上传 求实现交通灯功能的大致思路。特别是第三条,自动识别特殊车辆放行,无处下手。不要提用汇编语言,不懂。有没有C语言的
1613983478(1).png (25.64 KB 下载次数: 0) 下载附件 保存到相册 2021-2-22 16:43 上传 仿真过程中报错没法实现按键自锁功能
一个非常简单的小程序,利用外部中断控制静态数码管和动态数码管轮流显示数字0~7,可是无论是实际下载到开发板还是用protues仿真都只有动态显示,无法切换到静态显示,代码也检查了许多遍,刚刚开始学51,不知道是不是算法的问题,恳求大佬帮忙指点一点,下面是代码。 #include <reg52.h> #define LED1 P1//静态数码管 #define LED2 P0//动态数码管 sbit c=P2^7; sbit b=P2^6; sbit a=P2^5; sbit k1=P3^2; sbit k2=P3^3; unsigned char code num[8]={0x3f0x060x5b0x4f0x660x6d0x7d0x07}; unsigned char M[8]; unsigned char k; void displayLED1(); void displayLED2(); void zhong_duan_kai_qi(); void delay(unsigned int time); void main() { zhong_duan_kai_qi();//外部中断开启 while(1) { unsigned char i; if(k) { LED2=0x00; while(k) { displayLED1(); } } else { for(i=0;i<8;i++) { M[i]=num[i]; } LED1=0x00; while(~k) { displayLED2(); } } } } void delay(unsigned int time) { unsigned char i; unsigned int j; for(i=0;i<time;i++) { for(j=0;j<125;j++); } } void zhong_duan_kai_qi() { //设置INT0 IT0=1;//跳变沿出发方式(下降沿) EX0=1;//打开INT0的中断允许。 //设置INT1 IT1=1; EX1=1; //打开总中断 EA=1; } void displayLED1() { unsigned char i; for(i=0;i<8;i++) { LED1=num[i]; delay(500); } } void displayLED2() { unsigned char i; unsigned int j; for(i=0;i<8;i++) { switch(i) { case 0: c=0;b=0;a=0;break; case 1: c=0;b=0;a=1;break; case 2: c=0;b=1;a=0;break; case 3: c=0;b=1;a=1;break; case 4: c=1;b=0;a=0;break; case 5: c=1;b=0;a=1;break; case 6: c=1;b=1;a=0;break; case 7: c=1;b=1;a=1;break; } LED2=M[i]; j=500; while(j--); LED2=0x00;//消隐 } } void Int0()interrupt 0 { delay(1);//延时消抖 if(k1==0) { k=0; } } void Int1()interrupt 2 { delay(1); if(k2==0) { k=1; } }
就目前市售的人体感应模块,均可以实现人来输出高电平,人走延时输出低电平,但这一过程人体必须是动的。如果人进入感应范围内后没有动,那么过了延时时间,模块就会输出低电平。应用人体热释原理或人体微波感应原理的模块都是这样的结果。