实验八_LCM1602液晶显示实验

实验九 LCM1602液晶显示实验
一、实验目的
1. 掌握keil C51软件与protues软件联合仿真调试的方法
2. 掌握LCM1602液晶模块显示西文的原理及使用方法;
3. 掌握用8位数据模式驱动LCM1602液晶的C语言编程方法;
二、实验内容
1. protues设计一LCM1602液晶显示接口电路。要求利用P0LCM1602液晶的数据端,P2.0~P2.2LCM1602液晶的控制信号输入端。P3.0~P3.4口扩展4个功能键K1~K4,电路如下
2. 编写程序,实现字符的静态和动态显示,字符为第一行“姓名全拼”第二行“专业全拼+学号”。液晶的初始化,字符显示程序可参考的程序文件。
3. 编写程序,利用功能键实现字符的纵向滚动和横向滚动等效果显示,主程序静态显示“My Informatiom”,显示字符如下:
1. 姓名全拼
2. 专业全拼+学号
3. MCS-51 EXP8
4. LCD DISPLAY     
三.实验步骤
1.Protues设计1602液晶显示接口电路;
自动点火器2.Keil51中编写液晶显示控制程序,编译通过后,与Protues联合调试;
3.按功能键,观察字符及效果是否正确显示;
四.实验电路
2

五.实验程序
1静态
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="1.wanglin";
uchar code    table1[]="2.tongxin 517";
sbit lcden=P2^2;
sbit lcdrs=P2^0;
uchar num;   
void delay(uint z)网络滤波器
{    uint x,y;
    for(x=z;x>0;x--)
    for(y=110;y>0;y--);
}
void write_com(uchar com)
{    lcdrs=0;
    P0=com;
    delay(5);
    lcden=1;
    delay(5);
    lcden=0;
}
void write_data(uchar date)
{    lcdrs=1;
    P0=date;
    delay(5);
    lcden=1;
    delay(5);
    lcden=0;
}
void init()
{    lcden=0;
    write_com(0x38);
    write_com(0x0c);
    write_com(0x06);
    write_com(0x01);
    write_com(0x80+0x1);
}
void main()
{    init();
    while(1)
    {   
        write_com(0x80);
        for(num=0;num<10;num++)
        {       
            write_data(table[num]);
            delay(300);
        }
        write_com(2);
        write_com(0x80+0x40);
        for(num=0;num<13;num++)
        {
            write_data(table1[num]);
            delay(300);
        }
   
    }
}
1动态
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="1.wanglin";
uchar code    table1[]="2.tongxin 517";
sbit lcden=P2^2;
sbit lcdrs=P2^0;
uchar num;   
void delay(uint z)
{    uint x,y;
    for(x=z;x>0;x--)
    for(y=110;y>0;y--);
}
void write_com(uchar com)
{    lcdrs=0;
    P0=com;
    delay(5);
    lcden=1;
    delay(5);
    lcden=0;
}
void write_data(uchar date)室内垃圾桶
{    lcdrs=1;
    P0=date;
    delay(5);
    lcden=1;
    delay(5);
    lcden=0;
}
void init()
{    lcden=0;
    write_com(0x38);
    write_com(0x0c);
    write_com(0x06);
    write_com(0x01);
    write_com(0x80+0x1);
}
void main()
{    init();
    while(1)
    {   
        write_com(0x80);
        for(num=0;num<10;num++)
        {       
            write_data(table[num]);
            delay(300);
        }
        write_com(2);
        write_com(0x80+0x40);
        for(num=0;num<13;num++)
        {
            write_data(table1[num]);
            delay(300);
        }
        write_com(1);
    }
}
2
#include<reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcden=P2^2;   
sbit lcdrs=P2^0;
sbit lcdrw=P2^1;   
sbit busy=P0^7;
sbit K1=P3^0;
sbit K2=P3^1;
bit flag1,flag2,flag3,flag4;
uchar num,i;
uchar code tab[]="My information!";
uchar code tab1[]="1.wanglin";
uchar code tab2[]="2.tongxin 517";
uchar code tab3[]="3.MCS-51 EXP8";
uchar code tab4[]="4.LCD DISPLAY";
void LCD_check_busy() 
{
  while(1)
  {
  lcden=0;
  lcdrs=0;
  lcdrw=1;
  P0=0xff;
  lcden=1;
  if(busy==0)    break;
  }
lcden=0;
}
void delay(uint x)
{
while(x--);
}
             
void delay_ms(uint x)
{
    int a,b;
    for(a=x;a>0;a--)
    for(b=110;b>0;b--);     
}             
void write_com(uchar com)
{
LCD_check_busy();
lcdrs=0;                   
lcden=0;
lcdrw=0;           
P0=com;
lcden=1;
lcden=0;
}
void write_dat(uchar dat)   
{
LCD_check_busy();
lcdrs=1;         
P0=dat;
delay(5);
lcdrw=0;           
lcden=1;
lcden=0;
}
void lcd_init()       
{
lcden=0;           
write_com(0x38);   
write_com(0x0f);   
write_com(0x06);
}
void  write_str(uchar *str)
{
  while(*str!='\0')
    {
      while(flag3);
        if(flag4)
    {    write_com(0x01);    break; }
        write_dat(*str) ;
        str++;
        delay_ms(50);
    }
}   
void main()
{
    uchar *ptr=tab;
    uchar *p=tab1,*q=tab2,*m=tab3,*n=tab4;
    TMOD=0x00;
    TH0=(65536-20000)/256;
    TL0=(65536-20000)%256;
    TR0=1;
    ET0=1;
    EX0=1;
    EX1=1;
    IT0=IT1=1;
    EA=1;
    PX1=1;
    lcd_init();
    while(1)
    {
        write_com(01);
        write_com(0x80+0x00);
        for(i=0;i<15;i++)
        {
            if(flag1|flag2)    break;
            write_dat(tab[i]);
            delay_ms(100);
        }
        while(flag1==1)
        {
            write_com(0x01);   
            write_com(0x80+0x00);   
            write_str(p);
            if(flag4)
            {    flag4=0;  break;}
            write_com(0xc0+0x00);   
            write_str(q);
            if(flag4)
            {    flag4=0;  break;}
            delay_ms(800);
电解制水机            write_com(0x01);   
            write_com(0x80+0x00);   
            write_str(q);
            if(flag4)
            {    flag4=0;  break;}
            write_com(0xc0+0x00);   
            write_str(m);
            if(flag4)
            {    flag4=0;  break;}
            delay_ms(800);
            write_com(0x01);                       
            write_com(0x80+0x00);                   
            write_str(m);
            if(flag4)
            {flag4=0;  break;}
            write_com(0xc0+0x00);   
            write_str(n);
            if(flag4)
            {flag4=0;  break;}
            delay_ms(800);
            write_com(0x01);   
            write_com(0x80+0x00);   
            write_str(n);纳米导光板
            if(flag4)
            {    flag4=0;  break;}
            write_com(0xc0+0x00);   
            write_str(p);
            if(flag4)
            {    flag4=0;  break;}
            delay_ms(800);
            }
            while(flag2==1)
            {
                write_com(0x01);   
                write_com(0x80+0x00);   
                write_str(p);
                if(flag4)在公交车上释放
                {    flag4=0;  break;}
                write_com(0x80+0x15);   
                write_str(q);
                if(flag4)
                {    flag4=0;  break;}

本文发布于:2024-09-20 20:40:19,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/145983.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:字符   显示   液晶显示   方法
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议