zoukankan      html  css  js  c++  java
  • C语言实现LCD1602循环动态显示字99-0

    一、源程序

    #include "reg52.h"    //此文件中定义了单片机的一些特殊功能寄存器
    
    #define uint unsigned int    //定义常用数据类型替代码
    #define uchar unsigned char
    #define dat P0                        //定义LCD1602的数据口为P0
    
    sbit rs=P1^4;                        //定义RS口为P14
    sbit rw=P1^5;                        //定义RW口为P15
    sbit e=P1^6;                        //定义E口为P16
    
    uchar busy;                         //1602判忙标志
    uchar table0[16]={"0123456789"};
    uchar table1[16]={"Begin:"};
    
    uint i=0;
    uint j=0;
    
    uint temp;
    
    void delay1s(void)
    {
    
            unsigned char h,i,j,k;
    
             for(h=5;h>0;h--)
    
             for(i=4;i>0;i--)
    
             for(j=116;j>0;j--)
    
             for(k=214;k>0;k--);
    
    }
    
    void delay1ms(void)                //延时程序
    {
        uchar i,j;
        for(i=0;i<10;i++)
        for(j=0;j<20;j++); 
    }
    
    void busy_1602(void)                //查询忙碌标志信号程序
    {
        do
        {
            e=0;
            rw=1;
            rs=0;
            e=1;
            busy=dat;
            e=0;    
            delay1ms();
        } while(busy&&0x10==1);
    }
    
    void com_1602(uchar a)                //写指令到LCM程序
    {
           busy_1602();
           e=0;
           rw=0;
           rs=0;
           e=1;
           dat=a;
           e=0;
    }
    
    void dat_1602(uchar a)                //写数据到LCM程序
    {
           busy_1602();
           e=0;
           rw=0;
           rs=1;
           e=1;
           dat=a;
           e=0;
    }
    
    void int_1602(void)                    //启动LCM程序
    {
           com_1602(0x38); 
           com_1602(0x0c);
           com_1602(0x06);
    }
    
    void display()            
    {
        int k;
        uchar rev_data[16]={"-99 Countdown!- "};
        com_1602(0x80);//第一行
        for(i=0;i<16;i++)                
        {
            dat_1602(rev_data[i]);
        } 
        com_1602(0xc0);    //发送数据第二行
        for(i=0;i<6;i++)                
        {
            dat_1602(table1[i]);
        }
        com_1602(0xc6);
        k=99;
        while(k>=0)
        {
            dat_1602(table0[k/10]);
            dat_1602(table0[k%10]);
            delay1s();
            k--;
            com_1602(0xc6);
        }
    }
    
    /*******************************************************************************
    * 函 数 名       : main
    * 函数功能         : 主函数
    * 输    入       : 无
    * 输    出         : 无
    *******************************************************************************/
    void main()
    {    
        while(1)
        {
            int_1602();
            display();
        }        
    }

    二、结果

  • 相关阅读:
    jquery实现密码框显示提示文字
    Jquery显示和隐藏的4种简单方法
    JavaScript创建对象的写法
    jQuery实现用户注册的表单验证
    Jquery操作Cookie取值错误的解决方法
    java泛型笔记一
    数字电路与系统-组合逻辑电路的竞争冒险现象1
    数字电路与系统-组合逻辑电路分析和设计
    数字电路与系统-逻辑函数的化简
    数字电路与系统-逻辑函数及其描述方法
  • 原文地址:https://www.cnblogs.com/wlei5206/p/13042366.html
Copyright © 2011-2022 走看看