⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 displayled.c

📁 显示条屏原代码
💻 C
📖 第 1 页 / 共 2 页
字号:
//*********************************************************//
//*********************************************************//
//***********************点阵LED显示屏*********************//
//*********************************************************//

//实现汉字静态显示      2008.01.28
//实现由上而下逐行显示  2008.02.14
//串口通信功能调试完成  2008.02.15
//实现由左向右显示汉字  2008.02.17
//单屏左移完成          2008.02.17
//单屏连续移动完成      2008.02.17
//实现屏幕连续移动      2008.02.18
//实现双E2PROM读写      2008.02.28
//串口模拟下载字模      2008.02.28
//时间显示调试完成


#include"reg52.h"
#include "intrins.h"
#include <string.h>
#include <ctype.h>


typedef	unsigned char uchar;
typedef	unsigned int  uint;
typedef unsigned long ulong;


sfr  WDT_CONTR =0xe1;
sfr  AUXR      =0x8e;

sbit WP2    =P1^1;
sbit OE0    =P1^2;
sbit SER0   =P1^3;
sbit Rclk   =P1^4;
sbit GATE   =P1^5;
sbit SCL    =P1^6;
sbit WP1    =P1^7;
sbit RxD    =P3^0;
sbit TxD    =P3^1;
sbit T_CLK  =P3^2;		//SCK
sbit T_IO   =P3^3;		//IO
sbit T_RST  =P3^4;     	//REST
sbit SDA    =P3^5;
sbit SDA1   =P3^7;

bit iic_flag=0;	        //IIC选择 iic_flag=0选择AT24C256(1) iic_flag=1选择AT24C256(2)
bit flag=0;
bit move_flag=0;        //静态和移动选择
bit t_c=1;

