一个1602循环显示程序

来源:本站
导读:目前正在解读《一个1602循环显示程序》的相关信息,《一个1602循环显示程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《一个1602循环显示程序》的详细说明。
简介:这里给大家分享一个一个1602循环显示程序。

#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit LCD_RS = P2^0;             sbit LCD_RW = P2^1;sbit LCD_EN = P2^2;uchar code dis1[] = {"   WLCOME  TO   "};uchar code dis2[] = {" WWW.RICHMCU.COM "};uchar code dis3[] = {"   OT  EMOCLW   "};uchar code dis4[] = {" MOC.UCMHCIR.WWW "};/*******************************************************************//*                                                                                                                                  *//* 延时子程序                                                                                                                  *//*                                                                                                                                  *//*******************************************************************/void delay(int ms){                              int i;   while(ms--)   {     for(i = 0; i< 250; i++)     {      _nop_();      _nop_();      _nop_();      _nop_();     }   }}/*******************************************************************//*                                                                                                                                  *//*检查LCD忙状态                                                                                                             *//*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。*//*                                                                                                                                  *//*******************************************************************/bit lcd_busy(){                              bit result;    LCD_RS = 0;    LCD_RW = 1;    LCD_EN = 1;    _nop_();    _nop_();    _nop_();    _nop_();     result = (bit)(P0&0x80);    LCD_EN = 0;    return result; }/*******************************************************************//*                                                                                                                                  *//*写指令数据到LCD                                                                                                          *//*RS=L,RW=L,E=高脉冲,D0-D7=指令码。                                                                   *//*                                                                                                                                  *//*******************************************************************/void lcd_wcmd(uchar cmd){                             while(lcd_busy());    LCD_RS = 0;    LCD_RW = 0;    LCD_EN = 0;    _nop_();    _nop_();     P0 = cmd;    _nop_();    _nop_();    _nop_();    _nop_();    LCD_EN = 1;    _nop_();    _nop_();    _nop_();    _nop_();    LCD_EN = 0;  }/*******************************************************************//*                                                                                                                                  *//*写显示数据到LCD                                                                                                          *//*RS=H,RW=L,E=高脉冲,D0-D7=数据。                                                                     *//*                                                                                                                                  *//*******************************************************************/void lcd_wdat(uchar dat) {                             while(lcd_busy());    LCD_RS = 1;    LCD_RW = 0;    LCD_EN = 0;    P0 = dat;    _nop_();    _nop_();    _nop_();    _nop_();    LCD_EN = 1;    _nop_();    _nop_();    _nop_();    _nop_();    LCD_EN = 0; }/*******************************************************************//*                                                                                                                                  *//*  设定显示位置                                                                                                              *//*                                                                                                                                  *//*******************************************************************/void lcd_pos(uchar pos){                             lcd_wcmd(pos|0x80);      //数据指针=80+地址变量}/*******************************************************************//*                                                                                                                                  *//*  LCD初始化设定                                                                                                           *//*                                                                                                                                  *//*******************************************************************/void lcd_init(){                            lcd_wcmd(0x38);          //16*2显示,5*7点阵,8位数据    delay(5);    lcd_wcmd(0x38);             delay(5);    lcd_wcmd(0x38);             delay(5);    lcd_wcmd(0x0c);          //显示开,关光标    delay(5);    lcd_wcmd(0x06);          //移动光标    delay(5);    lcd_wcmd(0x01);          //清除LCD的显示内容    delay(5);}/*******************************************************************//*                                                                                                                                  *//*  闪动子程序                                                                                                                 *//*                                                                                                                                  *//*******************************************************************/void flash(){      delay(600);                    //控制停留时间      lcd_wcmd(0x08);            //关闭显示      delay(200);                    //延时      lcd_wcmd(0x0c);            //开显示      delay(200);                    //延时      lcd_wcmd(0x08);            //关闭显示      delay(200);                    //延时      lcd_wcmd(0x0c);            //开显示      delay(200);}/*******************************************************************//*                                                                                                                                  *//*  主程序                                                                                                                       *//*                                                                                                                                  *//*******************************************************************/main(){    uchar i;    delay(10);    lcd_init();                        // 初始化LCD    while(1)                 {       lcd_wcmd(0x06);           //向右移动光标      lcd_pos(0);                    //设置显示位置为第一行的第1个字符      i = 0;     while(dis1[i] != '')     {                                     //显示字符"   Welcome  TO   "       lcd_wdat(dis1[i]);       i++;       delay(30);                     //控制两字之间显示速度     }      lcd_pos(0x40);               //设置显示位置为第二行第1个字符      i = 0;     while(dis2[i] != '')     {       lcd_wdat(dis2[i]);          //显示字符" WWW.RICHMCU.COM "       i++;       delay(30);                     //控制两字之间显示速度     }      flash();                           //闪动二次      lcd_wcmd(0x01);           //清除LCD的显示内容      delay(200);                    //控制转换时间      lcd_wcmd(0x04);           //向左移动光标      lcd_pos(15);                  //设置显示位置为第一行的第16个字符      i = 0;     while(dis3[i] != '')     {                                     //显示字符"   Welcome  TO   "       lcd_wdat(dis3[i]);       i++;       delay(30);                     //控制两字之间显示速度     }      lcd_pos(0x4F);              //设置显示位置为第二行的第16个字符      i = 0;     while(dis4[i] != '')     {       lcd_wdat(dis4[i]);        //显示字符" WWW.RICHMCU.COM "       i++;       delay(30);                   //控制两字之间显示速度     }      flash();                         //闪动二次      lcd_wcmd(0x01);         //清除LCD的显示内容      delay(200);                 //控制转换时间   }}

提醒:《一个1602循环显示程序》最后刷新时间 2024-03-14 01:02:42,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《一个1602循环显示程序》该内容的真实性请自行鉴别。