pic單片機兩個IO口四線驅動LCD1602

2020-12-17 電子產品世界
經過多天調式,優化程序。只用兩個IO埠驅動74LS164擴展成並口驅動LCD1602(四線模式),這是個完整簡單的例子,可實現字符串左移200次,右移200次,不停的循環。現上傳與大家共享成果!//引入頭文件*********************************************************

#include
#include
#include "delay.h"
#include "delay.c"

本文引用地址:http://www.eepw.com.cn/article/201611/323785.htm

//熔絲配置***********************************************************
__CONFIG(PROTECT & CPD & BOREN & MCLRDIS & PWRTEN & WDTDIS & INTIO);

//埠定義***********************************************************
#define Port GPIO //埠址址
#define Tris TRISIO //方向設置

//腳位定義***********************************************************
#define Dat GPIO4 //數據引腳
#define Clk GPIO5 //時鐘引腳

//顯示字符***********************************************************
unsigned char TopChar[] = {"www.pic16.com "}; //
unsigned char BotChar[] = {"ivws "}; //

//*******************************************************************
//函數名稱:PortInit();
//輸入參數:無
//輸出參數:無
//功能描述:埠設置
//建造日期:2008.12.08
//********************************************************************
void PortInit(void)
{
Port = 0x00; //埠設置
Tris = 0x00;
}

//*******************************************************************
//函數名稱:ConInit();
//輸入參數:無
//輸出參數:無
//功能描述:定時器設置
//建造日期:2008.12.08
//*******************************************************************
void ConInit(void)
{
OPTION = 0x00; //允許上拉
CMCON = 0x07; //關比較器
}

//*******************************************************************
//函數名稱: TxLs164(data);
//輸入參數:串行數據
//輸出參數:無
//功能描述:串行發送數據
//建造日期:2008.12.08
//*******************************************************************
void TxLs164(unsigned chardata)
{
unsigned char i;

i = 6; //送出六位

do
{
Dat = 0; //數據清零
Clk = 1; //時鐘置位
Clk = 0; //時鐘清零
}
while (--i); //循環發送

i = 6; //送出六位

do
{
Dat = 0; //先高后低

if (data & 0x20) Dat = 1;

Clk = 1; //時鐘置位
data<<= 1; //數據左移
Clk = 0; //時鐘清零
}
while (--i); //循環發送
}

//*******************************************************************
//函數名稱: WriteData(data, rs);
//輸入參數:待寫數據, 0 = 指令,1 = 數據
//輸出參數:無
//功能描述:數據寫入LCD
//建造日期:2008.12.08
//*******************************************************************
void WriteData(unsigned char data, unsigned char rs)
{
unsigned char temp;

temp =data>> 4; //取高四位
temp |= 1 << 5; //使用置位

if (rs & 0x01) temp |= 1 << 4; //數據選擇

TxLs164(temp); //寫高四位
Dat = 1; //使能下沿
Dat = 0;
DelayUs(50); //延時等待

temp =data& 0x0f; //取低四位
temp |= 1 << 5; //使用置位

if (rs & 0x01) temp |= 1 << 4; //數據選擇

TxLs164(temp); //寫高四位
Dat = 1; //使能下沿
Dat = 0;
DelayUs(50); //延時等待
}

//*******************************************************************
//函數名稱:AddrSite(x, y);
//輸入參數:坐標參數
//輸出參數:無
//功能描述:設置顯示地址
//建造日期:2008.12.08
//*******************************************************************
void AddrSite(unsigned char x, unsigned char y)
{
x &= 0x3f; //截取地址

if (y == 0)
{
WriteData((0x80 | x), 0); //首行地址
}

else
{
WriteData((0xc0 | x), 0); //次行地址
}
}

//*******************************************************************
//函數名稱:PrintChar(*s);
//輸入參數:緩衝區首址
//輸出參數:無
//功能描述:字符串輸出顯示
//建造日期:2008.12.08
//*******************************************************************
void PrintChar(unsigned char *s)
{
while(*s)
{
WriteData(*s, 1); //字符數據
s++; //下個字符
}
}

