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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3207|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

基于STM32超聲波測(cè)距12864顯示程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:833491 發(fā)表于 2020-11-9 16:47 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 呼呼呼氣 于 2020-11-15 13:07 編輯

這是我基于STM32做出的超聲波測(cè)距,顯示屏是LCD12864
main.c
#include "stm32f10x.h"
#include "led.h"
#include "SysTick.h"
//#include "ultrasonic.h"
#include "usart.h"
#include <stdio.h>
#include "chaoshengbo.h"
#include "lcd.h"
#include "lcd_function.h"
//void key_menu_1(void);
volatile u32 count,Distance0,Distance1;


uint8_t aa[10];//打印AD值的一個(gè)字符串?dāng)?shù)組
char length;



int main(void)
{
                write_com(0x01);
          delay_us(100);
          hcsr04_NVIC();
          Hcsr04Init();
                USART1_Init();
    LCD12864Configuration();        
//                printf("串口初始化成功!\n");
//        
//                Hcsr04Init();        
//                printf("超聲波初始化成功!\n");//測(cè)試程序是否卡在下面兩句上面
//
                Hcsr04GetLength();
//                printf("距離為:%.3f\n",length);
                while ( 1 )
        {


                length = Hcsr04GetLength();   //計(jì)算出實(shí)際電壓值
                        sprintf((char*)aa,"%.2d ",length);         //sprintf的作用是將一個(gè)格式化的字符串輸出到一個(gè)目的字符串中,而printf是將一個(gè)格式化的字符串輸出到屏幕
                        chaoshenbo_LCDdisplay();                                           //顯示一些基本信息
            display_str(3,4,aa);                                 //顯示sprintf函數(shù)的aa字符串?dāng)?shù)組
                        Delay_Ms(100);
        }
        
        
}
//void key_menu_1(void)
//{               
//                        length = Hcsr04GetLength();   //計(jì)算出實(shí)際電壓值
//                        sprintf((char*)aa,"%.2d ",length);         //sprintf的作用是將一個(gè)格式化的字符串輸出到一個(gè)目的字符串中,而printf是將一個(gè)格式化的字符串輸出到屏幕
//                        chaoshenbo_LCDdisplay();                                           //顯示一些基本信息
//            display_str(3,4,aa);                                 //顯示sprintf函數(shù)的aa字符串?dāng)?shù)組
//                        Delay_Ms(100);
//}



#include "chaoshengbo.h"



u16 msHcCount = 0;//ms計(jì)數(shù)

void Hcsr04Init(void)
{  
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;     //生成用于定時(shí)器設(shè)置的結(jié)構(gòu)體
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(HCSR04_CLK, ENABLE);

        //IO初始化
    GPIO_InitStructure.GPIO_Pin =HCSR04_TRIG;       //發(fā)送電平引腳
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽輸出
    GPIO_Init(HCSR04_PORT, &GPIO_InitStructure);
    GPIO_ResetBits(HCSR04_PORT,HCSR04_TRIG);

    GPIO_InitStructure.GPIO_Pin =   HCSR04_ECHO;     //返回電平引腳
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空輸入
    GPIO_Init(HCSR04_PORT, &GPIO_InitStructure);  
                GPIO_ResetBits(HCSR04_PORT,HCSR04_ECHO);       
         
                        //定時(shí)器初始化 使用基本定時(shí)器TIM6
                RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE);   //使能對(duì)應(yīng)RCC時(shí)鐘
                //配置定時(shí)器基礎(chǔ)結(jié)構(gòu)體
                TIM_DeInit(TIM2);
                TIM_TimeBaseStructure.TIM_Period = (1000-1); //設(shè)置在下一個(gè)更新事件裝入活動(dòng)的自動(dòng)重裝載寄存器周期的值         計(jì)數(shù)到1000為1ms
                TIM_TimeBaseStructure.TIM_Prescaler =(72-1); //設(shè)置用來作為TIMx時(shí)鐘頻率除數(shù)的預(yù)分頻值  1M的計(jì)數(shù)頻率 1US計(jì)數(shù)
                TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;//不分頻
                TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上計(jì)數(shù)模式
                TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure); //根據(jù)TIM_TimeBaseInitStruct中指定的參數(shù)初始化TIMx的時(shí)間基數(shù)單位                 
               
                TIM_ClearFlag(TIM6, TIM_FLAG_Update);   //清除更新中斷,免得一打開中斷立即產(chǎn)生中斷
                TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);    //打開定時(shí)器更新中斷
                hcsr04_NVIC();
    TIM_Cmd(TIM6,DISABLE);     
}


