• 大小: 106KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-12
  • 语言: 其他
  • 标签:

资源简介

LCD1602时钟可翻页代码,不错,有proteus仿真,程序完整,大家可下载。

资源截图

代码片段和文件信息

//单行或双行显示
//显示的起始位置设定
//屏幕左右移动,动画效果
//给定一个字符数组,如何通过strlen()来判断字符串的长度?这样在for初始化时,也许可以简化程序
//最后的一行,会再次显一遍,又返回到了第一行
//遇到\n 自动换行

//两个外部中断调节,自动翻页的速度。
//暂停键,再次按,开始

//设置一个手动翻页,上下键

//如果全用中断那么中断太多,如何扩展中断?
#include 
#include 
#define uchar unsigned char
#define uint  unsigned int
sbit lcd_RS=P2^5;                                //定义寄存器
sbit lcd_RW=P2^6;                                //定义是否读写
sbit lcd_E=P2^7;                                //定义使能端
sbit lcd_flag=P0^7;                             //定义是否Busy标志
sbit pd=P1^0;
sbit pu=P1^1;
sbit spdd=P1^2;
sbit spdu=P1^3;
uint spd=600;
uchar *app;
//uchar dis1[]=“0123456789012345“;
//uchar dis2[]=“abcdefghijklmnop“;
 uchar code dis[]=“you bought all the books you need thiss emester yet?“;
//uchar dis1[]=“012345“;
bit lcd_busy()                                //判断是否忙碌 RS=Low,RW=High,E=High:读状态

        bit flag;                
        lcd_RS=0;                             //寄存器为Low
        lcd_RW=1;                             //是否读写为High
        lcd_E=1;                              //使能端为High
        if (lcd_flag==1) flag=1;
        else flag=0;
        lcd_E=0;
        return flag;                         //返回标志,判断是否LCD忙碌
}
void lcd_putcommand(uchar command)     //写指令 RS=LowRW=LowE=High:写指令

        while (lcd_busy());            //判断是否忙碌
        lcd_RS=0;                                                                          
        lcd_RW=0;
        lcd_E=0;                       
        P0=command;                   
        lcd_E=1;                      
        lcd_E=0;
}
void lcd_putchar(uchar putchar)      //写数据 RS=HighRW=LowE=High:写数据

        while(lcd_busy());           //判断是否忙碌
        lcd_RS=1;
        lcd_RW=0;
        lcd_E=0;                     
        P0=putchar;                  
        lcd_E=1;                   
        lcd_E=0;
}
void lcd_moveto(uchar xuchar y)                    //显示字符的位置:第x行y列(X=1或2Y=1~16)

        if (x==0) lcd_putcommand(0x80|y-1);     //第一行,并初始化从第y-1个字符开始显示
        if (x==1) lcd_putcommand(0xc0|y-1);     //第二行,并............
}
void lcd_delay(uint ms) //延时函数

        uchar i;
        while(ms--)
        {
                for(i=0;i<250;i++)
                {
                _nop_();_nop_();_nop_();_nop_();
                }
        }
}
void lcd_init(void)
{
        lcd_putcommand(0x38);  lcd_delay(1); //LCD为2行,5×7字
        lcd_putcommand(0x0e);  //打开显示,显示光标,光标不闪
// lcd_putcommand(0x0f);  //....................光标闪烁  
        lcd_delay(1);
        lcd_putcommand(0x06); lcd_delay(1);//每次右移一字符
        
}
void main(void)
{
// IT0=1;  //设置中断触发方式,下降沿
//     IE=0X81;

        //uchar flagmi;
uchar *p;
app=dis;
        //m=strlen(dis);
        lcd_init();                                                                          //初始化
//        lcd_delay(10);
     IT0=1;    //设置中断触发方式,下降沿
IE=0X81;  //中断放在前面,会引起指针变量声明错误
while

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       8313  2008-03-30 11:45  1602L13\1602

     文件       4589  2008-03-30 11:45  1602L13\1602.c

     文件       2102  2008-03-30 11:45  1602L13\1602.hex

     文件         41  2008-03-30 11:45  1602L13\1602.lnp

     文件      25604  2008-03-30 11:45  1602L13\1602.LST

     文件      11012  2008-03-30 11:45  1602L13\1602.M51

     文件       9084  2008-03-30 11:45  1602L13\1602.OBJ

     文件       1237  2008-03-30 11:45  1602L13\1602.Opt

     文件        552  2008-03-30 11:45  1602L13\1602.plg

     文件       2160  2008-03-30 11:18  1602L13\1602.Uv2

    .......      1239  2008-03-30 11:43  1602L13\1602_Opt.Bak

    .......      2160  2008-03-30 11:18  1602L13\1602_Uv2.Bak

     文件      88263  2008-12-25 11:05  1602L13\Last Loaded test.DBK

     文件       6376  2005-03-22 15:22  1602L13\STARTUP.A51

     文件      14048  2008-03-30 11:45  1602L13\STARTUP.LST

     文件        749  2008-03-30 11:45  1602L13\STARTUP.OBJ

     文件      88263  2008-12-25 11:05  1602L13\test.DSN

     文件        768  2008-12-25 11:07  1602L13\test.PWI

     目录          0  2009-05-31 18:47  1602L13

     文件       8313  2008-03-30 11:45  1602L13\1602L13\1602

     文件       4589  2008-03-30 11:45  1602L13\1602L13\1602.c

     文件       2102  2008-03-30 11:45  1602L13\1602L13\1602.hex

     文件         41  2008-03-30 11:45  1602L13\1602L13\1602.lnp

     文件      25604  2008-03-30 11:45  1602L13\1602L13\1602.LST

     文件      11012  2008-03-30 11:45  1602L13\1602L13\1602.M51

     文件       9084  2008-03-30 11:45  1602L13\1602L13\1602.OBJ

     文件       1237  2008-03-30 11:45  1602L13\1602L13\1602.Opt

     文件        552  2008-03-30 11:45  1602L13\1602L13\1602.plg

     文件       2160  2008-03-30 11:18  1602L13\1602L13\1602.Uv2

    .......      1239  2008-03-30 11:43  1602L13\1602L13\1602_Opt.Bak

............此处省略11个文件信息

评论

共有 条评论

相关资源