相關焦點

  • lcd1602中文資料分享:lcd1602接線圖_lcd1602與單片機連接圖
    體積小、重量輕   1602液晶模塊通過顯示屏上的電極控制液晶分子狀態來達到顯示的目的,在重量上比相同顯示面積的傳統顯示屏要輕得多。   d. 功耗低   相對而言,1602液晶顯示屏的功耗主要消耗在其內部的電極和驅動IC上,因而耗電量比其它顯示屏要少得多。
  • PIC單片機驅動LCD1602液晶顯示字符串程序
    /****************************************************************************** 功能:LCD1602
  • 【Proteus】單片機配合矩陣鍵盤LCD1602製作簡易計算器
    使用單片機來製作一個簡易的計算器,實現兩個整數的加減乘除等運算功能。首先,需要LCD1602來顯示計算的公式,以及計算的結果。其次需要一個矩陣鍵盤來輸入數據。這個電路也不是很難畫,我們先把仿真電路畫好,儘量畫漂亮一些:下面來先把LCD1602給點亮。
  • 全方位解析LCD1602特性及單片機顯示應用
    這些字符有:阿拉伯數字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼  從上表可以看出最左邊一列是供用戶自定義字符的,共有16個,實際只有8個字節可以用,字符碼為00000000—00000111這8個地址  LCD1602—顯示應用(單片機學習)  LCD1602是51單片機中很重要的模塊之一,為了方便新手學習1602,筆者把自己學習
  • 51單片機開發之LCD1602顯示屏
    圖4-11-2根據原理圖得知:LCD1602的數據腳接P0口。圖4-11-10示例代碼:#include <reg51.h>sbit lcd_1602_RS=P2^6; sbit lcd_1602_R_W=P2^5; sbit lcd_1602_E=P2^7; #define lcd_1602_data_cmd P0
  • 51單片機---IO口
    MCS-51有4個雙向並行IO口:P0、P1、P2、P3;其中,P0為三態雙向口,其驅動能力比較大,可驅動高達8個TTL電路;P1、P2、P3為準雙向口(作為輸入時,口線需要被拉成高電平,故稱準雙向口),其負載能力比較低,只能驅動4個TTL電路;一、P0口的結構P0口既可以作為普通的IO口,
  • Arduino入門筆記:利用1602、1302實現時鐘和定時器
    mod=viewthread&tid=74)5、蜂鳴器一個6、電阻:1KΩ電阻、10KΩ電阻二、硬體連接方法    DS1602的連接主要採用四位連接法(http://www.cnblogs.com/xiaowuyi/p/3390024.html),埠為12,11,9,8,7,6。
  • 單片機IO口擴展技術
    本文引用地址:http://www.eepw.com.cn/article/201611/319300.htm MCS-51單片機的並行口有P0、P1、P2和P3,由於P0口是地址/數據總線口,P2口是高8位地址線,P3口具有第二功能
  • LCD1602驅動講解,超詳細,單片機新手必看
    光標不閃爍#define DISMODE  0x06  //讀寫字符後地址加1,屏顯不移動#define SETADDR  0x80  //設置數據地址指針初始值#define CLEAR  0x01  //清屏,數據指針清零#define RET  0x02  //回車,數據指針清零#define PORT  P2  //I/O口
  • 單片機IO口結構及上拉電阻
    MCS-51有4組8位I/O口:P0、P1、P2和P3口,P1、P2和P3為準雙向口,P0口則為雙向三態輸入輸出口,下面我們分別介紹這幾個口線。由圖可見,電路中包含一個數據輸出鎖存器(D觸發器)和兩個三態數據輸入緩衝器,另外還有一個數據輸出的驅動(T1和T2)和控制電路。這兩組口線用來作為CPU與外部數據存儲器、外部程序存儲器和I/O擴展口,而不能象P1、P3直接用作輸出口。它們一起可以作為外部地址總線,P0口身兼兩職,既可作為地址總線,也可作為數據總線。
  • 51,AVR,PIC,MSP430,STM32單片機比較
    編程器自己自製ISP下載線就行,好做,成本5元左右。在keil選擇單片機選項框中可以選擇其它比較接近的片子,也可以下載stc的keil驅動程序,不過裡面只有STC89系列的片子。串口編程很方便,只需RS232的電路(無論是對於初學者還是產品開發調試)。
  • PIC單片機之步進電機
    現在我們就趁熱打鐵,再向上跨一步,一起來學習一下步進電機的工作原理及使用方法,這是我們用單片機來控制機械進行運動的開始。步進電機是一種將電脈衝轉化為角位移的執行機構。當步進驅動器接收到一個脈衝信號,它就驅動步進電機就按設定的方向轉動一個固定的角度(步距角)。
  • 單片機準雙向口IO詳解
    單片機的幾種IO口配置本文引用地址:http://www.eepw.com.cn/article/201611/315988.htm在單片機學習
  • 通俗易懂講PIC單片機:從一竅不通到入門進步
    有以下特點  每行只能寫一句話  每句話由四部分組成:  標號: 操作指令 操作數 '程序注釋  下面我結合例子把這四部分解釋一下。  第一部分 my_name006: 叫做標號,它是由字母或數字組成,由冒號結束。標號可有可無,比如第二句就沒有標號。  第二部分movlw 叫做操作指令。它是必須有的,不能省略。
  • 一文解析段碼LCD液晶屏驅動方法
    生活中小電器見到最多的lcd模組就是段碼lcd液晶屏,段碼lcd有普通的數碼管的特徵,又有點陣LCD的特徵,固定的圖形,優點是省成本而有好看,那麼段碼LCD液晶屏是怎麼驅動的呢?段碼LCD液晶屏是如何顯示的呢?跟隨小編一起來了解一下吧。
  • 單片機設計LCD數字鐘(萬年曆)
    單片機設計LCD數字鐘(萬年曆)程序與電路如下:本文引用地址:http://www.eepw.com.cn/sbit add1=P3^6; //加1鍵sbit sub1=P3^7; //減1鍵bit k=0,f=0;//k為0表示運行狀態,k為1表示設置狀態;f為0表示第一行顯示,f為1表示第二行顯示char sec,min,hour,week,day,month,year,n,m;unsigned char count,key;unsigned char lcdd
  • 用AT89C52單片機作為控制器,設計簡單實用的步進電機控制系統
    AT89C52單片機具有8KB內存的可編程可擦除只讀存儲器,便於反覆的進行程序的編寫。電源管理電路提供的3.5V和5V電壓分別給單片機、晶振、LED和控制電路供電。12MHZ的晶振給單片機提供時鐘信號。單片機的串口用於和PC上位機的通信以及燒錄軟體程序。P1口控制驅動電路開關管的通斷。P0和P2口控制LCD1602和LED組成的顯示模塊。P3口檢測鍵盤信號及外部中斷信號。
  • 第18節:把74HC595驅動程序翻譯成類似單片機IO口直接驅動的方
    為了更加方便操作74HC595輸出的每個IO狀態,這節講如何把74HC595驅動程序翻譯成類似單片機IO口直接驅動的方式。(1)硬體平臺:基於朱兆祺51單片機學習板。(2)實現功能:兩片聯級的74HC595驅動的16個LED燈交叉閃爍。比如,先是第1,3,5,7,9,11,13,15八個燈亮,其它的燈都滅。然後再反過來,原來亮的就滅,原來滅的就亮。交替閃爍。
  • 單片機小白學步(22) IO口:蜂鳴器的使用/三極體的工作原理
    ======================================這一篇繼續上一篇的內容,我們來做實驗四:按鍵控制有源蜂鳴器,按下按鍵蜂鳴器響,釋放按鍵不響。本文引用地址:http://www.eepw.com.cn/article/201611/318511.htm蜂鳴器實驗四之前簡單介紹下蜂鳴器。
  • 單片機教程:PIC單片機C語言程序設計(五)
    接前文:單片機教程:PIC單片機C語言程序設計(四)   九、C語言的運算符   C語言提供了30多個運算符,範圍很大,應用廣。其中,除法運算符又分兩種情況,一是整除, 口兩個整數相除,所得商舍尾數,僅取整數部分,如5/10等於0;二是實除,即兩個實數相除,所得商也是實數,如5.0/10等於0.5。   表4 算術和自增自減運算符