实例40-162字符型液晶显示实例

上传人:woxinch****an2018 文档编号:38983197 上传时间:2018-05-10 格式:DOC 页数:6 大小:29.50KB
返回 下载 相关 举报
实例40-162字符型液晶显示实例_第1页
第1页 / 共6页
实例40-162字符型液晶显示实例_第2页
第2页 / 共6页
实例40-162字符型液晶显示实例_第3页
第3页 / 共6页
实例40-162字符型液晶显示实例_第4页
第4页 / 共6页
实例40-162字符型液晶显示实例_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《实例40-162字符型液晶显示实例》由会员分享,可在线阅读,更多相关《实例40-162字符型液晶显示实例(6页珍藏版)》请在金锄头文库上搜索。

1、【实例 40】162 字符型液晶显示实例/*文件名称: 1602_test.C功能 :SMC1602A 的 C51 驱动程序说明 :在 SMC1602A 上显示字符*/#include #include/变量类型标识的宏定义#defineUchar unsigned char#define Uint unsigned int/ 控制引脚定义sbit RS= P20; /数据/命令选择,高电平表示传送的是数据,低电平则表示是命令sbit RW = P21; / 读写选择,高电平表示从 1602 读数据,低电平则表示写数据到1602sbit Elcm = P26; /使能信号#define Dat

2、a P0/定义数据端口#define By 0x80code char emp=“For an example“;void Delay400Ms(void);void Delay5Ms(void);void WaitEnable( void );void WriteLcdData( char dataW );void WriteLcdCommand( Uchar CMD,Uchar AttribC );void LcdReset( void );void Display( Uchar dd );void DispOneChar(Uchar x,Uchar y,Uchar Wdata);void

3、 ePutstr(Uchar x,Uchar y, Uchar code *ptr);/主程序void main(void)Uchar temp;Delay400Ms();LcdReset();temp = 32;ePutstr(0,0,emp);/ 显示一个预定字符串“For an example”Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();while(1)temp / 只显示 ASCII 字符if (temp31)l+;for

4、(i=0;il;i+)DispOneChar(x+,y,ptri);if ( x = 16 )x = 0; y = 1;/*函数名称: void Display( Uchar dd )功能 :在 1602 第一行显示 dd 到 dd+15说明 : 无入口参数:dd 为要显示的第一个数 返回值 :无*/void Display( Uchar dd ) Uchar i;for (i=0;i16;i+) DispOneChar(i,1,dd+);dd if (dd32) dd=32;/*函数名称: void LocateXY( char posx,char posy)功能 :在指定位置显示光标定位说

5、明 : 无入口参数:posx 为光标的横坐标,posy 为光标的纵坐标 返回值 :无*/void LocateXY( char posx,char posy) Uchar temp;temp = posx posy if ( posy )temp |= 0x40;temp |= 0x80;WriteLcdCommand(temp,0);/*函数名称: void DispOneChar(Uchar x,Uchar y,Uchar Wdata)功能 :在指定位置显示出一个字符说明 : 无入口参数:x 为光标的横坐标,y 为光标的纵坐标,Wdata 为要显示的字符 返回值 :无*/void Disp

6、OneChar(Uchar x,Uchar y,Uchar Wdata) LocateXY( x, y );/ 定位显示地址WriteLcdData( Wdata );/ 写字符/*函数名称: void LcdReset( void ) 功能 :初始化液晶屏说明 : 无入口参数:无 返回值 :无*/void LcdReset( void ) WriteLcdCommand( 0x38, 0);/ 显示模式设置(不检测忙信号)Delay5Ms();WriteLcdCommand( 0x38, 0);/ 共三次Delay5Ms();WriteLcdCommand( 0x38, 0);Delay5M

7、s();WriteLcdCommand( 0x38, 1);/ 显示模式设置(以后均检测忙信号)WriteLcdCommand( 0x08, 1);/ 显示关闭WriteLcdCommand( 0x01, 1);/ 显示清屏WriteLcdCommand( 0x06, 1);/ 显示光标移动设置WriteLcdCommand( 0x0c, 1);/ 显示开及光标设置/*函数名称: void WriteLcdCommand( Uchar CMD,Uchar AttribC )功能 :写控制字符子程序说明 : E=1 RS=0 RW=0入口参数:CMD 为命令码,AttribC 为属性 返回值 :

8、无*/void WriteLcdCommand( Uchar CMD,Uchar AttribC )if (AttribC) WaitEnable(); / 检测忙信号?RS = 0;RW = 0; _nop_();Data = CMD; / 送控制字子程序_nop_();Elcm = 1;_nop_();_nop_();Elcm = 0;/ 操作允许脉冲信号/*函数名称: void WriteLcdData( char dataW )功能 :当前位置写字符说明 : E =1 RS=1 RW=0入口参数:dataW 为要显示的字符 返回值 :无*/void WriteLcdData( char

9、 dataW )WaitEnable();/ 检测忙信号RS = 1;RW = 0;_nop_();Data = dataW;_nop_();Elcm = 1; _nop_();_nop_(); Elcm = 0;/ 操作允许脉冲信号/*函数名称: void WaitEnable( void )功能 :检测 LCD 控制器状态说明 :正常读写操作之前必须检测 LCD 控制器状态:CS=1 RS=0 RW=1DB7: 0 LCD 控制器空闲; 1 LCD 控制器忙入口参数:无 返回值 :无*/void WaitEnable( void )Data = 0xff;RS =0; RW = 1;_no

10、p_();Elcm = 1; _nop_(); _nop_();while( Data /等待 LCD 空闲Elcm = 0; /*函数名称: void Delay5Ms(void)功能 :短延时函数说明 :在单片机工作在 12MH 是大约延时 5 毫秒入口参数:无 返回值 :无*/void Delay5Ms(void)Uint i = 5552;while(i-);/*函数名称: void Delay400Ms(void)功能 :长延时函数说明 :在单片机工作在 12MH 是大约延时 400 毫秒入口参数:无 返回值 :无*/void Delay400Ms(void)Uchar i = 5;Uint j;while(i-)j=7269;while(j-);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号