//tips:static函數(shù)的作用域僅限于定義它的源文件內(nèi),所以不需要在頭文件里聲明
static void OpenTimerForHc()        //打開定時(shí)器
{
        TIM_SetCounter(TIM6,0);//清除計(jì)數(shù)
        msHcCount = 0;
        TIM_Cmd(TIM6, ENABLE);  //使能TIMx外設(shè)
}

static void CloseTimerForHc()        //關(guān)閉定時(shí)器
{
        TIM_Cmd(TIM6, DISABLE);  //使能TIMx外設(shè)
}


//NVIC配置
void hcsr04_NVIC(void)
{
                        NVIC_InitTypeDef NVIC_InitStructure;
                        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
       
                        NVIC_InitStructure.NVIC_IRQChannel = TIM6_IRQn;             //選擇串口1中斷
                        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //搶占式中斷優(yōu)先級(jí)設(shè)置為1
                        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;         //響應(yīng)式中斷優(yōu)先級(jí)設(shè)置為1
                        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;        //使能中斷
                        NVIC_Init(&NVIC_InitStructure);
}


//定時(shí)器6中斷服務(wù)程序
void TIM6_IRQHandler(void)   //TIM3中斷
{
        if (TIM_GetITStatus(TIM6, TIM_IT_Update) != RESET)  //檢查TIM3更新中斷發(fā)生與否
        {
                TIM_ClearITPendingBit(TIM6, TIM_IT_Update  );  //清除TIMx更新中斷標(biāo)志
                msHcCount++;
        }
}


//獲取定時(shí)器時(shí)間
u32 GetEchoTimer(void)
{
        u32 t = 0;
        t = msHcCount*1000;//得到MS
        t += TIM_GetCounter(TIM6);//得到US
              TIM6->CNT = 0;  //將TIM2計(jì)數(shù)寄存器的計(jì)數(shù)值清零
                                Delay_Ms(50);
        return t;
}

chaoshengbo.c
//一次獲取超聲波測(cè)距數(shù)據(jù) 兩次測(cè)距之間需要相隔一段時(shí)間,隔斷回響信號(hào)
//為了消除余震的影響,取五次數(shù)據(jù)的平均值進(jìn)行加權(quán)濾波。
float Hcsr04GetLength(void)
{
                u32 t = 0;
                int i = 0;
                float lengthTemp = 0;
                float sum = 0;
                while(i!=5)
                {
                   TRIG_Send = 1;      //發(fā)送口高電平輸出
                   Delay_Us(20);
                   TRIG_Send = 0;
                   while(ECHO_Reci == 0);      //等待接收口高電平輸出
                        OpenTimerForHc();        //打開定時(shí)器
                        i = i + 1;
                        while(ECHO_Reci == 1);
                        CloseTimerForHc();        //關(guān)閉定時(shí)器
                        t = GetEchoTimer();        //獲取時(shí)間,分辨率為1US
                        lengthTemp = ((float)t/58.0);//cm
                        sum = lengthTemp + sum ;
               
        }
                lengthTemp = sum/5.0;
                return lengthTemp;
}


