欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
點陣向上滾動顯示(IAR環境、MSP430)
[打印本頁]
作者:
hutians
時間:
2015-2-10 17:46
標題:
點陣向上滾動顯示(IAR環境、MSP430)
/***********************************************************************************************************
實現漢字向上滾動顯示
P5用于譯碼器LM138實現靜態掃描(低四位驅動),P4用于LM595串行轉并行。
LM595采用級聯,可輸入多個字節。DS為LM595的數據口,SH上升沿保存串口數據
,ST上升沿推DS數據到LM595輸出端,ST下降沿將輸出端鎖存。
運行時顯示小組標志和“黑客電子小組”向上滾動輸出。
硬件資源:
MSP430F155、LM595(兩個)、LM138(兩個)、8*8LED點陣(四個)
************************************************************************************************************/
#include "msp430x15x.h"
#define DATADIR P5DIR // 譯碼器控制設定輸出
#define CTLDIR P4DIR // 串行轉并行芯片控制設定輸出
#define DATAOUT P5OUT
#define CTLOUT P4OUT
#define SH_L CTLOUT &= ~BIT0; // SH為低電位
#define ST_L CTLOUT &= ~BIT1; // ST為低電位
#define DS_L CTLOUT &= ~BIT2; // DS為低電位
#define SH_H CTLOUT |= BIT0; // SH為高電位
#define ST_H CTLOUT |= BIT1; // ST為高電位
#define DS_H CTLOUT |= BIT2; // DS為高電位
typedef unsigned int uint16;
char table[64]; //用于存放其它數組
char tab_0[]={0x00,0x00,0xE0,0x07,0x38,0x1E,0x20,0x04,0x38,0x1C,0x20,0x04,0x38,0x1C,0x20,0x04,
0x38,0x1C,0x20,0x04,0x38,0x1C,0x20,0x04,0x38,0x1C,0xE0,0x07,0x00,0x00,0x00,0x00};
// 小組標志
char tab_1[]={0x08,0x00,0xFC,0x3F,0x08,0x21,0x28,0x31,0x38,0x2D,0x48,0x25,0x08,0x21,0xF8,0x3F,
0x00,0x01,0xFC,0x7F,0x00,0x01,0xFE,0xFF,0x00,0x00,0x90,0x28,0x4C,0x24,0x44,0x44};
// *黑*
char tab_2[]={0x00,0x02,0x00,0x01,0xFE,0x7F,0x02,0x48,0xF4,0x8F,0x20,0x08,0x40,0x14,0x80,0x23,
0x60,0x0C,0x1E,0x30,0xE4,0xCF,0x20,0x08,0x20,0x08,0x20,0x08,0xE0,0x0F,0x20,0x08};
// *客*
char tab_3[]={0x00,0x02,0x00,0x02,0x10,0x02,0xF8,0x7F,0x10,0x42,0x10,0x42,0xF0,0x7F,0x10,0x42,
0x10,0x42,0xF0,0x7F,0x10,0x42,0x00,0x02,0x04,0x02,0x04,0x02,0xFC,0x01,0x00,0x00};
// *電*
char tab_4[]={0x00,0x00,0xF0,0x3F,0x10,0x00,0x20,0x00,0x40,0x00,0x80,0x01,0x04,0x01,0xFE,0xFF,
0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02};
// *子*
char tab_5[]={0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x40,0x05,0x20,0x05,0x10,0x09,
0x08,0x09,0x04,0x11,0x04,0x21,0x00,0x41,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02};
// *小*
char tab_6[]={0x00,0x10,0x08,0x10,0xFC,0x21,0x08,0x21,0x08,0x45,0x08,0xF9,0xF8,0x11,0x08,0x21,
0x08,0x41,0x08,0xFD,0xF8,0x41,0x08,0x01,0x08,0x1D,0x08,0xE1,0xFE,0x47,0x00,0x00};
// *組*
void WriteByte(char send) // 發送一個字節
{
char temp_wb,i_wb;
SH_L;
for(i_wb=0;i_wb<8;i_wb++)
{
temp_wb = send & 0X80;
if(temp_wb==0) DS_L;
if(temp_wb!=0) DS_H;
SH_H;
send <<= 1;
_NOP(); // 延時一個機器周期
SH_L;
}
}
void WriteLine(char *data_wl)
{
char i_wl;
ST_L;
for(i_wl=16;i_wl>0;i_wl--) // 由于兩個595級聯,故一次寫入兩個字節
{
WriteByte(*data_wl++);
WriteByte(*data_wl++);
ST_H; // ST上升沿推送數據
DATAOUT = i_wl-1; // 掃描第幾行
ST_L; // ST下降沿鎖存
}
}
void arrcpy(char *arr1,char *arr2) // 將數組arr2復制到arr1
{
char i;
for(i=0;i<32;i++)
*arr1++ = *arr2++;
}
void arrcat(char *arr1,char *arr2) // 將數組arr2連接到arr1后面
{
char i;
for(arr1+=32,i=0;i<32;i++)
*arr1++ = *arr2++;
}
void dis_move(char *p_dis) // 移動掃描
{
char i1,i2;
for(i1=0;i1<17;i1++)
{
p_dis = &table[i1*2];
for(i2=0;i2<10;i2++)
WriteLine(p_dis);
}
}
void display() // 移動顯示
{
arrcpy(table,tab_0); // 將tab_0復制到table
arrcat(table,tab_1); // 將tab_1連接到table
dis_move(table); // 將table移動顯示
arrcpy(table,tab_1);
arrcat(table,tab_2);
dis_move(table);
arrcpy(table,tab_2);
arrcat(table,tab_3);
dis_move(table);
arrcpy(table,tab_3);
arrcat(table,tab_4);
dis_move(table);
arrcpy(table,tab_4);
arrcat(table,tab_5);
dis_move(table);
arrcpy(table,tab_5);
arrcat(table,tab_6);
dis_move(table);
arrcpy(table,tab_6);
arrcat(table,tab_0);
dis_move(table);
}
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
DATADIR = 0X0F; // 設定數據為低四位輸出
CTLDIR = 0X07; // 設定控制為低三位輸出
while(1)
{
display();
}
}
復制代碼
作者:
傻傻噠
時間:
2016-5-9 21:41
請問有proteus的仿真圖嗎
作者:
復印件腹黑攻
時間:
2016-11-7 18:24
1554132135bxvc3541x1432
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1