基于stm32mini開(kāi)發(fā)板 12864教學(xué)工程 親測(cè)有效
圖形液晶顯示
HJ12864M-1
基于st7290
顯示一個(gè)中文菜單,通過(guò)菜單控制D2,D4,D8的顯示
單片機(jī)源程序如下:
- /*************************************************
- 函數(shù)名:main.c
- 功 能 :12864液晶模塊演示范例——基于查詢忙狀態(tài)實(shí)現(xiàn)
- 時(shí) 間 :2016/03/08
- 作 者 :沈紅衛(wèi),紹興文理學(xué)院 機(jī)械與電氣工程學(xué)院
- *************************************************/
- #include <stm32f10x.h>
- #include "delay.h" //延時(shí)函數(shù)的頭文件
- #include "st12864.h" //液晶模塊接口函數(shù)的頭文件
- /*-----------------待顯示的字符串------------------------*/
- //由于KEIL對(duì)中文支持的BUG,導(dǎo)致擴(kuò)展ASCII碼不能正確被識(shí)別,所以直接使用內(nèi)碼
- //使用內(nèi)碼查詢軟件可以查詢每個(gè)漢字的內(nèi)碼
- //例如:你好的內(nèi)碼為0xC4,0xE3,0xBA,0xC3
- //以下為“你好串口實(shí)”的內(nèi)碼
- u8 Table0[]={0xC4,0xE3,0xBA,0xC3,0xB4,0xAE,0xBF,0xDA,0xCA,0xB5,0x20,0x20,0x20,0x20,0x20,0x20};
- //u8 Table0[]={0xC4,0xE3,0xBA,0xC3,0xB4,0xAE,0xBF,0xDA,0xCA,0xB5};
- u8 Table1[]={0xC4,0xE3,0xBA,0xC3,0xB4,0xAE,0xBF,0xDA,0xCA,0xB5,0x11,0x20,0x20,0x20,0x20,0x20};
- u8 Table2[]={0xC4,0xE3,0xBA,0xC3,0xB4,0xAE,0xBF,0xDA,0xCA,0xB5,0x20,0x20,0x20,0x20,0x20,0x20};
- u8 Table3[]={0xC4,0xE3,0xBA,0xC3,0xB4,0xAE,0xBF,0xDA,0xCA,0xB5,0x20,0x20,0x20,0x20,0x20,0x20};
- u8 Table4[]={0xC4,0xE3,0xBA,0xC3,0xB4,0xAE,0xBF,0xDA,0xCA,0xB5,0x20,0x20,0x20,0x20,0x20,0x20};
- u8 Table5[]={0xC4,0xE3,0xBA,0xC3,0xB4,0xAE,0xBF,0xDA,0xCA,0xB5,0x20,0x20,0x20,0x20,0x20,0x20};
- u8 Table6[]={0xC4,0xE3,0xBA,0xC3,0xB4,0xAE,0xBF,0xDA,0xCA,0xB5,0x20,0x20,0x20,0x20,0x20,0x20};
- u8 Table7[]={0xC4,0xE3,0xBA,0xC3,0xB4,0xAE,0xBF,0xDA,0xCA,0xB5,0x20,0x20,0x20,0x20,0x20,0x20};
- u8 value []={0,1,2,3,4,5,6,8,9};
- //范例演示用BMP圖片數(shù)據(jù)
- u8 BMP1[]={
- 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,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,0x80,0x18,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x78,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF3,0xF8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xC0,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x18,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x78,
- 0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x18,
- 0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0xCF,0x98,
- 0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xC6,0x18,
- 0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xF0,0x00,0x00,0x00,0x00,0xFF,0xF8,
- 0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x1F,0xFE,0x00,0x00,0x00,0x00,0xFF,0xF8,
- 0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x03,0xFF,0xC0,0x00,0x00,0x00,0x80,0x08,
- 0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xF8,0x00,0x00,0x00,0x78,0x00,
- 0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x3F,0xFF,0x00,0x00,0x00,0xE0,0x00,
- 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x0F,0xFF,0xC0,0x00,0x00,0xC0,0x18,
- 0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x07,0xFF,0xF8,0x00,0x00,0xFF,0xF8,
- 0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x01,0xFF,0xFE,0x00,0x00,0xFF,0xF8,
- 0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0xFF,0xFF,0x80,0x00,0xC0,0x18,
- 0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x7F,0xFF,0xE0,0x00,0xF8,0x00,
- 0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x3F,0xFF,0xF8,0x00,0x00,0x00,
- 0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x1F,0xFF,0xFC,0x00,0xFF,0xF8,
- 0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0x00,0xFF,0xF8,
- 0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x87,0xE0,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x7E,0x00,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0xF8,0x18,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0xFF,0xF8,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x80,0x08,
- 0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x10,0xE0,
- 0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0x00,0xF0,0x38,
- 0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x1F,0xFF,0xFE,0x00,0xCF,0x98,
- 0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x3F,0xFF,0xF8,0x00,0xC6,0x18,
- 0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x7F,0xFF,0xE0,0x00,0xC6,0x18,
- 0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x7F,0xFF,0x80,0x00,0xFF,0xF8,
- 0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x01,0xFF,0xFE,0x00,0x00,0xC0,0x18,
- 0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x03,0xFF,0xF0,0x00,0x00,0x00,0x00,
- 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x0F,0xFF,0xC0,0x00,0x00,0xC0,0x18,
- 0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x3F,0xFE,0x00,0x00,0x00,0xFF,0xF8,
- 0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0xFF,0xF8,
- 0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x03,0xFF,0xC0,0x00,0x00,0x00,0xC0,0x18,
- 0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x3F,0xFC,0x00,0x00,0x00,0x00,0x00,0xF0,
- 0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0x03,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x38,
- 0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x18,
- 0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0xC0,0x18,
- 0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x18,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xD8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF1,0x80,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x88,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF8,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,
- 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,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
- };
- //系統(tǒng)時(shí)鐘初始化函數(shù)
- //采用固件庫(kù)函數(shù)方式編程
- //pll:選擇的倍頻數(shù),從2開(kāi)始,最大值為16(這里最大為9)
- /*******************************************************************************
- * Function Name : Rcc_Init
- * Description : RCC配置(使用外部8MHz晶振)
- * Input : uint32_t,PLL的倍頻系數(shù),例如9就是9*8=72M
- * Output : 無(wú)
- * Return : 無(wú)
- *******************************************************************************/
- void Stm32_Clock_Init(u8 pll)
- {
- ErrorStatus HSEStartUpStatus;
- /*將外設(shè)RCC寄存器重設(shè)為缺省值*/
- RCC_DeInit();
-
- /*設(shè)置外部高速晶振(HSE)*/
- RCC_HSEConfig(RCC_HSE_ON); //RCC_HSE_ON——HSE晶振打開(kāi)(ON)
-
- /*等待HSE起振*/
- HSEStartUpStatus = RCC_WaitForHSEStartUp();
-
- if(HSEStartUpStatus == SUCCESS) //SUCCESS:HSE晶振穩(wěn)定且就緒
- {
- /*設(shè)置AHB時(shí)鐘(HCLK)*/
- RCC_HCLKConfig(RCC_SYSCLK_Div1); //RCC_SYSCLK_Div1——AHB時(shí)鐘= 系統(tǒng)時(shí)鐘
-
- /* 設(shè)置高速AHB時(shí)鐘(PCLK2)*/
- RCC_PCLK2Config(RCC_HCLK_Div1); //RCC_HCLK_Div1——APB2時(shí)鐘= HCLK
-
- /*設(shè)置低速AHB時(shí)鐘(PCLK1)*/
- RCC_PCLK1Config(RCC_HCLK_Div2); //RCC_HCLK_Div2——APB1時(shí)鐘= HCLK / 2
-
- /*設(shè)置FLASH存儲(chǔ)器延時(shí)時(shí)鐘周期數(shù)*/
- FLASH_SetLatency(FLASH_ACR_LATENCY_2);//FLASH_Latency_2 2延時(shí)周期
- /*選擇FLASH預(yù)取指緩存的模式*/
- FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);// 預(yù)取指緩存使能
- /*設(shè)置PLL時(shí)鐘源及倍頻系數(shù)*/
- //RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
- // PLL的輸入時(shí)鐘= HSE時(shí)鐘頻率;RCC_PLLMul_9——PLL輸入時(shí)鐘x 9
- switch(pll)
- {
- case 2: RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_2);
- break;
- case 3: RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_3);
- break;
- case 4: RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_4);
- break;
- case 5: RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_5);
- break;
- case 6: RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_6);
- break;
- case 7: RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_7);
- break;
- case 8: RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_8);
- break;
- case 9: RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
- break;
- default:
- RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_2);
- break;
-
- }
- /*使能PLL */
- RCC_PLLCmd(ENABLE);
-
- /*檢查指定的RCC標(biāo)志位(PLL準(zhǔn)備好標(biāo)志)設(shè)置與否*/
- while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
- {
- }
-
- /*設(shè)置系統(tǒng)時(shí)鐘(SYSCLK)*/
- RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
- //RCC_SYSCLKSource_PLLCLK——選擇PLL作為系統(tǒng)時(shí)鐘
-
- /* PLL返回用作系統(tǒng)時(shí)鐘的時(shí)鐘源*/
- while(RCC_GetSYSCLKSource() != 0x08) //0x08:PLL作為系統(tǒng)時(shí)鐘
- {
- }
- }
-
- /*使能或者失能APB2外設(shè)時(shí)鐘*/
- /*
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
- RCC_APB2Periph_GPIOC , ENABLE);
- */
- //RCC_APB2Periph_GPIOA GPIOA時(shí)鐘
- //RCC_APB2Periph_GPIOB GPIOB時(shí)鐘
- //RCC_APB2Periph_GPIOC GPIOC時(shí)鐘
- //RCC_APB2Periph_GPIOD GPIOD時(shí)鐘
- }
- u8 MenuItem_0[]={" Select: "};
- u8 MenuItem_1[]={" light led1 "};
- u8 MenuItem_2[]={" light led2 "};
- u8 MenuItem_3[]={" light two led "};
- void DisplayMenu(u8 cur)
- {
- Display_LCD_String(0,MenuItem_0,1);
- switch(cur)
- {
- case 1:
- MenuItem_1[1]=26; //字符->的ASCII碼
- MenuItem_2[1]=0x20; //空格
- MenuItem_3[1]=0x20;
- Display_LCD_String(1,MenuItem_1,1);
- Display_LCD_String(2,MenuItem_2,1);
- Display_LCD_String(3,MenuItem_3,1);
- break;
- case 2:
- MenuItem_1[1]=0x20; //字符->的ASCII碼
- MenuItem_2[1]=26; //空格
- MenuItem_3[1]=0x20;
- Display_LCD_String(1,MenuItem_1,1);
- Display_LCD_String(2,MenuItem_2,1);
- Display_LCD_String(3,MenuItem_3,1);
- break;
- case 3:
- MenuItem_1[1]=0x20; //字符->的ASCII碼
- MenuItem_2[1]=0x20; //空格
- MenuItem_3[1]=26;
- Display_LCD_String(1,MenuItem_1,1);
- Display_LCD_String(2,MenuItem_2,1);
- Display_LCD_String(3,MenuItem_3,1);
- break;
- }
-
-
- }
- int main(void)
- {
- u8 time=50;
-
- Stm32_Clock_Init(9); //系統(tǒng)時(shí)鐘設(shè)置
-
- delay_init(72); //延時(shí)初始化
- // uart_init(72,9600); //串口初始化
-
- delay_ms(1000);
- LCD12864_Init(); //12864初始化
- /*---------------------顯示字符串-------------------*/
- // Display_LCD_String(0 , Table0,time);
- Disp_HZ(0,Table0,5); //指定個(gè)數(shù)漢字顯示
- delay_ms(100);
- // Display_LCD_String(1 , Table1,time);
- Disp_HZ(1,Table1,5);
- delay_ms(100);
- // Display_LCD_String(2 , Table2,time);
- Disp_HZ(2,Table2,5);
- delay_ms(100);
- Display_LCD_String(3 , Table3,time); //8個(gè)漢字或16字節(jié)字符顯示
- delay_ms(1500);
- Write_LCD_Command(0x01); //清屏
- LCD_Clear_TXT();
- delay_ms(50);
- /*
- PutBMP(BMP1); //外星人
- delay_ms(1500);
- LCD_Clear_BMP(); //清除圖片
- PutBMP(BMP1); //NBA標(biāo)志
- delay_ms(1500);
- LCD_Clear_BMP(); //清除圖片
- PutBMP(BMP1); //暴漫男主
- delay_ms(1500);
- LCD_Clear_BMP(); //清除圖片
-
- Write_LCD_Command(0x30); //必須再次打開(kāi)基本指令,因?yàn)槔L圖開(kāi)了擴(kuò)充指令
- Display_LCD_String(1 , Table4,time);
- delay_ms(100);
- Display_LCD_String(2 , Table5,time);
- delay_ms(100);
- Display_LCD_String(3, Table6,time);
- delay_ms(100);
- //---------------------顯示自定義字符------------------
- Write_LCD_Command(0x34); //要用到畫圖功能,必須打開(kāi)擴(kuò)充指令
- Write_LCD_Command(0x36);
- Draw_Char4x5Line(30,5,value,10) ; //顯示自定義字符0~9
- Draw_Update(); //更新顯示
- Write_LCD_Command(0x30); //再次打開(kāi)基本指令,后面用到
-
- delay_ms(1500);
- LCD_Clear_TXT();
- delay_ms(50);
- Display_LCD_String(3, Table7,time);
- // LCD_Clear_BMP();
- Draw_Clear();
- */
- DisplayMenu(1);
- delay_ms(2000);
- DisplayMenu(2);
-
- while(1);
- }
復(fù)制代碼
所有資料51hei提供下載:
12864顯示工程.7z
(207.99 KB, 下載次數(shù): 9)
2019-2-19 03:47 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|