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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12619|回復: 14
打印 上一主題 下一主題
收起左側

單片機+LCD12864顯示屏實現曲線圖溫度顯示程序

  [復制鏈接]
跳轉到指定樓層
樓主
LCD12864顯示屏實現曲線圖溫度顯示程序經過調試正常運行,可以給大家作一個參考。是51單片機開發板給的新教程與大家分享。

制作出來的實物圖如下:


電路原理圖如下:



Keil代碼下載:
LCD12864顯示溫度曲線(keil4).rar (136.38 KB, 下載次數: 335)

以下是部份代碼,完整包可以下載查看。溫度傳感器是DS18B20
#include<12864.h>

void delay(uint i)        //延時函數
{
        while(--i);
}
void Read_busy()        //LCD12864忙檢測
{
        RS=0;
        RW=1;
        EN=1;
        LCD_databus=0xFF;
        while(LCD_databus & 0x80);        //判斷最高位,1---busy,0---Nobusy
        EN=0;
}

void write_LCD_command(uchar value)//寫指令
{
        RS=0;
        RW=0;
        delay(40);
        EN=1;
        LCD_databus=value;
        delay(40);
        EN=0;
}

void write_LCD_data(uchar value)//寫數據
{
        RS=1;
        RW=0;
        delay(40);
        EN=1;
        LCD_databus=value;
        delay(40);
        EN=0;
}

void init_LCD()                //初始化LCD
{
        write_LCD_command(0x30);        //8位數,基本指令
        delay(100);
        write_LCD_command(0x30);
        delay(37);
        write_LCD_command(0x0C);        //開顯示,不顯示光標,光標不閃爍
        delay(100);
        write_LCD_command(0x01);        //清屏指令
        delay(100);
        write_LCD_command(0x06);        //沒寫入數據,地址指針加1
}

void Clear_GDRAM()                //清楚GDRAM
{
        uchar x,y;
        for(y=0;y<64;y++)
        {
                for(x=0;x<16;x++)
                {
                        write_LCD_command(0x34);
                        write_LCD_command(y+0x80);        //先送垂直地址
                        write_LCD_command(x+0x80);        //后送水平地址
                        write_LCD_command(0x30);        //基本指令
                        write_LCD_data(0x00);                //寫入數據0
                        write_LCD_data(0x00);
                }
        }
}

uchar ReadByte()        //讀LCD
{
        uchar Read_value;
        Read_busy();
        RS=1;
        RW=1;
        EN=0;
        EN=1;
        Read_value=LCD_databus;        
        EN=0;
        
        return Read_value;
}

void display_BMP(uchar *address)//顯示圖片
{
        uchar i,j;
        for(i=16;i<32;i++)
        {
                write_LCD_command(0x80+i);        //先送垂直地址
                write_LCD_command(0x80);        //再送水平地址
                for(j=0;j<16;j++)
                {
                        write_LCD_data(*address);//寫入數據
                        address++;
                }
        }
        
        for(i=0;i<32;i++)
        {
                write_LCD_command(0x80+i);//先送垂直地址
                write_LCD_command(0x88);        //再送水平地址
                for(j=0;j<16;j++)
                {
                        write_LCD_data(*address);
                        address++;
                }
        }
        
}
/********************************************************
畫點函數說明:增加LCD讀函數,目的是使不打點的地方數據保持
不變:方法是先讀出不打點位置的數據,打完點后將讀到的數據寫
入原來的位置,只有這樣才會顯示打點的曲線。
*********************************************************/
void Draw_dots(uchar x,uchar y,uchar color)
{
        uchar ROW,xlabel,xlabel_bit;
        uchar Read_H,Read_L;
        write_LCD_command(0x34);
        write_LCD_command(0x36);
        xlabel=x>>4;
        xlabel_bit=x & 0x0F;
        
        if(y<32)
        {
                ROW=y;
        }
        else
        {
                ROW=y-32;
                xlabel+=8;
        }
        write_LCD_command(ROW+0x80);
        write_LCD_command(xlabel+0x80);
        ReadByte();        //讀取當前GDRAM數據前要進行一次空讀,接下來就可以讀出數據了
        Read_H=ReadByte();
        Read_L=ReadByte();
        
        write_LCD_command(ROW+0x80);
        write_LCD_command(xlabel+0x80);
        
        if(xlabel_bit<8)
        {
                switch(color)
                {
                        case 0:Read_H &= (~(0x01<<(7-xlabel_bit)));//若變白
                        break;
                        case 1:Read_H |= (0x01<<(7-xlabel_bit));//若涂黑
                        break;
                        case 2:Read_H ^= (0x01<<(7-xlabel_bit));//若反轉
                        break;        
                        default:break;
                }
                write_LCD_data(Read_H);//將數據寫入GDRAM
                write_LCD_data(Read_L);//先寫高位,再寫低位(地址指針順序)
        }
        else
        {
                switch(color)//color設置
                {
                        case 0: Read_L &= (~(0x01<<(15-xlabel_bit)));//若變白
                        break;
                        case 1: Read_L |= (0x01<<(15-xlabel_bit));//若涂黑
                        break;
                        case 2: Read_L ^= (0x01<<(15-xlabel_bit));//若反轉
                        break;
                        default:break;
                }
                write_LCD_data(Read_H);
                write_LCD_data(Read_L);//寫入數據
        }
        
        write_LCD_command(0x30);//回到普通模式
}


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏11 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:35873 發表于 2020-3-24 16:35 | 只看該作者
不錯  多謝分享
回復

