max7219顯示程序-C程序-匯編_第1頁(yè)
max7219顯示程序-C程序-匯編_第2頁(yè)
max7219顯示程序-C程序-匯編_第3頁(yè)
max7219顯示程序-C程序-匯編_第4頁(yè)
max7219顯示程序-C程序-匯編_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

max7219顯示程序-C程序—匯編max7219顯示程序(匯編)#include"msp430x41x.h"

DINEQU001H;P1.0

CLKEQU002H;P1.1

LOADEQU004H;P1.2ORG0F000H

RESETMOV#300H,SP;初始化

MOV#WDTPW+WDTHOLD,&WDTCTL

BIS.B#CLK,&P1DIR

BIS.B#DIN,&P1DIR

BIS.B#LOAD,&P1DIR

PUSH#00C01H;設(shè)置工作模式

BIC.B#LOAD,&P1OUT

CALL#MOVE

BIS.B#LOAD,&P1OUTPUSH#00B05H;設(shè)置掃描位數(shù)

BIC.B#LOAD,&P1OUT

CALL#MOVE

BIS.B#LOAD,&P1OUTPUSH#009FFH;設(shè)置編碼方式

BIC.B#LOAD,&P1OUT

CALLMOVE

BIS.B#LOAD,&P1OUTPUSH#00A07H;設(shè)置亮度

BIC.B#LOAD,&P1OUT

CALLMOVE

BIS.B#LOAD,&P1OUTXIANPUSH#00107H;顯示第一位

BIC.B#LOAD,&P1OUT

CALLMOVE

BIS.B#LOAD,&P1OUTPUSH#00206H;顯示第二位

BIC.B#LOAD,&P1OUT

CALLMOVE

BIS.B#LOAD,&P1OUTPUSH#00305H;顯示第三位

BIC.B#LOAD,&P1OUT

CALLMOVE

BIS.B#LOAD,&P1OUTPUSH#00404H;顯示第四位

BIC.B#LOAD,&P1OUT

CALLMOVE

BIS.B#LOAD,&P1OUTPUSH#00503H;顯示第五位

BIC.B#LOAD,&P1OUT

CALLMOVE

BIS.B#LOAD,&P1OUTPUSH#00602H;顯示第六位

BIC.B#LOAD,&P1OUT

CALLMOVE

BIS.B#LOAD,&P1OUT

JMP$

MOVEMOV.B#16,R6

MOV2(SP),R13

MOV#1,R10

SENDLOOPBIC.B#CLK,&P1OUT

BITR10,R13

JNZSEND1

SEND0BIC.B#DIN,&P1OUT

JMPGOON

SEND1BIS.B#DIN,&P1OUT

GOONBIS.B#CLK,&P1OUT

RLAR10

BIC.B#CLK,&P1OUT

DECR6

JNZSENDLOOP

RET

ORG0FFFEH

DWRESET

END#include"msp430x41x.h"

DINEQU001H;P1.0

CLKEQU002H;P1.1

LOADEQU004H;P1.2ORG0F000H

MOV#300H,SP;初始化

MOV#WDTPW+WDTHOLD,&WDTCTL

BIS.B#CLK,&P1DIR

BIS.B#DIN,&P1DIR

BIS.B#LOAD,&P1DIRPUSH#00C01H;設(shè)置工作模式

BIC.B#LOAD,&P1OUT

CALL#MOVE

BIS.B#LOAD,&P1OUTPUSH#00B05H;設(shè)置掃描位數(shù)

BIC.B#LOAD,&P1OUT

CALL#MOVE

BIS.B#LOAD,&P1OUTPUSH#009FFH;設(shè)置編碼方式

BIC.B#LOAD,&P1OUT

CALLMOVE

BIS.B#LOAD,&P1OUTPUSH#00A07H;設(shè)置亮度

BIC.B#LOAD,&P1OUT

CALLMOVE

BIS.B#LOAD,&P1OUTXIANPUSH#00107H;顯示第一位

BIC.B#LOAD,&P1OUT

CALLMOVE

BIS.B#LOAD,&P1OUTPUSH#00206H;顯示第二位

BIC.B#LOAD,&P1OUT

CALLMOVE

BIS.B#LOAD,&P1OUTPUSH#00305H;顯示第三位

