51實驗 -串口通信、液晶顯示c程序_第1頁
51實驗 -串口通信、液晶顯示c程序_第2頁
51實驗 -串口通信、液晶顯示c程序_第3頁
51實驗 -串口通信、液晶顯示c程序_第4頁
51實驗 -串口通信、液晶顯示c程序_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

51實驗--串口通信、液晶顯示c程序51實驗--串口通信、液晶顯示c程序51實驗--串口通信、液晶顯示c程序xxx公司51實驗--串口通信、液晶顯示c程序文件編號:文件日期:修訂次數(shù):第1.0次更改批準審核制定方案設計,管理制度51實驗11-串口通信串口通信,原理圖如下:

程序:

C語言1:

/************實現(xiàn)功能*************

接收電腦"串口調(diào)試助手"發(fā)來的信息,

顯示在發(fā)光二極管上(查詢方式)

**********************************/

/*************包含頭文件**************/

#include<>

/*************初始化函數(shù)*************/

voidinit()

{

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

TH1=0xfd;//T1裝初值

TL1=0xfd;

TR1=1;//啟動T1

REN=1;//允許串行接收

SM0=0;//設置串口為工作方式1

SM1=1;

}

/***************主函數(shù)***************/

voidmain()

{

init();//初始化

while(1)

{

if(RI==1);

{

RI=0;//接收中斷標志位(取消終端申請)

P1=SBUF;//讀取緩沖寄存器內(nèi)數(shù)據(jù)

}

}

}

C語言2:

/************實現(xiàn)功能*************

接收電腦"串口調(diào)試助手"發(fā)來的信息,

顯示在發(fā)光二極管上(中斷方式)

**********************************/

/*************包含頭文件**************/

#include<>

/*************初始化函數(shù)*************/

voidinit()

{

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

TH1=0xfd;//T1裝初值

TL1=0xfd;

TR1=1;//啟動T1

REN=1;//允許串行接收

SM0=0;//設置串口為工作方式1

SM1=1;

EA=1;//開總中斷

ES=1;//開串口中斷

}

/***************主函數(shù)***************/

voidmain()

{

init();//初始化

while(1)

{

}

}

voidser()interrupt4

{

RI=0;//接收中斷標志位(取消終端申請)

P1=SBUF;//讀取緩沖寄存器內(nèi)數(shù)據(jù)

}

C語言3:

/************實現(xiàn)功能*************

接收電腦"串口調(diào)試助手"發(fā)來的信息,

并將收到的信息再發(fā)給電腦。

**********************************/

/*************包含頭文件**************/

#include<>

/***************宏定義***************/

#defineuintunsignedint

#defineucharunsignedchar

/*************變量聲明***************/

ucharflag,shou;

/*************初始化函數(shù)*************/

voidinit()

{

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

TH1=0xfd;//T1裝初值

TL1=0xfd;

TR1=1;//啟動T1

REN=1;//允許串行接收

SM0=0;//設置串口為工作方式1

SM1=1;

EA=1;//開總中斷

ES=1;//開串口中斷

}

/***************主函數(shù)***************/

voidmain()

{

init();//初始化

while(1)

{

if(flag==1)

{

flag=0;

ES=0;//關串行口中斷

SBUF=shou;//SBUF='1';//SBUF='s';

//將變量shou中的數(shù)據(jù)傳給緩沖器

while(!TI);

TI=0;//發(fā)送中斷標志位(取消中斷申請)

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

}

}

}

voidser()interrupt4

{

RI=0;//接收中斷標志位(取消中斷申請)

P1=SBUF;//讀取緩沖寄存器內(nèi)數(shù)據(jù)

shou=SBUF;//將緩沖區(qū)的數(shù)據(jù)讀入變量shou

flag=1;

}1602液晶顯示,原理圖如下:

程序:

C語言1:

/**************實現(xiàn)功能************************

在第一行顯示"ILIKEY!",在第二行顯示"WOAINI!"。

顯示完畢后,整屏左移,進入液晶顯示界面。******/

/************包含文件頭**************/

#include<>

/*************宏定義***************/

#defineuintunsignedint

#defineucharunsignedchar

/************位聲明**************/

sbitlcden=P3^4;//液晶控制

sbitlcdrs=P3^5;//液晶控制

sbitdula=P2^6;//關鎖存器,防止USB

sbitwela=P2^7;//供電不足

/***********函數(shù)聲明*************/

voiddelay(uintz);//延時

voidwrite_com(ucharcom);//寫指令

voidwrite_date(uchardate);//寫數(shù)據(jù)

/***********顯示編碼*************/

ucharcodetable1[]="ILIKEY!";

ucharcodetable2[]="WOAINI!";

/***********變量聲明*************/

ucharnum;

/***********初始化函數(shù)*************/

voidinit()

