STC12C5A32S2单片机之1602渐入显示
2016-09-11 16:46
218 查看
基本框架根据郭天祥Lesson8中的程序来编写,但是渐入显示的时候郭用的指令是write_com(0x18);
可我用的时候就是显示不出来,于是根据1602的说明书,用了另外一个指令write_com(0x07) //当写一个字符,整屏显示左移
程序如下:
可直接运行,已调试OK
#include <reg51.h>
sbit LCD_rs=P1^0;
sbit LCD_rw=P1^1;
sbit LCD_en=P2^5;
unsigned char num;
unsigned char code table[]="I Love ZYN";
unsigned char code table1[]="0123456789";
void Delay(unsigned int i) //注意,若此处用char声明,否则会看不到延时渐进的效果,疑问?
{
unsigned int j,k;
for(j=i;j>0;j--)
for(k=110;k>0;k--);
}
void LCD_Write_com(unsigned char a)
{
LCD_rs=0;
Delay(5);
LCD_rw=0;
Delay(5);
P0=a;
Delay(5);
LCD_en=1;
Delay(5);
LCD_en=0;
Delay(5);
}
void LCD_Write_data(unsigned char b)
{
LCD_rs=1;
Delay(5);
LCD_rw=0;
Delay(5);
P0=b;
LCD_en=1;
Delay(5);
LCD_en=0;
Delay(5);
}
void LCD_init()
{
Delay(15);
LCD_Write_com(0x38);
Delay(5);
LCD_Write_com(0x08);
Delay(5);
LCD_Write_com(0x01);
Delay(5);
LCD_Write_com(0x07); //当写一个字符,整屏显示左移
Delay(5);
LCD_Write_com(0x0e);
Delay(5);
}
void main()
{
LCD_init();
LCD_Write_com(0x80+0x16);//此处0x16也可用十进制数22
Delay(5);
for(num=0;num<10;num++)
{
LCD_Write_data(table[num]);
Delay(3000);
}
LCD_Write_com(0x80+0x59);//此处0x59也可用十进制数89表示
for(num=0;num<10;num++)
{
LCD_Write_data(table1[num]);
Delay(3000);
}
while(1);
}
实际效果如下:
可我用的时候就是显示不出来,于是根据1602的说明书,用了另外一个指令write_com(0x07) //当写一个字符,整屏显示左移
程序如下:
可直接运行,已调试OK
#include <reg51.h>
sbit LCD_rs=P1^0;
sbit LCD_rw=P1^1;
sbit LCD_en=P2^5;
unsigned char num;
unsigned char code table[]="I Love ZYN";
unsigned char code table1[]="0123456789";
void Delay(unsigned int i) //注意,若此处用char声明,否则会看不到延时渐进的效果,疑问?
{
unsigned int j,k;
for(j=i;j>0;j--)
for(k=110;k>0;k--);
}
void LCD_Write_com(unsigned char a)
{
LCD_rs=0;
Delay(5);
LCD_rw=0;
Delay(5);
P0=a;
Delay(5);
LCD_en=1;
Delay(5);
LCD_en=0;
Delay(5);
}
void LCD_Write_data(unsigned char b)
{
LCD_rs=1;
Delay(5);
LCD_rw=0;
Delay(5);
P0=b;
LCD_en=1;
Delay(5);
LCD_en=0;
Delay(5);
}
void LCD_init()
{
Delay(15);
LCD_Write_com(0x38);
Delay(5);
LCD_Write_com(0x08);
Delay(5);
LCD_Write_com(0x01);
Delay(5);
LCD_Write_com(0x07); //当写一个字符,整屏显示左移
Delay(5);
LCD_Write_com(0x0e);
Delay(5);
}
void main()
{
LCD_init();
LCD_Write_com(0x80+0x16);//此处0x16也可用十进制数22
Delay(5);
for(num=0;num<10;num++)
{
LCD_Write_data(table[num]);
Delay(3000);
}
LCD_Write_com(0x80+0x59);//此处0x59也可用十进制数89表示
for(num=0;num<10;num++)
{
LCD_Write_data(table1[num]);
Delay(3000);
}
while(1);
}
实际效果如下:
相关文章推荐
- 51单片机1602液晶显示移动显示
- 单片机-1602液晶基本显示程序
- 单片机的1602液晶显示
- 单片机练习 - 使用1602LCD显示DS18B20的温度值
- 用手机修改单片机时钟(1602显示)
- 分享一个ds12c887的在1602上显示的52单片机的程序
- 51单片机解码GPS 1602显示
- STC单片机之1602显示时钟
- 提供的STC89C52RC单片机GPS在LCD1602液晶只显示welcome to use问题?
- 单片机实验期末考试-使用两个外部中断控制8只LED显示的电路
- 1602液晶显示程序
- 单片机: 热敏电阻測温而且显示到数码管(温度计)
- 1602LED显示(2)
- 扫描枪读条码数据在单片机串口电路的读取与显示
- 温度可调上下限,1602显示
- LCD1602显示单片机与PC机间串口收发数据
- 单片机89C52并行I/O口实现多个LED显示
- C51 1602lcd 显示16进制值——学习小记
- (6)51单片机入门案列-LCD渐入显示
- c语言通过89C51驱动1602液晶显示(入门级别)