久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 13542|回復: 7
打印 上一主題 下一主題
收起左側

LCD1602+51單片機最小系統(tǒng)應用仿真及制作

  [復制鏈接]
跳轉到指定樓層
樓主
ID:166089 發(fā)表于 2017-3-7 19:17 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本文將介紹LCD1602和51單片機最小系統(tǒng)結合在一起的簡單實例,關于如何制作51單片機最小系統(tǒng)可以參見筆者之前寫的一篇——51單片機最小系統(tǒng)的制作

先放兩張實物圖片:

            
            圖片一(開機后)                                              圖片二(按下按鈕后)

好了,接下來正式進入制作環(huán)節(jié):

第一步:仿真


繪制好原理圖,仿真時單片機最小系統(tǒng)只放一個單片機就可以了,但實際電路中需要加上電源模塊、復位模塊。


                      原理圖

原理圖文件請在附件中找。

原理圖繪制好后,編寫代碼并生成hex文件。代碼內容為:

  1. /*************************功能************************/
  2. /*使用外部中斷INTO改變LED狀態(tài),并且用1602顯示出其狀態(tài)*/
  3. #include<reg51.h>
  4. #include <intrins.h>
  5. #define uint unsigned int
  6. #define uchar unsigned char
  7. uchar code table[]="   HELLO  1602  ";
  8. uchar code table0[]="1602   TEST      ";
  9. uchar code table1[]="RESULT:    "; //空格是寫到LCD了,即空格也是內容
  10. uchar code table2[]="OK!";
  11. uchar code table3[]="liang";
  12. uchar code table4[]="mie";
  13. uchar num;
  14. sbit led=P1^7;
  15. sbit lcden=P2^0; //液晶使能端
  16. sbit lcdrs=P2^2; //液晶數(shù)據命令選擇端選擇寫數(shù)據還是寫命令
  17. void delay(uint z)        // 延時函數(shù)
  18. {
  19.    uint i,j;
  20.    for(i=z;i>0;i--)
  21.    for(j=110;j>0;j--);
  22. }
  23. void write_com(uchar com) //寫入
  24. {
  25.   lcdrs=0; //LCD 選擇輸入命令
  26.   P0=com; //向P0 口輸入命令          39-32端口
  27.   delay(5); //延時
  28.   lcden=1; //打開LCD 使能
  29.   delay(5); //一個高脈沖
  30.   lcden=0; //關閉LCD 使能
  31. }         
  32. void write_data(uchar date)
  33. {
  34.   lcdrs=1; //設置為輸入數(shù)據
  35.   P0=date; //將數(shù)據賦給P0 口
  36.   delay(5); //延時
  37.   lcden=1; //置高
  38.   delay(5); //高脈沖
  39.   lcden=0; //置低完成高脈沖
  40. }
  41. void init()                //LED 初始化
  42. {
  43.   lcden=0;
  44.   write_com(0x38);//設置16x2 顯示5x7 點陣,8 位數(shù)據接口         
  45.   write_com(0x0c); //設置開始顯示不顯示光標           (指令4)
  46.   write_com(0x06); //寫一個字符后地址指針加1 (指令3)
  47.   write_com(0x01); //顯示清零數(shù)據指針清零  (指令1)
  48. }
  49.         
  50. void display(unsigned char *p)//按指針  地址寫入數(shù)據
  51. {
  52.    while(*p!='\0')
  53.      {
  54.        write_data(*p);                 //寫數(shù)據
  55.        p++;
  56.        delay(1);
  57.      }
  58. }
  59.                                                          
  60. void main()
  61. {         
  62.    TCON=0x01;          //設置中斷為INTO
  63.          IE=0x81;
  64.    led=0;
  65.          init();     
  66.     write_com(0x80); //將數(shù)據指針第一行第一個字處,
  67.           display(table);        //調用函數(shù)的方式寫入數(shù)據
  68.           delay(800);
  69.           write_com(0x80); //將數(shù)據指針第一行第一個字處,
  70.           display(table0);        //調用函數(shù)的方式寫入數(shù)據
  71.     write_com(0x80+0x40); //定義指針位置          將數(shù)據指針第二行第一個字處
  72.     for(num=0;num<7;num++)
  73.        {
  74.           write_data(table1[num]);
  75.           delay(5);
  76.        }
  77.           write_com(0x80+0x4c);         //按1602的地址單個寫入數(shù)據
  78.           write_data(table2[0]);
  79.                 write_com(0x80+0x4d);          //按1602的地址單個寫入數(shù)據
  80.           write_data(table2[1]);
  81.                 write_com(0x80+0x4e);                 //按1602的地址單個寫入數(shù)據
  82.           write_data(table2[2]);               
  83.           while(1);                        
  84. }        
  85. void key_can() interrupt 0
  86. {
  87.    delay(20);        // 消除按鍵抖動
  88.    if(P3^3==0)
  89.      {
  90.            if(P3^3==0)
  91.            {
  92.              led=!led;
  93.                  
  94.            }
  95.            if(led==1)
  96.              {
  97.                write_com(0x80+0x4b);
  98.                      display(table3);
  99.                    }               
  100.           else if(led==0)
  101.             {
  102.               write_com(0x80+0x4b);            //按1602的地址單個寫入數(shù)據
  103.                     display(table4);
  104.               write_com(0x80+0x4f);
  105.                     write_data(table1[8]);                 //按1602的地址單個寫入數(shù)據
  106.                           write_com(0x80+0x4e);
  107.                     write_data(table1[8]);        
  108.                   }
  109.      }
  110.   }
