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

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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3799|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

16x32 P10廣告屏點(diǎn)陣任意位置畫(huà)點(diǎn)畫(huà)線 單片機(jī)程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
16x32  P10廣告屏點(diǎn)陣任意位置畫(huà)點(diǎn)畫(huà)線,點(diǎn)陣直接用P10單紅門(mén)頭廣告屏,省去了自己焊接,刷了一個(gè)時(shí)鐘走時(shí)程序,圖片中間點(diǎn)是秒閃,
用的是12c5a60s2。



單片機(jī)源程序如下:
#include <REG52.h>
#include<intrins.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int

#define BB P3
sbit SHCP=P2^3;        // 移位時(shí)鐘
sbit STCP=P2^4;        // 鎖存時(shí)鐘
sbit DATA=P2^5;       // 數(shù)據(jù)輸出
sbit OE = P2^0;           // 使能輸出

uchar PLAYBUF[64];
uchar a,b;

uchar sec=0,min=0,timecount=0;
bit point;

void serial_input(uchar dat);
void LED_dot_write(uchar x,uchar y,uchar c);
void line(uchar  x1, uchar  y1, uchar  x2, uchar  y2, uchar c);
void number(uchar su,uchar x,uchar y,uchar c);

void display();

/****************************************************/

void main()
{      
    EA = 1;
    TMOD=0x01;   //timer0為模式1  
    TH0 = 0x4c;
    TL0 = 0x00;
   
    ET0 = 1;
    TR0 = 1;   //定時(shí)器0可以工作
   
    while(1)
    {   
           a=sec-1;b=min-1;
        
        number(sec/10,17,0,1);
        number(sec%10,25,0,1);
        number(min/10,0,0,1);
        number(min%10,8,0,1);
        line(15,4,15,5,2);
        line(16,4,16,5,2);
        line(15,9,15,10,2);
        line(16,9,16,10,2);
        display();
        
        number(a/10,17,0,0);
        number(a%10,25,0,0);
        number(b/10,0,0,0);
        number(b%10,8,0,0);
    }
}
/************數(shù)據(jù)串行輸入 *************************/
void serial_input(uchar dat)     
{
    unsigned char m = 0x00;
    for(m=0X00;m<8;m++)
    {
        DATA=~dat&0x80;
        SHCP=1;
        SHCP=0;
        dat<<=1;  
    }
}
/******************任意位置畫(huà)點(diǎn)******************************************/
void LED_dot_write(uchar x,uchar y,uchar c)
{
    uchar i;

    if(x>=32) return;
    if(y>=16) return;
    i=0x80;
    i>>=x-((x>>3)<<3);
    switch(c)
    {
        case 0:PLAYBUF[(y<<1)+((x>>4)<<5)+((x>>3)&0x01)] &= ~i;break;
        case 1:PLAYBUF[(y<<1)+((x>>4)<<5)+((x>>3)&0x01)] |= i;break;
        case 2:if(point)PLAYBUF[(y<<1)+((x>>4)<<5)+((x>>3)&0x01)] |= i;
               else PLAYBUF[(y<<1)+((x>>4)<<5)+((x>>3)&0x01)] &= ~i;break;
        default: break;
    }                  
}

