zoukankan      html  css  js  c++  java
  • 第十四届智能车培训 数码管

    数码管显示原理:

     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);
        
    }
  • 相关阅读:
    Java垃圾回收机制
    Java学习笔记——反射
    GitHub中有关已建仓库及上传项目文件的删除
    LaTex简历排版
    JavaSwing输入对话框,点击取消抛出异常的解决方法
    map的遍历方式(使用Junit测试)
    eclipse faild to creat the java Virtual Machine的解决办法
    XML消息解析_php
    [转载]android常用的API接口调用
    算法练习之:Doubles
  • 原文地址:https://www.cnblogs.com/WangYiqiang/p/9690074.html
Copyright © 2011-2022 走看看