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

📄 max7219的c51程序.txt

📁 c51源程序总结
💻 TXT
字号:
用【 小 | 中 | 大 】字体浏览 
C51编程:那位DX能提供一个Max7219的C51程序,急!!! [dk-boy] [13次] 01-12-29 下午 05:10:34

可以试试 [xy-mcu] [39次] 01-12-29 下午 05:18:04 
#include "led_ascii.h"

#define no_op 0x00
#define digit0 0x01
#define digit1 0x02
#define digit2 0x03
#define digit3 0x04
#define digit4 0x05
#define digit5 0x06
#define digit6 0x07
#define digit7 0x08
#define decodemode 0x09
#define intensity 0x0a
#define scanlimit 0x0b
#define shutdown 0x0c
#define displaytest 0x0f     
sfr p3=0xb0;
sbit din=p3^7;
sbit load=p3^6;
sbit clk=p3^5;
//uc code led[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
//ASCII字符显示数据;

extern void delay100ms(void);

//uc p[8]={0x00};
/*void delay(void)
{
    uc i;
    ui j;
    j=1500;
    while(j--)
    {
        for(i=0;i<125;i++)
        {;}
    }
}
*/
/*---------------------------------------
向MAX7219发送一个字节;
---------------------------------------*/
void shift8(uc d)
{
    uc i,j;
    j=0x80;
    load=0;
    for(i=0;i<8;i++)
    {
        clk=0;
        if((d&j)!=0)
        din=1;
        else
        din=0;                
        clk=1;
        j>>=1;
    }
}
/*---------------------------------------
向MAX7219发送一个显示数据d,显示在addr行/列;
---------------------------------------*/
void load16(uc addr,uc d)
{
     
    shift8(addr);
    shift8(d);
    clk=0;
    load=1;
}
/*---------------------------------------
向MAX7219发送8个字节;即一屏数据;
---------------------------------------*/
void disp_MAX7219(uc idata *p)
{
    uc idata i;
    for(i=digit0;i<0x09;i++)
    {
        load16(i,*p++);
    }
}
/*---------------------------------------
向MAX7219发送8个字节,以显示一个ASCII码;
---------------------------------------*/
void disp_MAX7219_ascii(uc code *p)
{
    uc idata i;
    for(i=digit0;i<0x09;i++)
    {
        load16(i,*p++);
    }
}
/*---------------------------------------
显示ASCII字符
---------------------------------------*/

Disp_ascii(uc ch)
{
    ui i;
    i=ch;
    i-=0x20;
    i*=8;
    disp_MAX7219_ascii(&led[i]);
}
/*---------------------------------------
清屏
---------------------------------------*/

void clear(void)
{
    uc i,j;
    j=0x01;
    for(i=0;i<8;i++,j++)
    load16(j,0x00);
}    
/*---------------------------------------
初始化MAX7219,并清屏
---------------------------------------*/

void Init_MAX7219(void)
{
    load16(decodemode,0x00);    //设置无解码方式
    load16(intensity,0x09);        //设置亮度为10/16
    load16(scanlimit,0x07);        //8段全扫描
    load16(shutdown,0x01);        //设置开寄存器
    load16(displaytest,0x01);
    delay100ms();
    delay100ms();
    load16(displaytest,0x00);
    clear();
}

/*---------------------------------------
演示程序;全屏显示后,一点一点的依次显示;一直循环下去
---------------------------------------*/

/*
void main(void)
{
    uc i,j,k;
    ini();
    while(1)
    {
        for(j=digit0,k=0;j<decodemode;j++,k++)
        {        
            for(i=0;i<8;i++)
            {
                p[k]=led[i]|p[k];
                load16(j,p[k]);
                delay();
            }
        }
        clear();
        for(i=0;i<8;i++)
        p[i]=0;
    }
}
*/ 

有恩必报!! [dk-boy] [1次] 01-12-29 下午 05:25:00 
 

 
点击这里回复这篇贴子>>
_____________________________________________________________________________
Copyright?,C51BBS论坛 2000-2002 

⌨️ 快捷键说明

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