BIC.B#LOAD,&P1OUT

CALLMOVE

BIS.B#LOAD,&P1OUTPUSH#00404H;顯示第四位

BIC.B#LOAD,&P1OUT

CALLMOVE

BIS.B#LOAD,&P1OUTPUSH#00503H;顯示第五位

BIC.B#LOAD,&P1OUT

CALLMOVE

BIS.B#LOAD,&P1OUTPUSH#00602H;顯示第六位

BIC.B#LOAD,&P1OUT

CALLMOVE

BIS.B#LOAD,&P1OUT

JMP$

MOVEMOV.B#16,R6

POPR13

MOV#1,R10

SENDLOOPBIC.B#CLK,&P1OUT

BITR10,R13

JNZSEND1

SEND0BIC.B#DIN,&P1OUT

JMPGOON

SEND1BIS.B#DIN,&P1OUT

GOONBIS.B#CLK,&P1OUT

RLAR10

BIC.B#CLK,&P1OUT

DECR6

JNZSENDLOOP

RET

ENDMAX7219的c程序/*---------------------------------------------------------

*

程序說明

*

*

1、本程序已經(jīng)通過測(cè)試,非常好用;

*

*

2、在非譯碼方式下編碼和一般書上寫的不一樣,請(qǐng)注意;

*

*

3、每次送顯示的時(shí)候先初始化一次;

*

*

4、在設(shè)計(jì)電路或制作試驗(yàn)板時(shí)注意添加Vcc到GND之間的電容,*

*

一個(gè)10vF的電解電容和0.1vF的陶瓷電容。并在DIN、LOAD、*

*

CLK到GND之間接入30pF的瓷片電容。

*

*

*

*

程序提供人:蘇建宇

*

*

*

*

*

----------------------------------------------------------*/

#include

#include

//#include

/*--------------------------------------------------*/

sbit

dis_DIN=P1^0;

/*顯示串行數(shù)據(jù)輸入端*/

sbit

dis_LOAD=P1^1;

/*顯示數(shù)據(jù)鎖存端*/

sbit

dis_CLK=P1^2;

/*顯示時(shí)鐘輸入端*/

#define

NoOp

0x00

/*空操作*/

#define

Digit0

0x01

/*數(shù)碼管1*/

#define

Digit1

0x02

/*數(shù)碼管2*/

#define

Digit2

0x03

/*數(shù)碼管3*/

#define

Digit3

0x04

/*數(shù)碼管4*/

#define

Digit4

0x05

/*數(shù)碼管5*/

#define

Digit5

0x06

/*數(shù)碼管6*/

#define

Digit6

0x07

/*數(shù)碼管7*/

#define

Digit7

0x08

/*數(shù)碼管8*/

#define

DecodeMode

0x09

/*譯碼模式*/

#define

Intensity

0x0a

/*亮度*/

#define

ScanLimit

0x0b

/*掃描界限*/

#define

ShutDown

0x0c

/*掉電模式*/

#define

DisplayTest

0x0f

/*顯示測(cè)試*/

#define

ShutdownMode

0x00

/*掉電方式工作*/

#define

NormalOperation

0x01

/*正常操作方式*/

#define

DecodeDigit

0xff

/*譯碼位數(shù)設(shè)置*/

#define

IntensityGrade

0x0a

/*顯示亮度級(jí)別設(shè)置*/

#define

ScanDigit

0x07

/*掃描位數(shù)設(shè)置*/

#define

TestMode

0x01

/*顯示測(cè)試方式*/

#define

TextEnd

0x00

/*顯示測(cè)試結(jié)束,正常工作*/

unsigned

char

data

DisBuffer[8]={0,0,0,0,0,0,0,0};

/*顯示緩存區(qū)*/

unsigned

char

code

dispaly_list[]=

{

0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,

/*0,1,2,3,4,5,6,7,8,9*/

0x77,0x1f,0x4e,0x3d,0x4f,0x47,0x67,0x3e,0xff,0x00};

/*A,B,C,D,E,F,P,U,全

亮,全滅*/

/*--------------------------------------------------------

10ms延時(shí)子程序

---------------------------------------------------------*/

void

delayX10ms(unsigned

char

count)

{

unsigned

char

j,k;

while(count--!=0)

{

for(j=0;j<43;j++)

for(k=0;k<73;k++)

;

}

}

