第十四届智能车培训 数码管
数码管显示原理:
TEC9607 数码管驱动芯片字符表
LED驱动器TEC9607引脚功能简介
数码管的控制端口及时序
数码管控制原理总结
单片机通过三个IO口来控制TEC9607 LED驱动器,从而来完成对5个数码管的控制。
传输数据方式:串行通信
三个IO口的作用: 1、SI: 串行输入数据,由微处理器程序给出
2、SCP: 串行移位脉冲,由微处理器控制。
3、LCP: 把5×8bit移位寄存器的数据锁存到段数据寄存器。高电平有效,LCP悬空为高电平“1”,数据自动进入段寄存器
示例代码
#include <hidef.h> #include "derivative.h" #define unsigned int uint const byte LedData[23] = {0x38,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e,0xce,0x6e,0x1c,0xfc,0x7c,0x9e,0x02}; /*0 1 2 3 4 5 6 7 8 9 A B C D E F P H l o v e -*/ //******************延时0************************// void delay(uint num) { uint i,j; num*=100; for(i=0;i<600;i++) for(j=0;j<num;j++); } //**************数码管段选输入***************// void spiput(uint z ) { int i; for(i=0;i<8;i++) { PTP_PTP2=0; //时钟(SCP )可用 为数码管驱动芯片提供时序脉冲信号 if(z%2==1) PTP_PTP1=1; //串行输入数据功能打开 通过SI 数据可以写入 点亮该段LED else PTP_PTP1=0; //串行输入数据功能关闭 通过SI 数据不可以写入 不点亮该段LED PTP_PTP2=1; //时钟(SCP )关闭 z=z/2; //对数z进行右移(二进制)运算 } } //************* 数码管位写入***********************// void bitput() { spiput(LedData[22]); //- spiput(LedData[21]); //E spiput(LedData[20]); //V spiput(LedData[19]); //O spiput(LedData[18]); //L } //****************数码管初始化*************************// //****************数码管驱动器TEC9607芯片功能设置*************************// void spibegin(void) { DDRP_DDRP1=1; //LEDSI串行输入数据功能 //P端口数据方向寄存器的DDRP_DDRP1引脚设为输出 DDRP_DDRP2=1; //段选输入打开 LEDSCP串行移位脉冲功能 //P端口数据方向寄存器的DDRP_DDRP2引脚设为输出 DDRK_BIT1=1; //LEDLCP锁存 K端口数据方向寄存器的DDRK_BIT1引脚设为输出 PORTK_BIT1=1; //片选(LCP) 锁存功能打开 // K端口数据寄存器的PORTK_BIT1设为高电平 PTP_PTP1=1; //数据(SI)可写入 PTP_PTP2=0; //时钟(SCP )可用 } //*************************MC9S12D64***************// void main(void) { spibegin(); //数码管初始化 bitput(); //数码管位写入 delay(10); }