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

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

QQ登錄

只需一步,快速開始

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

單片機(jī)16x64點(diǎn)陣仿真程序 左右移動(dòng)模式

  [復(fù)制鏈接]
ID:642138 發(fā)表于 2019-11-17 21:01 | 顯示全部樓層 |閱讀模式
  16x64 nokta vuruşlu program
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png 51hei.png

  1. /***********************************************************
  2. 名稱: 16*64點(diǎn)陣
  3. MCU:                89C52
  4. 晶振:                12M
  5. 時(shí)間:                2008年12月06日
  6. 外部器件:        16*64點(diǎn)陣,ds1302
  7. 接線:                見ds1302.h和本主文件
  8. 版本:                V1.0
  9. ------------------更新記錄---------------------------------
  10. 20081206        開始記錄編輯過程,養(yǎng)成良好習(xí)慣.添加了1302.h的頭文件.實(shí)現(xiàn)了實(shí)時(shí)時(shí)鐘的顯示.
  11.                         因還未添加按鍵部分,故只能在proteus仿真.
  12. ***********************************************************/

  13. #include <REGX52.H>
  14. //#include <intins.h>
  15. #include "DS1302.h"
  16. #include "ascii.h"
  17. #define SPEED 5                          //移動(dòng)速度,數(shù)字越大越慢


  18. sbit H_CLK         =         P1^3;
  19. sbit H_D         =         P1^2;
  20. sbit L_CLK        =         P3^1;
  21. sbit L_D         =         P3^0;
  22. sbit L_STB         =         P1^0;
  23. sbit L_OE   =         P1^1;

  24. SYSTEMTIME CurrentTime;

  25. unsigned char date[]=
  26. {
  27. ' ',' ',' ',' ',' ',' ',' ',' ',         //開頭8個(gè)空格
  28.         '2','0',                                                 //21世紀(jì)
  29.         '0','8',                                                 //年數(shù)據(jù)        No.10,11
  30.         'Y','Y',                                                //“年”
  31.         '1','2',                                                //月數(shù)據(jù)         No.14,15
  32.         'M','M',                                                //“月”
  33.         '0','6',                                                //日數(shù)據(jù)        No.18,19
  34.         'D','D',                                                //“日”
  35.        
  36.         0,                                                         //空格
  37.        
  38.         'W','E','E','K',                                //“星期”
  39.         '?','?',                                                //星期幾        No.27,28
  40.        
  41.         0,                                                                //空格
  42.        
  43.         '1','9',                                                  //小時(shí)數(shù)據(jù)         No.30,31
  44.         ':',                                                    //':'                 No.32
  45.         '4','1',                                                  //分鐘數(shù)據(jù)         No.33,34
  46.         ':',                                                    //':'                No.35
  47.         '0','0',                                                   //秒數(shù)據(jù)         No.36,37                                       
  48.                                        
  49. ' ',' ',' ',' ',' ',' ',' ',' ',   
  50. ' ',' ',' ',' ',' ',                                //數(shù)組最大用到No.52                                                                                  
  51. ' ',' ',' ',' ',' ',' ',' ',' ',        //末尾8個(gè)空格
  52. };

  53. void time_to_buff(void);
  54. void delay_nms(unsigned int count);
  55. void set_row(unsigned char row);
  56. void sendRbyte(unsigned char wdata);                                        //模擬spi的方式往列4094傳送字模數(shù)據(jù)
  57. void sendR2byte(unsigned char wdata,unsigned char n);        //模擬spi的方式往列4094傳送字模數(shù)據(jù)
  58. void time_to_buff(void);

  59. void main(void)
  60. {
  61.         unsigned char i,offset=0,disrow=0,j,k=0;

  62.         Initial_DS1302();

  63.         L_OE=0;                                 //列不輸出
  64.         for(i=0;i<16;i++)          //行驅(qū)動(dòng)的4094填16個(gè)1,使行不輸出,去掉大概也沒問題.反正就一會(huì)
  65.         {
  66.                 H_CLK=0;
  67.                 H_D=1;
  68.                 H_CLK=0;
  69.         }

  70.         while(1)
  71.         {
  72.                 for(j=0;j<SPEED;j++,offset++)
  73.                 {
  74.                          for(disrow=0;disrow<16;disrow++)                  //disrow,當(dāng)前掃描的行
  75.                         {
  76.                                 set_row(disrow);                //行4094的輸出.依次點(diǎn)亮1~16行.

  77.                                 L_STB=0;                                //STB low
  78.                        
  79.                                 for(i=0;i<8;i++)                  //送往8個(gè)4094的數(shù)據(jù).
  80.                                         sendRbyte(~a[date[k+i]-32][disrow]);        //acsii-32 就是實(shí)際的字模位置       
  81.                                 sendR2byte(~a[date[k+8]-32][disrow],offset);
  82.                                 if(offset==8)
  83.                                 {
  84.                                         offset=0;k++;
  85.                                         if(k>45) k=0;
  86.                                 }
  87.                
  88.                                 L_STB=1;       //STB high                               
  89.                                 L_OE=1;                   //列4094輸出
  90.                                 delay_nms(2);  //此處延時(shí),請(qǐng)根據(jù)點(diǎn)陣閃爍狀況加以調(diào)整,仿真時(shí)候無法仿真閃爍.
  91.                                 L_OE=0;                       
  92.                         }
  93.                 }
  94.                 time_to_buff();
  95.         }
  96. }


  97. void delay_nms(unsigned int count)
  98. {
  99.         unsigned int i,j;
  100.         for(i=0;i<count;i++)
  101.         for(j=0;j<120;j++);          
  102. }

  103. void set_row(unsigned char row)
  104. {
  105.         H_CLK=0;                          //行4094的輸出.依次點(diǎn)亮1~16行.
  106.         if(row==0)        H_D=0;
  107.         else                H_D=1;
  108.         H_CLK=1;
  109. }

  110. void sendRbyte(unsigned char wdata)                                                //模擬spi的方式往列4094傳送字模數(shù)據(jù)
  111. {
  112.         unsigned char i;
  113.         for(i=0;i<8;i++)
  114.         {
  115.                 L_CLK=0;                //時(shí)鐘拉低
  116.                 L_D=wdata&0x80;
  117.                 L_CLK=1;                //時(shí)鐘拉高,產(chǎn)生上升沿               
  118.                 wdata <<= 1;        //左移一位
  119.         }
  120. }

  121. void sendR2byte(unsigned char wdata,unsigned char n)        //模擬spi的方式往列4094傳送字模數(shù)據(jù)
  122. {
  123.         unsigned char i;
  124.         for(i=0;i<n;i++)
  125.         {
  126.                 L_CLK=0;                //時(shí)鐘拉低
  127.                 L_D=wdata&0x80;
  128.                 L_CLK=1;                //時(shí)鐘拉高,產(chǎn)生上升沿               
  129.                 wdata <<= 1;        //左移一位
  130.         }
  131. }

  132. /*
  133. void send_0_pulse(unsigned char n)         //送n個(gè)脈沖,
  134. {
  135.         unsigned char i;
  136.         L_D=1;                                //其實(shí)應(yīng)該是0,仿真時(shí)用1
  137.         for(i=0;i<n;i++)
  138.         {
  139.                 L_CLK=0;                //時(shí)鐘拉低
  140.                 L_CLK=1;                //時(shí)鐘拉高,產(chǎn)生上升沿
  141.         }
  142. }
  143. */

  144. void time_to_buff(void)
  145. {
  146.         DS1302_GetTime(&CurrentTime);
  147.         DateToStr(&CurrentTime);
  148.         TimeToStr(&CurrentTime);

  149.            date[10]=CurrentTime.DateString[0];
  150.            date[11]=CurrentTime.DateString[1];
  151.            date[14]=CurrentTime.DateString[3];
  152.            date[15]=CurrentTime.DateString[4];
  153.            date[18]=CurrentTime.DateString[6];
  154.            date[19]=CurrentTime.DateString[7];

  155.            date[30]=CurrentTime.TimeString[0];
  156.            date[31]=CurrentTime.TimeString[1];
  157.            date[33]=CurrentTime.TimeString[3];
  158.            date[34]=CurrentTime.TimeString[4];
  159.            date[36]=CurrentTime.TimeString[6];
  160.            date[37]=CurrentTime.TimeString[7];
  161. }
