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

📄 display2x6_1.c

📁 W78E516实现高速公路收费站语音费额显示器资料之三:产品的语音,通讯,显示全套源代码程序.
💻 C
字号:
/******************************************************************/
/**文件名:   display2x6.c                                        **/
/**                                                              **/
/**文件描述: 若外部RAM在写操作时,则LED屏清屏                     **/
/**          在非清屏的情况下,读取外部RAM的数据,并显示在LED屏上  **/
/**          在非清屏的情况下,若全屏引脚为低时,显示屏全亮        **/
/**                                                              **/
/**创建人:   陈芸   时间:2007年7月17日                           **/
/**                                                              **/
/**版本号:   01                                                  **/
/**修改记录                                                      **/
/******************************************************************/
#include<reg52.h>
#include<absacc.h>
#include<def_pin.h>
#include<def_para.h>

void WDFeed(void);
void nnDisp8x12_1(void);
void nnDisp8x12_2(void);
void nnDisp8x12_3(void);
void nnDisp8x12_4(void);

void nnDisp8x12_001(void);
void nnDisp8x12_002(void);
void nnDisp8x12_003(void);
void nnDisp8x12_004(void);

void main(void)
        {
        uint data i=0,j=0,k=0,tp=0;
        bit f_rdram=1;

        /******************初始化**********************/
        //片内扩展DATA设置
        CHPENR=0x87;
        CHPENR=0x59;
        CHPCON|=0x10;//片内外部存储器写允许   //CHPCON=0x00; ----则片内外部存储器写禁止
        while(1)
                {
                WDFeed();
                if(pin_wrram==0)
                        {
                        if(f_rdram==1)
                                {
                                f_rdram=0;
                                for(i=0;i<256;i++)
                                        {
                                        CHPCON=0x00;
                                        ce_ram=0;
                                        tp=nDispRam[i];
                                        ce_ram=1;
                                        CHPCON|=0x10;
                                        tt[i]=tp;
                                        }
                                WDFeed();
                                for(i=0;i<128;i++)
                                        {
                                        CHPCON=0x00;
                                        ce_ram=0;
                                        tp=nDispRam[256+i];
                                        ce_ram=1;
                                        ttt[i]=tp;
                                        }
                                CHPCON|=0x10;
                                }
                        if(pin_full==1)
                                {
                                nnDisp8x12_1();
                                nnDisp8x12_2();
                                nnDisp8x12_3();
                                nnDisp8x12_4();
                                }
                        else
                                {
                                nnDisp8x12_001();
                                nnDisp8x12_002();
                                nnDisp8x12_003();
                                nnDisp8x12_004();
                                }
                        }
                else
                        {
                        ce1_138=1;
                        ce2_138=1;
                        ce3_138=1;
                        ce4_138=1;
                        f_rdram=1;
                        ce_ram=1;
                        }
                }
        }

/*****************************/
/**函数名: 喂狗程序
/**参数  : 无
/*****************************/
void WDFeed(void)
        {
        wdi=0;
        wdi=1;
        }

/*****************************/
/**函数名: 第一个8行显示程序
/**参数  : 无
/*****************************/
void nnDisp8x12_1(void)
        {
        uchr serialcnt=0,columncnt=0,linecnt=0,tp=0;
        uint tmp=0;
        for(linecnt=0;linecnt<8;linecnt++)                     //8行
                {
                for(columncnt=0;columncnt<12;columncnt++)      //j个595串联
                        {
                        tmp=linecnt*12+columncnt;
                        tp=tt[tmp];
                        for(serialcnt=0;serialcnt<8;serialcnt++)//单个595
                                {
                                sck=0;
                                ser=tp&0x80;
                                tp=tp*2;
                                sck=1;
                                }
                        }
                P3=P3&0x80|0x70|linecnt;
                rck=0;
                rck=1;
                }
        }

/*****************************/
/**函数名: 第二个8行显示程序
/**参数  : 无
/*****************************/
void nnDisp8x12_2(void)
        {
        uchr serialcnt=0,columncnt=0,linecnt=0,tp=0;
        uint tmp=0;
        for(linecnt=0;linecnt<8;linecnt++)               //8行
                {
                for(columncnt=0;columncnt<12;columncnt++)      //j个595串联
                        {
                        tmp=96+linecnt*12+columncnt;
                        tp=tt[tmp];
                        for(serialcnt=0;serialcnt<8;serialcnt++)//单个595
                                {
                                sck=0;
                                ser=tp&0x80;
                                tp=tp*2;
                                sck=1;
                                }
                        }
                P3=P3&0x80|0x68|linecnt;
                rck=0;
                rck=1;
                }
        }

/*****************************/
/**函数名: 第三个8行显示程序
/**参数  : 无
/*****************************/
void nnDisp8x12_3(void)
        {
        uchr serialcnt=0,columncnt=0,linecnt=0,tp=0;
        uint tmp=0;
        for(linecnt=0;linecnt<8;linecnt++)                     //8行
                {
                for(columncnt=0;columncnt<12;columncnt++)      //j个595串联
                        {
                        tmp=192+linecnt*12+columncnt;
                        if(tmp<256)
                                {
                                tp=tt[tmp];
                                }
                        else
                                {
                                tp=ttt[tmp-256];
                                }
                        for(serialcnt=0;serialcnt<8;serialcnt++)//单个595
                                {
                                sck=0;
                                ser=tp&0x80;
                                tp=tp*2;
                                sck=1;
                                }
                        }
                P3=P3&0x80|0x58|linecnt;
                rck=0;
                rck=1;
                }
        }

/*****************************/
/**函数名: 第四个8行显示程序
/**参数  : 无
/*****************************/
void nnDisp8x12_4(void)
        {
        uchr serialcnt=0,columncnt=0,linecnt=0,tp=0;
        uint tmp=0;
        for(linecnt=0;linecnt<8;linecnt++)                     //8行
                {
                for(columncnt=0;columncnt<12;columncnt++)      //j个595串联
                        {
                        tmp=288+linecnt*12+columncnt;
                        tp=ttt[tmp-256];
                        for(serialcnt=0;serialcnt<8;serialcnt++)//单个595
                                {
                                sck=0;
                                ser=tp&0x80;
                                tp=tp*2;
                                sck=1;
                                }
                        }
                P3=P3&0x80|0x38|linecnt;
                rck=0;
                rck=1;
                }
        }

/*****************************/
/**函数名: 第一个8行显示满屏程序
/**参数  : 无
/*****************************/
void nnDisp8x12_001(void)
        {
        uchr serialcnt=0,columncnt=0,linecnt=0,tp=0;
        uint tmp=0;
        for(linecnt=0;linecnt<8;linecnt++)                     //8行
                {
                for(columncnt=0;columncnt<12;columncnt++)      //j个595串联
                        {
                        tp=0;
                        for(serialcnt=0;serialcnt<8;serialcnt++)//单个595
                                {
                                sck=0;
                                ser=tp&0x80;
                                tp=tp*2;
                                sck=1;
                                }
                        }
                P3=P3&0x80|0x70|linecnt;
                rck=0;
                rck=1;
                }
        }

/*****************************/
/**函数名: 第二个8行显示满屏程序
/**参数  : 无
/*****************************/
void nnDisp8x12_002(void)
        {
        uchr serialcnt=0,columncnt=0,linecnt=0,tp=0;
        uint tmp=0;
        for(linecnt=0;linecnt<8;linecnt++)               //8行
                {
                for(columncnt=0;columncnt<12;columncnt++)      //j个595串联
                        {
                        tp=0;
                        for(serialcnt=0;serialcnt<8;serialcnt++)//单个595
                                {
                                sck=0;
                                ser=tp&0x80;
                                tp=tp*2;
                                sck=1;
                                }
                        }
                P3=P3&0x80|0x68|linecnt;
                rck=0;
                rck=1;
                }
        }

/*****************************/
/**函数名: 第三个8行显示满屏程序
/**参数  : 无
/*****************************/
void nnDisp8x12_003(void)
        {
        uchr serialcnt=0,columncnt=0,linecnt=0,tp=0;
        uint tmp=0;
        for(linecnt=0;linecnt<8;linecnt++)                     //8行
                {
                for(columncnt=0;columncnt<12;columncnt++)      //j个595串联
                        {
                        tp=0;
                        for(serialcnt=0;serialcnt<8;serialcnt++)//单个595
                                {
                                sck=0;
                                ser=tp&0x80;
                                tp=tp*2;
                                sck=1;
                                }
                        }
                P3=P3&0x80|0x58|linecnt;
                rck=0;
                rck=1;
                }
        }

/*****************************/
/**函数名: 第四个8行显示满屏程序
/**参数  : 无
/*****************************/
void nnDisp8x12_004(void)
        {
        uchr serialcnt=0,columncnt=0,linecnt=0,tp=0;
        uint tmp=0;
        for(linecnt=0;linecnt<8;linecnt++)                     //8行
                {
                for(columncnt=0;columncnt<12;columncnt++)      //j个595串联
                        {
                        tp=0;
                        for(serialcnt=0;serialcnt<8;serialcnt++)//单个595
                                {
                                sck=0;
                                ser=tp&0x80;
                                tp=tp*2;
                                sck=1;
                                }
                        }
                P3=P3&0x80|0x38|linecnt;
                rck=0;
                rck=1;
                }
        }

⌨️ 快捷键说明

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