unsigned char  taba[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
unsigned char  l_data[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
unsigned char  tabc[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};

unsigned char  code tabb[]={0x80,0x00,0x40,0x00,0x20,0x00,0x10,0x00,
                            0x08,0x00,0x04,0x00,0x02,0x00,0x01,0x00,
                            0x00,0x80,0x00,0x40,0x00,0x20,0x00,0x10,
							0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01};	   //由上而下逐行扫描

unsigned char  code num[12][8]=										       //存数字字模
{
{
/*------------------------------------------------------------------------------
;  源文件 / 文字 : 0
;  宽×高(像素): 8×8
------------------------------------------------------------------------------*/
//宽的像素数,高的像素数,宽的字节数,参数设置可选
0xFF,0xC7,0xBB,0xBB,0xBB,0xBB,0xBB,0xC7,
},
{
/*------------------------------------------------------------------------------
;  源文件 / 文字 : 1
;  宽×高(像素): 8×8
------------------------------------------------------------------------------*/
//宽的像素数,高的像素数,宽的字节数,参数设置可选
0xFF,0xEF,0xCF,0xEF,0xEF,0xEF,0xEF,0xC7,
},
{
/*------------------------------------------------------------------------------
;  源文件 / 文字 : 2
;  宽×高(像素): 8×8
------------------------------------------------------------------------------*/
//宽的像素数,高的像素数,宽的字节数,参数设置可选
0xFF,0xC7,0xBB,0xFB,0xF7,0xEF,0xDF,0x83,
},
{
/*------------------------------------------------------------------------------
;  源文件 / 文字 : 3
;  宽×高(像素): 8×8
------------------------------------------------------------------------------*/
//宽的像素数,高的像素数,宽的字节数,参数设置可选
0xFF,0xC7,0xBB,0xFB,0xE7,0xFB,0xBB,0xC7,
},
{
/*------------------------------------------------------------------------------
;  源文件 / 文字 : 4
;  宽×高(像素): 8×8
------------------------------------------------------------------------------*/
//宽的像素数,高的像素数,宽的字节数,参数设置可选
0xFF,0xF7,0xE7,0xD7,0xB7,0x81,0xF7,0xF7,
},
{
/*------------------------------------------------------------------------------
;  源文件 / 文字 : 5
;  宽×高(像素): 8×8
------------------------------------------------------------------------------*/
//宽的像素数,高的像素数,宽的字节数,参数设置可选
0xFF,0x83,0xBF,0x87,0xFB,0xFB,0xBB,0xC7,
},
{
/*------------------------------------------------------------------------------
;  源文件 / 文字 : 6
;  宽×高(像素): 8×8
------------------------------------------------------------------------------*/
//宽的像素数,高的像素数,宽的字节数,参数设置可选
0xFF,0xC7,0xBF,0xBF,0x87,0xBB,0xBB,0xC7,
},
{
/*------------------------------------------------------------------------------
;  源文件 / 文字 : 7
;  宽×高(像素): 8×8
------------------------------------------------------------------------------*/
//宽的像素数,高的像素数,宽的字节数,参数设置可选
0xFF,0x83,0xFB,0xF7,0xEF,0xEF,0xEF,0xEF,
},
{
/*------------------------------------------------------------------------------
;  源文件 / 文字 : 8
;  宽×高(像素): 8×8
------------------------------------------------------------------------------*/
//宽的像素数,高的像素数,宽的字节数,参数设置可选
0xFF,0xC7,0xBB,0xBB,0xC7,0xBB,0xBB,0xC7,
},
{
/*------------------------------------------------------------------------------
;  源文件 / 文字 : 9
;  宽×高(像素): 8×8
------------------------------------------------------------------------------*/
//宽的像素数,高的像素数,宽的字节数,参数设置可选
0xFF,0xC7,0xBB,0xBB,0x83,0xFB,0xFB,0x87,
},
{
/*------------------------------------------------------------------------------
;  源文件 / 文字 : .
;  宽×高(像素): 8×8
------------------------------------------------------------------------------*/
//宽的像素数,高的像素数,宽的字节数,参数设置可选
0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xE7,0xFF,
},
{
/*------------------------------------------------------------------------------
;  源文件 / 文字 : :
;  宽×高(像素): 8×8
------------------------------------------------------------------------------*/
//宽的像素数,高的像素数,宽的字节数,参数设置可选
0xFF,0xE7,0xE7,0xFF,0xFF,0xE7,0xE7,0xFF,
},
};

extern uchar data UartBuf[];
	
uchar s,t=0;
uchar line_num=0;	   //行扫描计数
uchar speed=20;        //调节移动速度(默认中等)
uchar speed_temp=20;
uchar lum=2;	       //亮度调节(默认中等)
uchar start_page=0;    //起始屏序号(默认第一屏)
uchar end_page=1;	   //终止屏序号(默认第二屏)
uchar tabh[]={0xff,0xff};
uint  t_count=1000;

extern  bit    write_ok,read_ok;
extern  enum  eepromtype  {M2401,M2402,M2404,M2408,M2416,M2432,M2464,M24128,M24256};
extern  enum  eepromtype EepromType;
extern  bit   RW24XX(unsigned char *DataBuff,unsigned int ByteQuantity,unsigned int Address,
                     unsigned char ControlByte,enum eepromtype EepromType);
extern bit   data time_flag;
extern bit   data mode_flag;
extern bit   data load_flag;	
extern void v_Set1381(uchar *pSecDa);
extern void v_Get1381(uchar *ucCurtime);
extern void Deal_Cmd(void);



void timer0(void) interrupt 1 using 1
{           
	if(t_count!=0)
	 {
	   t_count--;
       TH0=0xb7;	          //定时10ms
       TL0=0xff;
	 }
	else
	{
	   //TR0=1;
	   //t_c=1;
	   t_c=1;
	   t_count=1000;
	   TR0=0;
	}	
}

void delay(uchar n)    // n=1 延时450us(22.1184MHz) 1.7ms(内部晶振-时钟频率:6.075828M)
{
unsigned char i,j,k;

for(k=n;k>0;k--)			 
for(i=2;i>0;i--)		//10
for(j=255;j>0;j--);

}

/*****************************************************/
/*****************列点信号输出函数********************/
/************* row列信号数据首地址********************/
/**************一行数据8字节64列点********************/
/*****************************************************/
void hc595(uchar *row)
{
  uchar i,j;
  for(i=0;i<8;i++)		       
   {
	for(j=0;j<8;j++)
	 {
	  SCL=0;
	  _nop_();
	  _nop_();
	 if(_crol_(*(row+i),j)&0x80)  //字节左移j位
	   SDA=1;
	 else
	   SDA=0;
	   SCL=1;	   
	   _nop_();
	   _nop_();
	   Rclk=0;
	   _nop_();
	   _nop_();
	   Rclk=1;
	   _nop_();
	   _nop_();	   
	 }
   }
}
/*************************************************************/
/*********************行扫描函数******************************/
/***************** line行信号数据首地址***********************/
/***********line_num行顺序号(两字节扫描点亮一行)**************/
/***********line_num=32表示16行扫描完成即一屏显示*************/
/*************************************************************/
void line_scan(uchar* line)
{
  uchar i,j;	
  for(j=0;j<2;j++)
  {
	for(i=0;i<8;i++)
	 {
	  Rclk=0;
	  _nop_();
	  _nop_();
	 if(_crol_(*(line+line_num),i)&0x80)  //字节左移i位
	   SER0=1;
	 else
	   SER0=0;
	   Rclk=1;	   	   	   
	 }	 
	 line_num=line_num+1;

   }
   	 if(line_num==32)
	 {line_num=0;}
}


void transform(void)
{
  uchar i;
  if(move_flag==1)
  {		  
  if(flag==0)
  {
    for(i=0;i<s+1;i++)
    {
     taba[7-i]=l_data[s-i];
    }
  }
  else
  {
    for(i=0;i<7-s;i++)
     {
       taba[6-s-i]=l_data[7-i];
      }
    for(i=0;i<s+1;i++)
     {  
      taba[7-i]=tabc[s-i];		
     }   
   }
  }
 else
  {
    for(i=0;i<8;i++)
	   {
        taba[i]=l_data[i];
       }
  } 
} 

void display_mode(void)
{
    iic_flag=1;			 //选择AT24C256(2)
    do{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -