#include <REGX52.H>
//引脚配置:
sbit LCD_RS=P2^6;
sbit LCD_RW=P2^5;
sbit LCD_EN=P2^7;
#define LCD_DataPort P0
//函数定义:
/**
* @brief LCD1602延时函数,12MHz调用可延时1ms
* @param 无
* @retval 无
*/
void LCD_Delay()
{
unsigned char i, j;
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
/**
* @brief LCD1602写命令
* @param Command 要写入的命令
* @retval 无
*/
void LCD_WriteCommand(unsigned char Command)
{
LCD_RS=0;
LCD_RW=0;
LCD_DataPort=Command;
LCD_EN=1;
LCD_Delay();
LCD_EN=0;
LCD_Delay();
}
/**
* @brief LCD1602写数据
* @param Data 要写入的数据
* @retval 无
*/
void LCD_WriteData(unsigned char Data)
{
LCD_RS=1;
LCD_RW=0;
LCD_DataPort=Data;
LCD_EN=1;
LCD_Delay();
LCD_EN=0;
LCD_Delay();
}
/**
* @brief LCD1602设置光标位置
* @param Line 行位置,范围:1~2
* @param Column 列位置,范围:1~16
* @retval 无
*/
void LCD_SetCursor(unsigned char Line,unsigned char Column)
{
if(Line==1)
{
LCD_WriteCommand(0x80|(Column-1));
}
else if(Line==2)
{
LCD_WriteCommand(0x80|(Column-1+0x40));
}
}
/**
* @brief LCD1602初始化函数
* @param 无
* @retval 无
*/
void LCD_Init()
{
LCD_WriteCommand(0x38);//八位数据接口,两行显示,5*7点阵
LCD_WriteCommand(0x0c);//显示开,光标关,闪烁关
LCD_WriteCommand(0x06);//数据读写操作后,光标自动加一,画面不动
LCD_WriteCommand(0x01);//光标复位,清屏
}
/**
* @brief 在LCD1602指定位置上显示一个字符
* @param Line 行位置,范围:1~2
* @param Column 列位置,范围:1~16
* @param Char 要显示的字符
* @retval 无
*/
void LCD_ShowChar(unsigned char Line,unsigned char Column,char Char)
{
LCD_SetCursor(Line,Column);
LCD_WriteData(Char);
}
/**
* @brief 在LCD1602指定位置开始显示所给字符串
* @param Line 起始行位置,范围:1~2
* @param Column 起始列位置,范围:1~16
* @param String 要显示的字符串
* @retval 无
*/
void LCD_ShowString(unsigned char Line,unsigned char Column,char *String)
{
unsigned char i;
LCD_SetCursor(Line,Column);
for(i=0;String[i]!='\0';i++)
{
LCD_WriteData(String[i]);
}
}
/**
* @brief 返回值=X的Y次方
*/
int LCD_Pow(int X,int Y)
{
unsigned char i;
int Result=1;
for(i=0;i<Y;i++)
{
Result*=X;
}
return Result;
}
/**
* @brief 在LCD1602指定位置开始显示所给数字
* @param Line 起始行位置,范围:1~2
* @param Column 起始列位置,范围:1~16
* @param Number 要显示的数字,范围:0~65535
* @param Length 要显示数字的长度,范围:1~5
* @retval 无
*/
void LCD_ShowNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
{
unsigned char i;
LCD_SetCursor(Line,Column);
for(i=Length;i>0;i--)
{
LCD_WriteData(Number/LCD_Pow(10,i-1)%10+'0');
}
}
/**
* @brief 在LCD1602指定位置开始以有符号十进制显示所给数字
* @param Line 起始行位置,范围:1~2
* @param Column 起始列位置,范围:1~16
* @param Number 要显示的数字,范围:-32768~32767
* @param Length 要显示数字的长度,范围:1~5
* @retval 无
*/
void LCD_ShowSignedNum(unsigned char Line,unsigned char Column,int Number,unsigned char Length)
{
unsigned char i;
unsigned int Number1;
LCD_SetCursor(Line,Column);
if(Number>=0)
{
LCD_WriteData('+');
Number1=Number;
}
else
{
LCD_WriteData('-');
Number1=-Number;
}
for(i=Length;i>0;i--)
{
LCD_WriteData(Number1/LCD_Pow(10,i-1)%10+'0');
}
}
/**
* @brief 在LCD1602指定位置开始以十六进制显示所给数字
* @param Line 起始行位置,范围:1~2
* @param Column 起始列位置,范围:1~16
* @param Number 要显示的数字,范围:0~0xFFFF
* @param Length 要显示数字的长度,范围:1~4
* @retval 无
*/
void LCD_ShowHexNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
{
unsigned char i,SingleNumber;
LCD_SetCursor(Line,Column);
for(i=Length;i>0;i--)
{
SingleNumber=Number/LCD_Pow(16,i-1)%16;
if(SingleNumber<10)
{
LCD_WriteData(SingleNumber+'0');
}
else
{
LCD_WriteData(SingleNumber-10+'A');
}
}
}
/**
* @brief 在LCD1602指定位置开始以二进制显示所给数字
* @param Line 起始行位置,范围:1~2
* @param Column 起始列位置,范围:1~16
* @param Number 要显示的数字,范围:0~1111 1111 1111 1111
* @param Length 要显示数字的长度,范围:1~16
* @retval 无
*/
void LCD_ShowBinNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
{
unsigned char i;
LCD_SetCursor(Line,Column);
for(i=Length;i>0;i--)
{
LCD_WriteData(Number/LCD_Pow(2,i-1)%2+'0');
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码 课程设计 51单片机开发 编程 实验 模块 源代码
资源推荐
资源详情
资源评论
收起资源包目录
51单片机的资料代码.zip (918个子文件)
1 1B
1 1B
MatrixLED.__i 122B
MatrixKey.__i 122B
MatrixKey.__i 122B
LCD1602.__i 116B
OneWire.__i 116B
DS18B20.__i 116B
LCD1602.__i 116B
AT24C02.__i 116B
AT24C02.__i 116B
OneWire.__i 116B
LCD1602.__i 116B
Timer0.__i 113B
DS1302.__i 113B
Timer0.__i 113B
Timer0.__i 113B
Timer1.__i 113B
Timer0.__i 113B
Timer0.__i 113B
Timer0.__i 113B
Timer1.__i 113B
Timer0.__i 113B
DS1302.__i 113B
Timer0.__i 113B
Timer0.__i 113B
Timer0.__i 113B
Buzzer.__i 113B
Delay.__i 110B
Motor.__i 110B
Nixie.__i 110B
Nixie.__i 110B
Delay.__i 110B
Nixie.__i 110B
Motor.__i 110B
Nixie.__i 110B
Delay.__i 110B
Nixie.__i 110B
Delay.__i 110B
Delay.__i 110B
Delay.__i 110B
Nixie.__i 110B
UART.__i 107B
Int0.__i 107B
Int0.__i 107B
Int0.__i 107B
UART.__i 107B
Int0.__i 107B
Key.__i 104B
Key.__i 104B
Key.__i 104B
I2C.__i 104B
Key.__i 104B
Key.__i 104B
I2C.__i 104B
Key.__i 104B
Key.__i 104B
Key.__i 104B
Key.__i 104B
IR.__i 101B
IR.__i 101B
IR.__i 101B
IR.__i 101B
Project.uvgui.Admin 168KB
Project.uvgui.Admin 88KB
Project.uvgui.Admin 87KB
Project.uvgui.Admin 87KB
Project.uvgui.Admin 87KB
Project.uvgui.Admin 87KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
Project.uvgui.Admin 86KB
共 918 条
- 1
- 2
- 3
- 4
- 5
- 6
- 10
资源评论
辣椒种子
- 粉丝: 4251
- 资源: 5837
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 电影购票系统-Java Web项目
- SPD-Conv-main.zip
- 使用Python和Pygame库创建新年烟花动画效果
- chapter9.zip
- 安居客Python爬虫代码.zip
- 企业可持续发展性数据集,ESG数据集,公司可持续发展性数据(可用于多种企业可持续性研究场景)
- 车辆轨迹自适应预瞄跟踪控制和自适应p反馈联合控制,自适应预苗模型和基于模糊p控制均在simulink中搭建 个人觉得跟踪效果相比模糊pid效果好很多,轨迹跟踪过程,转角控制平滑自然,车速在36到72
- 数据分析-49-客户细分-K-Means聚类分析
- TIA PORTAL V18 UPD5更新包(2024.10最新)-链接地址.txt
- 使用Python和Pygame实现圣诞节动画效果
- 自动驾驶不同工况避障模型(perscan、simulink、carsim联仿),能够避开预设的(静态)障碍物
- 100个情侣头像,唯美手绘情侣头像
- 国际象棋检测10-YOLO(v5至v9)、COCO、CreateML、Paligemma数据集合集.rar
- 2024~2025(1)Oracle数据库技术A卷-22软单、软嵌.doc
- 睡眠健康与生活方式数据集,睡眠和生活习惯关联分析(睡眠影响因素)
- 浪漫节日代码 - 爱心代码、圣诞树代码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功