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();
        }        
    }

    二、结果

  • 相关阅读:
    <爬虫实例> 8684公交网-太原公交线路信息
    <爬虫> requests模块
    爬虫四 selenium + phantomjs & Headless Chrome
    爬虫三 bs4&xpath&jsonpath
    爬虫二 cookie&正则
    爬虫一 发请求&定制请求&异常处理&配置代理
    抽屉页面设计
    HTML标签及其属性
    Python之路 day3 高阶函数
    Python之路 day3 递归函数
  • 原文地址:https://www.cnblogs.com/wlei5206/p/13042366.html
Copyright © 2011-2022 走看看