導航:首頁 > 操作系統 > 單片機竄顯

單片機竄顯

發布時間:2023-08-31 12:06:53

單片機發出十六進制數 55H 後串口助手顯示的是什麼信息原因何在

單片機發出十六進制數 55H 後,串口助手顯示內容:

如果是16進制顯示:55

如果是字元形式:U

例如:

#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

sbit D0=P1^0;

uchar flag;

uchar a[30];

uint y, u,c;

/*發送子程序*/

void fasong(uchar dat)

ES=0;

SBUF=dat;

while(!TI);

TI=0;

ES=1;

}

/*延時子程序*/

void delay(uint n)

uint i,j;

for(i=0;i<n;i++)

for(j=0;j<250;j++);

/*主程序*/

void main()

{

SM0=0;//選擇工作方式一

SM1=1;

TR1=1;

REN=1;

TMOD=0X20;//設置定時器1為工作方式2

TH1=0XFD;

TL1=0XFD;//設置波特率為9600

EA=1;//開CPU中斷

ES=1;//開串列口中斷

delay(1000);

D0=0;

while(flag)

{

y=0;

while(a[y]!='')

fasong(a[y]);

a[y]=''; //清空字元,方便下次接收

y++;

y=0;

flag=0; }

void jsfs() interrupt 4

(1)單片機竄顯擴展閱讀:

十六進制數的基數是16,採用的數碼是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。其中A-F分別表示十進制數字10-15.十六進制數的技術規則是「逢十六進一」,它的各位的權是以16的N次方標識的。通常,對十六進制數的表示,可以在數字的右下角標注16或H,但在C語言中是在數的前面加數字0和字母X即0X來表示。例如,12AF在C語言中表示為0X12AF。

十六進制數的加減法的進/借位規則為:借一當十六,逢十六進一。 十六進制數同二進制數及十進制數一樣,也可以寫成展開式的形式。

⑵ 單片機用串口液晶顯示屏(漢顯)

一、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]

閱讀全文

與單片機竄顯相關的資料

熱點內容
活塞式壓縮機原理圖 瀏覽:842
水環式壓縮機工作原理 瀏覽:713
阿里雲伺服器安裝後怎麼使用 瀏覽:931
去做APP開戶有什麼危險沒得啊 瀏覽:696
8分之1乘58演算法 瀏覽:170
php提交過濾 瀏覽:356
豪斯曼檢驗stata命令 瀏覽:769
雲看地是什麼APP 瀏覽:885
數學指南pdf 瀏覽:858
phpcurldll64位 瀏覽:982
程序員脫產一年半 瀏覽:851
hr招程序員有什麼條件 瀏覽:589
android開源集合 瀏覽:872
華為雲伺服器登錄密碼和賬號 瀏覽:154
中世紀java程序員 瀏覽:788
什麼開發引擎使用python 瀏覽:177
sh腳本運行命令 瀏覽:318
廣聯達加密鎖怎麼看到期 瀏覽:174
cad軌跡命令 瀏覽:981
同事刷到女程序員自媒體視頻 瀏覽:573