a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 淺談用單片機控制12864液晶

淺談用單片機控制12864液晶

作者: 時間:2012-09-03 來源:網絡 收藏

從現在開始,慢慢的寫一寫自己在學習過程中的感想,作為一個系列吧,沒有什么固定順序,學到哪寫到哪。給它起個統一的名字叫做《我的學習筆記:*****》,話不多說,第一記開始:
話說起來12864,有愛有恨。

本文引用地址:http://www.j9360.com/article/170933.htm


先引出一段背景話:前段時間做電子大賽,題目是《無線遙控繪圖小車》,意思即為制作一個A端,作為遠程遙控部分;制作一個B端,作為繪圖主體部分。每個部分均由主控IC來,我們采用的是增強型51STC12C5A32S2,選擇它的原因無非有兩個:一是普通51無論從主頻、RAM上來講均不能滿足要求;二是在大賽前突然得知AVR系列的128停產了,市面上僅剩的128于是身價倍增,已經達到45~55元/片,成本過高。于是驚呼:AVR的時代已經馬上就要過去了。最后我們選用了STC12C5A32S2,主頻選用24M,不分頻,相當于傳統51單片機的288M頻率,速度夠用;32K+28K的存儲器,相比51的4K、8K存儲空間夠用了;而它的價格僅僅為7元/片(從芯片商直接購進)。這樣無論從性能和價格上均滿足要求,可謂性價比相當高的一款單片機了。好了,主控介紹完畢。因為本次主要想說說12864,所以主要介紹A端及其


A端主要有五部分組成:電源模塊、主控芯片及其工作電路、歐姆龍非編碼4*4矩陣鍵盤、nrf24L01無線傳輸模塊、12864顯示模塊。下面主要介紹在使用12864中遇到的一些問題及其解決方案:(拋磚引玉,歡迎高手指點)


12864液晶,從字面意思上來理解,就是一塊分辨率為128*64的液晶屏幕,和電腦中提到的顯示器分辨率是一樣的。只不過12864是一塊單色的液晶屏,市面上最常見的為藍綠色和藍色。我們采用的是藍色液晶屏,內有中文字庫,使用起來方便很多。關于漢字和ASCII碼:漢字在12864中占用16*16的屏幕空間,ASCII碼字符占用16*8的屏幕空間。于是我們可以知道:一塊12864使用內部字庫,最多可以顯示32個漢字或者64個ASCII碼字符。如果我們感覺這樣屏幕顯示的東西太少,可以舍棄液晶內部字庫,自己制作一個字庫,其中漢字和ASCII碼均可以占用8*8的屏幕空間,這樣我們的12864最多可以顯示128個漢字或ASCII碼字符。所以在顯示內容較多時可以采用這種方法。


作為背景,下面說一下12864的驅動。關于液晶的驅動電路是相當復雜的,一個有幾年工作經驗的工程師也不一定能自己獨立設計出一個12864驅動,但是比較好的是,我們一般在買12864的時候,制造商都已經將驅動做好了,我們要做的就是通過制造商留給我們的20P接口去使用它(這也就是術業有專攻吧,我們不必關心它的內部驅動,只要會用就行了),關于制造商留給我們的這20P引腳的具體名稱和功能 我就不贅述了,網上一把一把的。將單片機的I/O、電源線與液晶焊接完畢后,硬件也就搭建好了。下面開始軟件編程來12864液晶讓它顯示。


說到軟件編程,首先我們需要準備一下平臺:第一:給單片機焊接一個下載電路,51單片機最常用的就是串口下載,需要串口頭一個、104電容5個、max232芯片一個、串口線/USB轉串口連接線(后者主要為筆記本等沒有串口的電腦設計)一條、導線若干。這個下載電路在網上也是一把一把的,我也不贅述了。第二:需要一臺電腦(編程用)。第三:需要相應的開發平臺,51單片機最常用的是keil,現在比較流行的是keil2和keil3,各有特點,可以根據自己的習慣選擇,我個人選用的是keil3平臺。有了以上3點,軟硬件開發平臺就已經搭建好了,下面介紹一下程序編寫。


首先,打開keil軟件,建立一個工程,并添加一個文件到工程里面,然后就可以寫程序了。首先把基本程序架構寫好:頭文件、主函數、while循環。為了讓程序比較好理解,采用編寫函數在主函數中調用的形式。下面介紹一下各種功能函數的編寫。

首先是最基本的初始化操作,需要參考制造商給出的操作時序圖(這里不贅述,只列出代碼)
    void init_12864()
    {
    lcd12864_psb=1;//選擇并行模式
    write_cmd(0x30);//選擇基本指令
    write_cmd(0x0C);//把顯示打開,關閉游標
    write_cmd(0x01);//清屏,地址歸零
    }


接下來是基本的讀寫操作:參考制造商給出的操作時序圖(這里不贅述,只列出代碼)
    //往12864內部寫入一個命令字節
    void write_cmd(uchar cmd)
    {
    lcd12864_rs=0;//把rs引腳拉低,表示命令
    lcd12864_rw=0;//表示寫,而非讀
    P0=cmd;//把命令字節送到數據線上

    lcd12864_en=0; //給en引腳一個高脈沖
    delay_ms(5);
    lcd12864_en=1;
    delay_ms(5);
     lcd12864_en=0;
    }

    //往12864內部寫入一個字節的數據
    void write_dat(uchar dat)
    {
     lcd12864_rs=1;//表示寫數據
    lcd12864_rw=0;//表示寫
    P0=dat;//把數據送到數據線上
    lcd12864_en=0; //給en引腳一個高脈沖
     delay_ms(5);
    lcd12864_en=1;
     delay_ms(5);
    lcd12864_en=0;
    } 

萬能遙控器相關文章:萬能遙控器代碼


51單片機相關文章:51單片機教程


單片機相關文章:單片機教程


單片機相關文章:單片機視頻教程


單片機相關文章:單片機工作原理


led顯示器相關文章:led顯示器原理



上一頁 1 2 下一頁

評論


相關推薦

技術專區

關閉