• slider image 442
  • slider image 497
  • slider image 498
  • slider image 499
  • slider image 500
  • slider image 502
:::


Browsing this Thread:   2 Anonymous Users






Re: dsPIC33FJ128MC708 控制 SN74LS164
#2
新會員
新會員


查看用戶資訊
在此附上我完整的原始碼程式。
懇請各位高手解答~




#include <p33FJ128MC708.h>
#include <timer.h>

#define Fosc 7372800 // 頻率為 7.3728 MHz

/*//////////////////////////////////////
int clk1 = 2 ; //74164 1 clk
int data1 = 3 ; //74164 1 data
int data2 = 5 ; //74164 2 data

int com1 = 6 ; //DSP COM1
int com2 = 7 ; //DSP COM2
int com3 = 8 ; //DSP COM3
int com4 = 9 ; //DSP COM4
int com5 = 10 ; //DSP COM5
int com6 = 11 ; //DSP COM6
int com7 = 12 ; //DSP COM7
int com8 = 13 ; //DSP COM8
//////////////////////////////////////*/

//long int time2_cnt = 0 , millis = 0 ;

int scan = 0 ;
int dsp_a[10] , dsp_b[10] ;

int data_buf1 , data_buf2 ;

struct
{
unsigned T1_Flag : 1 ;
} Timer ;
unsigned char T1_Count = 0 ;

void p74164(void) ;
void Init_Timer1(void);
void delay(void) ;

void main ()
{
TRISB = 0x0000 ; //點矩陣
LATB = 0x0000 ;

Init_Timer1() ;

// 0 為 亮 1 為 暗
//綠色
dsp_a[1] = 0xFF ;
dsp_a[2] = 0xFF ;
dsp_a[3] = 0xFF ;
dsp_a[4] = 0xFF ;
dsp_a[5] = 0xFF ;
dsp_a[6] = 0xFF ;
dsp_a[7] = 0xFF ;
dsp_a[8] = 0xFF ;

//紅色
dsp_b[1] = 0x7F ;
dsp_b[2] = 0x3F ;
dsp_b[3] = 0x1F ;
dsp_b[4] = 0x0F ;
dsp_b[5] = 0x07 ;
dsp_b[6] = 0x03 ;
dsp_b[7] = 0x01 ;
dsp_b[8] = 0x00 ;

while ( 1 )
{
if ( Timer.T1_Flag == 1 )
Timer.T1_Flag = 0 ; // CLear update flagag
}
}

void _ISR _T1Interrupt(void)
{
switch ( scan )
{
case 1 :
LATB = 0x0040 ;
data_buf1 = dsp_a[scan] ;
data_buf2 = dsp_b[scan] ;
p74164() ;

break ;
case 2 :
LATB = 0x0080 ;
data_buf1 = dsp_a[scan] ;
data_buf2 = dsp_b[scan] ;
p74164() ;

break ;
case 3 :
LATB = 0x0100 ;
data_buf1 = dsp_a[scan] ;
data_buf2 = dsp_b[scan] ;
p74164() ;

break ;
case 4 :
LATB = 0x0200 ;
data_buf1 = dsp_a[scan] ;
data_buf2 = dsp_b[scan] ;
p74164() ;

break ;
case 5 :
LATB = 0x0400 ;
data_buf1 = dsp_a[scan] ;
data_buf2 = dsp_b[scan] ;
p74164() ;

break ;
case 6 :
LATB = 0x0800 ;
data_buf1 = dsp_a[scan] ;
data_buf2 = dsp_b[scan] ;
p74164() ;

break ;
case 7 :
LATB = 0x1000 ;
data_buf1 = dsp_a[scan] ;
data_buf2 = dsp_b[scan] ;
p74164() ;

break ;
case 8 :
LATB = 0x2000 ;
data_buf1 = dsp_a[scan] ;
data_buf2 = dsp_b[scan] ;
p74164() ;

break ;
case 9 :
scan = 0 ;

break ;
}
scan ++ ;

//LED1=!LED1 ; // Flash the LED1
Timer.T1_Flag = 1 ;
T1_Count ++ ; // Increase Timer1 display counter
IFS0bits.T1IF = 0 ; // Clear Timer1 Interrupt Flag
}

void p74164()
{
int a ;

for( a = 0 ; a <= 7 ; a++ )
{
LATBbits.LATB2 = 0 ;

if( data_buf1 >= 128 )
{
LATBbits.LATB3 = 1 ;
data_buf1 = data_buf1 - 128 ;
}
else
LATBbits.LATB3 = 0 ;

data_buf1 = data_buf1 << 1 ;


if(data_buf2 >= 128 )
{
LATBbits.LATB5 = 1 ;
data_buf2 = data_buf2 - 128 ;
}
else
LATBbits.LATB5 = 0 ;

data_buf2 = data_buf2 << 1 ;


LATBbits.LATB2 = 1 ;

}

LATBbits.LATB2 = 0 ;
}

/*************************************************/
// Timer 模組的初始化副程式
// 100mS Interrupt setting
/*************************************************/
void Init_Timer1(void)
{
ConfigIntTimer1( T1_INT_PRIOR_7 & T1_INT_ON ) ; // Timer1 的中斷優先等級設 7 (最高)
// Timer1 的中斷 ON

OpenTimer1( T1_ON & T1_IDLE_STOP & T1_GATE_OFF & // Timer1 Period as 2 Second
T1_PS_1_256 & T1_SYNC_EXT_OFF & T1_SOURCE_INT ,
(long)((Fosc/4/1000)* 200 )/256 ) ;
}

void delay()
{
long int i ;
for( i = 0 ; i <= 10000 ; i++ )
continue;
}

發表於: 2010/1/13 18:08
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


dsPIC33FJ128MC708 控制 SN74LS164
#1
新會員
新會員


查看用戶資訊
我正在使用 dsPIC33FJ128MC708 晶片連接至 SN74LS164 ,

來控制 點矩陣LED 做一些幾何圖形的顯示。(例如:小綠人)

目前只能整排及整列亮燈,而無法單一點或局部亮燈。

在此附上我的SN74LS164寫在PIC的程式碼。






void p74164()
{
int a ;

for( a = 0 ; a <= 7 ; a++ )
{
LATBbits.LATB2 = 0 ;

if( data_buf1 >= 128 )
{
LATBbits.LATB3 = 1 ;
data_buf1 = data_buf1 - 128 ;
}
else
LATBbits.LATB3 = 0 ;

data_buf1 = data_buf1 << 1 ;


if(data_buf2 >= 128 )
{
LATBbits.LATB5 = 1 ;
data_buf2 = data_buf2 - 128 ;
}
else
LATBbits.LATB5 = 0 ;

data_buf2 = data_buf2 << 1 ;


LATBbits.LATB2 = 1 ;

}

LATBbits.LATB2 = 0 ;
}

發表於: 2010/1/12 22:04
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------