求单片机C程序

2024-12-20 22:34:34
推荐回答(2个)
回答1:

我说下思路,你写好程序,我帮你看。如果有问题,再追问。

程序分成两部分,把这两部分分开来做。
1、分别控制16个灯的亮、灭。根据硬件电路不同,做法不同。
你要求的是4x4的接法,也就是说是动态扫描的。动态扫描通常的做法是,把要显示的数据放到缓冲区中,然后用定时中断,按照一定的时间间隔,不停的分别显示每一列。
2、控制灯循环实现要求的花样。这部分理论上与硬件无关,如果是动态扫描,这部分的操作只是改写显示缓冲区。

下面是程序框架:

uint16_t led_buffer; // 要显示的数据

timer_isr( void ) // 定时中断, 假设1ms中断一次。
{
static i;
i = ( i + 1 ) % 4;
switch i
case 0: P0 = led_buffer & 0x000F; SN74138 = 0; // 显示第0列
。。。
}

pattern( void )
{
led_buffer = 0;
for ( i = 0; i < 16; ++i )
{
led_buffer = ( 1 << i );// 更新显示数据
delay( 1s ); // 延时1秒
}
}

main( )
{
timer_init();
for(;;)
{
pattern();
}
}

回答2:

这不是挺简单的嘛,你可以的,相信自己。先弄一个程序框架,把流程理一下,然后就可以开始敲代码了。