『壹』 最近在用迪文的dgus屏,mega16單片機!單片機發送的串口數據屏可以接收到!屏發出來的數據單片機接收不...
1 建議你用示波器看下 平發出來的波形 觀察下波形。確定下波特率有沒對,
2 檢查程序,看配置是否合理有效,
3 檢查下單片機的電路看是否存在干擾,有沒接觸不良
『貳』 如何用51單片機實現溫濕度顯示在大彩串口屏上
先查看串口屏的通訊協議,然後在單片機內部根據通訊協議編寫數據幀.把數據發送給串口顯示屏.
『叄』 迪文 H600串口屏和51單片機怎麼連接!!
串口屏 沒有說明書?
介面 是標准RS232 電平 還是 TTL 電平?
51單片機 的 介面 呢?
相同 電平的 介面 才能 相連
不同電平的 介面 才 需要 max232 轉換 再 相連
請看 武漢鴻偉光電
E232TTL RS232/TTL電平無源轉換器
『肆』 智能串口HMI液晶屏怎麼連接單片機 (就只有4條引出線)。求解
紅色VCC接5V電源(如果是3.3V的屏幕接3.3V),黑色GND接電源負極(地)
剩下RX和TX是收發數據的串口線,如果單向發數據可以只接一條發數據,單片機TX接到屏幕RX上。定時更新數據沒問題。
通信用的是TTL的USART串口,電平為3.3V或者5V。不能用9針串口,那是15V。所以單片機的TTL串口能夠直連。電腦要用USB轉TTL串口線接。
『伍』 單片機怎樣通過串口發送數據給上位機,上位機是一個顯控觸摸屏
你必須按照這個顯控觸屏的通訊協議發送數據,那麼顯控觸屏就可以正常接收數據了。
『陸』 想用單片機串口模式點亮LCD屏,屏的介面有三個,分別是RX、VSS、VDD,請問我該怎樣接線,麻煩說的詳細點
屏只有三根線嗎?
只有RX線,這樣沒法接哦。
一般至少5-6根線呢。
『柒』 單片機與DWIN屏串口通信時,單片機能與電腦通信,屏能與電腦通信,而單片機與屏不能通信。不能通信是為啥
我也遇到這樣的問題了,最後解決了 ;
我猜你的程序是賦值官方的常式程序吧,波特率、電路都是沒有問題的,就是屏無法與單片機通訊,因為單片機與屏通訊的通訊的串口協議設置的不一致,DWIN屏默認8個數據為 1個停止位,無校驗位,但是常式中的是9個數據,帶一奇偶校驗位數據,改下程序部分就可以了
『捌』 STM32單片機和迪文串口屏為何通信不了
要注意位元組與位元組之間的間隔(最好要間隔1 - 2個位的時間),還要注意回車符,在發送字元串的時候用指針就不行,用數組就行,用指針的話,建議改成數組格式的試試。
單片機是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。
『玖』 單片機用串口液晶顯示屏(漢顯)
一、OCM12864液晶顯示模塊概述
1. OCM12864液晶顯示模塊是128×64點陣型液晶顯示模塊,可顯示各種字元及圖形,可與CPU直接介面,具有8位標准數據匯流排、6條控制線及電源線。採用KS0107控制IC。
2. 外觀尺寸:113×65×11mm(ocm12864-1), 93×70×10mm(ocm12864-2)
78×70×10mm(ocm12864-3),
3. 視域尺寸:73.4×38.8mm(ocm12864-1) 70.7×38mm(ocm12864-2),
64×44mm(ocm12864-3)
4. 重量:大約 g
l 補充說明:外觀尺寸可根據用戶的要求進行適度調整。
二、最大工作范圍
1、邏輯工作電壓(Vcc):4.5~5.5V
2、電源地(GND):0V
3、LCD驅動電壓(Vee):0~-10V
4、輸入電壓:Vee~Vdd
5、工作溫度(Ta):0~55℃(常溫) / -20~70℃(寬溫)
6、保存溫度(Tstg):-10~65℃
三、電氣特性(測試條件 Ta=25,Vdd=5.0+/-0.25V)
1、輸入高電平(Vih):3.5Vmin
2、輸入低電平(Vil):0.55Vmax
3、輸出高電平(Voh):3.75Vmin
4、輸出低電平(Vol):1.0Vmax
5、工作電流:2.0mAmax
四、介面說明
1. 12864-1,12864-2介面說明表
管腳號 管腳 電平 說明
1 VSS 0V 邏輯電源地。
2 VDD 5.0V 邏輯電源正。
3 V0 LCD驅動電壓,應用時在VEE與V0之間加一2K可調電阻。
4 D/I H/L 數據\指令選擇:高電平:數據D0-D7將送入顯示RAM;
低電平:數據D0-D7將送入指令寄存器執行。
5 R/W H/L 讀\寫選擇: 高電平:讀數據;低電平:寫數據。
6 E H.H/L 讀寫使能,高電平有效,下降沿鎖定數據。
7 DB0 H/L 數據輸入輸出引腳。
8 DB1 H/L 數據輸入輸出引腳。
9 DB2 H/L 數據輸入輸出引腳。
10 DB3 H/L 數據輸入輸出引腳。
11 DB4 H/L 數據輸入輸出引腳。
12 DB5 H/L 數據輸入輸出引腳。
13 DB6 H/L 數據輸入輸出引腳。
14 DB7 H/L 數據輸入輸出引腳。
15 CS1 H/L 片選擇信號,低電平時選擇前64列。
16 CS2 H 片選擇信號,低電平時選擇後64列。
17 RET L 復位信號,低電平有效。
18 VEE -10V LCD驅動電源。
19 BL AC 背光電源,LED+。
20 BL AC 背光電源,LED-。
2. 12864-3A介面說明表
管腳號 管腳 電平 說明
1 CSA H/L 片選擇信號,低電平時選擇前64列。
2 CSB H 片選擇信號,低電平時選擇後64列。
3 GND 0V 邏輯電源地。
4 VCC 5V 邏輯電源。
5 VEE -10V LCD驅動電源。
6 D/I H/L 數據\指令選擇,高電平:數據D0-D7將送入顯示RAM;
低電平:數據D0-D7將送入指令寄存器執行。
7 R/W H/L 讀\寫選擇,高電平:讀數據;低電平:寫數據。
8 E H.H/L 讀寫使能,高電平有效,下降沿鎖定數據。
9 DB0 H/L 數據輸入輸出引腳。
10 DB1 H/L 數據輸入輸出引腳。
11 DB2 H/L 數據輸入輸出引腳。
12 DB3 H/L 數據輸入輸出引腳。
13 DB4 H/L 數據輸入輸出引腳。
14 DB5 H/L 數據輸入輸出引腳。
15 DB6 H/L 數據輸入輸出引腳。
16 DB7 H/L 數據輸入輸出引腳。
3. 12864-3B介面說明表
管腳號 管腳 電平 說明
1 CSA H/L 片選擇信號,低電平時選擇前64列。
2 CSB H 片選擇信號,低電平時選擇後64列。
3 GND 0V 邏輯電源地。
4 VCC 5V 邏輯電源。
5 V0 -10V LCD驅動電源。
6 D/I H/L 數據\指令選擇,高電平:數據D0-D7將送入顯示RAM;
低電平:數據D0-D7將送入指令寄存器執行。
7 R/W H/L 讀\寫選擇,高電平:讀數據;低電平:寫數據。
8 E H.H/L 讀寫使能,高電平有效,下降沿鎖定數據。
9 DB0 H/L 數據輸入輸出引腳。
10 DB1 H/L 數據輸入輸出引腳。
11 DB2 H/L 數據輸入輸出引腳。
12 DB3 H/L 數據輸入輸出引腳。
13 DB4 H/L 數據輸入輸出引腳。
14 DB5 H/L 數據輸入輸出引腳。
15 DB6 H/L 數據輸入輸出引腳。
16 DB7 H/L 數據輸入輸出引腳。
17 RET L 復位信號,低電平有效。
18 VEE -10V LCD驅動電源。
19 BL AC 背光電源,LED+。
20 BL AC 背光電源,LED-。
五、指令描述
1、顯示開/關設置
CODE: R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
L L L L H H H H H H/L
功能:設置屏幕顯示開/關。
DB0=H,開顯示;DB0=L,關顯示。不影響顯示RAM(DD RAM)中的內容。
2、設置顯示起始行
CODE: R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
L L H H 行地址(0~63)
功能:執行該命令後,所設置的行將顯示在屏幕的第一行。顯示起始行是由Z地址計數器控制的,該命令自動將A0-A5位地址送入Z地址計數器,起始地址可以是0-63范圍內任意一行。Z地址計數器具有循環計數功能,用於顯示行掃描同步,當掃描完一行後自動加一。
3、設置頁地址
CODE: R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
L L H L H H H 頁地址(0~7)
功能:執行本指令後,下面的讀寫操作將在指定頁內,直到重新設置。頁地址就是DD RAM 的行地址,頁地址存儲在X地址計數器中,A2-A0可表示8頁,讀寫數據對頁地址沒有影響,除本指令可改變頁地址外,復位信號(RST)可把頁地址計數器內容清零。
DD RAM地址映像表
Y 地址
0 1 2 ……………………… 61 62 63
DB0
∫ PAGE0
DB7 X=0
DB0
∫ PAGE1
DB7 X=1
∷
∷
∷
∷
DB0
∫ PAGE6
DB7 X=7
DB0
∫ PAGE7
DB7 X=8
4、設置列地址
CODE: R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
L L L H 列地址(0~63)
功能: DD RAM 的列地址存儲在Y地址計數器中,讀寫數據對列地址有影響,在對DD RAM進行讀寫操作後,Y地址自動加一。
5、狀態檢測
CODE: R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
H L BF L ON/OFF RST L L L L
功能:讀忙信號標志位(BF)、復位標志位(RST)以及顯示狀態位(ON/OFF)。
BF=H:內部正在執行操作; BF=L:空閑狀態。
RST=H:正處於復位初始化狀態; RST=L:正常狀態。
ON/OFF=H:表示顯示關閉; ON/OFF=L:表示顯示開。
6、寫顯示數據
CODE: R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
L H D7 D6 D5 D4 D3 D2 D1 D0
功能:寫數據到DD RAM,DD RAM是存儲圖形顯示數據的,寫指令執行後Y地址計數器自動加1。D7-D0位數據為1表示顯示,數據為0表示不顯示。寫數據到DD RAM前,要先執行「設置頁地址」及「設置列地址」命令。
7、讀顯示數據
CODE: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
H H D7 D6 D5 D4 D3 D2 D1 D0
功能:從DD RAM讀數據,讀指令執行後Y地址計數器自動加1。從DD RAM讀數據前要先執行「設置頁地址」 及「設置列地址」命令。
六、介面時序
1.寫操作時序
時序1
4. 讀操作時序
************************************************************
串列連接操作程序
新勢力單片機網站:[url]www.xinshili.net[/url]
對外函數列表:
void LCD_Init( void ); //初始化
void LCD_PutStr(unsigned char row,unsigned char col,unsigned char *puts); //寫入文本
void LCD_PutBMP(unsigned char *puts); //寫入圖片
void LCD_ClearTXT( void ); //清除文本
void LCD_ClearBMP( void ); //清除圖片
***********************************************************/
#define LCDNOP() NOP();NOP()
//以下配置IO管腳
//=========================================================
#define LCDSIDPORT PORTE //SID PORT
#define LCDSIDDDR DDRE //SID DDR
#define LCDSIDPIN PINE //SID PINE
#define LCDSIDIO 2 //SID IO
#define LCDSCLKPORT PORTE
#define LCDSCLKDDR DDRE
#define LCDSCLKPIN PINE
#define LCDSCLKIO 3
#define LCDRSTPORT PORTE
#define LCDRSTDDR DDRE
#define LCDRSTPIN PINE
#define LCDRSTIO 4
//========================================================
#define OUTLCDSCLK() LCDSCLKDDR |= 1 << LCDSCLKIO //設置輸出
#define SETLCDSCLK() LCDSCLKPORT |= 1 << LCDSCLKIO //拉高
#define CLRLCDSCLK() LCDSCLKPORT &= ~(1 << LCDSCLKIO) //拉低
#define OUTLCDSID() LCDSIDDDR |= 1 << LCDSIDIO //設置輸出
#define INLCDSID() LCDSIDDDR &= ~(1 << LCDSIDIO); LCDSIDPORT |= 1 << LCDSIDIO //設置輸入
#define SETLCDSID() LCDSIDPORT |= 1 << LCDSIDIO //拉高
#define CLRLCDSID() LCDSIDPORT &= ~(1 << LCDSIDIO) //拉低
#define GETLCDSID() ((LCDSIDPIN & (1 << LCDSIDIO)) >> LCDSIDIO) //讀IO值
const unsigned char AC_TABLE[]={
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, //第一行漢字位置
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, //第二行漢字位置
0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f, //第三行漢字位置
0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f, //第四行漢字位置
};
//串口發送一個位元組
void LCD_WriteByte(unsigned char Dbyte)
{
unsigned char i;
OUTLCDSCLK();
OUTLCDSID();
for(i=0;i<8;i++)
{
CLRLCDSCLK();
Dbyte=Dbyte<<1; //左移一位
if (SREG & 1)
SETLCDSID();
else
CLRLCDSID();
SETLCDSCLK();
LCDNOP();
CLRLCDSCLK();
}
return;
}
//串口接收一個位元組
//僅在讀取數據的時候用到
//而讀出的數據是一次只能讀出4bit的
unsigned char LCD_ReadByte(void)
{
unsigned char i,temp1,temp2;
temp1=temp2=0;
OUTLCDSCLK();
INLCDSID();
for(i=0;i<8;i++)
{
temp1=temp1<<1;
CLRLCDSCLK();
LCDNOP();
SETLCDSCLK();
LCDNOP();
CLRLCDSCLK();
if(GETLCDSID()) temp1++;
}
for(i=0;i<8;i++)
{
temp2=temp2<<1;
CLRLCDSCLK();
LCDNOP();
SETLCDSCLK();
LCDNOP();
CLRLCDSCLK();
if(GETLCDSID()) temp2++;
}
return ((0xf0&temp1)+(0x0f&temp2));
}
void LCD_CheckBusy( void )
{
LCDNOP();
return;
do LCD_WriteByte(0xfc); //11111,RW(1),RS(0),0
while(0x80&LCD_ReadByte()); //BF(.7)=1 Busy
}
void LCD_WriteCmd( unsigned char Cbyte )
{
//LCD_CS = 1;
LCD_CheckBusy();
LCD_WriteByte(0xf8); //11111,RW(0),RS(0),0
LCD_WriteByte(0xf0&Cbyte); //高四位
LCD_WriteByte(0xf0&Cbyte<<4);//低四位(先執行<<)
//LCD_CS = 0;
}
void LCD_WriteData( unsigned char Dbyte )
{
//LCD_CS = 1;
LCD_CheckBusy();
LCD_WriteByte(0xfa); //11111,RW(0),RS(1),0
LCD_WriteByte(0xf0&Dbyte); //高四位
LCD_WriteByte(0xf0&Dbyte<<4);//低四位(先執行<<)
//LCD_CS = 0;
}
unsigned char LCD_ReadData( void )
{
LCD_CheckBusy();
LCD_WriteByte(0xfe); //11111,RW(1),RS(1),0
return LCD_ReadByte();
}
void LCD_Init( void )
{
LCD_WriteCmd(0x30); //8BitMCU,基本指令集合
LCD_WriteCmd(0x03); //AC歸0,不改變DDRAM內容
LCD_WriteCmd(0x0C); //顯示ON,游標OFF,游標位反白OFF
LCD_WriteCmd(0x01); //清屏,AC歸0
LCD_WriteCmd(0x06); //寫入時,游標右移動
}
//文本區清RAM函數
void LCD_ClearTXT( void )
{
unsigned char i;
LCD_WriteCmd(0x30); //8BitMCU,基本指令集合
LCD_WriteCmd(0x80); //AC歸起始位
for(i=0;i<64;i++)
LCD_WriteData(0x20);
}
//圖形區和文本區顯示在兩個不同的RAM區
//圖形區清RAM函數
void LCD_ClearBMP( void )
{
unsigned char i,j;
LCD_WriteCmd(0x34); //8Bit擴充指令集,即使是36H也要寫兩次
LCD_WriteCmd(0x36); //繪圖ON,基本指令集裡面36H不能開繪圖
for(i=0;i<32;i++) //12864實際為256x32
{
LCD_WriteCmd(0x80|i); //行位置
LCD_WriteCmd(0x80); //列位置
for(j=0;j<32;j++) //256/8=32 byte
LCD_WriteData(0);
}
}
void LCD_PutStr(unsigned char row,unsigned char col,unsigned char *puts)
{
LCD_WriteCmd(0x30); //8BitMCU,基本指令集合
LCD_WriteCmd(AC_TABLE[8*row+col]); //起始位置
while(*puts != '\0') //判斷字元串是否顯示完畢
{
if(col==8) //判斷換行
{ //若不判斷,則自動從第一行到第三行
col=0;
row++;
}
if(row==4) row=0; //一屏顯示完,回到屏左上角
LCD_WriteCmd(AC_TABLE[8*row+col]);
LCD_WriteData(*puts); //一個漢字要寫兩次
puts++;
if (*puts != '\0')
{
LCD_WriteData(*puts);
puts++;
}else{break;}
col++;
}
}
void LCD_PutBMP(unsigned char *puts)
{
unsigned int x=0;
unsigned char i,j;
LCD_WriteCmd(0x34); //8Bit擴充指令集,即使是36H也要寫兩次
LCD_WriteCmd(0x36); //繪圖ON,基本指令集裡面36H不能開繪圖
for(i=0;i<32;i++) //12864實際為256x32
{
LCD_WriteCmd(0x80|i); //行位置
LCD_WriteCmd(0x80); //列位置
for(j=0;j<32;j++) //256/8=32 byte
{ //列位置每行自動增加
LCD_WriteData(puts[x]);
x++;
}
}
}
本文轉自:新勢力單片機 [url]http://www.XinShiLi.net[/url]
『拾』 單片機控制串口屏的程序,很急!!!!!
S2BUF = UART_Num[0];你只發送一次,但你的數組卻有BYTE idata UART_Num[8]={
0x00,0x55,0x03,0xe8,0x00,0x02,0xea,0xaa};這么多,也就是說你只發送開頭的0x00