首页 > 编程语言 > 详细

C语言实现LCD1602循环动态显示字99-0

时间:2020-06-04 13:02:20      阅读:43      评论:0      收藏: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();
    }        
}

二、结果

技术分享图片

C语言实现LCD1602循环动态显示字99-0

原文:https://www.cnblogs.com/wlei5206/p/13042366.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!