📄 displayled.c
字号:
//*********************************************************//
//*********************************************************//
//***********************点阵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 + -