找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

點(diǎn)陣向上滾動顯示(IAR環(huán)境、MSP430)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:73477 發(fā)表于 2015-2-10 17:46 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
  1. /***********************************************************************************************************
  2.                       實(shí)現(xiàn)漢字向上滾動顯示
  3. P5用于譯碼器LM138實(shí)現(xiàn)靜態(tài)掃描(低四位驅(qū)動),P4用于LM595串行轉(zhuǎn)并行。
  4. LM595采用級聯(lián),可輸入多個(gè)字節(jié)。DS為LM595的數(shù)據(jù)口,SH上升沿保存串口數(shù)據(jù)
  5. ,ST上升沿推DS數(shù)據(jù)到LM595輸出端,ST下降沿將輸出端鎖存。
  6. 運(yùn)行時(shí)顯示小組標(biāo)志和“黑客電子小組”向上滾動輸出。
  7. 硬件資源:
  8.   MSP430F155、LM595(兩個(gè))、LM138(兩個(gè))、8*8LED點(diǎn)陣(四個(gè))
  9. ************************************************************************************************************/

  10. #include "msp430x15x.h"

  11. #define    DATADIR     P5DIR                     //                              譯碼器控制設(shè)定輸出
  12. #define    CTLDIR      P4DIR                      //                              串行轉(zhuǎn)并行芯片控制設(shè)定輸出
  13. #define    DATAOUT     P5OUT
  14. #define    CTLOUT      P4OUT

  15. #define    SH_L        CTLOUT &= ~BIT0;      //                            SH為低電位
  16. #define    ST_L        CTLOUT &= ~BIT1;      //                            ST為低電位
  17. #define    DS_L        CTLOUT &= ~BIT2;      //                            DS為低電位

  18. #define    SH_H        CTLOUT |= BIT0;       //                               SH為高電位
  19. #define    ST_H        CTLOUT |= BIT1;       //                               ST為高電位
  20. #define    DS_H        CTLOUT |= BIT2;       //                               DS為高電位

  21. typedef unsigned int uint16;

  22. char table[64];   //用于存放其它數(shù)組

  23. char tab_0[]={0x00,0x00,0xE0,0x07,0x38,0x1E,0x20,0x04,0x38,0x1C,0x20,0x04,0x38,0x1C,0x20,0x04,
  24. 0x38,0x1C,0x20,0x04,0x38,0x1C,0x20,0x04,0x38,0x1C,0xE0,0x07,0x00,0x00,0x00,0x00};
  25.    //  小組標(biāo)志
  26. char tab_1[]={0x08,0x00,0xFC,0x3F,0x08,0x21,0x28,0x31,0x38,0x2D,0x48,0x25,0x08,0x21,0xF8,0x3F,
  27. 0x00,0x01,0xFC,0x7F,0x00,0x01,0xFE,0xFF,0x00,0x00,0x90,0x28,0x4C,0x24,0x44,0x44};
  28.    //  *黑*
  29. char tab_2[]={0x00,0x02,0x00,0x01,0xFE,0x7F,0x02,0x48,0xF4,0x8F,0x20,0x08,0x40,0x14,0x80,0x23,
  30. 0x60,0x0C,0x1E,0x30,0xE4,0xCF,0x20,0x08,0x20,0x08,0x20,0x08,0xE0,0x0F,0x20,0x08};
  31.    //  *客*
  32. char tab_3[]={0x00,0x02,0x00,0x02,0x10,0x02,0xF8,0x7F,0x10,0x42,0x10,0x42,0xF0,0x7F,0x10,0x42,
  33. 0x10,0x42,0xF0,0x7F,0x10,0x42,0x00,0x02,0x04,0x02,0x04,0x02,0xFC,0x01,0x00,0x00};
  34.    //  *電*
  35. char tab_4[]={0x00,0x00,0xF0,0x3F,0x10,0x00,0x20,0x00,0x40,0x00,0x80,0x01,0x04,0x01,0xFE,0xFF,
  36. 0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02};
  37.    //  *子*
  38. char tab_5[]={0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x40,0x05,0x20,0x05,0x10,0x09,
  39. 0x08,0x09,0x04,0x11,0x04,0x21,0x00,0x41,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02};
  40.    //  *小*
  41. char tab_6[]={0x00,0x10,0x08,0x10,0xFC,0x21,0x08,0x21,0x08,0x45,0x08,0xF9,0xF8,0x11,0x08,0x21,
  42. 0x08,0x41,0x08,0xFD,0xF8,0x41,0x08,0x01,0x08,0x1D,0x08,0xE1,0xFE,0x47,0x00,0x00};
  43.    //  *組*

  44. void WriteByte(char send)      //         發(fā)送一個(gè)字節(jié)
  45. {
  46.   char temp_wb,i_wb;
  47.   SH_L;
  48.   for(i_wb=0;i_wb<8;i_wb++)
  49.   {
  50.      temp_wb = send & 0X80;
  51.      if(temp_wb==0)   DS_L;
  52.      if(temp_wb!=0)   DS_H;
  53.      SH_H;
  54.      send <<= 1;
  55.      _NOP();                           //            延時(shí)一個(gè)機(jī)器周期
  56.      SH_L;
  57.   }
  58. }

  59. void WriteLine(char *data_wl)
  60. {
  61.   char i_wl;
  62.   ST_L;
  63.   for(i_wl=16;i_wl>0;i_wl--)      //          由于兩個(gè)595級聯(lián),故一次寫入兩個(gè)字節(jié)
  64.   {
  65.     WriteByte(*data_wl++);
  66.     WriteByte(*data_wl++);
  67.     ST_H;                               //            ST上升沿推送數(shù)據(jù)
  68.     DATAOUT = i_wl-1;           //           掃描第幾行
  69.     ST_L;                                //          ST下降沿鎖存
  70.   }
  71. }

  72. void arrcpy(char *arr1,char *arr2)  //  將數(shù)組arr2復(fù)制到arr1
  73. {
  74.   char i;
  75.   for(i=0;i<32;i++)
  76.     *arr1++ = *arr2++;
  77. }

  78. void arrcat(char *arr1,char *arr2)  //     將數(shù)組arr2連接到arr1后面
  79. {
  80.   char i;
  81.   for(arr1+=32,i=0;i<32;i++)
  82.     *arr1++ = *arr2++;
  83. }

  84. void dis_move(char *p_dis)         //        移動掃描
  85. {
  86.   char i1,i2;
  87.   for(i1=0;i1<17;i1++)
  88.   {
  89.     p_dis = &table[i1*2];
  90.     for(i2=0;i2<10;i2++)
  91.       WriteLine(p_dis);
  92.   }

  93. }

  94. void display()                          //             移動顯示
  95. {
  96.   arrcpy(table,tab_0);           //                將tab_0復(fù)制到table
  97.   arrcat(table,tab_1);          //                  將tab_1連接到table
  98.   dis_move(table);                //                將table移動顯示
  99.   arrcpy(table,tab_1);
  100.   arrcat(table,tab_2);
  101.   dis_move(table);  
  102.   arrcpy(table,tab_2);
  103.   arrcat(table,tab_3);
  104.   dis_move(table);   
  105.   arrcpy(table,tab_3);
  106.   arrcat(table,tab_4);
  107.   dis_move(table);      
  108.   arrcpy(table,tab_4);
  109.   arrcat(table,tab_5);
  110.   dis_move(table);      
  111.   arrcpy(table,tab_5);
  112.   arrcat(table,tab_6);
  113.   dis_move(table);  
  114.   arrcpy(table,tab_6);
  115.   arrcat(table,tab_0);
  116.   dis_move(table);  
  117. }

  118. void main( void )
  119. {
  120.   // Stop watchdog timer to prevent time out reset
  121.   WDTCTL = WDTPW + WDTHOLD;
  122.   DATADIR = 0X0F;                            //          設(shè)定數(shù)據(jù)為低四位輸出
  123.   CTLDIR  = 0X07;                             //           設(shè)定控制為低三位輸出
  124.   while(1)
  125.   {
  126.     display();
  127.   }  
  128.   
  129. }
復(fù)制代碼


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

使用道具 舉報(bào)

沙發(fā)
ID:119654 發(fā)表于 2016-5-9 21:41 | 只看該作者
請問有proteus的仿真圖嗎
回復(fù)

使用道具 舉報(bào)

板凳
ID:107115 發(fā)表于 2016-11-7 18:24 | 只看該作者
1554132135bxvc3541x1432
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表