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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

LCD1602顯示采集的電壓(簡易電壓表項目)

[復制鏈接]
跳轉到指定樓層
樓主
實際上我們用電阻做一個電壓,用單片機的IO口來采集電壓,并將電壓顯示在LCD顯示屏上,形成了一個簡易的電壓表.
部分代碼如下:(不懂的加我qq280971346)
#include "bsp-lcd1602.h"

void LCD1602_GPIO_Config(void)
{
        RCC_APB2PeriphClockCmd(LCD1602_CLK, ENABLE);
        GPIO_InitTypeDef LCD1602_GPIOStruct;
        LCD1602_GPIOStruct.GPIO_Mode = GPIO_Mode_Out_PP;
        LCD1602_GPIOStruct.GPIO_Speed = GPIO_Speed_10MHz;
        LCD1602_GPIOStruct.GPIO_Pin =  LCD1602_E | LCD1602_RS | LCD1602_RW ;
        GPIO_Init(LCD1602_GPIO_PORT,&LCD1602_GPIOStruct);
        LCD1602_GPIOStruct.GPIO_Mode = GPIO_Mode_Out_OD;
        LCD1602_GPIOStruct.GPIO_Pin =   DB0 |  DB1 | DB2 |DB3 |  DB4 | DB5|
                                                                                                                                        DB6 |  DB7 ;     //設置為開漏輸出
        GPIO_Init(LCD1602_GPIO_PORT,&LCD1602_GPIOStruct);
}

void LCD1602_WaitReady(void) //檢測忙狀態
{
        uint8_t sta;

        GPIOB->ODR =0x00FF;//讓PB0-PB7都輸出高電平
        RSO(0);
        RWO(1);
        EO(1);
        SysTick_Delay_Us(1);
        do{
                sta=GPIO_ReadInputDataBit(LCD1602_GPIO_PORT,GPIO_Pin_7);
                EO(0);
        }while(sta);
        //一直讀PB7的狀態,知道為0時 退出,然后設置EO為低,不選中芯片
}

void LCD1602_WriteCmd(uint8_t cmd) //寫指令
{
        LCD1602_WaitReady();//只有sta為0,才會執行完這個函數,意味著不忙了
        RSO(0);
        RWO(0);
        EO(0);
        SysTick_Delay_Us(1);
        EO(1);
        LCD1602_GPIO_PORT->ODR &= (cmd|0xFF00);
        //自己試驗了一下,cmd=0x02,進行上面這句運算后就是GPIOB->ODR =0x02
        //但是直接GPIOB->ODR =0x02這樣,顯示屏輸出不了字母A,不知道為什么
        EO(0);
        SysTick_Delay_Us(400);
}

void LCD1602_WriteDat(uint8_t dat) //寫數據
{
        LCD1602_WaitReady();
        RSO(1);
        RWO(0);
        SysTick_Delay_Us(30);
        EO(1);
        LCD1602_GPIO_PORT->ODR &=(dat|0xFF00);
        EO(0);
        SysTick_Delay_Us(400);
}

void LCD1602_SetCursor(uint8_t x, uint8_t y)
{
    uint8_t addr;

    if (y == 0)  //由輸入的屏幕坐標計算顯示RAM的地址
        addr = 0x00 + x;  //第一行字符地址從0x00起始
    else
        addr = 0x40 + x;  //第二行字符地址從0x40起始
    LCD1602_WriteCmd(addr|0x80);  //設置RAM地址
}

void LCD1602_ShowStr(uint8_t x, uint8_t y, uint8_t *str, uint8_t len)
{
    LCD1602_SetCursor(x, y);        //設置起始地址
    while (len--)         //連續寫入len個字符數據
    {
        LCD1602_WriteDat(*str++);
    }
}

void LCD1602_ShowChar(uint8_t x, uint8_t y, u8 str)
{
        LCD1602_SetCursor(x, y);        //設置起始地址
        LCD1602_WriteDat(str);
}


void LCD1602_Init(void)
{
          LCD1602_GPIO_Config();   //開啟GPIO口
    LCD1602_WriteCmd(0X38);  //16*2顯示,5*7點陣,8位數據接口
    LCD1602_WriteCmd(0x0C);  //顯示器開,光標關閉
    LCD1602_WriteCmd(0x06);  //文字不動,地址自動+1
    LCD1602_WriteCmd(0x01);  //清屏
}

void LCD1602_Clear(void)
{
        LCD1602_WriteCmd(0x01);  //清屏
}
       
void LCD_ShowNum(uint8_t x, uint8_t y,uint8_t num)
{     

            LCD1602_SetCursor(x, y);        //設置起始地址
    LCD1602_ShowChar(x,y,num+'0');
       
}



b8f80ea9ab930055c77b906d1af6f82.png (102.94 KB, 下載次數: 128)

b8f80ea9ab930055c77b906d1af6f82.png

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:88256 發表于 2021-6-9 18:18 | 只看該作者
也就是1602顯示部分,ADC呢?
回復

使用道具 舉報

板凳
ID:1096922 發表于 2023-10-22 22:40 | 只看該作者
如果需要用到四路ADC,IO口不夠 ,需要把低八位改高八位改如何改。搞了好久沒弄懂
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美1级片 | 免费成人深夜夜行网站 | a级毛毛片| 小日子的在线观看免费第8集 | 免费看a | 精品国产一区二区在线观看 | 国产精品91在线 | 黄片毛片 | 日韩中文字幕视频 | 狠狠干夜夜操 | 日韩免费精品视频 | 日韩欧美色 | 天天插天天插 | 中文字幕在线视频播放 | 成人在线国产 | 欧美专区第一页 | 亚洲欧美另类在线 | 国产一级片在线播放 | 亚洲精品资源 | 欧美性久久| 99热播 | 国产传媒一区二区 | 欧美成人久久 | 日本特黄特色aaa大片免费 | 久久依人| 韩国av在线| 在线播放国产精品 | 亚洲最大黄色 | 色天堂视频 | av每日更新 | 97色伦图片 | 成人av一区二区三区在线观看 | 久久精品毛片 | 精品国产精品三级精品av网址 | 亚洲资源网 | 亚洲第一视频网站 | 官场少妇尤物雪白高耸 | 欧美一区二区视频在线观看 | 日韩在线观看一区 | 欧美日韩免费视频 | 欧美在线免费观看视频 |