復制代碼

原理圖和代碼都有了,仿真的準備工作就完了,現(xiàn)在正式進入仿真。

將代碼加載進單片機中,若不會加載者可以參見筆者之前寫的一篇——51單片機最小系統(tǒng)的制作

點擊仿真,查看結果。以下是一些結果圖片:

            
          點擊仿真時首先顯示界面                                             點擊仿真時第二顯示界面并將一直停在此處

(由于開始時,主要有變化的就是LCD1602,故此處截圖只截了一部分。)

           
        按下按鈕后-燈亮,LCD1602顯示有變化                      再次按下按鈕后-燈亮,LCD1602顯示有變化

第二步:準備元器件




第三步:繪制焊接圖

此處默認手頭已經有單片機最小系統(tǒng)了,沒有的話可以參見筆者之前寫的一篇——51單片機最小系統(tǒng)的制作

為了便于重復使用LCD1602,采用了排插;為了便于后續(xù)繼續(xù)拓展LCD1602的實例,將此處的做成一個模塊。

元器件布局圖如下:




走線圖(部分走線未畫,具體請看圖片中的文字)如下:






第四步:焊接
繪制好焊接圖后,照著圖一部分一部分焊接,就可以了。下圖是我采用錫接走線法焊接好后的反面圖:



切記不要焊短路了!!切記不要焊短路了!!切記不要焊短路了!!

第五步:實物測試

先將hex程序下載到單片機中,然后照著DSN原理圖的連線用杜邦線將51單片機最小系統(tǒng)與LCD1062模塊連接,接通電源,適當調節(jié)滑動變阻器來調整LCD1062的對比度,從而使字符顯示清晰。LCD1062D的15腳接電源正極,16腳接電源負極,15和16位背光電源。

結語:遇到問題多查資料,多動手,做完之后寫篇文章來溫故一下,捋一下思路的同時也回饋大眾~

部分參考資料來源:1.http://www.zg4o1577.cn/bbs/dpj-31284-1.html
2.http://www.zg4o1577.cn/bbs/dpj-57960-1.html
3.http://wenku.baidu.com/link?url= ... kXtUSQU-TBxEU46BWte


下載:
LCD1602 51單片機最小系統(tǒng)應用仿真及制作.zip (709.56 KB, 下載次數(shù): 58)

評分

參與人數(shù) 2黑幣 +110 收起 理由
zhaok2013 + 10 很給力!
admin + 100 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:285390 發(fā)表于 2018-2-25 14:31 | 只看該作者
我想問一下那個仿真文件可以用miltisim13.0打開嗎
回復

使用道具 舉報

板凳
ID:285390 發(fā)表于 2018-2-25 14:33 | 只看該作者
哇塞,這個文件特別給力
回復

使用道具 舉報

地板
ID:167522 發(fā)表于 2018-5-7 18:01 | 只看該作者
好帖子,學習到了
回復

使用道具 舉報

5#
ID:166089 發(fā)表于 2018-7-2 12:54 | 只看該作者
伊潔奧康 發(fā)表于 2018-2-25 14:31
我想問一下那個仿真文件可以用miltisim13.0打開嗎

我是用Proteus仿真的,你可以試試
回復

使用道具 舉報

6#
ID:685675 發(fā)表于 2020-3-8 16:41 | 只看該作者
你好,請問一下,我的89C52單片機引腳不夠用了,想再加個LCD模塊,自制這么一個洞洞板,連接單片機的哪里呢
回復

使用道具 舉報

7#
ID:695749 發(fā)表于 2020-3-8 22:54 | 只看該作者
正好在學習1602,可以借鑒做個小系統(tǒng)。謝謝分享!
回復

使用道具 舉報

8#
ID:166089 發(fā)表于 2020-3-9 09:16 | 只看該作者
tcsyz0071 發(fā)表于 2020-3-8 16:41
你好,請問一下,我的89C52單片機引腳不夠用了,想再加個LCD模塊,自制這么一個洞洞板,連接單片機的哪里呢

這個我不清楚,你可以自行百度一下。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 岛国毛片 | 91久久精品一区二区二区 | 免费成人在线网站 | 婷婷丁香在线视频 | 国产激情小视频 | 亚洲人免费视频 | 日韩在线一区视频 | 亚洲日本一区二区三区四区 | caoporn视频| 欧美精品一区二区三区四区 在线 | 日韩欧美视频 | 欧美二三区 | 欧美日韩专区 | 国产一区二区在线视频 | 91精品一区| 欧美激情一区二区 | 国产精品欧美一区二区三区不卡 | 99re国产视频 | 亚洲成av人片在线观看 | www.亚洲一区| 久久久www成人免费无遮挡大片 | 免费h在线 | 欧美成人猛片aaaaaaa | 国产人成在线观看 | 天天干天天爽 | 久久久久久久一区 | 亚洲视频中文字幕 | 免费看片在线播放 | 中文字幕一区二区三区在线观看 | 二区成人 | 精品欧美一区二区三区久久久小说 | 国产精品乱码一区二区三区 | 91亚洲国产精品 | 在线91 | 神马福利| 久久国产精品一区二区三区 | 久久性色| 日韩和的一区二区 | 亚洲免费视频在线观看 | 欧美一级艳情片免费观看 | 在线视频国产一区 |