![max7219顯示程序-C程序-匯編_第1頁(yè)](http://file4.renrendoc.com/view/d131f66b5894666c6f03770c6990cc16/d131f66b5894666c6f03770c6990cc161.gif)
![max7219顯示程序-C程序-匯編_第2頁(yè)](http://file4.renrendoc.com/view/d131f66b5894666c6f03770c6990cc16/d131f66b5894666c6f03770c6990cc162.gif)
![max7219顯示程序-C程序-匯編_第3頁(yè)](http://file4.renrendoc.com/view/d131f66b5894666c6f03770c6990cc16/d131f66b5894666c6f03770c6990cc163.gif)
![max7219顯示程序-C程序-匯編_第4頁(yè)](http://file4.renrendoc.com/view/d131f66b5894666c6f03770c6990cc16/d131f66b5894666c6f03770c6990cc164.gif)
![max7219顯示程序-C程序-匯編_第5頁(yè)](http://file4.renrendoc.com/view/d131f66b5894666c6f03770c6990cc16/d131f66b5894666c6f03770c6990cc165.gif)
版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 8 沏茶問題(說課稿)-2024-2025學(xué)年四年級(jí)上冊(cè)數(shù)學(xué)人教版001
- Unit 8 I can do this for you?(說課稿)-2024-2025學(xué)年譯林版(三起)(2024)英語三年級(jí)上冊(cè)
- Review Module Unit 1(說課稿)-2023-2024學(xué)年外研版(三起)英語五年級(jí)下冊(cè)
- 2024-2025學(xué)年新教材高中生物 第5章 基因突變及其他變異 微專題六 遺傳變異相關(guān)的解題方法說課稿 新人教版必修第二冊(cè)
- 2025合同樣例舞臺(tái)燈光音響租賃合同范本
- 2024春八年級(jí)語文下冊(cè) 第1單元 2回延安說課稿 新人教版
- 5草船借箭說課稿-2023-2024學(xué)年五年級(jí)下冊(cè)語文統(tǒng)編版
- Unit1 Making friends(說課稿)-2024-2025學(xué)年人教PEP版(2024)英語三年級(jí)上冊(cè)
- 2024-2025學(xué)年高中化學(xué) 第一章 物質(zhì)結(jié)構(gòu)元素周期律 第一節(jié) 元素周期表第3課時(shí)說課稿3 新人教版必修2
- 陽(yáng)光板雨棚施工方案
- 云南省曲靖市羅平縣2024-2025學(xué)年高二上學(xué)期期末地理試題( 含答案)
- 中國(guó)糖尿病防治指南(2024版)要點(diǎn)解讀
- Unit 1 Nice boys and girls【知識(shí)精研】-一年級(jí)英語下學(xué)期(人教PEP版一起)
- 《口腔科學(xué)緒論》課件
- 2024年高考數(shù)學(xué)(理)試卷(全國(guó)甲卷)(空白卷)
- 2024版CSCO胰腺癌診療指南解讀課件
- 《應(yīng)急管理行政執(zhí)法人員依法履職管理規(guī)定》知識(shí)培訓(xùn)
- 《醫(yī)療機(jī)構(gòu)環(huán)境表面清潔與消毒管理規(guī)范》-華西醫(yī)院案例
- 2024年黑龍江農(nóng)業(yè)工程職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)
- 合同簽訂執(zhí)行風(fēng)險(xiǎn)管控培訓(xùn)
- DB43-T 3022-2024黃柏栽培技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論