/*****************任意位置畫(huà)線******************************************/
void line(uchar  x1, uchar  y1, uchar  x2, uchar  y2, uchar c)
{
    uchar  x, y, t;
    if((x1 == x2) && (y1 == y2))
    LED_dot_write(x1, y1, c);
    else if(fabs(y2 - y1) > fabs(x2 - x1))
    {
        if(y1 > y2)
        {               
            t = y1;
            y1 = y2;
            y2 = t;
            t = x1;
            x1 = x2;
            x2 = t;
        }
        for(y = y1; y <= y2; y ++)
        {
            x = (y - y1) * (x2 - x1) / (y2 - y1) + x1;
            LED_dot_write(x, y, c);
        }
    }
    else
    {
        if(x1 > x2)              
        {
            t = y1;
            y1 = y2;
            y2 = t;
            t = x1;
            x1 = x2;
            x2 = t;
        }
        for(x = x1; x <= x2; x ++)
        {
            y = (x - x1) * (y2 - y1) / (x2 - x1) + y1;
            LED_dot_write(x, y, c);
        }
    }
}
/*********************任意位置畫(huà)數(shù)字*********************************************************/
void number(uchar su,uchar x,uchar y,uchar c)
{
     if(su==0)
    {        
           line(x,y+4,x,y+10,c);      
        line(x+1,y+3,x+5,y+3,c);      
        line(x+6,y+4,x+6,y+10,c);      
        line(x+1,y+11,x+5,y+11,c);      
        line(x+1,y+9,x+5,y+5,c);      
    }
    if(su==2||su==3||su==5||su==6||su==8||su==9)
    {
          line(x+1,y+7,x+5,y+7,c);
          if(su==5||su==8||su==9)
          {
               line(x,y+4,x,y+6,c);  
               if(su==5)
            {
                   line(x+1,y+3,x+6,y+3,c);
                line(x+6,y+8,x+6,y+10,c);  
                line(x,y+11,x+5,y+11,c);
            }
               if(su==8)
            {
                   line(x+1,y+3,x+5,y+3,c);  
                line(x+1,y+11,x+5,y+11,c);
                line(x,y+8,x,y+10,c);  
                line(x+6,y+4,x+6,y+6,c);  
                line(x+6,y+8,x+6,y+10,c);
            }
            if(su==9)
            {
                   line(x+1,y+3,x+5,y+3,c);   
                line(x,y+11,x+5,y+11,c);
                line(x+6,y+4,x+6,y+10,c);  
            }   
         }
        if(su==2)
        {
               line(x,y+3,x+5,y+3,c);
            line(x+6,y+4,x+6,y+6,c);  
            line(x,y+8,x,y+10,c);
            line(x+1,y+11,x+6,y+11,c);
        }
        if(su==3)
        {
               line(x,y+3,x+5,y+3,c);  
            line(x+6,y+4,x+6,y+6,c);  
            line(x+6,y+8,x+6,y+10,c);
            line(x,y+11,x+5,y+11,c);
        }
        if(su==6)
        {
               line(x+1,y+3,x+6,y+3,c);  
            line(x,y+4,x,y+10,c);
            line(x+6,y+8,x+6,y+10,c);
            line(x+1,y+11,x+5,y+11,c);
        }
    }
    if(su==1||su==4||su==7)
    {   
        line(x+6,y+3,x+6,y+11,c);
        if(su==4)
        {   
            line(x,y+3,x,y+6,c);
            line(x+1,y+7,x+5,y+7,c);
        }
        if(su==7)
        {   
            LED_dot_write(x+6,y+3,0);
            line(x,y+3,x+5,y+3,c);
        }     
    }
}
/***************整屏顯示*************************************************/
void display()
{
    uchar i = 0x00;
    uchar j = 0X00;   
    uchar k = 0x00;
    uchar buf;
    uchar COUNT;
    for(k=0;k<4;k++)              
    {   
        for(j=0;j<2;j++)         
        {
            for(i=0;i<2;i++)      
            {
                buf = PLAYBUF[24+(k<<1)+i+(j<<5)];serial_input(buf);
                buf = PLAYBUF[16+(k<<1)+i+(j<<5)];serial_input(buf);
                buf = PLAYBUF[8+(k<<1)+i+(j<<5)];serial_input(buf);
                buf = PLAYBUF[(k<<1)+i+(j<<5)];    serial_input(buf);
            }
        }
        STCP=1;   
        STCP=0;
        BB=k;
        OE=1;
           COUNT =200;
        while(COUNT--);
        OE =0;   
    }  
}
/****************************************************/
void time50ms(void) interrupt 1
{
       TH0 = 0x4c;
    TL0 = 0x00;
   
    timecount++;
     
    if(timecount==10)   
    {   
            
        timecount=0;
         point=!point;   
          if(point)   
          {   
              sec++;
        }
        if(sec>59)
        {
            sec=0;
            min++;
        }
        if(min>59)
        min=0;
    }   
}
/**************************************************/

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏8 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:885138 發(fā)表于 2021-6-6 10:47 來(lái)自手機(jī) | 只看該作者
厲害了,樓主電路圖有嗎
回復(fù)

使用道具 舉報(bào)

板凳
ID:168911 發(fā)表于 2021-6-6 18:57 | 只看該作者
xxd0708 發(fā)表于 2021-6-6 10:47
厲害了,樓主電路圖有嗎

這個(gè)不用電路圖也可以,只要對(duì)應(yīng)管腳就可以,這個(gè)放心好了
回復(fù)

使用道具 舉報(bào)

地板
ID:1002257 發(fā)表于 2022-1-28 20:17 | 只看該作者
這個(gè)怎么接51版
回復(fù)

使用道具 舉報(bào)

5#
ID:168911 發(fā)表于 2022-6-25 21:11 | 只看該作者
uvwxay 發(fā)表于 2022-1-28 20:17
這個(gè)怎么接51版

595移位,鎖存,數(shù)據(jù),OE,掃描,
回復(fù)

使用道具 舉報(bào)

6#
ID:1112603 發(fā)表于 2024-6-8 13:59 | 只看該作者
這個(gè)程序?yàn)辄c(diǎn)陣的使用提供了一個(gè)別樣思路,真不錯(cuò)!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久777777 | 国产高清视频一区 | 91社区在线观看播放 | 玖玖视频 | 国产成人精品一区二区 | 欧美国产一区二区 | 视频二区国产 | 欧美久操网| 国产成人精品久久二区二区91 | 成人精品一区 | 中文字幕av在线播放 | 中日韩欧美一级片 | 成人在线电影在线观看 | 97免费视频在线观看 | 欧美一区二区三区久久精品 | 久久日韩精品 | 欧美男人亚洲天堂 | 亚洲一区二区视频 | 黄色免费av | 在线a视频网站 | 欧美精 | 欧美日韩成人 | 久久91 | 九九综合 | 成人av一区二区亚洲精 | 日韩精品无码一区二区三区 | 91色在线 | 国产午夜久久久 | 成人小视频在线观看 | 在线观看中文字幕视频 | 久久久精品一区 | 亚洲成人午夜电影 | 国产精品自拍视频 | www.久久 | 国产一区二区三区四区五区加勒比 | 欧美专区在线观看 | 成人h片在线观看 | 日本午夜免费福利视频 | 国产一区三区在线 | 黄色片在线网站 | 欧美日韩1区2区 |