1、单片机期末考试编程题单片机期末考试编程题/*实验题目要求:P23- P26口做输出口,接发光二极管,编写并调试程序,使其闪烁。时间:2012年12月21日程序撰写者:邹康*/#includevoid delay(unsigned int t) /软延时大致时间为1ms unsigned int a,b; for(a=0;at;a+) for(b=0;b120;b+);void main() while(1) P2=P2; delay(1000); /延时1s /* 实验题目要求:P23- P26口做输出口,接发光二极管,编写并调试跑马灯程序。时间:2012年12月21日程序撰写者:邹康 */#
2、includevoid delay(unsigned int t) /延时1ms左右 unsigned int a,b; for(a=0;at;a+) for(b=0;b120;b+);void main() unsigned char i=0,m=0; while(1) for(i=0;i4;i+) /向左移动 P2=(0x08i); delay(1000); m=P2; for(i=0;ii); delay(1000); /*实验题目要求:设计一个二进制减1计数器,按一次键,减1,并用4个LED显示计数结果,减至0时,重新从15开始计数。时间:2012年12月21日程序撰写者:邹康*/#i
3、ncludesbit key1=P20;sbit LED0=P26; /单片机板子最右边的led灯sbit LED1=P25; /右边数第二个灯sbit LED2=P24; /右边数第三个灯sbit LED3=P23; /右边数第四个灯char number=15;unsigned char num4;void key() /通过按键对NUMBER的数值进行减计数 static unsigned char m=0; if(key1=0) m+; if(m=30) number-; if(number0) number=15; m=0; void number_change() /将十进制转换为
4、二进制 unsigned int n=0; unsigned char j=0; n=number; for(j=0;j4;j+) numj=n%2; n=n/2; void show() /通过LED将二进制显示出来 LED0=!num0; LED1=!num1; LED2=!num2; LED3=!num3; void main() while(1) key(); number_change(); show(); /*实验题目要求:用1个按键控制LED的显示,要求显示3种以上的不同模式。时间:2012年12月22日程序撰写者:邹康*/#includesbit led0=P23;sbit l
5、ed1=P24;sbit led2=P25;sbit led3=P26;sbit mode_key=P20;char mode=0;void delay(unsigned int t) /延时时间大约1ms unsigned int a,b; for(a=0;at;a+) for(b=0;b=30) mode+; if(mode=3) mode=0; m=0; void mode_1() /模式一 根据开发板,LED循环右移,时间间隔1s左右 unsigned char i=0,c=0; for(i=0;i4;i+) P2|=0xf8; c=(0x08i); P2&=c; delay(1000
6、); void mode_2() /模式二 根据开发板,LED一闪一灭,时间间隔1s左右 led0=0; led1=0; led2=0; led3=0; delay(1000); led0=1; led1=1; led2=1; led3=1; delay(1000);void mode_3() /模式三 , 先循环右移,再循环左移,时间间隔1s左右 unsigned char i=0,n=0,c=0; for(i=0;i4;i+) P2|=0xf8; P2&=(0x08i); delay(1000); for(i=0;ii); delay(1000); void main() while(1)
7、 key(); switch(mode) case 0 : mode_1();break; case 1 : mode_2();break; case 2 : mode_3();break; /*实验题目要求:用1个按键控制LED的显示,要求显示3种以上的不同模式。时间:2012年12月22日程序撰写者:邹康*/#includesbit led0=P23;sbit led1=P24;sbit led2=P25;sbit led3=P26;sbit mode_key=P20;char mode=0;void delay(unsigned int t) /延时时间大约1ms unsigned in
8、t a,b; for(a=0;at;a+) for(b=0;b=30) mode+; if(mode=3) mode=0; m=0; void mode_1() /模式一 根据开发板,LED循环右移,时间间隔1s左右 unsigned char i=0,c=0; for(i=0;i4;i+) P2|=0xf8; c=(0x08i); P2&=c; delay(1000); void mode_2() /模式二 根据开发板,LED一闪一灭,时间间隔1s左右 led0=0; led1=0; led2=0; led3=0; delay(1000); led0=1; led1=1; led2=1; l
9、ed3=1; delay(1000);void mode_3() /模式三 , 先循环右移,再循环左移,时间间隔1s左右 unsigned char i=0,n=0,c=0; for(i=0;i4;i+) P2|=0xf8; P2&=(0x08i); delay(1000); for(i=0;ii); delay(1000); void main() while(1) key(); switch(mode) case 0 : mode_1();break; case 1 : mode_2();break; case 2 : mode_3();break; /*实验题目要求:采用外部中断的方式实
10、现用1个按键控制LED的显示,要求显示3种以上的不同模式。时间:2012年12月22日程序撰写者:邹康*/#includesbit led0=P23;sbit led1=P24;sbit led2=P25;sbit led3=P26;unsigned char mode=0; void delay(unsigned int t) /延时时间大约1ms unsigned int a,b; for(a=0;at;a+) for(b=0;b120;b+);void mode_1() /模式一 根据开发板,LED循环右移,时间间隔1s左右 unsigned char i=0,c=0; for(i=0;i4;i+) P2|=0xf8; c=(0x08i); P2&=c; delay(1000); void mode_2() /模式二 根据开发板,LED一闪一灭,时间间隔1s左右 led0=0; led1=0; l
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1