復(fù)制代碼



單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. #include"MacroAndConst.h"
  3. #include"delay.h"
  4. #include"display.h"
  5. #include"ziku.h"

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

  18. /**********************************************************
  19. 函數(shù)名稱:LeftflowDisplay
  20. 函數(shù)功能:左移顯示函數(shù)
  21. 入口參數(shù):無  
  22. 出口參數(shù):無
  23. 備  注:
  24. **********************************************************/
  25. void LeftflowDisplay()                //逐行 陰碼 逆向
  26. {
  27.         uchar sp,y=0;
  28.         move=0;
  29.         words=0;
  30.                 while(words<46*32)                //
  31.                 {        
  32.                          if(fLeftFlag==1)
  33.                         {
  34.                                 while(move<16)        //數(shù)據(jù)移位
  35.                                 {        
  36.                                         if(fLeftFlag==1)
  37.                                         {        
  38.                                        
  39.                                                 for(sp=0;sp<speed;sp++)        //移動(dòng)速度
  40.                                                 {        
  41.                                                         if(fLeftFlag==1)
  42.                                                         {
  43.                                                                 for(line=0;line<16;line++)        //行掃描
  44.                                                                 {
  45.                                                                         loadline1();        //裝載一線點(diǎn)陣數(shù)據(jù)
  46.                                                                         sendline1();        //發(fā)送一線移動(dòng)數(shù)據(jù)
  47.                                                                         scan=line;        //顯示第line行
  48.                                                                         P2=scan;
  49.                                                                         ST=1;                //鎖存為高,595鎖存信號(hào)
  50.                                                                         ST=0;
  51.                                                                         delay_10us(50);        //延時(shí)500us,等待一段時(shí)間,產(chǎn)生視覺暫留
  52.                                                                 }
  53.                                                         }
  54.                                                         else
  55.                                                         break;
  56.                                                 }
  57.                                                 move=move+1;                //移動(dòng)一步(一位)
  58.                                         }
  59.                                         else
  60.                                         break;
  61.                                 }
  62.                                 move=0;
  63.                                 words=words+32;        //下一個(gè)字
  64.                         }
  65.                         else
  66.                         break;
  67.                 }
  68.                 words=0;
  69.         }
  70. /**********************************************************
  71. 函數(shù)名稱:loadline1
  72. 函數(shù)功能:裝載點(diǎn)陣數(shù)據(jù)        緩存
  73. 入口參數(shù):無  
  74. 出口參數(shù):無
  75. 備  注:
  76. **********************************************************/

  77. void loadline1()
  78. {
  79.         uchar s;
  80.         for(s=0;s<5;s++)        //s為要顯示的字?jǐn)?shù)+1(顯示4字+1=5)
  81.         {
  82.                 BUFF[2*s]=zuoyi[words+ 32*s + 2*line];
  83.                 BUFF[2*s+1]=zuoyi[words+1+ 32*s + 2*line];
  84.                
  85.                
  86.         }
  87. }
  88. /**********************************************************
  89. 函數(shù)名稱:sendline1
  90. 函數(shù)功能:發(fā)送點(diǎn)陣數(shù)據(jù)        緩存
  91. 入口參數(shù):無  
  92. 出口參數(shù):無
  93. 備  注:
  94. **********************************************************/
  95. void sendline1()
  96. {
  97.         uchar s;
  98.         uchar inc,temp,tempcol;
  99.         uchar  k;
  100.         DATA=1;
  101.         if(move<8) inc=0;
  102.         else inc=1;
  103.         for(s=0+inc;s<=7+inc;s++)
  104.         {
  105.                 if(move<8)
  106.                         tempcol=move;
  107.                 else
  108.                         tempcol=move-8;
  109.                 temp=(BUFF[s]>>tempcol)|(BUFF[s+1]<<(8-tempcol));        //字模左邊字節(jié)右移tempcol位,右邊字節(jié)左移8-tempcol位,2者相或
  110.                 for(k=0;k<8;k++)
  111.               {
  112.                       SH=0;
  113.                         DATA=(bit)(temp&0x80);
  114.                        temp=temp<<1;
  115.                       SH=1;
  116.            }
  117.         }
  118. }
  119. /**********************************************************
  120. 函數(shù)名稱:RightflowDisplay
  121. 函數(shù)功能:右移顯示函數(shù)
  122. 入口參數(shù):無  
  123. 出口參數(shù):無
  124. 備  注:
  125. **********************************************************/
  126. void RightflowDisplay()        //流動(dòng)右移         逐行 陰碼 順向
  127. {
  128.         uchar i;
  129.         move=0;
  130.         words=0;
  131.         while(words<=46*32)          //數(shù)組元素。46組,每組32個(gè)
  132.         {        
  133.                 if(fRightFlag==1)
  134.             {
  135.                         while(move<16)// 循環(huán)16次,點(diǎn)亮并移動(dòng)一個(gè)漢字
  136.                         {         
  137.                                 if(fRightFlag==1)
  138.                                 {
  139.                                         for(i=0;i<speed;i++)//漢字在屏幕上的停留時(shí)間(即移動(dòng)速度快慢)
  140.                                         {
  141.                                                 if(fRightFlag==1)
  142.                                                 {
  143.                                                         for(line=0;line<16;line++)//掃描16行                        
  144.                                                         {
  145.                                                                 loadoneline();//裝載一線點(diǎn)陣數(shù)據(jù)
  146.                                                                 sendoneline();//發(fā)送一線點(diǎn)陣數(shù)據(jù)
  147.                                                                 P2=line;                 
  148.                                                             ST= 0;
  149.                                                                 ST= 1;
  150.                                                             delay_10us(50); //延時(shí)500us,等待一段時(shí)間,產(chǎn)生視覺暫留                                                              
  151.                                                         }
  152.                                                  }
  153.                                                  else
  154.                                                  break;
  155.                                         }
  156.                                         move++;        //列指針遞增
  157.                                 }
  158.                                 else
  159.                                 break;                        
  160.                         }
  161.                         move=0;
  162.                         words=words+32;// 一個(gè)漢字移動(dòng)后,指向下一個(gè)漢字         
  163.                 }
  164.                 else
  165.                 break;

  166.         }
  167.         words=0;
  168. }
  169. /**********************************************************
  170. 函數(shù)名稱:loadoneline
  171. 函數(shù)功能:裝載點(diǎn)陣數(shù)據(jù)        緩存
  172. 入口參數(shù):無  
  173. 出口參數(shù):無
  174. 備  注:
  175. **********************************************************/
  176. void loadoneline()
  177. {
  178.         uchar s;        
  179.     for(s=0;s<5;s++)              //s為要顯示的數(shù)字+1
  180.                 {
  181.                         BUFF[2*s+1]=youyi[words+32*s+2*line];
  182.                         BUFF[2*s]=youyi[words+1+32*s+2*line];//~
  183.                 }
  184. }
  185. /**********************************************************
  186. 函數(shù)名稱:sendoneline
  187. 函數(shù)功能:發(fā)送點(diǎn)陣數(shù)據(jù)        緩存
  188. 入口參數(shù):無  
  189. 出口參數(shù):無
  190. 備  注:
  191. **********************************************************/
  192. void sendoneline()
  193. {
  194.         char s;
  195.         uchar inc,k,tempcol;
  196.         if(move<8)
  197.                 inc=0;
  198.         else
  199.                 inc=1;      
  200.         for(s=7+inc;s>=0+inc;s--)
  201.                 {
  202.                         if(move<8)
  203.                                 tempcol=move;
  204.                         else
  205.                                 tempcol=move-8;
  206.                                 temp=(BUFF[s]>>tempcol)|(BUFF[s+1]<<(8-tempcol));
  207.                         for(k=0;k<8;k++)
  208.                              {        
  209.                               SH=0;
  210.                                 DATA=(bit)(temp&0x01);
  211.                                temp=temp>>1;
  212.                               SH=1;
  213.                           }
  214.                 }
  215. }