/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
** 函數(shù)名稱: Delay_Ms_Ms
** 功能描述: 延時(shí)1MS (可通過仿真來判斷他的準(zhǔn)確度)                       
** 參數(shù)描述:time (ms) 注意time<65535
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
void Delay_Ms(uint16_t time)  //延時(shí)函數(shù)
{
        uint16_t i,j;
        for(i=0;i<time;i++)
                  for(j=0;j<10260;j++);
}
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
** 函數(shù)名稱: Delay_Ms_Us
** 功能描述: 延時(shí)1us (可通過仿真來判斷他的準(zhǔn)確度)
** 參數(shù)描述:time (us) 注意time<65535                                 
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
void Delay_Us(uint16_t time)  //延時(shí)函數(shù)
{
        uint16_t i,j;
        for(i=0;i<time;i++)
                  for(j=0;j<9;j++);
}
lcd.c
#include "lcd.h"
//******************************************************************
//us函數(shù)
void delay_us(uint16_t us)
{
        uint16_t i;
        for(i=0;i<us;i++)
         for(i=0;i<1000;i++)
        {;}
}


//******************************************************************
//ms函數(shù)
void delay_ms(uint16_t ms)
{
        uint16_t i,j,k;
        for(k=0;k<ms;k++)
         for(i=0;i<1000;i++)
          for(j=0;j<50;j++)
        {;}
}


//******************************************************************
//忙標(biāo)志位檢測(cè)函數(shù)
void Check_Busy(void)
{
        RS=0;
        RW=1;
        EN=1;
        GPIOA->ODR|=0xff;
        while((GPIOA->ODR&0x80)==0x80);
        EN=0;
}


//******************************************************************
//寫命令函數(shù)
void write_com(unsigned char  com)
{
        //        Check_Busy();
          delay_ms(1);
                RS=0;delay_us(10);
                RW=0;delay_us(10);
                EN=1;delay_us(10);
         GPIO_Write(GPIOA,com); delay_ms(1);
                //DataPort->ODR|=(com<<8); delay_ms(100);
                EN=0;delay_us(100);
}


//******************************************************************
//寫數(shù)據(jù)函數(shù)
void write_data(unsigned char  ddata)
{
        //        Check_Busy();
          delay_ms(1);
                RS=1;delay_us(10);
                RW=0;delay_us(10);
                EN=1;delay_us(10);
           GPIO_Write(GPIOA,ddata);delay_ms(1);
        //        DataPort->ODR|=(ddata<<8);delay_ms(100);
                   EN=0;delay_us(10);
}


//******************************************************************
//顯示位置換算函數(shù)
void LCD_set_xy(unsigned char x,unsigned int y)
{
        unsigned char addr;
        switch(x)
        {
                case 1:        addr=0x80+y;break;
                case 2:        addr=0x90+y;break;
                case 3:        addr=0x88+y;break;
                case 4:        addr=0x98+y;break;
                default : break;
        }
        write_com(addr);//寫命令
}


//******************************************************************
//顯示初始化函數(shù)
void LCD_init(void)
{
        write_com(0x34);
        delay_us(10);
        write_com(0x30);
        delay_us(10);
        write_com(0x0c);
        delay_us(10);
        write_com(0x01);
        delay_us(10);
}


////////////////////////////////////////////
void LCD12864Configuration(void)//IO初始化
{
          GPIO_InitTypeDef    GPIO;   
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOA, ENABLE);
   
    GPIO.GPIO_Pin   = RS_Pin | RW_Pin | EN_Pin;
    GPIO.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO.GPIO_Mode  = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOC, &GPIO);
   
        //八位數(shù)據(jù)口, PA0 ~ PA7
        GPIO.GPIO_Pin        = 0xFF;
        GPIO.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO.GPIO_Mode  = GPIO_Mode_Out_PP;
        GPIO_Init(GPIOA, &GPIO);
       
        LCD_init();
}



lcd_function.c
#include "lcd_function.h"
#include "usart.h"

extern uint16_t aa[10];
//******************************************************************
//顯示漢字、字符函數(shù)
void display_str(unsigned char x,unsigned char y,unsigned char *str)
{
        LCD_set_xy(x,y);
        while(*str)
        {
                write_data(*str);
                str++;
                delay_ms(5);
        }
}

