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

📄 lisayutuxing.c

📁 通过对芯片TLC2543
💻 C
📖 第 1 页 / 共 2 页
字号:
#include"reg52.h"
#include "intrins.h"
#include "stdio.h"
#include "ctype.h"
#include "string.h"

#define RESET_ADD      0x02
#define RESET_CODE     0x01
#define LEFTMOV_ADD    0x03
#define LEFTMOV_CODE   0
#define LEFTCYC_ADD    0x03
#define LEFTCYC_CODE   0x01
#define RIGHTMOV_ADD   0x03
#define RIGHTMOV_CODE  0x02
#define RIGHTCYC       0x03
#define RIGHTCYC       0x03
#define SYSOFF_ADD     0x04
#define  SYSOFF_CODE   0x00
#define SYSON1_ADD     0x04
#define SYSON1_CODE    0x01
#define SYSON2_ADD     0x04
#define SYSON2_CODE    0x03
#define SYSON3_ADD     0x04
#define SYSON3_CODE    0x07
#define DSP_ADD        0x05
#define DSP_CODE       0x0a
#define BCD_ADD        0x05
#define BCD_CODE       0x80
#define TWINKLE_ADD    0x06
#define TWINKLE_CODE   0x00
#define DIG0           0x08
#define DIG1           0x09
#define DIG2           0x0a
#define DIG3           0x0b
#define DIG4           0x0c
#define DIG5           0x0d
#define DIG6           0x0e
#define DIG7           0x0f	
#define NOKEY          0
#define MENU           0x7b
#define CLEAR          0x7f
#define OK             0x7c
#define UP             0x7d
#define DOWN           0x7e	
#define CODE0          0x7e
#define CODE1          0x28
#define CODE2          0x5b
#define CODE3          0x6b
#define CODE4          0x2d
#define CODE5          0x67
#define CODE6          0x77
#define CODE7          0x2e
#define CODE8          0x7f
#define CODE9          0x6f
#define CODEF          0x17
#define CODEU          0x7c
#define CODE_ASK	   0x1b
#define CODEd 		   0x79
#define CODEA 		   0x3f
#define CODES 		   0x67
#define CODEN 		   0x3e
#define CODEY		   0x1d
#define CODEo 		   0x71
#define CODE_		   0x01
#define CODEh          0x35
#define CODEt          0x55
#define CODEC          0x55
#define CODEE          0x55
#define CODEL          0x55
#define POINT          0x80
#define year           0x10
#define month          0x11
#define date           0x12
#define hours          0x13
#define minutes        0x14
#define seconds        0x15
#define weekday        0x16

sbit B0=B^0;
sbit B1=B^1;
sbit B2=B^2;
sbit B3=B^3;
sbit B4=B^4;
sbit B5=B^5;
sbit B6=B^6;
sbit B7=B^7;

bit renew_dis_key_flag;

/*sbit CH451_DIN=P3^3;
sbit CH451_DOUT=P3^5;
sbit CH451_LOAD=P3^4;
sbit CH451_DCLK=P3^2;*/
sbit CH451_DCLK=P3^5;
sbit CH451_DIN=P3^4;
sbit CH451_LOAD=P3^3;
sbit CH451_DOUT=P3^2;
sbit TLC2543_CS=P1^2;
sbit TLC2543_DIN=P1^6;
sbit TLC2543_DOUT=P1^3;
sbit TLC2543_CLK=P1^7;
sbit TLC5620_CLK=P1^7;
sbit TLC5620_LOAD=P1^4;
sbit TLC5620_DATA=P1^6;
sbit TLC5620_LADC=P1^5;
sbit AT24C02_SDA=P1^1;
sbit AT24C02_SCL=P1^0;

union int_char
{
signed int signed_int;
unsigned int unsigned_int;
unsigned char c[2];
};

