📄 ps7219.c
字号:
#include<reg52.h>
//**********????********//
sbit CLK= P2^0;
sbit DIN= P2^1;
sbit RED_CS= P2^2;
sbit YELLOW_CS= P2^3;
sbit RED_NUM= P2^4;
sbit YELLOW_NUM= P2^5;
sbit LUCK_NUM= P2^6;
sbit TOTAL= P2^7;
//**********????********//
#define addr_trans_mode 0x09//译码方式寄存器
#define addr_light_con 0x0a//亮度控制器
#define addr_scan_count 0x0b//扫描极限
#define addr_close 0x0c//掉电存储
#define addr_glint_con 0x0d//闪烁控制
#define addr_show_test 0x0f//显示检测
//***********????********//
void ps7219_init();//初始化
void ps7219_echo(bit CS,unsigned char da_1,da_2,da_3,
da_4,da_5,da_6,da_7,da_8);//显示8个数据
void ps7219_send_data(bit gate,unsigned char addr,da);//发送1个字节数据
void ps7219_delay();
void delay1s(void);
/******************************************
*PROJECT CODE:ps7219_init *
*CREATE DATE:4/11/2006 *
*CREAT BY: 赵振刚 *
*FUNCTION: initial of the ps7219 *
*MODIFY DATE: *
*DOCUMENT: *
*OTHERS: *
******************************************/
void ps7219_init()
{
ps7219_send_data(RED_CS,addr_show_test,0x01);//开机自检
ps7219_send_data(YELLOW_CS,addr_show_test,0x01);
ps7219_send_data(RED_NUM,addr_show_test,0x01);
ps7219_send_data(YELLOW_NUM,addr_show_test,0x01);
ps7219_send_data(LUCK_NUM,addr_show_test,0x01);
ps7219_send_data(TOTAL,addr_show_test,0x01);
delay1s(); //延时1秒
ps7219_send_data(RED_CS,addr_show_test,0x00);//正常工作
ps7219_send_data(YELLOW_CS,addr_show_test,0x00);
ps7219_send_data(RED_NUM,addr_show_test,0x00);
ps7219_send_data(YELLOW_NUM,addr_show_test,0x00);
ps7219_send_data(LUCK_NUM,addr_show_test,0x00);
ps7219_send_data(TOTAL,addr_show_test,0x00);
/**********设置为1,对应位闪烁****************/
ps7219_send_data(RED_CS,addr_glint_con,0x00);//设置为1,对应位闪烁
ps7219_send_data(YELLOW_CS,addr_glint_con,0x00);
ps7219_send_data(RED_NUM,addr_glint_con,0x00);
ps7219_send_data(YELLOW_NUM,addr_glint_con,0x00);
ps7219_send_data(LUCK_NUM,addr_glint_con,0x00);
ps7219_send_data(TOTAL,addr_glint_con,0x00);
/*********扫描极限设置************************/
ps7219_send_data(RED_CS,addr_scan_count,0x04);//扫描极限设置
ps7219_send_data(YELLOW_CS,addr_scan_count,0x04);
ps7219_send_data(RED_NUM,addr_scan_count,0x04);
ps7219_send_data(YELLOW_NUM,addr_scan_count,0x04);
ps7219_send_data(LUCK_NUM,addr_scan_count,0x04);
ps7219_send_data(TOTAL,addr_scan_count,0x04);
/*****************BCD译码模式******************/
ps7219_send_data(RED_CS,addr_trans_mode,0xff);//
ps7219_send_data(YELLOW_CS,addr_trans_mode,0xff);
ps7219_send_data(RED_NUM,addr_trans_mode,0xff);
ps7219_send_data(YELLOW_NUM,addr_trans_mode,0xff);
ps7219_send_data(LUCK_NUM,addr_trans_mode,0xff);
ps7219_send_data(TOTAL,addr_trans_mode,0xff);
/****************掉电控制寄存器设置*************/
ps7219_send_data(RED_CS,addr_close,0x01);//
ps7219_send_data(YELLOW_CS,addr_close,0x01);
ps7219_send_data(RED_NUM,addr_close,0x01);
ps7219_send_data(YELLOW_NUM,addr_close,0x01);
ps7219_send_data(LUCK_NUM,addr_close,0x01);
ps7219_send_data(TOTAL,addr_close,0x01);
}
/******************************************
*PROJECT CODE:ps7219_echo *
*CREATE DATE:4/11/2006 *
*CREAT BY: 赵振刚 *
*FUNCTION: send 8 words to 7219 *
*MODIFY DATE: *
*DOCUMENT: *
*OTHERS: *
******************************************/
void ps7219_echo(bit CS,unsigned char da_1,da_2,da_3,
da_4,da_5,da_6,da_7,da_8)
{
bit EN;
EN=CS;
ps7219_send_data(EN,0x01,da_1);
ps7219_send_data(EN,0x02,da_2);
ps7219_send_data(EN,0x03,da_3);
ps7219_send_data(EN,0x04,da_4);
ps7219_send_data(EN,0x05,da_5);
ps7219_send_data(EN,0x06,da_6);
ps7219_send_data(EN,0x07,da_7);
ps7219_send_data(EN,0x08,da_8);
}
/******************************************
*PROJECT CODE:ps7219_echo *
*CREATE DATE:4/11/2006 *
*CREAT BY: 赵振刚 *
*FUNCTION: send 1 word to 7219 *
*MODIFY DATE: *
*DOCUMENT: *
*OTHERS: *
******************************************/
void ps7219_send_data(bit gate,unsigned char addr, da)
{ unsigned char i,byte_out;
bit LOAD;
LOAD=gate;
byte_out=addr;
DIN=1;
CLK=1;
LOAD=0;
for(i=0;i<8;i++)
{CLK=1;
DIN=(bit)(byte_out&0x80);
byte_out=byte_out<<1;
CLK=0;
ps7219_delay();
}
CLK=1;
byte_out=da;
for(i=0;i<7;i++)
{CLK=1;
DIN=(bit)(byte_out&0x80);
byte_out=byte_out<<1;
CLK=0;
ps7219_delay();
}
CLK=1;
LOAD=1;
DIN=(bit)(byte_out&0x80);
CLK=0;
ps7219_delay();
CLK=1;
}
/******************************************
*PROJECT CODE:ps7219_delay *
*CREATE DATE:4/11/2006 *
*CREAT BY: 赵振刚 *
*FUNCTION: delay of the 7219 *
*MODIFY DATE: *
*DOCUMENT: *
*OTHERS: *
******************************************/
void ps7219_delay()
{unsigned char i;
for(i=0;i<125;i++)
{}
}
/******************************************
*PROJECT CODE:ps7219_delay *
*CREATE DATE:4/11/2006 *
*CREAT BY: 赵振刚 *
*FUNCTION: delay of the 7219 *
*MODIFY DATE: *
*DOCUMENT: *
*OTHERS: *
******************************************/
void delay1s(void)
{
unsigned char h,i,j,k;
for(h=5;h>0;h--)
for(i=4;i>0;i--)
for(j=116;j>0;j--)
for(k=214;k>0;k--);
}
main()
{ps7219_init();
ps7219_echo(RED_CS,0,0,0,0,0,0,0,0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -