久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4110|回復(fù): 1
收起左側(cè)

大佬,是32*64點(diǎn)陣程序問題啊

[復(fù)制鏈接]
ID:291645 發(fā)表于 2018-3-23 11:24 | 顯示全部樓層 |閱讀模式
最近做了個(gè)32*64 單色點(diǎn)陣仿真。在程序上遇到問題了。望各位路過的大佬幫幫我這單片機(jī)菜鳥。#include<reg52.h>
#include"MacroAndConst.h"
#include"delay.h"
#include"display.h"
#include"ziku.h"


extern bit fLeftFlag;  //聲明外部變量
extern bit fRightFlag;        //聲明外部變量
uchar scan;
uchar speed=5;        //設(shè)定移動(dòng)速度
uint words;                //字模計(jì)數(shù)器
uchar move;                //列指針
uchar line;                //行指針
uchar temp;
uchar BUFF[10];        //緩存數(shù)組
sbit ST=P3^5;        //595 STR
sbit SH=P3^6;  //595 CLK
sbit DATA=P3^7;        //595 DATAS


/**********************************************************
函數(shù)名稱:LeftflowDisplay
函數(shù)功能:左移顯示函數(shù)
入口參數(shù):無  
出口參數(shù):無
備  注:
**********************************************************/
void LeftflowDisplay()                //逐行 陰碼 逆向
{
        uchar sp,y=0;
        move=0;
        words=0;
                while(words<20*32)                //
                {       
                         if(fLeftFlag==1)
                        {
                                while(move<16)        //數(shù)據(jù)移位
                                {       
                                        if(fLeftFlag==1)
                                        {       
                                       
                                                for(sp=0;sp<speed;sp++)        //移動(dòng)速度
                                                {       
                                                        if(fLeftFlag==1)
                                                        {
                                                                for(line=0;line<16;line++)        //行掃描
                                                                {
                                                                        loadline1();        //裝載一線點(diǎn)陣數(shù)據(jù)
                                                                        sendline1();        //發(fā)送一線移動(dòng)數(shù)據(jù)
                                                                        scan=line;        //顯示第line行
                                                                        P2=scan;
                                                                        ST=1;                //鎖存為高,595鎖存信號(hào)
                                                                        ST=0;
                                                                        delay_10us(50);        //延時(shí)500us,等待一段時(shí)間,產(chǎn)生視覺暫留
                                                                }
                                                        }
                                                        else
                                                        break;
                                                }
                                                move=move+1;                //移動(dòng)一步(一位)
                                        }
                                        else
                                        break;
                                }
                                move=0;
                                words=words+32;        //下一個(gè)字
                        }
                        else
                        break;
                }
                words=0;
        }
/**********************************************************
函數(shù)名稱:loadline1
函數(shù)功能:裝載點(diǎn)陣數(shù)據(jù)        緩存
入口參數(shù):無  
出口參數(shù):無
備  注:
**********************************************************/


