嵌入式实验报告(3)

2019-04-09 08:49

IO0SET=en; IO0CLR=en; }

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

* 函数名称:WrDat() * 函数功能:写数据

* 入口参数:dat,待写入LCD的数据 ****************************************************************************/

void WrDat(uint8 dat) { ChkBusy(); IO0SET=rs; IO0CLR=rw; IO0CLR=IO0CLR|0xff00; //先清零 IO0SET=dat<<8; //再送数 IO0SET=en; IO0CLR=en; }

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

* 函数名称:lcd_init() * 函数功能:lcd初始化

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

void lcd_init(void) { WrOp(0x38); WrOp(0x06); WrOp(0x0c); }

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

* 函数名称:LocateXY() * 函数功能:显示光标定位

* 入口参数:posx LCD列位置,posy LCD行

位置

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

void LocateXY( uint8 posx,uint8 posy) { uint8 temp; temp = posx & 0xf; posy &= 0x1; if ( posy )temp |= 0x40; temp |= 0x80; WrOp(temp); }

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

* 函数名称:DispOneChar() * 函数功能:显示单字符

* 入口参数:x LCD列位置,y LCD行位置,Wdata 显示字符

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

void DispOneChar(uint8 x,uint8 y,uint8 Wdata) {

LocateXY( x, y ); // 定位显示字符的x,y位置 WrDat( Wdata ); // 写字符 }

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

* 函数名称:ePutstr() * 函数功能:显示字符串

* 入口参数:x LCD列,y LCD行,j 字符串长度,*ptr 字符串指针

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

void ePutstr(uint8 x,uint8 y, uint8 j,uint8 *ptr){ uint8 i,l=0;

for (i=0;i

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

* 函数名称:DisText() * 函数功能:显示文本

* 入口参数:addr LCD DDRAM地址,*p 文本指针

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

void DisText(uint8 addr,char *p) { WrOp(addr); while(*p !='\\0')WrDat(*(p++)); }

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

* 函数名称:main() * 函数功能:LCD初始化,自定义汉字字符,LCD显示英文和汉字字符。

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

int main(void) { uint8 i; uint8

examp1[]={0x32,0x30,0x31,0x32,0x00,0x31,0x01,0x32,0x36,0x02}; uint8

Hzzimo[]={0x08,0x0F,0x12,0x0F,0x0A,0x1F,0x02,0x00, // 年

0x0F,0x09,0x0F,0x09,0x0F,0x09,0x11,0x00, //

0x0F,0x09,0x09,0x0F,0x09,0x09,0x0F,0x00}; // 日

lcd_init(); // LCD初始化 WrOp( 0x40 ); // 自定义汉字字符:年、月、日 for (i=0;i<24;i++){ WrDat(Hzzimo[i]); } DisText(0x80,\ // 第一行从第0位开始显示英文字符 ePutstr(4,1,10,examp1); // 第二行从第4位开始显示2012年1月26日 while(1); }

八、LCD 1602显示2 实验电路图:

源程序:

#include \#define rs (1<<5) #define rw (1<<6) #define en (1<<7) #define busy (1<<15)

/* 函数名称:ChkBusy()

* 函数功能:检查总线是否忙**/ void ChkBusy() { IO0DIR=0xf0; while(1) { IO0CLR=rs; IO0SET=rw; IO0SET=en; if(!(IO0PIN & busy))break; IO0CLR=en; } IO0DIR=0xffffffff;} /* 函数名称:WrOp() * 函数功能:写命令

* 入口参数:dat,待写入LCD的命令 **/ void WrOp(uint8 dat)

{ ChkBusy();IO0CLR=rs;IO0CLR=rw; IO0CLR=IO0CLR|0xff00; //先清零 IO0SET=dat<<8; //再送数 IO0SET=en;IO0CLR=en;} /* 函数名称:WrDat() * 函数功能:写数据

* 入口参数:dat,待写入LCD的数据 **/ void WrDat(uint8 dat)

{ ChkBusy();IO0SET=rs;IO0CLR=rw; IO0CLR=IO0CLR|0xff00; //先清零 IO0SET=dat<<8; //再送数 IO0SET=en;IO0CLR=en;} /* 函数名称:lcd_init() * 函数功能:lcd初始化**/ void lcd_init(void)

{ WrOp(0x38);WrOp(0x06);WrOp(0x0c); }

/* 函数名称:DisText() * 函数功能:显示文本

* 入口参数:addr LCD DDRAM地址,*p 文本指针 **/

void DisText(uint8 addr,char *p) { WrOp(addr); while(*p !='\\0')WrDat(*(p++));} /* 函数名称:main() * 函数功能:LCD初始化,自定义汉字字符,LCD显示英文和汉字字符。**/ int main(void) { uint8 i;

lcd_init(); // LCD初始化 DisText(0x80,\ DisText(0xc0,\hijklmn\ while(1);}

九、LCD 1602显示3 实验电路图:

源程序:

#include \#define rs (1<<5) #define rw (1<<6) #define en (1<<7) #define busy (1<<15) /* 函数名称:ChkBusy()

* 函数功能:检查总线是否忙**/ void ChkBusy() { IO0DIR=0xf0; while(1) { IO0CLR=rs; IO0SET=rw; IO0SET=en; if(!(IO0PIN & busy))break; IO0CLR=en; } IO0DIR=0xffffffff;} /* 函数名称:WrOp() * 函数功能:写命令

* 入口参数:dat,待写入LCD的命令 **/ void WrOp(uint8 dat)

{ ChkBusy();IO0CLR=rs;IO0CLR=rw; IO0CLR=IO0CLR|0xff00; //先清零 IO0SET=dat<<8; //再送数 IO0SET=en;IO0CLR=en;} /* 函数名称:WrDat() * 函数功能:写数据

* 入口参数:dat,待写入LCD的数据 **/ void WrDat(uint8 dat)

{ ChkBusy();IO0SET=rs;IO0CLR=rw;

IO0CLR=IO0CLR|0xff00; //先清零 IO0SET=dat<<8; //再送数 IO0SET=en;IO0CLR=en;} /* 函数名称:lcd_init() * 函数功能:lcd初始化**/ void lcd_init(void)

{ WrOp(0x38);WrOp(0x06);WrOp(0x0c); }

/* 函数名称:DisText() * 函数功能:显示文本

* 入口参数:addr LCD DDRAM地址,*p 文本指针 **/

void DisText(uint8 addr,char *p) { WrOp(addr); while(*p !='\\0')WrDat(*(p++));} /* 函数名称:main() * 函数功能:LCD初始化,自定义汉字字符,LCD显示英文和汉字字符。**/ int main(void) { uint8 i;

lcd_init(); // LCD初始化 DisText(0x80,\hijklmn\DisText(0xc0,\ while(1);}

十、PWM脉宽调制 实验内容:

LPC2131芯片PWM模块可以实现6路单边沿控制或者3路双边沿控制,或者两者混合输出。

实验电路图:

源程序:

#include #define RED_A (1<<8); #define YELLOW_A (1<<9); #define GREEN_A (1<<10); #define RED_B (1<<11); #define YELLOW_B (1<<12); #define GREEN_B (1<<13);

uint8 Flash_Count = 0;

uint8 Operation_Type = 1; void DelayMS(uint16 x) { uint16 t; while(x--) {for(t=500;t>0;t--);} }


嵌入式实验报告(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:大气污染控制工程试题库(2013)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: