📄 ps7219.c
字号:
//-----------------------函数声明--------------------------------------------------------#include "reg51.h"//-----------------------地址定义--------------------------------------------------------#define addr_bit_1 0x01 //显示数据1的寄存器地址#define addr_bit_2 0x02 //显示数据2的寄存器地址#define addr_bit_3 0x03 //显示数据3的寄存器地址#define addr_bit_4 0x04 //显示数据4的寄存器地址#define addr_bit_5 0x05 //显示数据5的寄存器地址#define addr_bit_6 0x06 //显示数据6的寄存器地址#define addr_bit_7 0x07 //显示数据7的寄存器地址#define addr_bit_8 0x08 //显示数据8的寄存器地址#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 //显示测试寄存器//-----------------------管脚定义--------------------------------------------------------sbit ps7219_pin_RST = P1^4;sbit ps7219_pin_LOAD = P1^5;sbit ps7219_pin_DIN = P1^6;sbit ps7219_pin_CLK = P1^7;//-----------------------函数声明--------------------------------------------------------void ps7219_reset(); //复位void ps7219_init(); //初始化控制寄存器void ps7219_echo(unsigned char da_1,da_2,da_3,da_4,da_5,da_6,da_7,da_8);//数据寄存器void ps7219_send_data(unsigned char addr,da); //完成一次寄存器的写操作void ps7219_delay(void);//--------------------------------------------------------------------------------------------------// 函数名称: ps7219_reset// 函数功能: 完成ps7219的复位//--------------------------------------------------------------------------------------------------void ps7219_reset(){unsigned char i;ps7219_pin_RST=0;for(i=0;i<125;i++)ps7219_delay();ps7219_pin_RST=1;for(i=0;i<255;i++)ps7219_delay();ps7219_pin_RST=0;for(i=0;i<125;i++)ps7219_delay();}//--------------------------------------------------------------------------------------------------// 函数名称: ps7219_init// 函数功能: 通过写控制寄存器,完成ps7219的初始化//--------------------------------------------------------------------------------------------------void ps7219_init(){ps7219_reset();ps7219_send_data(addr_scan_count,0x04);ps7219_send_data(addr_light_con,0x0f);ps7219_send_data(addr_trans_mode,0xff);ps7219_send_data(addr_close,0x01);}//--------------------------------------------------------------------------------------------------// 函数名称: ps7219_echo// 入口参数: da_1,da_2,da_3,da_4,da_5,da_6,da_7,da_8 8个显示数据// 函数功能: 送八个显示数据到显示寄存器//--------------------------------------------------------------------------------------------------void ps7219_echo(unsigned char da_1,da_2,da_3,da_4,da_5,da_6,da_7,da_8){ ps7219_send_data(addr_bit_1,da_1); ps7219_send_data(addr_bit_2,da_2); ps7219_send_data(addr_bit_3,da_3); ps7219_send_data(addr_bit_4,da_4); ps7219_send_data(addr_bit_5,da_5); ps7219_send_data(addr_bit_6,da_6); ps7219_send_data(addr_bit_7,da_7); ps7219_send_data(addr_bit_8,da_8);}//--------------------------------------------------------------------------------------------------// 函数名称: ps7219_send_data// 入口参数: addr寄存器地址,da寄存器设置值// 函数功能: 把设置值写入对应的寄存器//--------------------------------------------------------------------------------------------------void ps7219_send_data(unsigned char addr,da) { unsigned char i,byte_out; byte_out=addr; ps7219_pin_DIN=1; ps7219_pin_CLK=1; ps7219_pin_LOAD=0; for(i=0;i<8;i++) { ps7219_pin_CLK=1; ps7219_pin_DIN=(bit)(byte_out&0x80); byte_out=byte_out<<1; ps7219_pin_CLK=0; ps7219_delay(); } ps7219_pin_CLK=1; byte_out=da; for(i=0;i<7;i++) { ps7219_pin_CLK=1; ps7219_pin_DIN=(bit)(byte_out&0x80); byte_out=byte_out<<1; ps7219_pin_CLK=0; ps7219_delay(); } ps7219_pin_CLK=1; ps7219_pin_LOAD=1; ps7219_pin_DIN=(bit)(byte_out&0x80); ps7219_pin_CLK=0; ps7219_delay(); ps7219_pin_CLK=1; }//--------------------------------------------------------------------------------------------------// 函数名称: ps7219_delay// 函数功能: 延时子程序//--------------------------------------------------------------------------------------------------void ps7219_delay(void){ unsigned char i; for(i=0;i<125;i++) {}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -