LCD1602 -- STC
来源:互联网 发布:流体动力学软件 编辑:程序博客网 时间:2024/06/05 19:23
#include "intrins.h"
#include <string.h>
typedef unsigned char BYTE;
typedef unsigned int WORD;
/********************************************************************************************/
/********************************************************************************************
// 引脚定义 // (使用者根据实际更改)
/********************************************************************************************/
#define DB0_DB7 P0
sbit LCD1602_RS = P2^4;
sbit LCD1602_RW = P2^5;
sbit LCD1602_E = P2^6;
BYTE i;
BYTE code table1[] = {" aaaaaaa"};
BYTE code table2[] = {" bbbbbbb!"};
#define LCD1602_set 0x38 // 8位总线_2行显示
#define LCD1602_light 0x0c // 开显示_关光标_关光标闪烁
#define LCD1602_add 0x06 // 读入后AC(指针)加1,向右写
#define LCD1602_sub 0x04 // 读入后AC(指针)减1,向左写
#define LCD1602_clear 0x01 // 清除屏幕
#define LCD1602_CMD_back 0x02 // DDRAM回零位
#define FOSC 12000000L //System frequency
void delay(BYTE z) //@12.000MHz 延时1MS
{
BYTE i, j;
while(z--)
{
i = 12;
j = 169;
do
{
while (--j);
} while (--i);
}
}
/********************************************************************************************
// 写指令程序 //
// 向LCD1602写命令 本函数需要1个指令集的入口参数 //
/********************************************************************************************/
void LCD1602_WriteCMD(WORD command){
DB0_DB7 = command;
LCD1602_RS = 0;
LCD1602_RW = 0;
delay(5);
LCD1602_E = 1;
delay(5);
LCD1602_E = 0;
}
/********************************************************************************************
// 写数据程序 //
// 向LCD1602写数据 //
/********************************************************************************************/
void LCD1602_WriteData(WORD dat){
DB0_DB7 = dat;
LCD1602_RS = 1;
LCD1602_RW = 0;
delay(5);
LCD1602_E = 1;
delay(5);
LCD1602_E = 0;
}
/********************************************************************************************
// LCD1602初始化 //(使用者可自定义,加 * 号程序行必须保留但可修改)
/********************************************************************************************/
void LCD1602_Init(){
LCD1602_E = 0;
LCD1602_WriteCMD(LCD1602_set); //* 显示模式设置:显示2行,每个字符为5*7个像素
LCD1602_WriteCMD(LCD1602_clear); // 显示清屏
LCD1602_WriteCMD(LCD1602_CMD_back); //* 数据指针指向第1行第1个字符位置
LCD1602_WriteCMD(LCD1602_add); // 显示光标移动设置:文字不动,光标右移
LCD1602_WriteCMD(LCD1602_light); // 显示开及光标设置:显示开,光标开,闪烁开
}
/********************************************************************************************
// LCD1602显示程序
//调用LCD1602_Display();
/********************************************************************************************/
void LCD1602_Display(void){
LCD1602_WriteCMD(0x80); //写指令第一行显示
for(i=0;i<16;i++){
LCD1602_WriteData(table1[i]);delay(5);//写第一行显示数据
}
LCD1602_WriteCMD(0x80+0x40); //写指令第二行显示
for(i=0;i<14;i++){
LCD1602_WriteData(table2[i]);delay(5); //写第一行显示数据
}
}
/********************************************************************************************
//主程序
/********************************************************************************************/
void Delay500ms() //@12.000MHz
{
BYTE i, j, k;
_nop_();
_nop_();
i = 23;
j = 205;
k = 120;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
Delay500ms();
LCD1602_Init(); // LCD1602初始化
LCD1602_Display(); // LCD1602显示程序
while(1);
}
- LCD1602 -- STC
- LCD1602
- LCD1602
- LCD1602
- LCD1602
- LCD1602
- LCD1602
- LCD1602
- LCD1602
- LCD1602
- lcd1602
- LCD1602
- lcd1602
- STC
- stc
- AT91SAM7S64+LCD1602
- LCD1602 + TLC2543
- LCD1602 驱动
- Java中的23种设计模式:
- wegweg
- handler机制的原理
- Singleton<T>
- 自定义Android对话框
- LCD1602 -- STC
- Awk的使用
- 网关,默认网关,自动网关,路由,网关与路由器的关系
- CLR中函数引用传递无法使用ref class成员变量的问题
- 安装好android的adt以后重启eclipse,但是没有创建AVD的图标
- 排序算法(一)-希尔排序
- OGRE手札-31 从3Dmax导出动画文件
- STL算法------查找5
- 黑马程序员——File类、Properties、打印流、合并流、切割流