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

📄 ps7219.c

📁 数码管驱动芯片PS7219的SPI接口控制程序
💻 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 + -