㈠ 若51单片机P1口接了8个LED,编写程序完成跑马灯程序要求大约1秒变化一次
在设计一个51单片机控制8个LED的跑马灯程序时,假设晶振频率为12MHz,P1口用于控制8个LED,采用低电平点亮LED的方式。程序的目标是使得LED每隔大约1秒变化一次,即实现跑马灯效果。
程序首先配置定时器1,使其工作于方式1,这是一个16位定时器,能够提供更长的定时范围。具体配置代码为:TMOD |= 0X10。接下来设置定时器1的初值,以实现每500微秒的定时周期。TH1和TL1的值分别为0XFE和0X0C,代表定时时间。
为了实现每秒变化一次的跑马灯效果,程序设置了定时器1中断服务函数。该函数每500微秒执行一次,通过累加YSJS变量来记录时间。当YSJS达到2000时,表示已经过去了1秒。此时,P1口的输出值将根据LED变量的变化来更新,实现LED的跑马灯效果。
LED变量通过左移操作来实现跑马灯效果,每次中断时LED左移一位。当LED变量达到0XFF时,即所有LED都被点亮后,重新将LED设置为0XFE,确保LED可以继续循环点亮。具体代码为:LED = LED << 1; LED = LED | 1; 这样,LED将依次点亮,实现跑马灯效果。
为了确保定时器1能够正常工作,程序还设置了定时器1的中断使能,并开启总中断。主函数中使用了一个无限循环,等待定时器1中断的发生。当定时器1发生中断时,程序将执行定时器1中断服务函数,从而实现LED的跑马灯效果。
通过上述配置和编程,51单片机可以控制8个LED实现跑马灯效果,每隔大约1秒变化一次,达到预期的效果。
㈡ 单片机走马灯总结怎么写就100字左右
最近无意间看到了涉及到跑马灯效果的代码,于是在网上查阅了很多资料,在这里对自己看的一些文章进行一下总结,顺便加上自己的一些体会。
首先我们要实现走马灯这样一个效果,通常来说都是在TextView这个控件中来实现的,而且其中的文字一定是单行显示,如果多行显示,那走马灯效果也就失去了存在的意义。另外,在EditText中使用走马灯没有必要,也不合理,实际上对于EditText来说android:ellipsize这个属性只有对于设置在android:hint中的文字
的时候是有用的,而且android:ellipsize="marquee"这个用法不能用在EditText控件上。对于在EditText用户输入的文字,android:ellipsize这个属性没有用处。关于EditText
设置android:ellipsize的相关用法以后再讲,在这里也算留个标记,以防自己忘了。
㈢ 51单片机跑马灯电路图(左右来回循环),8个led灯分别接在P2口,c程序、仿真图如下。电路并未出现预期效果
电路:
一般的单片机 和 TTL集成电路芯片,都是灌电流能力强,拉电流能力极弱。
为此,应该用输出低电平,来带动负载。
而你的电路,是用高电平带动LED发光的,仿真,也许还行;实际的电路,LED是不会亮的。