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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4372|回復: 2
打印 上一主題 下一主題
收起左側

STC89C52單片機無線供電的旋轉LED顯示屏制作

[復制鏈接]
跳轉到指定樓層
樓主
制作出來的實物圖如下:


單片機源程序如下:
完整版請看附件接收端
#include<reg52.h>
#include"24L01.h"
#include"ziku.h"
#include"24c64.h"
extern uchar TxBuf[5];         
extern uchar RxBuf[TX_PLOAD_WIDTH];
extern uchar sta;
extern uchar MAX_RT;//重發次數溢出中斷,寫1清除中斷,如果MAX_RT產生中斷,必須清楚后系統才能進行通
extern uchar RX_DR;//接收數據中斷,當收到有效數據后置1,寫1清除中斷
extern uchar  TX_DS;//數據發送完成中斷,寫1清除中斷
uchar a;
uchar xdata xiancun1[96];
uchar xdata xiancun2[96];
uint num2;
uchar b;                //接收中斷標志(中斷1)
uchar stop=1;        //表示移動或者暫停移動標志位
uchar wide=4;        //字體寬度標志
uchar speed=2;        //字體移動速度
uchar up=50;        //動態掃描上限
uchar down=0;        //動態掃描下限
void yanshi(uint x)
{
        uint i,j;
        for(i=x;i>0;i--)
                for(j=3;j>0;j--);
}  
void main()
{
        uchar i,j=0,k=0,num=6;
        uchar cycle;        //所轉的圈數標志
        uchar c;                //接收到的命令類型標志
        uchar d=0;                //不滾動顯示時,開始顯示漢字的位置
        init_24L01();                //24L01init
        AT24C64_init();

        EA=1;
        EX0=0;
        EX1=1;
        IT0=1;
        IT1=1;
        P0=0xff;                                 
        P1=0xff;
/*        for(i=0;i<32;i++)
        {
                RxBuf=0xaa;
        }
        for(i=0;i<255;i++)
        {
                page_write(i*32,RxBuf);
                delayms(5);
                P0=~P0;
        }         
        P0=0xff;  */
        for(i=0;i<32;i++)
        {
                RxBuf=dian;
        }
        for(i=0;i<5;i++)
        {
                TxBuf=0x55;
        }
//        RX_Mode();
        TX_Mode(TxBuf);               
        Check_ACK(1);        
        delayms(1);
//        sta = SPI_Read(STATUS);          // 讀狀態寄存器
//        SPI_RW_Reg(WRITE_REG + STATUS, sta|0x70);                   //清空狀態寄存器
        for(i=0;i<6;i++)
        {
                sequential_read(32*i,16,xiancun1+16*i);
                sequential_read(32*i+16,16,xiancun2+16*i);
        }           
        while(1)
        {
                RX_Mode();
                if(b)
                {
                        EX0=0;
                        SPI_Read_Buf(RD_RX_PLOAD, RxBuf, TX_PLOAD_WIDTH);
                        if(RxBuf[0]==0xaa&&RxBuf[1]==0x55)        //如果收到的是0xaa,0x55,表示收到的是命令,
                        {
                                EA=0;
                                c=RxBuf[2];
                                switch(c)
                                {
                                        case 1:                           //清除顯示內容
                                                for(i=0;i<32;i++)
                                                RxBuf=0;
                                                for(i=0;i<255;i++)
                                                {
                                                        page_write(i*32,RxBuf);
                                                        delayms(5);
                                                        P0=~P0;
                                                }        
                                                break;
                                        case 2:stop=!stop;break;
                                        case 3:                                         //字體寬度增加
                                                wide++;
                                                if(wide==10)wide=4;
                                                break;
                                        case 4:                                          //字體寬度減小
                                                wide--;
                                                if(wide==0)wide=4;
                                                break;
                                        case 5:                                                  //字體移動速度增加
                                                speed--;
                                                if(speed==-1)speed=2;
                                                break;                                  //字體移動速度變慢
                                        case 6:
                                                speed++;
                                                if(speed==10)speed=2;
                                                break;        
                                        case 7:                                           //不滾動顯示時顯示開始位置確定
                                                d+=6;
                                                if(d>250)d=0;
                                                num=d+7;
                                                for(i=0;i<6;i++)
                                                {
                                                        sequential_read(32*(i+d),16,xiancun1+16*i);
                                                        sequential_read(32*(i+d)+16,16,xiancun2+16*i);
                                                }
                                                break;               
                                        case 8:                                          //不滾動顯示時顯示開始位置確定
                                                d-=6;
                                                if(d<0)d=250;
                                                num=d+7;
                                                for(i=0;i<6;i++)
                                                {
                                                        sequential_read(32*(i+d),16,xiancun1+16*i);
                                                        sequential_read(32*(i+d)+16,16,xiancun2+16*i);
                                                }
                                                break;        
                                        case 9:                                 //接收到的數據在24C64中存儲的開始位置
                                                num2=RxBuf[3];
                                                break;
                                        case 10:                         //動態掃描范圍上限
                                                up=RxBuf[3];
                                                break;
                                        case 11:                         //動態掃描范圍下限
                                                down=RxBuf[3];
                                                break;                                                
                                }
                                EA=1;
                        }                                                                        //如果收到的不是命令,則表示收到的是數據
                        else
                        {                                                                //則存入24c64
                                page_write(num2,RxBuf);
                                num2+=32;
                                TxBuf[0]=num2/32;
                                TxBuf[1]=num2/32;
                                TxBuf[2]=0x55;                          //發送0x55表示接收到了,并通知主機要求發下一幀數據
                                SPI_RW_Reg(WRITE_REG + STATUS, sta|0x70);
                                TX_Mode(TxBuf);
                                Check_ACK(1);
                        }        
                }        
                EX0=1;
                a=1;        
                if(b)a=0;
                b=0;
                while(a);
                for(i=0;i<96;i++)
                {
                        P0=~xiancun1;
                        P1=~xiancun2;
                        yanshi(wide);
                }
                P0=0xff;
                P1=0xff;         
                cycle++;
                if(cycle>=speed&&stop)
                {
                        cycle=0;
                        for(i=0;i<95;i++)
                        {
                                xiancun1=xiancun1[i+1];
                                xiancun2=xiancun2[i+1];
                        }
                        xiancun1[95]=read_add(32*num+k);                                //更新第六個漢字的第16列
                        xiancun2[95]=read_add(32*num+k+16);
                        k++;
                        if(k==16)
                        {
                                k=0;
                                num++;
                                if(num>=up)
                                num=down;
                        }
                }
                                 
        }
}
void int0() interrupt 0
{
        a=0;
        EX0=0;
}
void int1() interrupt 2
{
        sta = SPI_Read(STATUS);          // 讀狀態寄存器
        RX_DR=sta>>6&0x01;
        if(RX_DR)
        {
                EX0=0;
                a=0;                                //防止接收到信號中斷后,a=1;使程序停止
                b=1;                                //表示接收到數據
        }
        SPI_RW_Reg(WRITE_REG + STATUS, sta|0x70);               
}