void loadline1()
{
        uchar s;
        for(s=0;s<5;s++)        //s為要顯示的字?jǐn)?shù)+1(顯示4字+1=5)
        {
                BUFF[2*s]=zuoyi[words+ 32*s + 2*line];
                BUFF[2*s+1]=zuoyi[words+1+ 32*s + 2*line];
               
               
        }
}
/**********************************************************
函數(shù)名稱:sendline1
函數(shù)功能:發(fā)送點(diǎn)陣數(shù)據(jù)        緩存
入口參數(shù):無  
出口參數(shù):無
備  注:
**********************************************************/
void sendline1()
{
        uchar s;
        uchar inc,temp,tempcol;
        uchar  k;
        DATA=1;
        if(move<8) inc=0;
        else inc=1;
        for(s=0+inc;s<=7+inc;s++)
        {
                if(move<8)
                        tempcol=move;
                else
                        tempcol=move-8;
                temp=(BUFF>>tempcol)|(BUFF[s+1]<<(8-tempcol));        //字模左邊字節(jié)右移tempcol位,右邊字節(jié)左移8-tempcol位,2者相或
                for(k=0;k<8;k++)
              {
                      SH=0;
                        DATA=(bit)(temp&0x80);
                       temp=temp<<1;
                      SH=1;
           }
        }
}
/**********************************************************
函數(shù)名稱:RightflowDisplay
函數(shù)功能:右移顯示函數(shù)
入口參數(shù):無  
出口參數(shù):無
備  注:
**********************************************************/
void RightflowDisplay()        //流動(dòng)右移         逐行 陰碼 順向
{
        uchar i;
        move=0;
        words=0;
        while(words<=20*32)          //數(shù)組元素。46組,每組32個(gè)
        {       
                if(fRightFlag==1)
            {
                        while(move<16)// 循環(huán)16次,點(diǎn)亮并移動(dòng)一個(gè)漢字
                        {         
                                if(fRightFlag==1)
                                {
                                        for(i=0;i<speed;i++)//漢字在屏幕上的停留時(shí)間(即移動(dòng)速度快慢)
                                        {
                                                if(fRightFlag==1)
                                                {
                                                        for(line=0;line<16;line++)//掃描16行                         
                                                        {
                                                                loadoneline();//裝載一線點(diǎn)陣數(shù)據(jù)
                                                                sendoneline();//發(fā)送一線點(diǎn)陣數(shù)據(jù)
                                                                P2=line;                 
                                                            ST= 0;
                                                                ST= 1;
                                                            delay_10us(50); //延時(shí)500us,等待一段時(shí)間,產(chǎn)生視覺暫留                                                              
                                                        }
                                                 }
                                                 else
                                                 break;
                                        }
                                        move++;        //列指針遞增
                                }
                                else
                                break;                       
                        }
                        move=0;
                        words=words+32;// 一個(gè)漢字移動(dòng)后,指向下一個(gè)漢字          
                }
                else
                break;


        }
        words=0;
}
/**********************************************************
函數(shù)名稱:loadoneline
函數(shù)功能:裝載點(diǎn)陣數(shù)據(jù)        緩存
入口參數(shù):無  
出口參數(shù):無
備  注:
**********************************************************/
void loadoneline()
{
        uchar s;       
    for(s=0;s<5;s++)              //s為要顯示的數(shù)字+1
                {
                        BUFF[2*s+1]=youyi[words+32*s+2*line];
                        BUFF[2*s]=youyi[words+1+32*s+2*line];//~
                }
}
/**********************************************************
函數(shù)名稱:sendoneline
函數(shù)功能:發(fā)送點(diǎn)陣數(shù)據(jù)        緩存
入口參數(shù):無  
出口參數(shù):無
備  注:
**********************************************************/
void sendoneline()
{
        char s;
        uchar inc,k,tempcol;
        if(move<8)
                inc=0;
        else
                inc=1;      
        for(s=7+inc;s>=0+inc;s--)
                {
                        if(move<8)
                                tempcol=move;
                        else
                                tempcol=move-8;
                                temp=(BUFF>>tempcol)|(BUFF[s+1]<<(8-tempcol));
                        for(k=0;k<8;k++)
                             {       
                              SH=0;
                                DATA=(bit)(temp&0x01);
                               temp=temp>>1;
                              SH=1;
                          }
                }
}
顯示程序是這樣的。顯示出來的是兩行一樣的字。
那么問題來了。。。
1、如果如原理圖所示,595的DS只接一個(gè)數(shù)據(jù)引腳da0,怎么改程序讓兩行都顯示數(shù)據(jù),且數(shù)據(jù)不同呢?
2、如果把第二排595的DS接另一個(gè)數(shù)據(jù)引腳,先把第一排的數(shù)據(jù)全部移入595,再把第二排的數(shù)據(jù)移入595,然后再給第一排輸出時(shí)鐘,給第二排輸出時(shí)鐘,讓兩排的數(shù)據(jù)同時(shí)輸出。請(qǐng)問怎么改程序

仿真原理圖

仿真原理圖
回復(fù)

使用道具 舉報(bào)

ID:96682 發(fā)表于 2018-3-23 13:10 | 顯示全部樓層
把驅(qū)動(dòng)電路理清就不是事了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二 | 日韩欧美精品在线 | www视频在线观看 | 国产色片 | 拍戏被cao翻了h承欢 | 免费观看成人鲁鲁鲁鲁鲁视频 | 亚洲成人999 | 国产免费一级一级 | 欧美成人一区二区 | av在线免费观看不卡 | 国产精品久久 | 福利精品 | 黑人久久久 | 亚洲性免费 | 久久久久久综合 | 亚洲国产一区在线 | 国产婷婷色一区二区三区 | 日韩精品一区二区三区视频播放 | 日韩视频一区二区 | 青青久草 | 成人久久久 | 天堂在线www | 国产免费一区 | 视频一区二区中文字幕日韩 | 亚洲精品www久久久久久广东 | 天天操天天干天天透 | 日本高清中文字幕 | 秋霞影院一区二区 | 久久久婷婷| 日本午夜在线视频 | 欧美日韩国产一区二区三区 | 国产极品车模吞精高潮呻吟 | 日韩精品一区二区三区视频播放 | 亚洲欧美日韩精品久久亚洲区 | 美女国产精品 | 国产精品爱久久久久久久 | 亚洲欧洲一区二区 | 在线国产一区二区 | 成人a免费| 亚洲国产欧美一区二区三区久久 | 在线观看中文字幕视频 |