復(fù)制代碼

所有資料51hei提供下載:
16X64點(diǎn)陣左右移動(dòng)模式.7z (1.41 MB, 下載次數(shù): 180)

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:633576 發(fā)表于 2019-11-27 14:56 | 顯示全部樓層
謝謝樓主
回復(fù)

使用道具 舉報(bào)

ID:633576 發(fā)表于 2019-11-27 14:57 | 顯示全部樓層
好人一生平安
回復(fù)

使用道具 舉報(bào)

ID:650808 發(fā)表于 2019-12-21 10:52 | 顯示全部樓層
[img][/img]

新建文件夾.zip

267.19 KB, 下載次數(shù): 14, 下載積分: 黑幣 -5

回復(fù)

使用道具 舉報(bào)

ID:675834 發(fā)表于 2020-6-30 16:49 來自手機(jī) | 顯示全部樓層
為什么下載16*64點(diǎn)陣左右移動(dòng)模式.7z(1.41MB)
回復(fù)

使用道具 舉報(bào)

ID:675834 發(fā)表于 2020-6-30 16:52 來自手機(jī) | 顯示全部樓層
為什么下載16X64點(diǎn)陣左右移動(dòng)模式.7z (1.41 MB) 解壓出來里面沒有程序啊
回復(fù)

