將16X2 LCD連接到AVR微控制器
本節課完全是關于AVR微控制器(ATMEGA 16)與16X2 LCD的接口問題。Atmega16屬于AVR微控制器系列。
本文引用地址:http://www.ex-cimer.com/article/202304/446098.htm電路解釋:
這與LCD與8051或PIC微控制器的接口方式沒有什么不同。水晶振蕩器將向微控制器提供時鐘。連接在晶體上的電容將作為過濾器,幫助晶體產生共振,并以平行共振的方式進行振蕩。
連接到LCD的3號和2號引腳的電位器將有助于調整LCD的對比度。LCD的4、5和6個引腳,即寄存器選擇、讀/寫和啟用引腳,與Atmega16的PD0、PD1和PD2引腳相連。LCD的數據引腳與Atmega16的33至40引腳相連。
對ATMEGA16進行編程,以便與16X2 LCD連接:
你可以從8051單片機的16×2接口一文中得到LCD的簡要信息。正如我前面所說的,編程的基本原理都是一樣的,就是使用微控制器的引腳和寄存器。
非常重要的是如何向LCD發送數據以及如何向LCD發送命令,假設你要向LCD發送數據,那么你必須在發送數據之前將16×2 LCD的ENABLE引腳調為低電平,當你認為你要發送的數據已經準備好時,再將ENABLE引腳調為高電平,用編碼語言表示為1。如果你把ENABLE引腳變成高電平,那么只有LCD會工作。
僅僅使ENABLE引腳為高電平是不行的,你必須使REGISTER SELECT引腳(RS引腳)也為高電平,這樣LCD才會接受必須在LCD屏幕上顯示的正常數據,如果你忘記使RS引腳為高電平,它最終會認為用戶在向它發送命令,并使它自己準備好根據命令行事,如使光標移動、清除LCD上的數據、改變光標位置等等。
最后但并非最不重要的是另一個你需要擔心的針腳--讀/寫針腳,我們都知道任何設備的基本功能都是從讀和寫開始的,讀數據和寫數據是任何外圍設備或系統的主要和重要功能。
僅僅發送數據和顯示數據并不能完成任務;以可理解的方式安排數據是程序員的重要和關鍵任務。你可以在LCD中安排數據或使LCD按照你的愿望工作,可以通過向LCD發送命令或特殊功能來完成,你可能會想,LCD需要什么類型的命令,光標位置的命令,增加或減少對比度,使光標改變行,如從第一行到第二行等等。 為了向LCD發送命令,你需要使引腳變成高電平和低電平,就像發送數據一樣。為了發送命令,你需要使ENABLE針腳為高電平,REGISTER SELECT針腳(RS針腳)為低電平,也就是程序員所說的0,而讀/寫針腳(R/W針腳)為高電平,你需要記住這個配置來發送命令。
在顯示數據時,程序員一般使用不同的命令和它們的十六進制代碼。
如果我們想簡單說說在LCD上顯示數據的情況
E=1;使能引腳應該是高電平
RS=1;寄存器選擇應該是高電平
R/W=0;讀/寫引腳應該為低電平。
對于向LCD發送命令
E=1;使能引腳應該為高電平
RS=0;寄存器選擇應該是低電平
R/W=1;讀/寫引腳應該為高電平。
當你傳遞一個字符串時,最好使用一個字符串指針并遞增這個指針,如果你遞增一個指針,它將自動進入變量的下一個地址,你可以在其中存儲你想顯示的字符。請看下面的例子。
void write_string(unsigned char *str) //store address value of the string in pointer *str
{
int i=0;
while(strng[i]!=’看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();