#include "stdio.h"
#define LCD12864_DATA P0 //并行数据口
sbit LCD12864_RS = P1^0; //数据/命令选择
sbit LCD12864_RW = P1^1; //读/写选择
sbit LCD12864_EN = P1^2; //使能信号
/**********************************************
功能:
延时函数
输入参数:
n: 延时时长
输出参数:
无
返回值:
**********************************************/
void Delay(unsigned int n)
{
unsigned int i;
while(n--)
{
i=200;
while(i--);
}
}
/**********************************************
功能:
忙检测
输入参数:
无
输出参数:
无
返回值:
1: 忙
0: 空闲
**********************************************/
bit BusyCheck(void)
{
bit BusyBit;
LCD12864_DATA = 0xFF;
LCD12864_RS = 0;
LCD12864_RW = 1;
LCD12864_EN = 1;
_nop_();
BusyBit = (bit)(LCD12864_DATA>>7);
LCD12864_EN = 0;
return BusyBit;
}
/**********************************************
功能:
写命令到LCD12864
输入参数:
CmdByte: 命令字节
输出参数:
无
返回值:
**********************************************/
void CommandWrite12864(unsigned char CmdByte)
{
while(BusyCheck()); //等待忙
LCD12864_RS = 0;
LCD12864_RW = 0;
LCD12864_EN = 1;
LCD12864_DATA = CmdByte;
_nop_();
LCD12864_EN = 0;
}
/**********************************************
功能:
写数据到LCD12864
输入参数:
DataByte: 数据字节
输出参数:
无
返回值:
**********************************************/
void DataWrite12864(unsigned char DataByte)
{
while(BusyCheck()); //等待忙
LCD12864_RS = 1;
LCD12864_RW = 0;
LCD12864_EN = 1;
LCD12864_DATA = DataByte;
_nop_();
LCD12864_EN = 0;
}
/**********************************************
功能:
初始化LCD12864
输入参数:
无
输出参数:
无
返回值:
**********************************************/
void Reset12864(void)
{
CommandWrite12864(0x30); //选择基本指令集
CommandWrite12864(0x0c); //开显示(无游标、不反白)
CommandWrite12864(0x01); //清除显示,并且设定地址指针为00H
CommandWrite12864(0x06); //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位
}
/**********************************************
功能:
清屏
输入参数:
无
输出参数:
无
返回值:
**********************************************/
void ScreenClear12864(void)
{
CommandWrite12864(0x01);
}
void DisStrs(char *String) //显示字符串的函数。
{
while(*String != '\0')
{
DataWrite12864(*String);
String++;
Delay(2);
}
}
/**********************************************
功能:
在指定坐标显示字符串
输入参数:
x: 横坐标(1——15)
y: 纵坐标(1——4)
String: 字符串
输出参数:
无
返回值:
**********************************************/
void StringDisplay12864(unsigned char x, unsigned char y,unsigned char *String)
{
if((x<8)&&(y<4))
{
//指定数据地址
switch(y)
{
case 0:
CommandWrite12864(0x80|0x00|x);
break;
case 1:
CommandWrite12864(0x80|0x10|x);
break;
case 2:
CommandWrite12864(0x80|0x08|x);
break;
case 3:
CommandWrite12864(0x80|0x18|x);
break;
}
//显示字符串
while(*String != '\0')
{
DataWrite12864(*String);
Delay(50);
String++;
}
}
}
void display_float(unsigned char x, unsigned char y,double fnum)
{
char displaytemp[17];
if((x<8)&&(y<4))
{
//指定数据地址
switch(y)
{
case 0:
CommandWrite12864(0x80|0x00|x);
break;
case 1:
CommandWrite12864(0x80|0x10|x);
break;
case 2:
CommandWrite12864(0x80|0x08|x);
break;
case 3:
CommandWrite12864(0x80|0x18|x);
break;
}
sprintf(displaytemp,"%2.3f",fnum);
DisStrs(displaytemp);
}
}
StringDisplay12864(0,0,"A:");
display_float(5,2,200.231);
MAX197ad单片机八路采集程序
需积分: 9 57 浏览量
2015-11-24
07:14:12
上传
评论
收藏 58KB RAR 举报
qq_15023737
- 粉丝: 1
- 资源: 2
最新资源
- steam软件包下载地址
- 基于matlab实现开发的使用整数小波变换对图像进行3级分解和重构的程序
- 基于matlab实现读取视频文件中的图像,并对图像中的运动目标检测,循环.rar
- 华师调节效应和中介效应分析教学讲义 温忠麟
- 2023年更新儒家文化数据大全包含明清进士、书院数量、孔庙遗存
- 深度学习要点优缺点实际应用,代码案例和代码解析
- LBMA,SCE,CMRT冲突矿产相关规则和认证倡议机制培训+经典应用程序
- 企业寻租程度(超额管理费用测度)(2006-2020)stata原始数据+do文件+参考文献
- 【stata命令】市场分割-市场一体化-区域一体化指数stata计算教程
- 基于matlab实现移相全桥控制双向DCDC变换器matlab仿真原理图.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