使用道具 舉報(bào)

ID:800832 發(fā)表于 2020-8-19 14:28 | 顯示全部樓層
不錯(cuò),準(zhǔn)備研究下
回復(fù)

使用道具 舉報(bào)

ID:800832 發(fā)表于 2020-8-19 14:37 | 顯示全部樓層
程序和模擬是分開上的啊!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产大学生情侣呻吟视频 | 爱爱免费视频网站 | 日韩免费中文字幕 | 中文在线一区 | 综合视频在线 | 日韩欧美在线观看 | 黄色一级免费观看 | 久久1区| 日本精品一区二区三区视频 | 一区二区三区av夏目彩春 | 日本久久综合 | 免费三级网站 | 欧美日韩在线免费 | 国产精品夜间视频香蕉 | 超碰在线人人 | 深夜福利影院 | 欧美一区二区三区的 | 亚洲精品福利视频 | 亚洲一区在线日韩在线深爱 | 日韩欧美网 | 毛片毛片毛片毛片 | 欧美一区 | 天堂色| 国产精品色 | 亚洲一级毛片 | 日韩精品一区二区三区中文在线 | 9久久精品 | 激情免费视频 | 日本视频一区二区三区 | 国产日韩欧美在线播放 | 国产一区电影 | 久久视频免费看 | 激情网五月天 | 精品国产青草久久久久96 | 日韩福利 | 亚洲国产精品成人久久久 | 殴美成人在线视频 | 91婷婷韩国欧美一区二区 | 在线一级片 | 黄色三级在线播放 | 日本久久www成人免 成人久久久久 |