/*-------------------------------------------------

向MAX7219寫入字節(jié)(8位)

--------------------------------------------------*/

void

SendChar

(unsigned

char

ch)

{

unsigned

char

i,temp;

_nop_();

for

(i=0;i<8;i++)

{

temp=ch&0x80;

ch=ch<<1;

if(temp)

{

dis_DIN=1;

dis_CLK=0;

dis_CLK=1;

}

else

{

dis_DIN=0;

dis_CLK=0;

dis_CLK=1;

}

}

}

/*-------------------------------------------------

向MAX7219寫入字(16位)

-------------------------------------------------*/

void

WriteWord

(unsigned

char

addr,unsigned

char

num)

{

dis_LOAD=0;

_nop_();

SendChar

(addr);

_nop_();

SendChar

(num);

_nop_();

dis_LOAD=1;

}

/*-------------------------------------------------

MAX7219初始化

-------------------------------------------------*/

void

InitDis

(void)

{

WriteWord

(ScanLimit,ScanDigit);

/*設(shè)置掃描界限*/

WriteWord

(DecodeMode,DecodeDigit);

/*設(shè)置譯碼模式*/

WriteWord

(Intensity,IntensityGrade);

/*設(shè)置亮度*/

WriteWord

(ShutDown,NormalOperation);

/*設(shè)置電源工作模式*/

}

/*-------------------------------------------------

系統(tǒng)上電初始化

-------------------------------------------------*/

void

InitMain

(void)

{

IE=0x00;

/*設(shè)置中斷允許寄存器*/

IP=0x00;

/*設(shè)置中斷優(yōu)先級(jí)管理寄存器*/

TH0=0xd8;

/*設(shè)定時(shí)器初值,10ms*/

TL0=0xf0;

TMOD=0x01;

/*T1

定時(shí)器模式2,波特率發(fā)生器,T0

定時(shí)器模式1*/

TCON=0x11;

/*設(shè)置定時(shí)器控制寄存器,INT0設(shè)置為邊沿觸發(fā)方式*/

PSW=0x00;

}

/*-------------------------------------------------

主函數(shù)

-------------------------------------------------*/

void

main(void)

{

InitMain

();

InitDis

();

WriteWord

(DisplayTest,TestMode);

delayX10ms(0x64);

delayX10ms(0x64);

WriteWord

(DisplayTest,TextEnd);

while(1)

{

unsigned

char

i;

for

(i=0;i<=9;i++)

{

delayX10ms(0x64);

delayX10ms(0x64);

InitDis

();

DisBuffer[0]=i;

DisBuffer[1]=i;

DisBuffer[2]=i;

DisBuffer[3]=i;

DisBuffer[4]=i;

DisBuffer[5]=i;

DisBuffer[6]=i;

DisBuffer[7]=i;

WriteWord

(Digit0,DisBuffer[0]);

WriteWord

(Digit1,DisBuffer[1]);

WriteWord

(Digit2,DisBuffer[2]);

WriteWord

(Digit3,DisBuffer[3]);

WriteWord

(Digit4,DisBuffer[4]);

WriteWord

(Digit5,DisBuffer[5]);

WriteWord

(Digit6,DisBuffer[6]);

WriteWord

(Digit7,DisBuffer[7]);

}

}

}我正好有個(gè)7219,一直想學(xué)一下,51節(jié)就搭個(gè)電路看看,謝謝。[電烙鐵]2005-4-22

18:00:21我有更簡(jiǎn)單的[rq88]2005-4-22

18:38:00我有更簡(jiǎn)單的那就發(fā)上來大家都看看嘛

[bush636]2005-4-22

21:19:13我有AVR

C++的

AT90S2313通過(有圖)(附圖)[Sunnyyonkers]2005-4-23

14:27:58要注意到時(shí)序正確就行了,另外電壓一定要夠,否則一定會(huì)出現(xiàn)亂

碼。

我先給出一個(gè)我做的一個(gè)通用驅(qū)動(dòng)。

//------------------------------------------------------------------------------

//Author:SunnyYonkers

//Date:

2005y-03m-18d

13:00

//------------------------------------------------------------------------------

#include

#include

#include

#include

#include

#include

#include

//------------------------------------------------------------------------------

