Ⅰ 單片機P1口與集成的好的led點陣模塊接法
MHZ或更高頻率晶振,以獲得較高的刷新頻率,時期顯示更穩定。單片機的串口與列驅動器相連,用來顯示數據。P1口低4位與行驅動器相連,送出行選信號;P1.5~P1.7口則用來發送控制信號。P0口和P2口空著,在有必要的時候可以擴展系統的ROM和RAM。
2列驅動電路
列驅動電路有集成電路74HC595構成。它具有一個8位串入並出的移位寄存器和一個8位輸出鎖存器的結構,而且移位寄存器和輸出鎖存器的控制是各自獨立的,可以實現在顯示本行列數據的同時,傳送下一行的列數據,既達到重疊處理的目的。
74HC595的外形及內部結構如圖3所示。它的輸入側有8個串列移位寄存器,每個移位寄存器的輸出都連接一個輸出鎖存器。引腳SI是串列數據的輸入端。引腳SCK是移位寄存器的移位時鍾脈沖,在其上升沿發生移位,並將SI的下一個數據打入最低位。
移位後的各位信號出現在各移位寄存器的輸出端,也就是輸出鎖存器的輸入端。RCK是輸出鎖存器的打入信號,其上升沿將移位寄存器的輸出打入輸出鎖存器。引腳G是輸出三態門的開放信號,只有當其為低時鎖存器的輸出才開放,否則為高組態。SCLR信號是移位寄存器清零輸入端,當其為低時移位寄存器的輸出全部為零。由於SCK和RCK兩個信號是互相獨立的,所以能夠做到輸入串列移位與輸出鎖存互不幹擾。晶元的輸出端為QA~QH,最高位QH可作為多片74HC595級聯應用時,向上一級的級聯輸出。但因為QH受輸出鎖存器的打入控制,所以還從輸出鎖存器前引出QH,作為與移位寄存器完全同步的級聯輸出。
QB 1 16 Vcc
QC 2 15 QA
QD 3 14 SI
QE 4 13 G
QF 5 12 RCK
QG 6 11 SCK
QH 7 10 SCLR
GND 8 9 QH
圖3. 74HC595外形及引腳
4.1.3行驅動器
單片機P1口低4位輸出的行號經4/16線解碼器74LS154解碼後生成16條行選通信號線,再經過驅動器驅動對應的行線。一條行線上要帶動16列的LED進行顯示,按每一LED器件20MA電流計算,16個LED同時發光時,需要320MA電流,選通三極體8550作為驅動管可滿足要求。
4.2.系統程序的設計
顯示屏軟體的主要功能是向屏體提供顯示數據,並產生各種控制信號,使屏幕按設計的要求顯示。根據軟體分層次設計的原理,可以把顯示屏的軟體系統分為兩層;第一層是底層的顯示驅動程序,第二層是上層的系統應用程序。顯示驅動程序負責向屏體送顯示數據,並負責產生行掃描信號和其他控制信號,配合完成LED顯示屏的掃描顯示工作。顯示驅動器程序由定時器T0中斷程序實現。系統應用程序完成系統環境設置(初始化)、顯示效果處理等工作,由主程序來實現。
從有利於實現較復雜的演算法(顯示效果處理)和有利於程序結構化考慮,顯示屏程序適宜採用C語言編寫。
4.2.1顯示驅動程序
顯示驅動程序在進入中斷後首先要對定時器T0重新賦初值,以保證顯示屏刷新率的穩定,1/16掃描顯示屏的刷新率(幀頻)計算公式如下:
刷頻率(幀頻)=1/16×T0溢出率
=1/16×f/12(65536-t)
其中f位晶振頻率,t為定時器T0初值(工作在16位定時器模式)。
然後顯示驅動程序查詢當前燃亮的行號,從顯示緩存區內讀取下一行的顯示數據,並通過串口發送給移位寄存器。為消除在切換行顯示數據的時候產生拖尾現象,驅動程序先要關閉顯示屏,即消隱,等顯示數據打入輸出鎖存器並鎖存,然後再輸出新的行號,重新打開顯示。圖4為顯示驅動程序(顯示屏掃描函數)流程圖。
4.2.2系統主程序
本文設計的系統軟體能使系統在目測條件下LED顯示屏各點亮度均勻、充足,可顯示圖形和文字,顯示圖形和文字應穩定、清晰無串擾。圖形或文字顯示有靜止、移入移出等顯示方式。
系統主程序開始以後,首先是對系統環境初始化,包括設置串口、定時器、中斷和埠;然後以「卷簾出」效果顯示圖形,停留約3s;接著向上滾動顯示「我愛單片機」這5個漢字及一個圖形,然後以「卷簾入」效果隱去圖形。由於單片機沒有停機指令,
所以可以設置系統程序不斷的循環執行上述顯示效果。
單元顯示屏可以接收來自控制器(主控制電路板)或上一級顯示單元模塊傳輸下來的數據信息和命令信息,並可將這些數據信息和命令信息不經任何變化地再傳送到下一級顯示模塊單元中,因此顯示板可擴展至更多的顯示單元,用於顯示更多的顯示內容。
5性能分析與總結
5.1 性能分析
LED顯示屏硬體電路只要硬體質量可靠,引腳焊接正確,一般無需調試即可 正常工作。軟體部分需要調試的主要有顯示屏刷新頻率及顯示效果兩部分。顯示屏刷新率由定時器T0的溢出率和單片機的晶振頻率決定,表5.1給出了實驗調試時採用的頻率及其對應的定時器T0初值。
表5.1 顯示平刷新率與T0初值關系表(24MHz晶振)
刷新率 25 50 62.5 75 85 100 120
T0初值 0Xec78 0Xf63C 0Xf830 0xF97E 0XFA42 0XFB1E 0xFBEE
從理論上來說,24Hz以上的刷新頻率就能看到穩定的連續的顯示,刷新率越高,顯示越穩定,同時刷新頻率越高,顯示驅動程序佔用的CPU時間越多。試驗證明,在目測條件下刷新頻率40Hz一下的畫面看起來閃爍較嚴重,刷新頻率50Hz以上的已基本察覺不出畫面的閃爍,刷新頻率達到85Hz以上時再增加畫面閃爍沒有明顯的改善。
顯示效果處理程序的內容及方法非常廣泛,其調試過程在此不作具體討論,讀者可以照源程序自行分析。
這個方案設計的16x16的點陣LED圖文顯示屏,電路簡單,成本較低,且較容易擴展成更大的顯示屏;顯示屏各點亮度均勻、充足;顯示圖形或文字穩定、清晰無串擾;可用靜止、移入移出等多種顯示方式顯示圖形或文字。
5.2 總結
本文設計的一個室內用16x16的點陣LED圖文顯示屏,能夠在目測條件下LED顯示屏各點亮度均勻、充足,可顯示圖形和文字,顯示圖形和文字應穩定、清晰無串擾。圖形或文字顯示有靜止、移入移出等顯示方式。本系統具有硬體少,結構簡單,容易實現,性能穩定可靠,成本低等特點。
總結本文的研究工作,主要做了下面幾點較突出的工作:
一、通過查閱大量的相關資料,詳細了解了LED的發光原理和LED顯示屏的原理,了解了LED的現狀,清楚地了解了LED顯示屏與其它顯示屏相比較有那些
優點,明確了研究目標。
二,本文設計的LED顯示屏能夠實現在目測條件下LED顯示屏各點亮度均勻、充足,可顯示圖形和文字,顯示圖形和文字應穩定、清晰無串擾。圖形或文字顯示有靜止、移入移出等顯示方式。
三,文章給出了系統具體的硬體設計方案,硬體結構電路圖,軟體流程圖和具體匯編語言程序設計與調試等方面。
四,在這次畢業設計的過程中學會了 Protel 99se 的基本使用,感到Protel 99se 對自動化專業的同學來說是一門很有用的課程。
五,通過這次畢業設計,重新復習並進一步學習了MCS-51;熟練掌握了WORD軟體的使用。
六,存在缺陷:沒有考慮抗干擾的問題。
Ⅱ 我用串口調試助手向單片機發送數據 並讓P2口的數碼管顯示 我發送了 p2口怎麼沒有變化啊
你用T0做溢出率是不行的,T0沒有方式2的功能,只有T1才有自動載入功能.
要用T1來做,並且你的REN=1;SM0=0;SM1=1;順序也有問題
改成:
void init()
{
TMOD=0X20;
TH1=0Xfd;
TL1=0Xfd;
TR1=1;
SM0=0;
SM1=1;
REN=1;
EA=1;
ES=1;
}
Ⅲ 51單片機用T0計數器計算T1定時器的溢出次數,該如何實現
方法一:
只開T1定時器中斷,在T1定時器中斷子程序中對(TH0 TL0)做加一運算。
方法二:
T1定時器模式,T0計數器模式,在T1定時器中斷子程序中對某一固定引腳Px.x做「置1-清0-置1」操作,並將對應引腳連接在T0(P3.4)引腳。默認情況下T0中斷比T1中斷許可權高,每次定時器T1溢出後,會在中斷子程序內對引腳Px.x進行「置1-清0-置1」,過程中1到0的下降沿跳變會引起(TH0 TL0)加一;直到計數器T0溢出前的「置1-清0」時刻後「置1」時刻前,T0產生溢出中斷,中斷T1的中斷子程序。
比較:
如果僅僅為了計算「T1定時器的溢出次數」的話,隨便定義兩個位元組的「內部RAM數據存儲器」就可以了,和方法一類似,在中斷子程序中,對寄存器內數值加一,完全可以實現。
用T0算T1太浪費資源了!
定義「內部RAM數據存儲器」計算「T1定時器的溢出次數」的程序:
可以用Keil模擬以下,能看出效果的!
Ⅳ 51單片機模擬通訊通訊的啟動串口接收函數,TL0 = 256 - ((256-TH0)>>1)這句話怎麼分析
首先你要明白溢出率怎麼算,溢出率等於每溢出一次時間的導數,也就是定時時間的導數。256-TH0算出來的是定時時間,右移以為相當於除2。然後再用256減去,付給TL0
Ⅳ stc12c5a60s2單片機 輸出自帶pwm頻率怎麼改變,比如說我現在需要50hz的頻率
1,stc12c5a60s2一般pwm頻率=PCA時鍾源/256
2,PCA時鍾源設置有4種方式,一般都有T0的溢出率,來設置PCA時鍾源,
一般在COMD這個寄存器的B2,B1兩位來確定是那種方式,10方式就是T0溢出方式(1T更快),可以做可變PCA時鍾源時鍾源,從而得到可變頻率的pwm輸出。
3,理論可生成(1-65535)個頻率級別,如12MHz主頻,(1T)方式最小可以做到12MHz,但實際是到了的最快也就是1/2SYsclk,即6MHz,然後除以256,理想可以輸出23Khz~0.5Hz左右的頻率范圍
Ⅵ 定時器t0的溢出率計算公式是什麼
計時器在方式2時的溢出率=fosc/{12×[256-(TH1)]},其中fosc是晶振的頻率,是11.0952MHz
Ⅶ 51單片機的溢出率什麼意思
指的是定時器一秒鍾溢出多少次,它是串口通信的時間基準,不管是同步通信還是非同步通信
通信時定時器工作在8位模式,最大計數值是256個脈沖(如果晶振12兆,256個脈沖即256uS),如果裝入初值156,則經過100個脈沖後計數值達到256,即溢出,所以100us溢出一次,溢出率即每秒10000次
Ⅷ 請問單片機中的定時器1的溢出率是怎麼回事呢
肯定「0o小威哥o0」在2013年給出的評論。
我從書上看到了這樣的解釋,稍後把資料源擺在下面:
定時器T1有方式0、1、2、3。區別在於位數和裝載方式不同。
因為方式2的計數器位數是8位的,而且可以自動重裝載(計數器計滿以後,硬體自動把計數初值裝載到8位計數器裡面),所以適合可以比較精確的計時。
我贊同定時器的溢出率是每秒溢出的個數的說法。對於您給出的計算公式,我想修正完善一下:
當單片工作在12分頻模式時,定時器T1的溢出率=(fsys/12)/(256-TH1)。
解釋一下,fsys作為單片機CPU、內部介面的時鍾成為系統時鍾。您給出的fosc,據我所知是時鍾源(振盪器時鍾)信號的頻率。fsys與fosc有什麼關系呢?
因為時鍾源信號需要經過一個可編程(也就是可以位操作或直接對某寄存器操作)的時鍾分頻器再提供給單片機CPU和內部介面的。關系就是靠一個分頻系數N得到的。fsys=fosc/N。可編程時鍾分頻器是靠時鍾分頻寄存器CLK_DIV(PCON2)控制的。當分頻系數N=1的時候,顯然有fsys=fosc。因為時鍾分頻器是可編程的,所以fsys與fosc就有不相等的可能性。通過控制PCON2寄存器的CLKS2、CLKS1、CLKS0,可以分別獲得1、2、4、8、16、32、64、128的分頻系數N。注意:我這里說的12分頻工作模式只針對與系統時鍾頻率,不針對與時鍾源頻率,對於某時鍾源頻率fosc經過4分頻得到系統時鍾頻率fsys,在計時器T1的高8位計數器TH1計數的時候每經過12個時系統鍾頻率,計數器才加1。
參考書籍:單片微機原理與介面技術,丁向榮主編,電子工業出版社。全書第30頁,系統時鍾與時鍾分頻寄存器。
參考資料:STC89C52系列單片機指南,下載地址 www.stcmcu.com ,網頁比較大,內容比較多(建議用ctrl+F 開啟網頁查找:stc89c52,立馬就搜索到了,下載這個技術手冊,找到235頁)。
最後想要補充的,君子美美與共,和而不同:D 。我認為,分享學習到的知識是我學習與表達生活的一種方式。知識經過分享,讓更多人收益,幫助到其他人,才有可能發揮知識的價值。知識留在書本上,一點價值都沒有,要是用來考試的話就太可悲了。有不對的地方,希望包含。
Ⅸ 51單片機定時計數器溢出率計算和串口的波特率之間的關系
串口工作在方式1和3,則波特率由定時器T1的溢出率來決定,關系如下:
波特率 = ((2^SMOD)/32)*T1溢出率,
這里T1溢出率 = fosc/[12×(28-X)],則:
波特率=((2^SMOD)/32)×fosc/[12×(28-X)]
2^SMOD是2的SMOD次方,SMOD是波特率是否要加倍的控制位,默認是0,
fosc就是晶振的值,
X就是裝入TH1的值。
Ⅹ 關於stc12c5a單片機的問題 寫的pwm 發生程序 如何使頻率 占空比變化 TMOD=0x10 CMOD=0x04
1直接賦值就可以,將數據送到變數a,將a賦給cCCAP1H
cCCAP1L就可以了改變占空比了 ,
如:a=0x80;
CCAP1H=CCAP1L =a;輸出一半50%,
2改變頻率可以,通過改變T0的溢出率來調頻,設置CMOD=0x04;表示用用T0來調頻