LCD1602
来源:互联网 发布:中国药智数据网 编辑:程序博客网 时间:2024/05/22 06:20
lcd1602.h
#ifndef _LCD1602_H_#define _LCD1602_H_#include<reg51.h>/********************************************* 定义以下宏是为了便于4位数据传输和8位数据 传输的切换取消以下宏定义编译出来的是8位传输 *********************************************///#define LCD1602_4PINS#ifndef uchar #define uchar unsigned char#endif#ifndef uint#define uint unsigned int#endif#define LCD1602_DATAPINS P0sbit LCD1602_EN = P2^7;sbit LCD1602_RW = P2^5;sbit LCD1602_RS = P2^6;//void Lcd1602_Delay1ms(uint c);void lcd1602WriteCommand(uchar command);void lcd1602WriteData(uchar da);void initialLCD1602();void lcd1602ShowFloatValue(float value, uchar precision);#endif
lcd1602.c
#include <lcd1602.h>#include<function.h>#include<math.h>#ifndef LCD1602_4PINSvoid lcd1602WriteCommand(uchar command){ LCD1602_EN = 0; LCD1602_RS = 0; //发送命令 LCD1602_RW = 0; LCD1602_DATAPINS = command; delayms(1);//此处应稍有延时,为了速度不用延时也可以 LCD1602_EN = 1; delayms(5); LCD1602_EN = 0;}#elsevoid lcd1602WriteCommand(uchar command){ LCD1602_EN = 0; LCD1602_RS = 0; //发送命令 LCD1602_RW = 0; LCD1602_DATAPINS = command;//16024位接法时,用数据线的高4位接传输,先写入高4位,后写入低4位 delayms(1);//此处应稍有延时,为了速度不用延时也可以 LCD1602_EN = 1; delayms(5); LCD1602_EN = 0; LCD1602_DATAPINS = command << 4; delayms(1);//此处应稍有延时,为了速度不用延时也可以 LCD1602_EN = 1; delayms(5); LCD1602_EN = 0;}#endif#ifndef LCD1602_4PINSvoid lcd1602WriteData(uchar da){ LCD1602_EN = 0; LCD1602_RS = 1; //发送命令 LCD1602_RW = 0; LCD1602_DATAPINS = da; delayms(1);//此处应稍有延时,为了速度不用延时也可以 LCD1602_EN = 1; delayms(5); LCD1602_EN = 0;}#elsevoid lcd1602WriteData(uchar da){ LCD1602_EN = 0; LCD1602_RS = 1; //发送命令 LCD1602_RW = 0; LCD1602_DATAPINS = da;//16024位接法时,用数据线的高4位接传输,先写入高4位,后写入低4位 delayms(1);//此处应稍有延时,为了速度不用延时也可以 LCD1602_EN = 1; delayms(5); LCD1602_EN = 0; LCD1602_DATAPINS = da << 4; delayms(1);//此处应稍有延时,为了速度不用延时也可以 LCD1602_EN = 1; delayms(5); LCD1602_EN = 0;}#endif#ifndef LCD1602_4PINSvoid initialLCD1602(){ lcd1602WriteCommand(0x38); //开显示 lcd1602WriteCommand(0x0c); //开显示不显示光标 lcd1602WriteCommand(0x06); //写一个指针加1 lcd1602WriteCommand(0x01); //清屏 lcd1602WriteCommand(0x80); //设置数据指针起点 }#elsevoid initialLCD1602(){ lcd1602WriteCommand(0x32); lcd1602WriteCommand(0x28); //开显示 lcd1602WriteCommand(0x0c); //开显示不显示光标 lcd1602WriteCommand(0x06); //写一个指针加1 lcd1602WriteCommand(0x01); //清屏 lcd1602WriteCommand(0x80); //设置数据指针起点 }#endifvoid lcd1602ShowFloatValue(float value, uchar precision){ uchar i, LCD1602Falg = 0; uchar wei[5]; uint tp; value = value + pow(0.1,precision + 1); for(i = 0; i < precision; i++) { value = value * 10; } tp = value; wei[0] = tp/10000; wei[1] = tp%10000/1000; wei[2] = tp%1000/100; wei[3] = tp%100/10; wei[4] = tp%10; //i = 0; for(i = 0; i < 5; i++) { if(LCD1602Falg == 0 && wei[i] == 0 && i < 4 - precision) { lcd1602WriteData(0x20); }else { lcd1602WriteData(wei[i] + 0x30); if(i == 4 - precision) { lcd1602WriteData('.'); } LCD1602Falg = 1; } }}
0 0
- LCD1602
- LCD1602
- LCD1602
- LCD1602
- LCD1602
- LCD1602
- LCD1602
- LCD1602
- LCD1602
- lcd1602
- LCD1602
- lcd1602
- AT91SAM7S64+LCD1602
- LCD1602 + TLC2543
- LCD1602 驱动
- LCD1602常用命令
- LCD1602驱动
- lcd1602.c
- 利用curator实现的zookeeper分布式锁服务
- python - scipy 库安装
- 使用regex_replace
- Ruby on rails 实战圣经:ActionController
- tcp/ip ---------- UDP
- LCD1602
- ThinkPHP框架完全解析三
- Ruby on rails 实战圣经:ActiveRecord
- Ruby on rails 实战圣经:数据库迁移 - Migrations
- NYOJ 148 矩阵快速幂模版
- Ruby on rails 实战圣经:ActiveRecord 数据表关系
- mysql存储过程和命令
- 【笔记】Android在代码中打开或关闭WiFi
- android 自定义View使用