程序: 利用上篇的程序进行加工改造。如下: #include<reg51.h> unsigned char temp,a,b; int i,j; void delay() { //int i,j; for(i=100;i>0;i--) for(j=200;j>0;j--); } void main() { //int i,j; temp=0xfe; P1=temp; delay(); while(1){ /* 左移2次*/ for(j=0;j<2;j++) { for(i=0;i<8;i++){ a=temp<<i; b=temp>>(8-i); P1=a|b; delay(); } } /* 右移2次*/ for(j=0;j<2;j++) { for(i=1;i<=8;i++){ a=temp>>i; b=temp<<(8-i); P1=a|b; delay(); } } /* 闪烁2次*/ for(i=0;i<2;i++){ P1=0; delay(); P1=0xff; delay(); } } } 利用取表的方式,如下: #include <reg51.h> unsigned char code table[]={0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f, 0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f, 0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe, 0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe, 0x00,0xff,0x00,0xff, 0x01}; unsigned char i; void delay(void) { unsigned char m,n,s; for(m=20;m>0;m--) for(n=20;n>0;n--) for(s=248;s>0;s--); } void main(void) { while(1) { if(table!=0x01) { P1=table; i++; delay(); } else { i=0; } } } 两种方式孰优孰劣,一看就可知。 对于同一个电路图,我们变换显示样式,只需要改变相应的程序即可实现。此篇与上篇既是如此,关键在于自己的发挥。 |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |