在线时间1018 小时
UID299704
注册时间2011-6-18
NXP金币2031
TA的每日心情 | 开心 昨天 17:08 |
---|
签到天数: 1332 天 [LV.10]以坛为家III
版主
- 积分
- 8996
- 最后登录
- 2024-3-19
|
LPC8N04的LED灯矩阵显示 在LPC8N04开发板上有5x7的LED灯矩阵,开发板原程序用于显示NFC中的data数据。5x7的点阵下完全可以显示英文字母和数字——我看进口的跑步机上的提示屏就是5x7矩阵LED灯。
了解原理图
查看一下LPC8N04的原理图如下所示。在点亮的时候需要将row引脚拉高,将col引脚拉低。
刷新原理
人眼观察物体时会有一个“延迟”,具体的原理我是忘记了。仅是印象中,最低刷新率为50Hz,所以我们暂时以50Hz为刷新率,但这个50Hz为全屏刷新率,我们有5列,所以每列的刷新率为250Hz得出刷新周期为4ms。
中断方式实现
在得出中断的定时周期为4ms,参考我们主频为4MHz,在使用CT16B定时器外设Match CH0通道实现,计算得出MR=160,PR=49,则Match通道0的中断周期为4ms。初始化代码如下:
- Chip_TIMER16_0_Init(); // initialize 16-bit timer
- Chip_TIMER_Reset(LPC_TIMER16_0); // reset 16-bit timer (PC&TC) for a new count
- Chip_TIMER_PrescaleSet(LPC_TIMER16_0, 49); // set the maximum value for Prescale Counter
- Chip_TIMER_SetMatch(LPC_TIMER16_0, TIMER_MATCH_CHN_0, 160); // set time counter match value
- Chip_TIMER_MatchEnableInt(LPC_TIMER16_0, TIMER_MATCH_CHN_0); // enable interrupt flag on match of channel 0
- // Chip_TIMER_StopOnMatchEnable(LPC_TIMER16_0, TIMER_MATCH_CHN_0); // enable stop flag on match of channel 0
- Chip_TIMER_ResetOnMatchEnable(LPC_TIMER16_0, TIMER_MATCH_CHN_0); // enable reset flag on match of channel 0
- NVIC_EnableIRQ(CT16B0_IRQn);
- /* enable the timer to start counting */
- Chip_TIMER_Enable(LPC_TIMER16_0);
复制代码 中断函数代码如下:
- void CT16B0_IRQHandler(void)
- {
- /* Get Timer Interrupt Status */
- if (Chip_TIMER_MatchPending(LPC_TIMER16_0, 0))
- {
- /* Clean-up Timer Interrupt Status */
- Chip_TIMER_ClearMatch(LPC_TIMER16_0, 0);
- /* set the flag for interval event */
- led_display();
- }
- }
复制代码
最后 发一张效果图。
|
|