pos機51錯誤碼,簡單復制粘貼代碼讓LCD1602顯示字符

 新聞資訊2  |   2023-05-27 09:42  |  投稿人:pos機之家

網(wǎng)上有很多關于pos機51錯誤碼,簡單復制粘貼代碼讓LCD1602顯示字符的知識,也有很多人為大家解答關于pos機51錯誤碼的問題,今天pos機之家(m.afbey.com)為大家整理了關于這方面的知識,讓我們一起來看下吧!

本文目錄一覽:

1、pos機51錯誤碼

pos機51錯誤碼

總結下自己學習遇到的情況:1.每天學習點少量的新知識覺得心情愉悅 2.新知識的量>自己接受的承受范圍,就覺得很糟糕。不知不覺地就有抵觸學習的意識,越要強迫自己學,放棄得越快,放棄了,過一段時間還想學,但隨著時間流逝前面知識忘得差不多了,然后又重新學,周而復始浪費了大量時間。人最大的敵人還是自己啊,克服壞毛病,永遠不要放棄,只要堅持你有能力做任何你能想象的事情,重拾自我從今天開始做起....

液晶Lcd1602顯示字符

做到只要能顯示字符就行,第一次看驅動文件和原理看的頭蒙,先會用就行。

LCD1602是一個有16引腳的字符液晶屏。8個數(shù)據(jù)引腳(D0-D7)和3個控制引腳(RS,RW,EN)。其余5個引腳用于LCD的電源和背光。

屏幕可以顯示2行,每行可以顯示16個字符。每個字符由5x8(列x行)像素矩陣組成。

自己遇到的一些問題

1._nop()_是intrins頭文件的里單周期空語句,可是實現(xiàn)極短延時。nop表示空循環(huán)一個機器指令的時間,一個nop延時多少根據(jù)晶振所定,12M中表示1us

1S=1000ms(毫秒)=1000 000us(微妙)。1us(毫秒)=1000ns(納秒)

LCD1602的速度是納秒級別的,而51單片機毫秒級別的,所以基本不需要讀取 忙標志,只要微延時就行了,proteus仿真軟件不支持判忙函數(shù)

void lcd1602CheckBusy()//判忙函數(shù){ DPORT = 0xff;RS=0;RW=1;E=1;while(DPORT&0x80);E=0;}

2.稍微了解下LCD1602常用的一些命令,再看LCD1602初始化代碼不會這么懵了

常用的LCD1602命令

3.Proteus中學會使用終端符號

兩個引腳不用連線也能導通方法:兩端要加上終端符號,然后再終端上加上網(wǎng)絡標號,要連在一起的兩個終端必須有相同的網(wǎng)絡標號

模塊化編程思想

先學會抄作業(yè),了解如何模塊化編程

固定格式條件預編譯

把LCD1602驅動代碼導入到工程中仿真軟件效果完整的驅動代碼

delay.h

#ifndef _DELAY_H_#define _DELAY_H_void DelayUs2x(unsigned char t);void delayNms(unsigned char t);#endif

delay.c

void DelayUs2x(unsigned char t){ while(--t);}/*------------------------------------------------ mS延時函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值 unsigned char 是定義無符號字符變量,其值的范圍是 0~255 這里使用晶振12M,精確延時請使用匯編------------------------------------------------*/void delayNms(unsigned char t){ while(t--) { //大致延時1mS DelayUs2x(245); DelayUs2x(245); }}

lcd1602.h

#ifndef _LCD1602_H_#define _LCD1602_H_#include<reg51.h>#include<intrins.h>#include "delay.h" //請根據(jù)晶振自行編寫延時函數(shù)#define DPORT P0 // D0-D7根據(jù)實際硬件連接修改sbit RS = P1^7; // 根據(jù)實際硬件連接修改sbit RW = P1^6; // 根據(jù)實際硬件連接修改sbit E = P1^5; // 根據(jù)實際硬件連接修改void lcd1602WriteCmd(unsigned char cmd); //寫命令函數(shù)void lcd1602WriteByte(unsigned char dat);//寫數(shù)據(jù)函數(shù)void lcd1602Init(); // 初始化函數(shù)void lcd1602WritePos(unsigned char xPos,unsigned char yPos);void lcd1602WriteChar(unsigned char xPos,unsigned char yPos,unsigned char Dat); // 寫1個字符void lcd1602WriteString(unsigned char xPos,unsigned char yPos,unsigned char *s); // 寫字符串#endif

lcd1602.c

#include "lcd1602.h"void lcd1602WriteByte(unsigned char dat)//寫數(shù)據(jù)函數(shù){delayNms(5);//判忙函數(shù)不支持proteus,延時5msRS=1;//將RS引腳設為高電平,RS = 1(寫數(shù)據(jù)模式)RW=0;//將RW引腳設為低電平,RW = 0(寫操作模式)DPORT=dat;// 將待寫數(shù)據(jù)送到數(shù)據(jù)端口(D0-D7)E=1; //使能脈沖,LCD鎖存D0至D7處的數(shù)據(jù)并執(zhí)行命令_nop_();//短暫延時1個機器周期1us左右_nop_();E=0; //關閉使能釋放總線}void lcd1602WriteCmd(unsigned char cmd) //寫命令函數(shù){delayNms(5);//判忙函數(shù)不支持proteus,延時5msRS=0;//將RS引腳設為低電平,RS = 0(寫命令模式)RW=0;//將RW引腳設為低電平,RW = 0(寫操作模式)DPORT=cmd;// 將待寫數(shù)據(jù)送到數(shù)據(jù)端口(D0-D7)E=1; //使能脈沖,LCD鎖存D0至D7處的數(shù)據(jù)并執(zhí)行命令_nop_();// 短暫延時1個機器周期1us左右 _nop_();E=0; //關閉使能釋放總線} void lcd1602Init() // LCD1602 初始化函數(shù) {delayNms(20); /*LCD1602的上電初始化時間大約15ms */lcd1602WriteCmd(0x38); /*設置2行,5x8矩陣,8位模式*/ lcd1602WriteCmd(0x0c); //顯示打開,光標關閉lcd1602WriteCmd(0x06); //數(shù)據(jù)從左到右以遞增順序寫入lcd1602WriteCmd(0x01);//清屏耗時比較長需要2ms左右,別的命令以nm為單位delayNms(5); }// 內部函數(shù)用于設置顯示字符起始坐標void lcd1602WritePos(unsigned char xPos,unsigned char yPos) {unsigned char tmp;xPos&=0x0f; // x位置范圍是0~15yPos&=0x01; // y位置范圍是0~1if(yPos==0) // 顯示第一行tmp=xPos; // 第一行字符地址從 0x00 開始elsetmp=xPos+0x40; // 第二行字符地址從 0x40 開始lcd1602WriteCmd(tmp|0x80);//設置 RAM 寫入的地址}//在指定的行與列顯示指定的字符,xpos:行,ypos:列,c:待顯示字符void lcd1602WriteChar(unsigned char xPos,unsigned char yPos,unsigned char Dat){lcd1602WritePos(xPos,yPos);lcd1602WriteByte(Dat);}// 在液晶上顯示字符串,xpos:行坐標,ypos:列坐標,str-字符串指針void lcd1602WriteString(unsigned char xPos,unsigned char yPos,unsigned char *s){unsigned char i=0;lcd1602WritePos(xPos,yPos); // 起始坐標while(s[i]){lcd1602WriteByte(s[i]);i++;if (i>=16) break; // 超出16個字符外的數(shù)據(jù)丟棄}}

main.c

#include<reg51.h>#include"lcd1602.h"void main(){lcd1602Init();lcd1602WriteChar(7,0,'H');lcd1602WriteChar(8,0,'i');lcd1602WriteString(3,1,"2021-03-07");while(1);}

以上就是關于pos機51錯誤碼,簡單復制粘貼代碼讓LCD1602顯示字符的知識,后面我們會繼續(xù)為大家整理關于pos機51錯誤碼的知識,希望能夠幫助到大家!

轉發(fā)請帶上網(wǎng)址:http://m.afbey.com/newsone/58402.html

你可能會喜歡:

版權聲明:本文內容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權/違法違規(guī)的內容, 請發(fā)送郵件至 babsan@163.com 舉報,一經查實,本站將立刻刪除。