//Hardware

Define

//引腳定義

#define

SOFT_SERIAL_PORT

PORTB

#define

SOFT_SERIAL_DDR

DDRB

#define

SOFT_SERIAL_PIN

PINB

//------------------------------------------------------------------------------

#define

LOAD_PIN

0b00000100

#define

DIN_PIN

0b00001000

#define

CLK_PIN

0b00010000

//------------------------------------------------------------------------------

//定義引腳操作

#define

SET_DIN

SOFT_SERIAL_PORT

|=

DIN_PIN

#define

CLR_DIN

SOFT_SERIAL_PORT

&=

~DIN_PIN

#define

SET_CLK

SOFT_SERIAL_PORT

|=

CLK_PIN

#define

CLR_CLK

SOFT_SERIAL_PORT

&=

~CLK_PIN

#define

SET_LOAD

SOFT_SERIAL_PORT

|=

LOAD_PIN

#define

CLR_LOAD

SOFT_SERIAL_PORT

&=

~LOAD_PIN

//------------------------------------------------------------------------------

#define

TRUE

0x01

#define

FALSE

0x00

//------------------------------------------------------------------------------

#define

DISPLAY_ADD_0

0x01

#define

DISPLAY_ADD_1

0x02

#define

DISPLAY_ADD_2

0x03

#define

DISPLAY_ADD_3

0x04

#define

DISPLAY_ADD_4

0x05

#define

DISPLAY_ADD_5

0x06

#define

DISPLAY_ADD_6

0x07

#define

DISPLAY_ADD_7

0x08

//------------------------------------------------------------------------------

#define

DECODE_ADDRESS

0x09

#define

LIGHT_ADDRESS

0x0a

#define

SCAN_WIDE

0x0b

#define

SLEEP_ADDRESS

0x0c

#define

TEST_ADDRESS

0x0d

//------------------------------------------------------------------------------

#define

SLEEP_MODE

0x00

#define

UN_SLEEP_MODE

0x01

//------------------------------------------------------------------------------

#define

NO_DECODE

0x00

#define

DECODE_0_

0x01

#define

HALF_DECODE

0x0f

#define

DECODE_ALL

0xff

//------------------------------------------------------------------------------

#define

_CHAR_0

0b00000000

#define

_CHAR_1

0b00000001

#define

_CHAR_2

0b00000010

#define

_CHAR_3

0b00000011

#define

_CHAR_4

0b00000100

#define

_CHAR_5

0b00000101

#define

_CHAR_6

0b00000110

#define

_CHAR_7

0b00000111

#define

_CHAR_8

0b00001000

#define

_CHAR_9

0b00001001

#define

_CHAR_-

0b00001010

#define

_CHAR_E

0b00001011

#define

_CHAR_H

0b00001100

#define

_CHAR_L

0b00001101

#define

_CHAR_P

0b00001110

#define

_NO_CHAR

0b00001111

#define

_DOT

0b10000000

//------------------------------------------------------------------------------

class

max7219drv

{

public:

max7219drv();

private:

void

write(unsigned

char

cData);

public:

void

send(unsigned

char

address,unsigned

char

ndata);

};

//------------------------------------------------------------------------------

//構(gòu)造函數(shù)

max7219drv::max7219drv()

{

SOFT_SERIAL_PORT

|=

0b11111111;//初始狀態(tài)高電平

SOFT_SERIAL_DDR

|=

0b11111111;//狀態(tài)

///////////////////////////////////////////////

}

//------------------------------------------------------------------------------

//------------------------------------------------------------------------------

//寫數(shù)據(jù)微程序:私有

void

max7219drv::write(unsigned

char

cData)

{

unsigned

char

nloop=0x07;

/////////////////////////////////////////////

do{

(0x80

&

cData)

?

(SET_DIN)

:

(CLR_DIN);cData<<=1;//數(shù)據(jù)移

CLR_CLK;

SET_CLK;//產(chǎn)生一個(gè)時(shí)鐘信號(hào)

}while(nloop--);

}

//------------------------------------------------------------------------------

//寫數(shù)據(jù)子程序:公有

void

max7219drv::send(unsigned

char

address,unsigned

char

ndata)

{

write(address);

write(ndata);

CLR_LOAD;

SET_LOAD

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論