//顯示函數(shù)
void LCD_Wmessage(uint8_t* message,uint8_t address)
{
        write_com(address);//要顯示的位置
        while(*message>0)//判斷內(nèi)容有沒有發(fā)完
        {
                write_data(*message); //內(nèi)核還是發(fā)字節(jié)函數(shù)
                message++; //慢慢發(fā)完一串指針
        }
}

/******************************************************************************/
// 函數(shù)名稱:Lcd12864_Brush_Screen_Dark
// 輸入?yún)?shù):無
// 輸出參數(shù):無
// 函數(shù)功能:全部寫0(128*64個(gè)點(diǎn))
//上半屏是32個(gè)行地址(00H-31H)x 8個(gè)列地址(00H-07H)
//上半屏是32個(gè)行地址(00H-31H)x 8個(gè)列地址(08H-0FH)
/******************************************************************************/
void Lcd12864_Brush_Screen_Dark(void){
        uint8_t col,cnt;
        uint16_t num=0;

        for(col=0;col<32;col++){
                write_com(0x34);//寫命令(擴(kuò)充指令集)
                write_com(0x80+col);//列地址
                write_com(0x80);        //行地址,上半屏,即第一行地址0X80
                write_com(0x30);//寫命令(基本指令集)
                for(cnt=0;cnt<16;cnt++)       
                        write_data(0x00);//讀取數(shù)據(jù)寫入LCD
                num+=16;
        }
        for(col=0;col<32;col++){
                write_com(0x34);//寫命令
                write_com(0x80+col);//列地址
                write_com(0x80+8);        //行地址,下半屏,即第三行地址0X88
                write_com(0x30);
                for(cnt=0;cnt<16;cnt++)       
                        write_data(0x00);//讀取數(shù)據(jù)寫入LCD
                num+=16;
        }
        write_com(0x36);        //擴(kuò)充功能設(shè)定
        write_com(0x30);//基本功能設(shè)定
}

