|
使用定时器/计数器T0的外部计数方式统计计按键次数,并将结果送一并口的8位LED显示,程序实现每按一次按键,按键次数加1,LED就多点亮一个(例如按2次按钮就点亮2只LED,按3次就亮3只LED),按第9次,LED只点亮第一个。 要求: (1)在keil IDE(μvision4)中完成应用程序设计、并编译; (2)在PROTEUS 7.8下的ISIS Professional中完成电路设计、调试与仿真通过。 (3)使用AT89C51单片机。 最好能附上电路图。各语句的解释。谢谢
虽然我在百度了一下这个题目,但是按照图片和上面的编程都好像不太行 图片:
图片需登录后查看 百度上的编程 #include<reg51.h> sbit S1=P3^4; unsigned char i; void delay(void) { unsigned int n; for(n=0;n<10000;n++) ; } //主程序 void main(void) { P0=0xff; TMOD = 0X06; TH0 = 256-1; TL0 = 256-1; ET0 = 1; //允许计数中断 EA = 1; //开总中断 TR0 = 1; //启动计数方式工作 while(1) { if(S1==0) //如果S1键按下 { delay(); //延时一段时间 if(S1==0) //如果再次检测到S1键按下 i++; //i自增1 if(i==9) //如果i=9,重新将其置为1 i=1; } switch(i) //使用多分支选择语句 { case 1: P0=0xfe; //第一个LED亮 break; case 2: P0=0xfd; //第二个LED亮 break; case 3:P0=0xfb; //第三个LED亮 break; case 4:P0=0xf7; //第四个LED亮 break; case 5:P0=0xef; //第五个LED亮 break; case 6:P0=0xdf; //第六个LED亮 break; case 7:P0=0xbf; //第七个LED亮 break; case 8:P0=0x7f; //第八个LED亮 break; default: //缺省值,关闭所有LED P0=0xff; } }} 求大神救救伊织了233
[ 此贴被速水伊织在2012-06-08 20:29重新编辑 ] | |