關于指針和1602液晶屏的知識講解我們就不贅述了,《手把手教你學51單片機》文檔第12,13章有很詳細的講解,我們也不用再自己搞些與眾不同的驅動代碼,沒必要再“重新發(fā)明輪子”,只需直接移植使用宋老師為我們寫好的代碼就好。那么宋老師的液晶屏代碼原理他也在文檔詳細講解了,大家只需反復細讀都會掌握的了的,這里筆者只對部分代碼做出一些解釋。打開宋老師的代碼lesson12_4。
1.顯示字符的執(zhí)行操作
如果我們需要在液晶屏上顯示下圖的內容
那么在代碼上需要一步步地操作來完成。
首先設置好液晶屏的使用指標,比如需要“16*2顯示,5*7點陣”、“顯示器開,光標關閉”、“文字不動,地址自動+1”,這些叫做液晶屏的初始化,表明液晶屏要正常顯示內容就需要提前配置好這些工作。
比如我們要設置液晶屏“顯示器開,光標關閉”的功能,需要給液晶屏寫入命令的字節(jié)為0x0C。在寫入之前要讀出液晶屏的狀態(tài)是否在忙,也就是“sta = LCD1602_DB;”讀取整個P0端口的8個位的狀態(tài),而“while (sta & 0x80);”就是只要P0.7為高電平狀態(tài),證明液晶屏在忙,不能寫入0x0C這個字節(jié)給液晶屏,等到P0.7被液晶屏輸出低電平拉低引腳之后,證明液晶屏不忙了,可以允許寫入命令字節(jié)了,“void LcdWaitReady()”函數分析完畢。
“void LcdWriteCmd(unsigned char cmd)”就是要寫入命令的字節(jié),前面的
LCD1602_RS = 0;
LCD1602_RW = 0;
是令液晶屏接收命令做準備,然后使”P0= cmd;”輸出相關的高低電平,再讓LCD1602_E 完成一個高脈沖,這樣當“cmd=0x0C;”時,液晶屏就接收了這個命令,讓顯示功能為“顯示器開,光標關閉”。
然后我們再說說,要顯示的內容從哪個格子顯示應該怎么去實現代碼,如果要在第二行第一個格子顯示一個字符,那么光標要設置在這個位置上,也就是寫命令給液晶屏的字節(jié)為“0x80|0x40”,設置坐標的命令字節(jié)最高位要為1。在哪個位置顯示就寫入哪個地址。
最后就是“void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str)”函數的講解了。
設置地址在哪顯示的函數已經講過。我們看到“LcdWriteDat(*str++);”,這個函數的意思是把一個數組或者一個字符串里的字符數據寫進上圖的顯示位置的地址里讓相應的地方顯示字符。
在初始化函數里“LcdWriteCmd(0x06);”的設置是令地址自動加1,假如在液晶屏第二行的第一個位置(也就是地址為0x40)不停寫數據,那么寫完一個數據之后,再寫下一個數據,寫進去的地址就是0x41的位置了,后面再寫就是0x41的位置。
液晶屏的代碼我們就簡略講完了,如果理解上還存在疑惑,我們也許掌握的理論知識還有所欠缺,這是需要慢慢消化的。
當然我們也可以不用去深究每一個細節(jié),后面我們教會大家怎么去使用這些函數就可以了。
上一篇:51單片機-串口printf系列函數
下一篇:51單片機-指向數組的指針
推薦閱讀
史海拾趣
AND Displays公司自成立以來,一直致力于顯示技術的研發(fā)與創(chuàng)新。在早期階段,公司團隊就針對當時市場上顯示面板的缺陷,進行了一系列技術攻關。經過數年的努力,AND Displays成功開發(fā)出了一種新型顯示技術,該技術在色彩還原、對比度和響應速度等方面均表現出色,迅速獲得了市場的認可。此后,公司不斷推出創(chuàng)新產品,滿足了消費者對高質量顯示面板的日益增長的需求,逐漸在電子行業(yè)中嶄露頭角。
近年來,安國國際將發(fā)展重心放在U盤控制IC的開發(fā)上。隨著USB技術的不斷升級和SSD市場的蓬勃發(fā)展,安國積極搶占USB 3.0、USB 3.1及SSD控制IC的市場先機。公司的U盤控制IC不僅支持新一代3D NAND技術,還具備高性能、低功耗等優(yōu)點,深受市場歡迎。通過持續(xù)的技術創(chuàng)新和市場拓展,安國在U盤控制IC領域取得了顯著成績。
在全球化趨勢的推動下,安國國際積極拓展海外市場,與全球多家知名企業(yè)和研究機構建立了緊密的合作關系。通過與國際伙伴的技術合作和市場共享,安國得以更快地了解市場需求和技術動態(tài),加速產品研發(fā)和市場推廣。同時,公司還加強了對全球供應鏈的管理和優(yōu)化,確保產品質量和交貨期的穩(wěn)定性。這些舉措為安國國際在全球市場的競爭提供了有力支持。
這五個故事展示了安國國際在電子行業(yè)中的發(fā)展歷程和取得的成就。從創(chuàng)業(yè)初期的USB鍵盤集線器控制芯片研發(fā)到產品線拓展、組織架構調整、專注于U盤控制IC開發(fā)以及全球化布局與合作伙伴關系的建立,安國國際始終堅持以技術創(chuàng)新為驅動,以市場需求為導向,不斷提升自身的核心競爭力和市場份額。
隨著全球市場的不斷變化和發(fā)展,ELECTRONICON積極實施國際化戰(zhàn)略,拓展海外市場。公司在全球范圍內建立了完善的銷售和服務網絡,為客戶提供及時、高效的服務。未來,ELECTRONICON將繼續(xù)秉承“質量為本、客戶至上”的經營理念,不斷創(chuàng)新和發(fā)展,為電子行業(yè)的繁榮做出更大的貢獻。
CSM自成立以來,便積極承擔國家和地方具有戰(zhàn)略性意義的重大攻關研發(fā)項目。其中,公司前身南京市物聯(lián)網研究與產業(yè)化有限公司RFID事業(yè)部申報的“超高頻與微波RFID讀寫器射頻芯片研發(fā)”項目獲得了國家工信部物聯(lián)網專項資金項目資助,并在江蘇省名列第一。這些項目的成功完成不僅展示了CSM在技術研發(fā)方面的實力,也為國家科技進步和產業(yè)發(fā)展做出了積極貢獻。
FLIR公司成立于1978年,總部位于美國俄勒岡州波特蘭市。起初,公司專注于高性能、低成本機載應用紅外熱成像系統(tǒng)的研發(fā)與生產。在那個時代,紅外熱成像技術主要應用于軍事領域,成本高昂且難以普及。然而,FLIR憑借其技術創(chuàng)新,成功打破了這一局面,推出了性價比極高的機載紅外熱成像系統(tǒng)。這些系統(tǒng)能夠在完全漆黑的環(huán)境或惡劣天氣條件下,透過煙霧和陰霾等空氣污染物清晰成像,極大地提升了軍事偵察和夜間作戰(zhàn)的能力。這一突破不僅讓FLIR在軍事領域嶄露頭角,也為后續(xù)的商業(yè)應用奠定了堅實基礎。
各位大蝦: 我用了一個下午作了一個ARM模擬器。在微軟網站直接下載DeviceEmulatorBSP.msi,這是ARMV4I的模擬器BSP,通過微軟提供的(安裝完這個BSP后)Using the CE DeviceEmulator.rtf操作方法,制作的模擬器,在EVC4.0里也可以選擇這個模擬器, ...… 查看全部問答∨ |
|
入門同志編寫的程序,簡析其寫法與表達錯誤! LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Manchester_encoder IS PORT(D:IN STD_LOGIC; Q ...… 查看全部問答∨ |
|
同樣的電路HDMI一致性測試,我們北京office的同事和上海的同事測試的結果為什么有時候差距甚大呢?(測試儀器是完全相同的型號,相同的板子)誰有類似的遭遇分享一下?謝謝~~… 查看全部問答∨ |
|
關于standby有如下2個問題:1, 程序run in internel flash, 可以進入standby模式 但是run in externel flash,不能進入standby模式2, ...… 查看全部問答∨ |
|
一點一點搭建起程序框架,實現方便移植,異于管理的一個通用模版 這個帖子,實際上可以認為是先前我發(fā)的那個帖子 讓我們一起來搭建一個 單片機通用程序模版 的 后續(xù)篇章。那一章里,主要闡述了我自己的觀點和想法,最后覺得比較空,畢竟這個模版要在實際操作中,針對遇到的新情況重新分析,增刪修改,才能真正實現 ...… 查看全部問答∨ |
剛接觸51單片機的串口知識,遇到一個問題,希望大家解答 串口控制LED燈的程序: #include<reg52.h> unsigned char flag; unsigned char temp; main() { TMOD=0x20; TH1=0xFD; TL1=0xFD; & ...… 查看全部問答∨ |
設計資源 培訓 開發(fā)板 精華推薦
- 英飛凌微控制器:以全新實惠套件和強大開發(fā)環(huán)境為開發(fā)者提供支持
- iTOP-i.MX6開發(fā)板設備數驅動Menuconfig的用法
- 迅為IMX6ULL開發(fā)板Qt for Android搭建開發(fā)環(huán)境
- 迅為i.MX8M mini開發(fā)板Windots QT系統(tǒng)開發(fā)環(huán)境搭建
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開發(fā)板Linix系統(tǒng)修改默認屏幕
- iTOP-4412開發(fā)板支持4G以上文件系統(tǒng)擴展
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)設置開機自啟動
- 迅為IMX6Q開發(fā)板 Buildroot文件系統(tǒng)mqtt測試