/******************************************************************************/
//128*64點(diǎn)陣圖形數(shù)據(jù)
/******************************************************************************/
  const uint32_t  imageTable[]={
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x01,0xFC,0x00,0xFF,0xFF,0x80,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x07,0xFF,0x8F,0xFF,0x7F,0xF0,0x7F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x0F,0xFF,0xFF,0x80,0x00,0x7F,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x1F,0xFF,0xFC,0x00,0x00,0x0F,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x3F,0xFF,0xE0,0x00,0x00,0x03,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x3F,0xFF,0x80,0x00,0x00,0x00,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x03,0x00,0x00,
        0x7F,0xFF,0x00,0x00,0x00,0x00,0x3F,0xFF,0x80,0x00,0x00,0x00,0x00,0x03,0x00,0x00,
        0x7F,0xFE,0x00,0x00,0x00,0x00,0x1F,0xFF,0x80,0x00,0x00,0x00,0x00,0x03,0x00,0x00,
        0x7F,0xF8,0x00,0x00,0x00,0x00,0x0F,0xFF,0x80,0x00,0x00,0x00,0x00,0x03,0x00,0x00,
        0x7F,0xF8,0x00,0x00,0x00,0x00,0x07,0xFF,0x83,0xF8,0x3F,0x0F,0xE0,0xFF,0x0F,0xC0,
        0x7F,0xE0,0x00,0x00,0x00,0x00,0x03,0xFF,0x83,0xFC,0x7F,0x8F,0xF1,0xFF,0x1F,0xE0,
        0x3F,0xE0,0x00,0x00,0x00,0x00,0x01,0xFF,0x83,0x8C,0x01,0x8E,0x73,0x03,0x18,0x60,
        0x3F,0xC0,0x00,0x00,0x00,0x00,0x01,0xFE,0x03,0x0C,0x01,0x8C,0x33,0x03,0x18,0x60,
        0x3F,0xC0,0x00,0x00,0x00,0x00,0x01,0xFE,0x03,0x0C,0x01,0x8C,0x33,0x03,0x18,0x60,
        0x3F,0x80,0x0F,0x00,0x00,0x1C,0x00,0xFE,0x03,0x0C,0x3F,0x8C,0x33,0x03,0x0F,0xE0,
        0x1F,0x80,0x3F,0x80,0x00,0x7E,0x00,0xFC,0x03,0x0C,0x7F,0x8C,0x33,0x03,0x1F,0xE0,
        0x0F,0x80,0xFF,0xC0,0x00,0xFF,0x80,0xF8,0x03,0x0C,0xE1,0x8C,0x33,0x03,0x38,0x60,
        0x07,0x01,0xFF,0xC0,0x00,0xFF,0xC0,0x70,0x03,0x0C,0xE1,0x8C,0x33,0x03,0x38,0xE0,
        0x03,0x03,0xFF,0xE0,0x01,0xFF,0xE0,0x60,0x03,0xFC,0xFF,0x8C,0x31,0xFF,0x3D,0xE0,
        0x03,0x03,0xFF,0xE0,0x00,0xFF,0xE0,0x60,0x03,0xFC,0x7F,0x8C,0x30,0xFF,0x1F,0xE0,
        0x03,0x07,0xF1,0xC0,0x00,0xF7,0xF0,0x60,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x03,0x07,0xFF,0xC0,0x00,0xFF,0xF8,0x60,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x03,0x0F,0xFF,0xC0,0x00,0xFF,0xF8,0x60,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x03,0x0F,0xFF,0x80,0x00,0xFF,0xF8,0x60,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x03,0x0F,0xFF,0x81,0xC0,0x7F,0xF8,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x03,0x0F,0xFF,0x83,0xF8,0x7F,0xF8,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x03,0x8F,0xFF,0x07,0xF8,0x7F,0xF8,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x01,0x87,0xFF,0x07,0xF8,0x3F,0xF8,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x01,0x87,0xFE,0x03,0xF0,0x1F,0xF1,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x01,0xC3,0xFC,0x00,0x80,0x0F,0xE1,0x81,0x80,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
        0x00,0xC0,0xE0,0x00,0x00,0x07,0xC1,0x81,0x80,0x0E,0x00,0x00,0x10,0x00,0x3F,0xF0,
        0x00,0x60,0x00,0x00,0x00,0x00,0x03,0x03,0x30,0x06,0x0C,0x00,0x10,0x00,0x00,0x60,
        0x00,0x70,0x00,0x00,0x00,0x00,0x07,0x06,0x18,0x02,0x07,0x00,0x10,0x00,0x00,0x40,
        0x00,0x30,0x00,0x00,0x00,0x00,0x0E,0x0F,0xFC,0x00,0x03,0x01,0xFF,0x00,0x00,0x80,
        0x00,0x1C,0x00,0x00,0x00,0x00,0x1C,0x00,0x80,0x00,0x03,0x09,0x11,0x00,0x01,0x00,
        0x00,0x0E,0x00,0x00,0x00,0x00,0x38,0x01,0x00,0x1F,0x40,0x11,0x11,0x00,0x01,0x00,
        0x00,0x07,0x80,0x00,0x00,0x01,0xF0,0x7F,0xFE,0x02,0x20,0x21,0xFF,0x00,0xFF,0xFE,
        0x00,0x01,0xF0,0x00,0x00,0x07,0xC0,0x06,0x10,0x02,0x10,0x41,0x11,0x00,0x01,0x00,
        0x00,0x00,0xFF,0xC0,0x00,0x7F,0x80,0x0C,0x08,0x02,0x08,0x81,0x11,0x00,0x01,0x00,
        0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x80,0x1B,0xE4,0x02,0x45,0x01,0xFF,0x00,0x01,0x00,
        0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x80,0x70,0x03,0x82,0x82,0x00,0x10,0x00,0x01,0x00,
        0x00,0x00,0xFF,0xE0,0x01,0xFF,0x80,0xC0,0x00,0x03,0x85,0x00,0x10,0x10,0x09,0x00,
        0x00,0x00,0xFF,0xE0,0x01,0xFF,0x80,0x07,0xF8,0x03,0x08,0x80,0x10,0x10,0x05,0x00,
        0x00,0x00,0x7F,0xE0,0x01,0xFF,0x80,0x00,0x00,0x03,0x10,0x40,0x10,0x10,0x03,0x00,
        0x00,0x00,0x6F,0xC0,0x01,0xFD,0x80,0x00,0x00,0x03,0x20,0x20,0x1F,0xF0,0x01,0x00,
        0x00,0x00,0x6F,0xC0,0x01,0xFD,0x80,0x3F,0xFE,0x02,0x40,0x1C,0x00,0x00,0x00,0x00,
        0x00,0x00,0x60,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x60,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0xD8,0x00,0x00,0x00,0x00,
        0x00,0x00,0x70,0x00,0x00,0x03,0x00,0x00,0x00,0x0C,0x00,0xD8,0x00,0x00,0x00,0x00,
        0x00,0x00,0x30,0x00,0x00,0x07,0x00,0x00,0x00,0x0C,0x00,0xD8,0x00,0x00,0x00,0x00,
        0x00,0x00,0x3C,0x00,0x00,0x0E,0x1F,0x9F,0x8F,0xDC,0x78,0xD9,0x80,0xF8,0xF1,0xFF,
        0x00,0x00,0x3F,0x00,0x00,0x5E,0x1F,0x9F,0x8F,0xDE,0xFC,0xDB,0x81,0xFD,0xFD,0xFF,
        0x00,0x00,0x1F,0x80,0x00,0x7E,0x19,0x99,0x8C,0xCC,0xCC,0xDF,0x01,0x8D,0x8D,0x99,
        0x00,0x00,0x1F,0xFF,0xDF,0xFC,0x19,0x99,0x8C,0xCC,0x0C,0xDE,0x01,0x81,0x8D,0x99,
        0x00,0x00,0x1F,0xFF,0xFF,0xFC,0x19,0x99,0x8C,0xCC,0xFC,0xDF,0x01,0x81,0x8D,0x99,
        0x00,0x00,0x0F,0xF4,0x07,0xFC,0x19,0x99,0x8C,0xCC,0xCC,0xDB,0x01,0x8D,0x8D,0x99,
        0x00,0x00,0x0F,0xF0,0x03,0xF8,0x19,0x99,0x8C,0xCC,0xCC,0xD9,0x99,0x8D,0x8D,0x99,
        0x00,0x00,0x03,0xF0,0x01,0xF0,0x1F,0x9F,0x8F,0xCE,0xFC,0xD9,0x98,0xFC,0xF9,0x99,
        0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00};