{

dula=0;//關鎖存器

wela=0;

lcden=0;//使能信號,允許控制

write_com(0x38);//顯示模式設置

//設置顯示為16*2顯示,5*7點陣,8位數(shù)據(jù)接口

//

write_com(0x0e);//開顯示,顯示光標,光標不閃爍

//

write_com(0x0f);//開顯示,顯示光標,光標閃爍

//

write_com(0x0b);//關顯示,顯示光標,光標不閃爍

write_com(0x0c);//開顯示,不顯示光標,光標不閃爍

//

write_com(0x0d);//開顯示,不顯示光標,光標閃爍

write_com(0x06);

//當讀或?qū)懸粋€字符后,地址指針加一,且光標加一

//當寫一個字符時,整平顯示不移動

/*

write_com(0x04);

//當讀或?qū)懸粋€字符后,地址指針減一,且光標減一

//當寫一個字符時,整平顯示不移動*/

/*

write_com(0x07);

//當寫一個字符時,整平顯示左移,

//以得到光標不移而屏幕移動的效果。*/

/*

write_com(0x05);

//當寫一個字符時,整平顯示右移,

//以得到光標不移而屏幕移動的效果。*/

write_com(0x01);//顯示清屏

//數(shù)據(jù)指針清零,所有顯示清零

/*

write_com(0x02);//顯示回車

//數(shù)據(jù)指針清零*/

write_com(0x80+0x10);//設置數(shù)據(jù)地址指針

//設置數(shù)據(jù)指針為外側(cè),然后移動到內(nèi)側(cè)

}

/****************主函數(shù)*****************/

voidmain()

{

init();//初始化

for(num=0;num<7;num++)//第一行顯示7個字符

{

write_date(table1[num]);//寫數(shù)據(jù)

delay(20);

}

//

write_com(0x01);//清屏

write_com(0x80+0x50);//設置第二行為顯示位

for(num=0;num<7;num++)//第二行顯示7個字符

{

write_date(table2[num]);//寫數(shù)據(jù)

delay(20);

}

for(num=0;num<16;num++)//整屏移動16個字符16

{

write_com(0x18);//整屏左移

//

write_com(0x1C);//整屏右移

delay(200);

}

while(1);//等待

}

/************寫指令函數(shù)**************/

voidwrite_com(ucharcom)

{

lcdrs=0;//命令選擇端

P0=com;//寫指令

delay(5);

lcden=1;//使能信號,允許控制

delay(5);

lcden=0;//使能信號,禁止控制

}

/************寫數(shù)據(jù)函數(shù)**************/

voidwrite_date(uchardate)

{

lcdrs=1;//數(shù)據(jù)選擇端

P0=date;//寫數(shù)據(jù)

delay(5);

lcden=1;//使能信號,允許控制

delay(5);

lcden=0;//使能信號,禁止控制

}

/***********1MS延時函數(shù)************/

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

C語言2:

/**************實現(xiàn)功能************************

在第一行顯示"ILIKEY!",在第二行顯示"WOAINI!"。

光標顯示,光標閃爍,慢速從左向右顯示!

/************包含文件頭**************/

#include<>

/*************宏定義***************/

#defineuintunsignedint

#defineucharunsignedchar

/************位聲明**************/

sbitlcden=P3^4;//液晶控制

sbitlcdrs=P3^5;//液晶控制

sbitdula=P2^6;//關鎖存器,防止USB

sbitwela=P2^7;//供電不足

/***********函數(shù)聲明*************/

voiddelay(uintz);//延時

voidwrite_com(ucharcom);//寫指令

voidwrite_date(uchardate);//寫數(shù)據(jù)

/***********顯示編碼*************/

ucharcodetable1[]="ILIKEY!";

ucharcodetable2[]="WOAINI!";

/***********變量聲明*************/

ucharnum;

/***********初始化函數(shù)*************/

voidinit()

{

dula=0;//關鎖存器

wela=0;

lcden=0;//使能信號,允許控制

write_com(0x38);//顯示模式設置

//設置顯示為16*2顯示,5*7點陣,8位數(shù)據(jù)接口

//

write_com(0x0e);//開顯示,顯示光標,光標不閃爍

write_com(0x0f);//開顯示,顯示光標,光標閃爍

//

write_com(0x0b);//關顯示,顯示光標,光標不閃爍

//

write_com(0x0c);//開顯示,不顯示光標,光標不閃爍

//

write_com(0x0d);//開顯示,不顯示光標,光標閃爍

write_com(0x06);

//當讀或?qū)懸粋€字符后,地址指針加一,且光標加一

//當寫一個字符時,整平顯示不移動

/*

write_com(0x04);

//當讀或?qū)懸粋€字符后,地址指針減一,且光標減一

//當寫一個字符時,整平顯示不移動*/

/*

write_com(0x07);

//當寫一個字符時,整平顯示左移,

//以得到光標不移而屏幕移動的效果。*/

/*

write_com(0x05);

//當寫一個字符時,整平顯示右移,

//以得到光標不移而屏幕移動的效果。*/

write_com(0x01);//顯示清屏

//數(shù)據(jù)指針清零,所有顯示清零

/*

write_com(0x02);//顯示回車

//數(shù)據(jù)指針清零*/

write_com(0x80);//設置數(shù)據(jù)地址指針

//設置數(shù)據(jù)指針為第一行起始位置

}

/****************主函數(shù)*****************/

voidmain()

{

init();//初始化

for(num=0;num<7;num++)//第一行顯示7個字符

{

write_date(table1[num]);//寫數(shù)據(jù)

delay(300);

}

//

write_com(0x01);//清屏

write_com(0x80+0x40);//設置第二行為顯示位

for(num=0;num<7;num++)//第二行顯示7個字符

{

wr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論