1)硬件電路
用AT89C2051與74HC595接口設(shè)計(jì)的顯示面板電路。

P1口的P115、P116、P117用來(lái)控制LED的顯示,分別接到SLCK、SCLK和SDA腳。三個(gè)數(shù)碼管用來(lái)顯示電壓值的大小。在電路板上,LED3在最左邊,LED1在最右邊,送數(shù)據(jù)時(shí),先送LED3的顯示碼,最后送LED1的顯示碼。LED的亮度用PR1~PR3的阻值來(lái)控制。
2)顯示驅(qū)動(dòng)程序
用DISP1、DISP2、DISP3三個(gè)連續(xù)的單元存放顯示數(shù)據(jù),在CPU初始化完成后,調(diào)用LRDISP子程序清除74HC595的寄存器,在以后調(diào)用顯示子程序DISPLAY前就不用再調(diào)用清除子程序了?,F(xiàn)將兩個(gè)子程序?qū)懗鋈缦拢?/p>
清除子程序:
CLRDISP:
MOVR2,#24; ? ? ? ? 三個(gè)數(shù)碼管,一共24位
CLRBIT:
CLRSCLK;寄存器時(shí)鐘拉低
CLRC;寄存器清零
MOVSDA,C;送入74HC595
SETBSCLK;時(shí)鐘的上升沿送入寄存器
DJNZR2,CLRBIT;送完24位
RET;子程序返回
顯示子程序:
DISPLAY:
CLRSLCK;鎖存器時(shí)鐘拉低
MOVR3,#3;三個(gè)數(shù)碼管
MOVR0,#DISP3;從第三個(gè)開(kāi)始送
DISP1:
MOVA,@R0;送8位數(shù)到74HC595
MOVR2,#8
DISP2:
CLRSCLK
RLCA
MOVSDA,C
SETBSCLK
DJNZR2,DISP2;送完一個(gè)字節(jié)
DECR0;送下一個(gè)數(shù)碼管的顯示數(shù)據(jù)
DJNZR3,DISP1;送完三個(gè)字節(jié)
SETBSLCK;時(shí)鐘的上升沿寄存器數(shù)據(jù)送入鎖存器
RET;子程序返回
2、基于74HC595流水燈設(shè)計(jì)
電路原理圖如圖所示,用串入并出驅(qū)動(dòng)芯片編寫(xiě)74HC595編寫(xiě)單項(xiàng)流水燈程序。
圖74HC595流水燈硬件結(jié)構(gòu)圖
74HC595控制端說(shuō)明:
MR(10腳):低點(diǎn)平時(shí)將移位寄存器的數(shù)據(jù)清零。通常我將它接Vcc。
SHCP(11腳):上升沿時(shí)數(shù)據(jù)寄存器的數(shù)據(jù)移位。QA--》Q(chēng)B--》Q(chēng)C--》。。。--》Q(chēng)H;下降沿移位寄存器數(shù)據(jù)不變。(脈沖寬度:5V時(shí),大于幾十納秒就行了。我通常都選微秒級(jí))
STCP(12腳):上升沿時(shí)移位寄存器的數(shù)據(jù)進(jìn)入數(shù)據(jù)存儲(chǔ)寄存器,下降沿時(shí)存儲(chǔ)寄存器數(shù)據(jù)不變。通常我將STCP置為低點(diǎn)平,當(dāng)移位結(jié)束后,在STCP端產(chǎn)生一個(gè)正脈沖(5V時(shí),大于幾十納秒就行了。我通常都選微秒級(jí)),更新顯示數(shù)據(jù)。
OE(13腳):高電平時(shí)禁止輸出(高阻態(tài))。如果單片機(jī)的引腳不緊張,用一個(gè)引腳控制它,可以方便地產(chǎn)生閃爍和熄滅效果。比通過(guò)數(shù)據(jù)端移位控制要省時(shí)省力。
電子發(fā)燒友App

















評(píng)論