/******************************************************************************/
// 函數(shù)名稱:Lcd12864_Show_Image
// 輸入?yún)?shù):無
// 輸出參數(shù):無
// 函數(shù)功能:顯示圖片
/******************************************************************************/
void Lcd12864_Show_Image(void){
//        uint8_t x,y,i;
//        uint16_t tmp=0;
//        for(i=0;i<9;){                //分兩屏,上半屏和下半屏,因?yàn)槠鹗嫉刂凡煌枰珠_
//                for(x=0;x<32;x++){                                //32行
//                        write_com(0x34);
//                        write_com(0x80+x);//列地址
//                        write_com(0x80+i);        //行地址,下半屏,即第三行地址0X88
//                        write_com(0x30);               
//                        for(y=0;y<16;y++)       
//                        {
//                                write_data(imageTable[tmp+y]);//讀取數(shù)據(jù)寫入LCD
//                        tmp+=16;       
//                        }                               
//                }
//                i+=8;
//        }

//        write_com(0x36);        //擴(kuò)充功能設(shè)定
//        write_com(0x30);
        uint8_t a,b,c;
        uint16_t  temp;

                a=0;
                for(b=0;b<32;b++)  //給LCD的上或者下半屏的32行寫數(shù)據(jù)
                {
                        write_com(0x34);//寫指令,擴(kuò)充指令集
                        write_com(0x80+a);//將屏幕的首地址0x80,確定行地址,從第一行開始
                        write_com(0x80+b);//確定列地址
                        write_com(0x34);//寫指令,基本指令集
                        for(c=0;c<16;c++)//將數(shù)組的里的8位數(shù)據(jù)寫入128/8=16每行包含的16個(gè)數(shù)據(jù)位里
                        {
                                write_data(imageTable[temp+c]);//                               
                        }
                        temp+=16;//temp+=16 等價(jià)于temp=temp+16
                }
               
                a=8;//a+=b 等價(jià)于a=a+b
}


