📄 1621c.c
字号:
#include <reg52.h>
/*设定1621 command低8位数据*/
/**************************/
#define RC256 0x18 /*系统时钟选择为:片内RC振荡器*/
#define X32K 0x14 /*系统时钟选择为:晶振*/
#define E256 0x1C /*系统时钟选择为:外部时钟源*/
/**************************/
#define BIAS 0x29 /*1/3 偏压4背极*/
#define SYSEN 0x01 /*打开系统时钟*/
#define SYSDIS 0x00 /*关闭系统时钟和*/
#define LCDON 0x03 /*打开偏压发生器*/
#define LCDOFF 0x02 /*关闭偏压发生器*/
/**************************/
#define ToneOn 0x09 /*打开音频输出*/
#define ToneOff 0x08 /*关闭音频输出*/
#define Tone4k 0x40 /*音频输出频率为4K*/
#define Tone2k 0x60 /*音频输出频率为2K*/
/**************************/
#define TIMEREN 0x06 /*时基输出使能*/
#define TIMERDIS 0x04 /*时基输出禁能*/
#define CLRTIME 0x0C /*清零进基发生器*/
/**************************/
#define WDTEN 0x07 /*使能WDT溢出标志输出*/
#define WDTDIS 0x05 /*禁止WDT溢出标志输出*/
#define CLRWDT 0x0E /*清零WDT*/
/**************************/
#define IRQEN 0x88 /*使能IRQ输出*/
#define IRQDIS 0x80 /*禁止IRQ输出*/
/**************************/
/* cpu 晶振11.0596 */
/**************************/
sbit WRITE = P1^0;
sbit SDATA = P1^1;
sbit CS = P1^4;
unsigned char buff[16];
/**************************/
unsigned int wait_time;
unsigned char num;
unsigned char move_data;
/**************************/
sbit WDI = P1^6;
sbit SYBJ = P1^7;
void install_cpu()
{
PSW=0;
TMOD=0x21;
TH0=0xfc; /*1ms*/
TL0=0x66;
TH1=0x0fd; /* 9600 */
TL1=0x0fd;
SCON=0xf0; /* 9bit */
TCON=0x50;
T2CON=0x0;
T2MOD=0x0;
ET0=1;
/* ES=1;*/
PT0=1;
EA=1;
}
void install_bit()
{
void install_1621();
unsigned char i;
SYBJ=0;
install_1621();
for(i=0;i<16;i++)
{
buff[i]=0;
}
num=0;
move_data=1;
}
void test()
{
unsigned char i;
if(num<16)
{
if(buff[num]==255)
{
num++;
move_data=1;
}
else
{
buff[num]=buff[num]|move_data;
move_data=move_data<<1;
}
}
else
{
for(i=0;i<16;i++)
{
buff[i]=0;
}
num=0;
move_data=1;
}
}
void main()
{
void install_cpu();
void install_bit();
void SendData_to_1621(unsigned char adrr_1621,unsigned char *addr_showbuff,unsigned char data_count);
void Delay(unsigned int i);
void test();
install_cpu();
install_bit();
for(;;)
{
SendData_to_1621(0,buff,16);
Delay(500);
test();
}
}
void t0_time() interrupt 1
{
ET0=0;
WDI=!WDI;
wait_time++;
TH0=0xfc; /*1ms*/
TL0=0x66;
ET0=1;
}
void Delay(unsigned int i)
{
wait_time=0;
while(wait_time<i);
}
/**************************/
/*install 1621*/
void install_1621()
{
void Bit_wr_install();
void Bit_wr(unsigned char buff,unsigned char num);
void Bit_wr_end();
Bit_wr_install();
Bit_wr(0x80,0x03);
Bit_wr(SYSEN,0x08);
Bit_wr(0x00,0x01);
Bit_wr(LCDON,0x08);
Bit_wr(0x00,0x01);
Bit_wr(0x0d,0x08);
Bit_wr(0x00,0x01);
Bit_wr(RC256,0x08);
Bit_wr(0x00,0x01);
Bit_wr(BIAS,0x08);
Bit_wr(0x00,0x01);
Bit_wr_end();
}
/*发送1个命令子程序*/
void SendCommand_to_1621(unsigned char command_H,unsigned char command_L)
{
void Bit_wr_install();
void Bit_wr(unsigned char buff,unsigned char num);
void Bit_wr_end();
Bit_wr_install();
Bit_wr(command_H,0x03);
Bit_wr(command_L,0x08);
Bit_wr(0x00,0x01);
Bit_wr_end();
}
/*发送N个数据子程序*/
void SendData_to_1621(unsigned char addr_1621,unsigned char *addr_showbuff,unsigned char data_count)
{
void Bit_wr_install();
void Bit_wr(unsigned char buff,unsigned char num);
unsigned char i;
Bit_wr_install();
Bit_wr(0x80,0x01);
Bit_wr((addr_1621|0x40),0x08);
for(i=0;i<16;i++)
{
Bit_wr(*(addr_showbuff+i),0x08);
}
}
/*即起动1621初始化子程序*/
void Bit_wr_install()
{
CS=1;
WRITE=1;
CS=0;
}
void Bit_wr_end()
{
CS=1;
}
/*发送字节数据子程序*/
void Bit_wr(unsigned char buff,unsigned char num)
{
unsigned char n;
for(n=0;n<num;n++)
{
if((buff&0x80)==0x80)
{
SDATA=1;
}
else
{
SDATA=0;
}
WRITE=0;
buff=buff<<1;
WRITE=1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -