一、作業方式:間接作業方式。
二、實作功能:顯示“Hope the epidemic will pass soon”。
三、仿真電路圖:

四、程式原始碼:
#include<reg52.h>
#define LCD1602_DB P0
sbit LCD1602_RS=P1^0;
sbit LCD1602_RW=P1^1;
sbit LCD1602_E=P1^5;
void InitLcd1602();
void LcdWriteCmd(unsigned char cmd);
void LcdWaitReady();
void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str);
void LcdWriteDat(unsigned char dat);
void LcdSetCursor(unsigned char x,unsigned char y);
void main()
{
unsigned char str[]="Hope the eqidemic";//顯示的字串
InitLcd1602();//液晶初始化
LcdShowStr(0,0,str);//第一行顯示
LcdShowStr(1,1,"will pass soon");//第二行顯示
while(1);
}
void InitLcd1602()//初始化函式
{
LcdWriteCmd(0x38);//顯示模式設定
LcdWriteCmd(0x0c);//開顯示,不顯示游標
LcdWriteCmd(0x06);//指標加一,整屏不移動
LcdWriteCmd(0x01);//指標清零,顯示清零
}
void LcdWriteCmd(unsigned char cmd)//寫入函式
{
LcdWaitReady();//忙位檢測
//寫指令
LCD1602_RS=0;
LCD1602_RW=0;
LCD1602_DB=cmd;
LCD1602_E=1;
LCD1602_E=0;
}
void LcdWaitReady()
{
unsigned char sta;
//讀狀態
LCD1602_DB=0XFF;
LCD1602_RS=0;
LCD1602_RW=1;
do{
LCD1602_E=1;
sta=LCD1602_DB;
LCD1602_E=0;//拉低使能引腳
}while(sta&0x80);//判斷sta最高位是否為0
}
void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str)//顯示函式
{
LcdSetCursor(x,y);
while(*str!='\0')
{
LcdWriteDat(*str++);
}
}
void LcdWriteDat(unsigned char dat)
{
LcdWaitReady();
//寫資料
LCD1602_RS=1;
LCD1602_RW=0;
LCD1602_DB=dat;
LCD1602_E=1;
LCD1602_E=0;
}
void LcdSetCursor(unsigned char x,unsigned char y)//字符顯示函式
{
unsigned char addr;
if(y==0)
addr=0x00+x;
else
addr=0x40+x;
LcdWriteCmd(addr|0x80);
}
五、遇到的問題:
1、Proteus 8中網路標號怎么添加?(兩個元器件之間不畫線,可以通過引腳的網路標號來連接)
(1) 首先,將一個引腳引出較短的引線,再在下一個引腳處雙擊,則該引腳上會自影片出相同的引線。

(2)點擊工具列左側的‘LBL’選項,然后再按‘a’鍵,會彈出對話框。(若按不出來,試換成大寫)
‘LBL’的選項位置:
彈出的對話框:

(3)將String中的內容改為:net=××#(例:net=P0#),其中‘#’表示變化的內容,count代表初始值,increment代表增量。

(4)將滑鼠移到要添加標簽的 引腳處,等滑鼠變成小手,且旁邊出現方框時單擊左鍵,標號添加成功。
單擊左鍵時圖片:

添加后的圖片:

2、復制keil4中的程式到word時,注釋出現亂碼?
解決方法:
(1)在選單欄中選擇‘Edit'選項。

(2)在'Edit'選項下拉選單中點擊'Configuration'選項。

(3)在'Configuration'選項對話框中有ENCODING復選框,在里面設定Chinese GB231,點擊OK。
uj5u.com熱心網友回復:
寫的不錯!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/44045.html
標籤:單片機/工控
上一篇:stm32中斷