unsigned char     timer,last_key,key,data1=100;
unsigned char     keydata[8]={0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f,0};
unsigned char     dig0[8]={0,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
unsigned char     uled[10]={CODE0,CODE1,CODE2,CODE3,CODE4,CODE5,CODE6,CODE7,CODE8,CODE9};
unsigned char     dled[8]={CODE0,CODE1,CODE2,CODE2,CODE2,CODEU,CODE2,CODE2};
unsigned char     dig[8]={DIG0,DIG1,DIG2,DIG3,DIG4,DIG5,DIG6,DIG7};
unsigned char     sin[128]={64,67,70,73,76,80,83,86,88,91,94,97,100,102,105,107,109,111,113,115,117,119,120,122,123,124,125,126,127,127,128,128,
                  128,128,128,127,127,126,125,124,123,122,120,119,117,115,113,111,109,107,105,102,100,97,94,91,88,86,83,80,76,73,70,67,64,61,
				  58,55,52,49,46,43,40,37,34,31,29,26,24,21,19,17,15,13,11,9,8,6,5,4,3,2,1,1,0,0,0,0,0,1,1,2,3,4,5,6,8,9,11,13,15,17,19,21,24,26,
				  29,31,34,37,40,43,46,49,52,55,58,61};

union int_char    TLC2543_out;
unsigned int     TLC2543_out_ave,i,j=31;
/*----------*/
void write_ch451(unsigned char uadd,unsigned char ux,unsigned char dadd,unsigned  char dx) /*写CH451*/
{
CH451_DIN=0;CH451_DIN=1;                                                                                     

B=dx;                                   /*写要写入第二个CH451数据的数据段*/
CH451_DIN=B0;CH451_DCLK=0;CH451_DCLK=1; /*时钟上升沿有效*/
CH451_DIN=B1;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=B2;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=B3;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=B4;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=B5;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=B6;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=B7;CH451_DCLK=0;CH451_DCLK=1;
B=dadd;                                 /*写要写入第二个CH451数据的地址段*/
CH451_DIN=B0;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=B1;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=B2;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=B3;CH451_DCLK=0;CH451_DCLK=1;

B=ux;                                   /*写要写入第一个CH451数据的数据段*/
CH451_DIN=B0;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=B1;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=B2;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=B3;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=B4;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=B5;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=B6;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=B7;CH451_DCLK=0;CH451_DCLK=1;
B=uadd;                                 /*写要写入第一个CH451数据的地址段*/
CH451_DIN=B0;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=B1;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=B2;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=B3;CH451_DCLK=0;CH451_DCLK=1;

CH451_LOAD=0;CH451_LOAD=1;              /*加载数据*/
}
/*---------------------------------------------------*/
char read_ch451()                      /*读CH451,当有键按下时,从DOUT口串行读出数据*/
{
CH451_DIN=0;CH451_DIN=1;

CH451_DIN=1;CH451_DCLK=0;CH451_DCLK=1; /*发送两个字节,将第二个CH451高四位送入7,通知其读键值*/
CH451_DIN=1;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=1;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=0;CH451_DCLK=0;CH451_DCLK=1;

CH451_DIN=0;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=0;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=0;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=0;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=0;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=0;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=0;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=0;CH451_DCLK=0;CH451_DCLK=1;

CH451_DIN=0;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=0;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=0;CH451_DCLK=0;CH451_DCLK=1;
CH451_DIN=0;CH451_DCLK=0;CH451_DCLK=1;

CH451_LOAD=0;CH451_LOAD=1;               /*加载数据*/

B7=0;                                    /*读键值,并将其存入B寄存器中*/
B6=CH451_DOUT;CH451_DCLK=0;CH451_DCLK=1;
B5=CH451_DOUT;CH451_DCLK=0;CH451_DCLK=1;
B4=CH451_DOUT;CH451_DCLK=0;CH451_DCLK=1;
B3=CH451_DOUT;CH451_DCLK=0;CH451_DCLK=1;
B2=CH451_DOUT;CH451_DCLK=0;CH451_DCLK=1;
B1=CH451_DOUT;CH451_DCLK=0;CH451_DCLK=1;
B0=CH451_DOUT;CH451_DCLK=0;CH451_DCLK=1;
if(B6==0)B=0;                           /*如果键值为释放时的值,将B清零*/
return B;
}
/*--------------------------------------------------------------------------*/
void timer0(void) interrupt 1              /*中断T0*/
{

TH0=0xd0;
timer++;
if(timer<8)return;                          /*计8次返回*/
timer=0;renew_dis_key_flag=1;
}

/*----------------------------------------------------------------*/
int read_write_2543(char x)
{
union int_char y;
B=x;
TLC2543_DIN=1;
TLC2543_CS=0;
TLC2543_CLK=0;TLC2543_DIN=B7;B7=TLC2543_DOUT;TLC2543_CLK=1;
TLC2543_CLK=0;TLC2543_DIN=B6;B6=TLC2543_DOUT;TLC2543_CLK=1;
TLC2543_CLK=0;TLC2543_DIN=B5;B5=TLC2543_DOUT;TLC2543_CLK=1;
TLC2543_CLK=0;TLC2543_DIN=B4;B4=TLC2543_DOUT;TLC2543_CLK=1;
TLC2543_CLK=0;TLC2543_DIN=B3;B3=TLC2543_DOUT;TLC2543_CLK=1;
TLC2543_CLK=0;TLC2543_DIN=B2;B2=TLC2543_DOUT;TLC2543_CLK=1;
TLC2543_CLK=0;TLC2543_DIN=B1;B1=TLC2543_DOUT;TLC2543_CLK=1;
TLC2543_CLK=0;TLC2543_DIN=B0;B0=TLC2543_DOUT;TLC2543_CLK=1;
y.c[0]=B;
TLC2543_CLK=0;TLC2543_DIN=B7;TLC2543_CLK=1;
TLC2543_CLK=0;TLC2543_DIN=B6;TLC2543_CLK=1;
TLC2543_CLK=0;TLC2543_DIN=B5;TLC2543_CLK=1;
TLC2543_CLK=0;TLC2543_DIN=B4;TLC2543_CLK=1;
TLC2543_CS=1;
y.c[1]=B;
y.unsigned_int>>=4;
return y.unsigned_int;
}
/*-------------------------------------------------------------------------*/
void write_TLC5620(unsigned char add,unsigned char x)
{
TLC5620_DATA=1;
B=add;
TLC5620_CLK=1;TLC5620_DATA=B2;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B1;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B0;TLC5620_CLK=0;
B=x;
TLC5620_CLK=1;TLC5620_DATA=B7;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B6;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B5;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B4;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B3;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B2;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B1;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B0;TLC5620_CLK=0;
TLC5620_LOAD=0;TLC5620_LOAD=1;
TLC5620_LADC=0;TLC5620_LADC=1;
}
/*----------------------------------------------------------------------------*/
void write_TLC5620_two(unsigned char uadd,unsigned char ux,unsigned char dadd,unsigned char dx)
{
TLC5620_DATA=1;
B=uadd;
TLC5620_CLK=1;TLC5620_DATA=B2;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B1;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B0;TLC5620_CLK=0;
B=ux;
TLC5620_CLK=1;TLC5620_DATA=B7;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B6;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B5;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B4;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B3;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B2;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B1;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B0;TLC5620_CLK=0;
TLC5620_LOAD=0;TLC5620_LOAD=1;

B=dadd;
TLC5620_CLK=1;TLC5620_DATA=B2;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B1;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B0;TLC5620_CLK=0;
B=dx;
TLC5620_CLK=1;TLC5620_DATA=B7;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B6;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B5;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B4;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B3;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B2;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B1;TLC5620_CLK=0;
TLC5620_CLK=1;TLC5620_DATA=B0;TLC5620_CLK=0;

TLC5620_LOAD=0;TLC5620_LOAD=1;

TLC5620_LADC=0;TLC5620_LADC=1;
}
/*---------------------------------------------*/
/*TLC5620_operation2()
{
unsigned char i;
unsigned char j;
for(j=0;;j++)
{
for(i=0;i<128;i++)
{
write_TLC5620_two(0x02,sin[i],0x04,sin[i]);
}

⌨️ 快捷键说明

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