void chaoshenbo_LCDdisplay(void)//顯示AD電壓
{
                display_str(1,0,"  超聲波采集界面");               
                display_str(3,0,"距離值:");
                display_str(3,7,"CM");       
}


//******************************************************************
////顯示數(shù)字函數(shù)
//void display_data(unsigned char x,unsigned char  y, unsigned int dat)
//{
//  LCD_set_xy(x,y);
//        delay_ms(1);
//        write_data(dat+0x30);
//        delay_ms(1);
////        write_data(dat/1000+0x30);
////        delay_ms(1);
////        write_data(dat%1000/100+0x30);
////        delay_ms(1);
////        write_data(dat%100/10+0x30);
////        delay_ms(1);
////        write_data(dat%10+0x30);
////  delay_ms(1);
////        write_data(' ');
////        delay_ms(1);
//}

//void ADC_LCDdisplay(void)//顯示AD電壓
//{
//  
//       
//  dianya = (ADC_ConverValue/4096*3.3)*1000;//計(jì)算出AD轉(zhuǎn)換后的電壓值乘以1000方便取位
//       
////        disbuff[1]= dianya / 1000;                            //個(gè)位  
////  disbuff[2] = (dianya % 1000) / 100;                    //小數(shù)一位
////  disbuff[3] = ((dianya % 1000) % 100) / 10;             //小數(shù)二位
////        disbuff[4]= ((dianya % 1000) % 100) % 10;             //小數(shù)三位
//}


超聲波測(cè)距LCD12864實(shí)現(xiàn)功能.7z

190.3 KB, 下載次數(shù): 75, 下載積分: 黑幣 -5

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

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2020-11-9 21:24 | 只看該作者
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報(bào)

板凳
ID:514981 發(fā)表于 2021-4-16 11:22 | 只看該作者
有原理圖嗎

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 婷婷久久久久 | 日干夜操| 亚洲国产成人精品久久 | 国产色爽 | 国产成人精品区一区二区不卡 | 男女下面一进一出网站 | 91佛爷在线观看 | 精品欧美一区二区三区精品久久 | 日韩欧美在线视频播放 | 日韩欧美亚洲综合 | 毛片a区| 日本在线综合 | 五月综合激情婷婷 | 欧美性a视频 | 免费午夜电影 | 欧美日韩精品一区二区天天拍 | 亚洲第一av | 国产精品99视频 | 激情一区二区三区 | 日本激情视频在线播放 | 亚洲三级在线观看 | 视频在线一区二区 | 亚洲精品18| 亚洲一区二区三区 | 日本天天操 | 青青草亚洲| 国产成人网 | 草久久久| 日韩国产精品一区二区三区 | 日本精品在线一区 | 人碰人操 | 老司机深夜福利网站 | av网站免费看 | 亚洲精品一区在线 | 久久久久久久av | 成人精品在线视频 | 久久久久久久一区 | 91久久精品国产91久久性色tv | 亚洲精品国产电影 | 欧美黄在线观看 | 日韩久草 |