使用道具 舉報

板凳
ID:688460 發表于 2020-5-2 10:49 | 只看該作者
不錯的創意,謝謝了!
回復

使用道具 舉報

地板
ID:290464 發表于 2021-1-15 16:08 | 只看該作者
學習了,多謝分享!
回復

使用道具 舉報

5#
ID:390416 發表于 2021-1-15 16:57 | 只看該作者
用OLED更方便,OLED12864是豎向取模的。LCD12864是橫向 需要轉換。有些麻煩
回復

使用道具 舉報

6#
ID:53978 發表于 2021-2-24 16:42 | 只看該作者
哪位大師幫忙把這個改一個max6675的采集程序啊,謝謝了。
回復

使用道具 舉報

7#
ID:883031 發表于 2021-2-25 10:04 | 只看該作者
測了,可用
回復

使用道具 舉報

8#
ID:959867 發表于 2021-8-11 09:54 | 只看該作者
這個開發板是哪家公司的?貌似跟我的普中的不一樣
回復

使用道具 舉報

9#
ID:744744 發表于 2022-5-19 11:20 來自手機 | 只看該作者
直接用h12864更方便,畫點畫線畫框
回復

使用道具 舉報

10#
ID:1051166 發表于 2022-11-9 15:20 | 只看該作者
為啥Proteus打不開
回復

使用道具 舉報

11#
ID:262 發表于 2022-11-9 18:35 | 只看該作者
發表于 2022-11-9 15:20
為啥Proteus打

樓主直接做的成品電路,并沒有做Proteus啊,仿真都是在沒有實物的前提下做的,既然樓主有實物就沒有必要仿真了
回復

使用道具 舉報

12#
ID:237354 發表于 2022-11-9 21:20 | 只看該作者

STM32論壇有LCD12864仿真庫,另http://www.zg4o1577.cn/bbs/dpj-158960-1.html 找找
回復

使用道具 舉報

13#
ID:824664 發表于 2023-3-15 08:07 | 只看該作者
謝謝分享,可以參考示波器了,好好學習。
回復

使用道具 舉報

14#
ID:160725 發表于 2024-7-6 16:04 | 只看該作者
有價值,設計可以用
回復

使用道具 舉報

15#
ID:80273 發表于 2024-10-14 12:09 | 只看該作者
實現功能了,感謝分享
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 香蕉视频在线播放 | 国产精品一级 | 91精品入口蜜桃 | 欧美精品区 | 成人日批视频 | 自拍偷拍第一页 | 视频一区二区在线观看 | 中文字幕欧美一区二区 | 天天干天天玩天天操 | 中文字幕亚洲区一区二 | 97伦理电影 | 免费久久99精品国产婷婷六月 | 精品在线视频播放 | 国产在线精品一区二区 | 久久精品久久久久久 | 小草久久久久久久久爱六 | 国产精品久久久久久妇女 | 国产精品成人av | 欧美一区二区在线观看 | 中文字幕成人 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 国产亚洲久 | 亚洲一区二区精品 | 欧美日韩在线一区 | 国产电影一区二区在线观看 | 精品国产鲁一鲁一区二区张丽 | 欧美三级不卡 | 老牛影视av一区二区在线观看 | a在线免费观看 | 婷婷五月色综合 | 亚洲精品9999久久久久 | 久久综合一区二区 | 日韩一区二区三区在线 | 欧美久久国产 | 亚洲一区二区三区在线视频 | 在线国产一区二区三区 | 欧美视频免费在线 | 免费h视频 | 久久亚洲国产 | 国产精品久久久久久久模特 | 精品国产乱码久久久久久闺蜜 |