DSCN2314.jpg (2.6 MB, 下載次數: 52)

DSCN2314.jpg

DSCN2315.jpg (2.56 MB, 下載次數: 54)

DSCN2315.jpg

DSCN2316.jpg (2.67 MB, 下載次數: 49)

DSCN2316.jpg

DSCN2317.jpg (2.68 MB, 下載次數: 54)

DSCN2317.jpg

DSCN2326.jpg (2.55 MB, 下載次數: 47)

DSCN2326.jpg

DSCN2327.jpg (2.59 MB, 下載次數: 49)

DSCN2327.jpg

DSCN2369.jpg (2.63 MB, 下載次數: 56)

DSCN2369.jpg

側面.JPG (66.72 KB, 下載次數: 49)

側面.JPG

DSCN2324.jpg (2.68 MB, 下載次數: 55)

DSCN2324.jpg

DSCN2323.jpg (2.64 MB, 下載次數: 52)

DSCN2323.jpg

DSCN2325.jpg (2.65 MB, 下載次數: 57)

DSCN2325.jpg

DSCN2322.jpg (2.67 MB, 下載次數: 52)

DSCN2322.jpg

底座.jpg (1015.07 KB, 下載次數: 57)

底座.jpg

DSCN2321.jpg (2.69 MB, 下載次數: 51)

DSCN2321.jpg

電機驅動.rar

461.54 KB, 下載次數: 12, 下載積分: 黑幣 -5

無線發射.rar

897.79 KB, 下載次數: 27, 下載積分: 黑幣 -5

發送最終結果.rar

67.83 KB, 下載次數: 17, 下載積分: 黑幣 -5

接收顯示最終.rar

58.06 KB, 下載次數: 16, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:554793 發表于 2019-8-8 11:29 | 只看該作者
程序有問題啊,,樓主
回復

使用道具 舉報

板凳
ID:487236 發表于 2019-8-8 14:39 | 只看該作者
地方臺榮譽成員 發表于 2019-8-8 11:29
程序有問題啊,,樓主

下載附件,有完整的
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩精品在线免费观看 | av在线播放一区二区 | 免费一级大片 | 四色永久 | 欧美亚洲国产精品 | 天天干亚洲 | 亚洲精品电影网在线观看 | 国产在线一区二 | 欧美日韩黄色一级片 | 亚洲91视频 | 中文字幕第二区 | 日韩α片 | 99色综合| 成人深夜福利在线观看 | 亚洲一区二区三区乱码aⅴ 四虎在线视频 | 国产精品成人在线观看 | 欧美日韩精品久久久免费观看 | 一区视频在线 | 三级av在线| 精品国产一区二区 | 亚洲综合在线网 | 亚洲精品久 | 国产99久久精品一区二区永久免费 | 国产精品区二区三区日本 | 三级av免费 | 好姑娘高清在线观看电影 | 欧美亚洲综合久久 | 国产精品久久精品 | 国产玖玖 | 精品三级在线观看 | 日韩一区二区三区视频 | 米奇狠狠鲁| 精品综合在线 | 在线看无码的免费网站 | 福利视频一区二区三区 | 在线中文字幕av | 七七婷婷婷婷精品国产 | 视频一区二区国产 | 久草视| 欧美1区2区 | аⅴ资源新版在线天堂 |