#includereg51h#includeintrinsh#define uchar unsigned char#define uint unsigned int#define data1 P0#define data2 P2sbit s1=P3^6;sbit s2=P3^7;bit fangxiang;uint alt=0net=0sl=35;bit mode;uchar code tab=0
这是一个基于单片机的LED点阵屏幕的控制程序。程序中使用了51单片机,通过P0和P2口来控制LED点阵的显示。程序中使用了定时器中断来控制LED点阵的滚动速度和方向。在主函数中,通过检测外部按键的状态来控制LED点阵的滚动方向和停止/继续滚动。
具体分析如下:
-
定义了一些宏定义和变量,如uchar、uint、data1、data2、s1、s2、fangxiang、alt、net、sl、mode、tab等。
-
delay()函数:通过循环来实现延时,用于控制LED点阵的刷新速度。
-
xianshi()函数:用于控制LED点阵的显示。通过循环遍历tab数组中的数据,将数据分别输出到P0和P2口,控制LED点阵的显示。在输出数据之前,通过P1口来控制LED点阵的行,从而实现逐行显示。
-
main()函数:程序的主函数。在该函数中,首先开启定时器中断,并通过while循环不断调用xianshi()函数来实现LED点阵的滚动。在while循环中,通过检测外部按键s1和s2的状态来控制LED点阵的滚动方向和停止/继续滚动。
-
timer1()函数:定时器中断函数。当定时器计数器达到设定的值时,通过判断fangxiang变量的值来控制LED点阵的滚动方向。如果fangxiang为0,则向右滚动;如果fangxiang为1,则向左滚动。同时,通过修改net变量的值来控制LED点阵的滚动速度和位置。当net变量达到设定的值时,重新开始滚动
原文地址: https://www.cveoy.top/t/topic/fmUr 著作权归作者所有。请勿转载和采集!