日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STC12C5A60S2在LCD1602基本显示程序

發布時間:2023/12/10 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STC12C5A60S2在LCD1602基本显示程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#include <STC12C5A60S2.H>/*================================================= *自定義數據類型 =================================================*/ typedef unsigned char uchar; typedef unsigned int uint;#define LCD1602_DB P0 //LCD1602數據總線sbit LCD1602_RS = P3^5; //RS端 sbit LCD1602_RW = P3^6; //RW端 sbit LCD1602_EN = P3^4; //EN端/*================================================= *函數名稱:Read_Busy *函數功能:判斷1602液晶忙,并等待 =================================================*/ void Read_Busy() {uchar busy;LCD1602_DB = 0xff;//復位數據總線LCD1602_RS = 0; //拉低RSLCD1602_RW = 1; //拉高RW讀do{LCD1602_EN = 1;//使能ENbusy = LCD1602_DB;//讀回數據LCD1602_EN = 0; //拉低使能以便于下一次產生上升沿}while(busy & 0x80); //判斷狀態字BIT7位是否為1,為1則表示忙,程序等待 } /*================================================= *函數名稱:LCD1602_Write_Cmd *函數功能:寫LCD1602命令 *調用:Read_Busy(); *輸入:cmd:要寫的命令 =================================================*/ void LCD1602_Write_Cmd(uchar cmd) {Read_Busy(); //判斷忙,忙則等待LCD1602_RS = 0;LCD1602_RW = 0; //拉低RS、RW操作時序情況1602課件下中文使用說明基本操作時序章節LCD1602_DB = cmd;//寫入命令LCD1602_EN = 1; //拉高使能端 數據被傳輸到LCD1602內LCD1602_EN = 0; //拉低使能以便于下一次產生上升沿 } /*================================================= *函數名稱:LCD1602_Write_Dat *函數功能:寫LCD1602數據 *調用:Read_Busy(); *輸入:dat:需要寫入的數據 =================================================*/ void LCD1602_Write_Dat(uchar dat) {Read_Busy();LCD1602_RS = 1;LCD1602_RW = 0;LCD1602_DB = dat;LCD1602_EN = 1;LCD1602_EN = 0; } /*================================================= *函數名稱:LCD1602_Dis_OneChar *函數功能:在指定位置顯示一個字符 *調用:LCD1602_Write_Cmd(); LCD1602_Write_Dat(); *輸入:x:要顯示的橫坐標取值0-40,y:要顯示的行坐標取值0-1(0為第一行,1為第二行)dat:需要顯示的數據以ASCLL形式顯示 =================================================*/ void LCD1602_Dis_OneChar(uchar x, uchar y,uchar dat) {if(y) x |= 0x40;x |= 0x80;LCD1602_Write_Cmd(x);LCD1602_Write_Dat(dat); } /*================================================= *函數名稱:LCD1602_Dis_Str *函數功能:在指定位置顯示字符串 *調用:LCD1602_Write_Cmd(); LCD1602_Write_Dat(); *輸入:x:要顯示的橫坐標取值0-40,y:要顯示的行坐標取值0-1(0為第一行,1為第二行)*str:需要顯示的字符串 =================================================*/ void LCD1602_Dis_Str(uchar x, uchar y, uchar *str) {if(y) x |= 0x40;x |= 0x80;LCD1602_Write_Cmd(x);while(*str != '\0'){LCD1602_Write_Dat(*str++);} } /*================================================= *函數名稱:Init_LCD1602 *函數功能:1602初始化 *調用: LCD1602_Write_Cmd(); =================================================*/ void Init_LCD1602() {LCD1602_Write_Cmd(0x38); // 設置16*2顯示,5*7點陣,8位數據接口LCD1602_Write_Cmd(0x0c); //開顯示LCD1602_Write_Cmd(0x06); //讀寫一字節后地址指針加1LCD1602_Write_Cmd(0x01); //清除顯示 }void main() {uchar TestStr[] = {"Hello World!"};uchar str[] = {"LCD1602 display"};Init_LCD1602();//1602初始化LCD1602_Dis_Str(0, 0, &TestStr[0]); //顯示字符串LCD1602_Dis_Str(0, 1, &str[0]); //顯示字符串LCD1602_Dis_OneChar(15, 1, 0xff); //顯示一個黑方格 請查表while(1); }

總結

以上是生活随笔為你收集整理的STC12C5A60S2在LCD1602基本显示程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。