久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9364|回復: 1
收起左側

LCD1602模塊化編程—動態實時顯示一個通過按鍵控制的變量,

[復制鏈接]
ID:297159 發表于 2018-7-3 00:13 | 顯示全部樓層 |閱讀模式
①主程序:/*12MHZ晶振,LCD1602實時動態顯示一個變量(num)二位數,通過一個按鍵循環自加,當加到99,就重新回到1*/
#include<LCD.h>
uchar a,b;
uchar dat[2]; //要在【】中加數組長度,不然會出現問題!!!!!!!!!!
uint num;
sbit s1=P3^0; //獨立按鍵定義
void delayms(uint z);//聲明毫秒級延時函數
void Keyscan();// 聲明按鍵函數
void main()
{
   num=50;//定義并初始化num=50。
   LCD_init();        //初始化LCD602
  while(1)
  {
    Keyscan();       
        a=num/10;  //十位
        b=num%10;  //個位

        dat[0]=a+0x30;        //數組第一位賦值十位。
        dat[1]=b+0x30;        //數組第二位賦值個位。
        Write_Cmd(0x80 | 0x00);//設置顯示地址0x00,第一行從第一個字符開始顯示 。
        /*接下來依次從首地址開始顯示uchar類型字符*/
        Write_Dat(dat[0]);
        Write_Dat(dat[1]);

        delayms(10);          //延時5ms,防止屏幕閃爍
  }
}

/*定義毫秒級延時函數*/
void delayms(uint z)//毫秒級延時程序
   {   uint i,j;  
     for(i=z;i--;i>0)   
            for(j=114;j--;j>0);
   }
/*定義按鍵函數函數*/
void keyscan()
         {
        if(s1==0)
        delayms(5);        //按鍵消抖
                if(s1==0)
                {
                if(num<99)
                num=num+1;
                else
                num=0;
                }
                while(!s1);         //按鍵松手檢測,若為0,則在此等待
         }
②LCD1602頭文件:

#ifndef _LCD_H_
#define _LCD_H_

#include"reg52.h"
#include"intrins.h"
#define    uchar unsigned char
#define           uint  unsigned int
//uchar x,y,*str,dat,cmd;
void  Read_Busy();  //判斷液晶忙?
void  Write_Cmd(uchar cmd); //寫入一字節指令
void  Write_Dat(uchar dat);        //寫入一字節數據
void  LCD_init();  //lcd初始化
void  LCD1602_Dis_Str(uchar x, uchar y, uchar *str);        //顯示字符串
void  LCD1602_Dis_OneChar(uchar x, uchar y,uchar dat); //顯示一個字符
#endif //定義結束
LCD602頭文件對應的.c程序:

#include<LCD.h>
#include<reg52.h>
sbit RS = P3^5;
sbit RW = P3^6;
sbit EN = P3^4;
//#define   uchar unsigned char
//#define          uint  unsigned int  
//判斷液晶忙,如果忙則等待
void Read_Busy()
{
uchar busy;
P0=0xff; //p0置1
RS=0;          //數據,命令選擇端為0,表示數據
RW=1;    //寫
do
{
EN=1;
busy=P0;
EN=0;
}
while(busy&0x80); //最高位為1,則為忙。
}

//寫LCD1602命令一個字節
void Write_Cmd(uchar cmd)
{
        Read_Busy();//判斷忙
        RS = 0;
        RW = 0;
        P0 = cmd;
        EN = 1;
        EN = 0;
}

//寫一個字節數據,一個字符uchar類型
void Write_Dat(uchar dat)
{
        Read_Busy();
        RS = 1;
        RW = 0;
        P0 = dat;
        EN = 1;
        EN = 0;
}
//lcd1602初始化
void LCD_init()
   {
        Write_Cmd(0x38);//第一步:顯示模式設置。設置16*2顯示        0011 1000
        Write_Cmd(0x0f);//第二步:顯示開/關光標設置 0000  1 D C B  D=1:開顯示 C=1:顯示光標反之。B=1:光標閃爍B=0;光標不閃爍
        Write_Cmd(0x01);//第三步:清屏指令 ,以免之前殘留在LCD上的數據

        Write_Cmd(0x06);//第四步:0000 01NS 。N=1;地址指針加1,光標加1.地址指針移位命令,讀或寫一個字符后,地址指針加1,且光標加1
        Write_Cmd(0x80 | 0x00);//第五步:設置顯示起始地址80H+(00H~0F/ 40H~4FH)。
   }

//x:要顯示的橫坐標取值0-40,y:要顯示的行坐標取值0-1(0為第一行,1為第二行) *str:需要顯示的字符串
void LCD1602_Dis_Str(uchar x, uchar y, uchar *str)
{
        if(y)
         x |= 0x40;
        x |= 0x80;
        Write_Cmd(x);
        while(*str != '\0')
        {
                Write_Dat(*str++);
        }
}
  //x:要顯示的橫坐標取值0-40,y:要顯示的行坐標取值0-1(0為第一行,1為第二行) dat:需要顯示的數據以ASCLL形式顯示
void LCD1602_Dis_OneChar(uchar x, uchar y,uchar dat)
{
        if(y)
                x |= 0x40;
        x |= 0x80;
        Write_Cmd(x);
        Write_Dat(dat);               
}

       這是動態顯示的基礎程序,采用模塊化編程,以后可以加更多內容,歡迎提出指正和進行交流。

仿真圖

仿真圖

評分

參與人數 3黑幣 +88 收起 理由
不小心 + 30 很給力!
ZONE-9 + 8 贊一個!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:507959 發表于 2019-4-11 16:56 | 顯示全部樓層
謝謝,樓主分享
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久国产一区二区三区 | 国产成人99久久亚洲综合精品 | 大久 | 伊人精品 | 福利视频网站 | 精品国产18久久久久久二百 | 欧美综合在线观看 | 国产高清在线观看 | 青青99| 国产色片 | 最新黄色毛片 | 日本久久视频 | 久久国产精品一区二区三区 | 亚洲国产精品一区二区久久 | 国产毛片久久久 | 久久久综合久久 | 国产精品久久久久久久久免费软件 | 天天射中文 | 一区二区三区在线 | 三级视频网站 | 一区在线免费视频 | 91久久久久久久久久久久久 | 国产一区二区在线免费观看 | 国产91网址 | 操人视频在线观看 | 女同久久另类99精品国产 | julia中文字幕久久一区二区 | heyzo在线| 久久久国产一区二区三区四区小说 | 91视频一88av | 懂色tv| 日韩免费 | 毛片免费观看视频 | 国产在线看片 | 免费一级片 | 成人一区精品 | 午夜免费观看体验区 | 人人爽人人爽人人片av | 国产欧美在线 | 视频在线一区二区 | 天天干天天爱天天 |