原创 1602液晶动态显示字符

2008-7-16 12:09 6397 9 13 分类: MCU/ 嵌入式

做了一下1602的仿真,如下图,“I LIKE MCU! ARM.Craftor”从屏幕右边慢慢移动到左边。


0d42f3d0-88c7-4eba-96b8-54b89e0ebf89.jpg


C代码如下:


#include<reg52.h>
#include<stdio.h>
#define uint unsigned int
#define uchar unsigned char


uchar code tab1[]="I LIKE MCU!";
uchar code tab2[]="ARM.Craftor";
uchar num,len1,len2;


sbit RS="P1"^0;//位申明
sbit RW="P1"^1;
sbit EN="P1"^2;


void delay(uint x)//延时子程序
{
 while(--x);
}


void write_cmd(uchar cmd)//写命令子程序
{
 RS=0;
 RW=0;
 P0=cmd;
 delay(500);
 EN=1;
 delay(500);
 EN=0;


}


void write_dat(uchar dat)//写数据子程序
{
 RW=0;
 RS=1;
 P0=dat;
 delay(500);
 EN=1;
 delay(500);
 EN=0;
}


void init_lcd()//1602液晶初始化
{
 EN=0;
 write_cmd(0x38);//显示模式设置
 write_cmd(0x0f);//显示开关、光标设置
// write_cmd(0x05);//光标及屏幕显示方式设置
 write_cmd(0x01);//清屏
 write_cmd(0x80);//指针初始化
}


void main()
{
 init_lcd();
 len1=sizeof(tab1);
 len2=sizeof(tab2);


 write_cmd(0x80+0x10);//将第一行字符写入缓冲区
 for(num=0;num<len1;num++)
 {
  write_dat(tab1[num]);
  delay(100);
 }
 write_cmd(0x80+0x55);
 for(num=0;num<len2;num++)//将第二行字符写入缓冲区
 {
  write_dat(tab2[num]);
  delay(100);
 }


 for(num=0;num<16;num++)//屏幕整体左移
 {
  write_cmd(0x1f);
  delay(20000);
 }


 while(1);
}

PARTNER CONTENT

文章评论4条评论)

登录后参与讨论

用户132338 2008-7-18 10:18

一楼的,write_dat(tab2[num]);写入的是ASCII码值,所以可以显示。

用户124183 2008-7-17 16:53

我是用循环一个一个显示字符的啊~

用户1384026 2008-7-17 09:36

这是1602的特点

用户151534 2008-7-17 00:05

为什么像 uchar code tab1[]="I LIKE MCU!"; 字母送给P0口,就可以正常在1602上显示出来? 1602不是要根据字符代码跟字符图形找相应字母的嘛? 这点不理解
相关推荐阅读
用户124183 2010-10-04 18:48
[Craftor原创]基于Verilog的I2C总线驱动设计
摘要:此版本的设计中,笔者将协议里对总线的操作细分为4个,即起始(Start)、写(Write)、读(Read)、停止(Stop),并给对应的操作编码:起始(1000)、写(0100)、读(0010)...
用户124183 2010-09-03 10:42
4/8/16/32/64位乘法器的设计
4/8/16/32/64位乘法器的设计,单个时钟周期运算出结果。思路如下:4位乘法器a,b输入,y输出。使用case语句,对于输入a,y输出是b输入的16种可能。单个周期内可以输出结果。8位乘法器a,...
用户124183 2010-09-02 15:32
除法器的设计与仿真(Verilog&VHDL)
最近在做算法,要用到除法。本来想使用除法器的IP核,但发现Xilinx的除法器IP核是流水线的,如果是批量的数做除法,自然是很快,也很方便。而我的算法中需要将前一次的结果算出来之后,再到下一次运算里做...
用户124183 2010-08-06 09:58
Modelsim中添加Xilinx仿真库
不少朋友在刚接触Xilinx的FPGA时,对仿真库的编译和使用不是很了解,而官方的说明也不是很详细,而且看起来有些费劲,这里Craftor给出在Modelsim中编译和使用Xilinx库的详细教程,P...
用户124183 2010-08-02 22:51
周末写了个51单片机软核
为了弥补这段时间的罪过,这个周末决定做宅男,写程序。其实酝酿51软核已经有好几个月时间了,之前是因为在一个地方卡住了,中间停止了。上周五上班的时候突然来了灵感,一下子想通了,呵呵代码不长,1000多行...
用户124183 2010-06-19 15:41
深入研究Modelsim之使用do文件仿真(1)
Modelsim的仿真功能非常强大,本文介绍使用do脚本仿真单个Verilog或者VHDL文件的操作过程,希望对大家有用!以带时钟和复位信号的计数器为例,代码如下:module counter (  ...
EE直播间
更多
我要评论
4
9
关闭 站长推荐上一条 /3 下一条