关于16*128led显示屏的源程序(仅供参考)

2019-08-17 04:55发布

/**************************************
* Ãèêö    £oóÃstm32¿ØÖÆledÏÔê¾Æá         
* êμÑéƽ쨣oMINI STM32¿a·¢°å »ùóúSTM32F103C8T6
* ¿a°æ±¾  £oST3.0.0                                                                                                                                                                                                                    
*********************************************************/       
#include "stm32f10x.h"
#include "led.h"
#include "time.h"
#include "SysTick.h"
int k=0;
volatile u32 time;
///**********¾«è·Ñóê±**********/
/[img]file:///C:UsersjsuAppDataLocalTemp[LC3U)F{0XCAB)LKNIT0K@G.gif[/img]oid Delay_mS(uint32_t TimePara)
//        {
//            
//                 uint16_t i;  
//                 while(TimePara--)
//                 {
//                                i=100;
//                                while(i--) ;   
//                 }
//        }
uint8_t Hanzi[][2] = { 0x10,0x00,0x13,0xF8,0x10,0x10,0x10,0x20,
                        0xFC,0x40,0x10,0x84,0x33,0xFE,0x38,0xA4,
                        0x54,0xA4,0x50,0xA4,0x91,0x24,0x11,0x44,
                        0x12,0x44,0x14,0x84,0x11,0x28,0x10,0x10,}
/****************μãááÖ÷3ìDò£¬ÇåÆáoóoìμÆè«áá********************/
int main(void)
{
        SystemInit();        // ÅäÖÃÏμí3ê±ÖóÎa72M                
        LED_GPIO_Config();//GPIO3õê¼»ˉ
        TIM2_NVIC_Configuration(); //TIM2 ¶¨ê±ÅäÖÃ
  TIM2_Configuration();
        EN(1);
  //Clean_ICN2025();//ÇåËø′æDÅÏ¢£¬oìμÆè«Ãe
  while(1)
   {        
    for(k=0;k<16;k++)
    {
                                ICN2025_Send_Date_Up(Hanzi[k]);
        ICN_2012();
                }  
   }
}

/**************áDêy&#190;Y*************/
void ICN2025_Send_Date_Up(uint8_t buff[2])
{
  int i,j,p;
  uint8_t tmp;
        unsigned char *point;
        for(i=0;i<112;i++)
    {
                         {
                                  R1(0);
                                        //Delay_mS(1);            
                                        CLK(1);
                                        //Delay_mS(1);                         
                                        CLK(0);
                         }
    }
                   STB(1);
         //Delay_mS(1);                       
         STB(0);
   for(i=0;i<2;i++)
    {
                  tmp = buff ;
      for(j = 0 ; j< 8;j++)
                         {
                                  R1(~(tmp << j) & 0x80);
                                        //Delay_mS(1);            
                                        CLK(1);
                                        //Delay_mS(1);                         
                                        CLK(0);
                         }
    }
               
                STB(1);
         //Delay_mS(1);                       
         STB(0);
}

/***DD&#209;&#161;*******/
void ICN_2012(void)
{
        uint8_t tmp ;
        {               
                        tmp = k ;
                        LA((tmp >> 0) & 0x01);
                  LB((tmp >> 1) & 0x01);
                        LC((tmp >> 2) & 0x01);
                        LD((tmp >> 3) & 0x01);               
        }
}

这是主函数,其实道理非常简单,一个行选,一个列选,控制好时序就行了。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。