|
51hei.png (6.02 KB, 下載次數: 58)
下載附件
2021-8-24 17:16 上傳
所有資料打包下載:
示波器制作資料(程序).7z
(6.96 MB, 下載次數: 535)
2021-8-24 17:17 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
其實本人進入芯片的世界的時間并不長,從接觸51單片機到現在還不到一年,所以可以算是小白啦~想了很久,總算拿出在論壇大牛前獻丑的無比勇氣,寫起該帖。因為制作時間很短,元器件不是很夠用,所以只能做出這個只有初級功能的示波器了,只是菜鳥級程序,不建議大家做學習之用。
我是從大二下學期開始學的51單片機,之后就對燒芯片興趣甚濃,用51做了很多小玩意出來:例如探頭式溫度器、基于霍爾元件的測速器,超聲波測距器,震動報警器等等。
而進入大三,我就開始學習ARM了。當時我是看劉凱老師的視頻學習STM32開始進軍ARM的。我一直覺得看視頻學東西容易接受,所以51單片機我也是看郭天祥的視頻學習的。可能因為學了一個學期的51單片機了,有點點基礎,所以學習起STM32的時候感覺輕車熟路(當然,也曾經被STM32的各種庫函數搞得很痛苦)。自學STM32半個學期之后,做了兩個作品,一個是新型海流發電機的葉片控制裝置,一個是新型風力發電機的葉片控制裝置(這兩個設計都是為了參加大學生節能減排大賽做的,可以由于非實力因素被刷于校賽,這個不能多說。。)……
好了,廢話不多說,基于stm32 的微型掌上示波器——這個小作品是我大三嵌入式技術課的課程設計作品。
0.png (936.62 KB, 下載次數: 120)
下載附件
2016-10-20 23:21 上傳
黑色一個獨立按鍵是增加網格時間間隔的(后來又加了個獨立按鍵減少網格時間間隔);
藍色按鈕是用來暫停波形的,方便觀察;
再右邊那兩個插針是信號輸入的GND和SIGNAL端;
0.png (899.92 KB, 下載次數: 147)
下載附件
2016-10-20 23:21 上傳
三角波
如上圖,這個作品使用4.0寸液晶顯示屏來做顯示的(上圖左邊),而芯片是用STM32F103C8T6這一款便價STM32來做的(上圖右邊)。芯片是做好了的最好系統板,在某寶上網購回來的,好像二十多的樣子(不算運費)。
0.png (837.28 KB, 下載次數: 132)
下載附件
2016-10-20 23:22 上傳
正弦波
0.png (849.75 KB, 下載次數: 129)
下載附件
2016-10-20 23:22 上傳
梯形波
0.png (990.13 KB, 下載次數: 139)
下載附件
2016-10-20 23:22 上傳
鋸齒波

51單片機開發板做成信號源
如上圖,因為院里面的實驗室太遠,我就自己用51單片機開發板自己做了個簡易函數發生器。通過獨立按鍵控制發出正弦波、矩形波、三角波、鋸齒波、梯形波。
其實單片機開發板已經是我的核心家當了!因為我學習ARM的時候并沒有買ARM的開發板,而是用51開發板把程序燒錄進去ARM芯片里面去……(其實零花錢都用去旅游去了。。。)
0.png (798.56 KB, 下載次數: 134)
下載附件
2016-10-20 23:23 上傳
洞洞板背面(黑色的是電池盒,帶電源開關)
然后板子使用洞洞板來做的,洞洞板就避免不了飛線,所以我用一塊海綿封住背面的飛線,聲稱是為了防止灰塵干擾電路(其實是為了遮蓋慘不忍睹的飛線工藝啦{:12:}{:12:})。
唉,不過想一下我現在已經大三了,馬上升大四了,這個階段做出這個作品的水平不知道是不是已經out of date了。。當然,相比于論壇里面的各位大牛小牛們,這個作品真是小巫見大巫。。~~
這是我第一次發帖啦~這個作品我借鑒過很多很多的例程,最后自己綜合、學習、效仿、然后總結起來寫的。里面的某些風格可能有些像劉凱老師的,可能有些像金點原子的,甚至有些像郭天祥的-_-b。。。僅僅做學習之用,毫無商用價值之類之用。關于版權或者知識產權之類的東西我也不太懂啦,因為是小白,所以有什么冒犯或者不合適之類的敬請原諒啦。而且程序里面有很多是廢程序,只是菜鳥級程序,不建議大家做學習之用(不至于用作反面教材就好啦~haha ~)
敬請大家指正,有什么冒犯多多包涵~~哈哈~資料接下來傳上來,請看附件。
源程序:
- /* Includes ------------------------------------------------------------------*/
- #include "stm32f10x_lib.h"
- /* Private typedef -----------------------------------------------------------*/
- /* Private define ------------------------------------------------------------*/
- #define DAC1_DHR8R1_Address 0x40007408
- /* Init Structure definition */
- DAC_InitTypeDef DAC_InitStructure;
- DMA_InitTypeDef DMA_InitStructure;
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
- /* Private macro -------------------------------------------------------------*/
- /* Private variables ---------------------------------------------------------*/
- ErrorStatus HSEStartUpStatus;
- uc16 Sine12bit[32] = {2047, 2447, 2831, 3185, 3498, 3750, 3939, 4056, 4095, 4056,
- 3939, 3750, 3495, 3185, 2831, 2447, 2047, 1647, 1263, 909,
- 599, 344, 155, 38, 0, 38, 155, 344, 599, 909, 1263, 1647};
- u32 DualSine12bit[32];
- u8 Idx = 0;
- /* Private function prototypes -----------------------------------------------*/
- void RCC_Configuration(void);
- void GPIO_Configuration(void);
- void NVIC_Configuration(void);
- void Delay(vu32 nCount);
- /* Private functions ---------------------------------------------------------*/
- /*******************************************************************************
- * Function Name : main
- * Description : Main program.
- * Input : None
- * Output : None
- * Return : None
- *******************************************************************************/
- int main(void)
- {
- #ifdef DEBUG
- debug();
- #endif
- /* System Clocks Configuration */
- RCC_Configuration();
- /* GPIO configuration */
- GPIO_Configuration();
- /* NVIC Configuration */
- NVIC_Configuration();
- /* TIM8 Configuration */
- /* Time base configuration */
- TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
- TIM_TimeBaseStructure.TIM_Period = 0x19;
- TIM_TimeBaseStructure.TIM_Prescaler = 0x00;
- TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
- TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure);
- /* TIM8 TRGO selection */
- TIM_SelectOutputTrigger(TIM6, TIM_TRGOSource_Update);
- /* DAC channel1 Configuration */
- DAC_InitStructure.DAC_Trigger = DAC_Trigger_T6_TRGO;
- DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
- DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;
- DAC_Init(DAC_Channel_1, &DAC_InitStructure);
- /* DAC channel2 Configuration
- DAC_Init(DAC_Channel_2, &DAC_InitStructure); */
- /* Fill Sine32bit table */
- for (Idx= 0; Idx<32; Idx++)
- {
- DualSine12bit[Idx] = (Sine12bit[Idx] << 16) + (Sine12bit[Idx]);
- }
- /* DMA2 channel4 configuration */
- DMA_DeInit(DMA1_Channel3); //將dma的通道寄存器設為默認值
- DMA_InitStructure.DMA_PeripheralBaseAddr = DAC1_DHR8R1_Address; //定義dma外設基地址
- DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&DualSine12bit;
- DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST; //外設作為數據傳輸的目的地
- DMA_InitStructure.DMA_BufferSize = 32; //dma緩存大小
- DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //外設地址寄存器不變
- DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //內存地址寄存器 遞增
- DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word; //外設數據寬度
- DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;
- DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; //工作在循環緩存模式,數據傳輸數目為0時,自動恢復配置初值
- DMA_InitStructure.DMA_Priority = DMA_Priority_High;
- DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //通道未被設置成內存到內存模式,與循環模式相對
- DMA_Init(DMA1_Channel3, &DMA_InitStructure); //將DMA_InitStructure中指定的參數初始化dma的通道寄存器
- /* Enable DMA2 Channel4 */
- DMA_Cmd(DMA1_Channel3, ENABLE); //使能通道
- /* Enable DAC Channel1 */
- DAC_Cmd(DAC_Channel_1, ENABLE);
- /* Enable DAC Channel2 */
- DAC_Cmd(DAC_Channel_1, ENABLE);
- /* Enable DMA for DAC Channel2 */
- DAC_DMACmd(DAC_Channel_1, ENABLE);
- /* TIM8 enable counter */
- TIM_Cmd(TIM6, ENABLE);
- while (1)
- {
- GPIO_ResetBits(GPIOA , GPIO_Pin_10);
- }
- }
- /*******************************************************************************
- * Function Name : RCC_Configuration
- * Description : Configures the different system clocks.
- * Input : None
- * Output : None
- * Return : None
- *******************************************************************************/
- void RCC_Configuration(void)
- {
- /* RCC system reset(for debug purpose) */
- RCC_DeInit();
- /* Enable HSE */
- RCC_HSEConfig(RCC_HSE_ON);
- /* Wait till HSE is ready */
- HSEStartUpStatus = RCC_WaitForHSEStartUp();
- if(HSEStartUpStatus == SUCCESS)
- {
- /* Enable Prefetch Buffer */
- FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
- /* Flash 2 wait state */
- FLASH_SetLatency(FLASH_Latency_2);
-
- /* HCLK = SYSCLK */
- RCC_HCLKConfig(RCC_SYSCLK_Div1);
-
- /* PCLK2 = HCLK */
- RCC_PCLK2Config(RCC_HCLK_Div1);
- /* PCLK1 = HCLK/2 */
- RCC_PCLK1Config(RCC_HCLK_Div2);
- /* PLLCLK = 8MHz * 9 = 72 MHz */
- RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_3);
- /* Enable PLL */
- RCC_PLLCmd(ENABLE);
- /* Wait till PLL is ready */
- while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
- {
- }
- /* Select PLL as system clock source */
- RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
- /* Wait till PLL is used as system clock source */
- while(RCC_GetSYSCLKSource() != 0x08)
- {
- }
- }
- /* Enable peripheral clocks --------------------------------------------------*/
- /* DMA clock enable */
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
- /* AFIO and GPIOA Periph clock enable */
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA, ENABLE);
- /* DAC Periph clock enable */
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
- /* TIM8 Periph clock enable */
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE);
- }
- /*******************************************************************************
- * Function Name : GPIO_Configuration
- * Description : Configures the different GPIO ports.
- * Input : None
- * Output : None
- * Return : None
- *******************************************************************************/
- void GPIO_Configuration(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- /* Configure DAC channe1 and DAC channel2 outputs pins */
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5|GPIO_Pin_10;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
- }
- /*******************************************************************************
- * Function Name : NVIC_Configuration
- * Description : Configures Vector Table base location.
- * Input : None
- * Output : None
- * Return : None
- *******************************************************************************/
- void NVIC_Configuration(void)
- {
- #ifdef VECT_TAB_RAM
- /* Set the Vector Table base location at 0x20000000 */
- NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
- #else /* VECT_TAB_FLASH */
- /* Set the Vector Table base location at 0x08000000 */
- NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
- #endif
- }
- /*******************************************************************************
- * Function Name : Delay
- * Description : Inserts a delay time.
- * Input : nCount: specifies the delay time length.
- * Output : None
- * Return : None
- *******************************************************************************/
- void Delay(vu32 nCount)
- {
- for(; nCount != 0; nCount--);
- }
- #ifdef DEBUG
- /*******************************************************************************
- * Function Name : assert_failed
- * Description : Reports the name of the source file and the source line number
- * where the assert_param error has occurred.
- * Input : - file: pointer to the source file name
- * - line: assert_param error line source number
- * Output : None
- * Return : None
- *******************************************************************************/
- void assert_failed(u8* file, u32 line)
- {
- /* User can add his own implementation to report the file name and line number,
- ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
- /* Infinite loop */
- while (1)
- {
- }
- }
- #endif
復制代碼- #include"tft3.5.h"
- #include "stm32f10x_gpio.h"
- //#include"陳錦熙.h"
- //#include "美女.h"
- //#include "8x16.h"
- //#include "GB3231.h"
- /*------------------------------------------------
- 清屏函數
- ------------------------------------------------*/
- void ClearScreen(unsigned int bColor)
- {
- unsigned int i,j;
- LCD_SetPos(0,320,0,480);//
- for (i=0;i<480;i++)
- {
-
- for (j=0;j<320;j++)
- Write_Data_U16(bColor);
- }
- }
- /*-----------------------------------------------------------------------
- 寫8x16點陣格式的字符
- -----------------------------------------------------------------------*/
- #include "8x16.h"
- void LCD_PutChar8x16(unsigned short x, unsigned short y, char c, unsigned int fColor, unsigned int bColor)
- {
- unsigned int i,j;
- LCD_SetPos(x,x+8-1,y,y+16-1);
- for(i=0; i<16;i++) {
- unsigned char m=Font8x16[c*16+i];
- for(j=0;j<8;j++) {
- if((m&0x80)==0x80) {
- Write_Data_U16(fColor);
- }
- else {
- Write_Data_U16(bColor);
- }
- m<<=1;
- }
- }
- }
- /*-----------------------------------------------------------------------
- 寫字符
- -----------------------------------------------------------------------*/
- void LCD_PutChar(unsigned short x, unsigned short y, char c, unsigned int fColor, unsigned int bColor) {
- LCD_PutChar8x16( x, y, c, fColor, bColor );
- }
- #include "GB1616.h" //16*16漢字字模
- void PutGB1616(unsigned short x, unsigned short y, unsigned char c[2], unsigned int fColor,unsigned int bColor){
- unsigned int i,j,k;
- LCD_SetPos(x, x+16-1,y, y+16-1);
- for (k=0;k<64;k++) { //64標示自建漢字庫中的個數,循環查詢內碼
- if ((codeGB_16[k].Index[0]==c[0])&&(codeGB_16[k].Index[1]==c[1])){
- for(i=0;i<32;i++) {
- unsigned short m=codeGB_16[k].Msk[i];
- for(j=0;j<8;j++) {
- if((m&0x80)==0x80) {
- Write_Data_U16(fColor);
- }
- else {
- Write_Data_U16(bColor);
- }
- m<<=1;
- }
- }
- }
- }
- }
- /*-----------------------------------------------------------------------
- 寫字符串
- -----------------------------------------------------------------------*/
- void LCD_PutString(unsigned short x, unsigned short y, unsigned char *s, unsigned int fColor, unsigned int bColor) {
- unsigned char l=0;
- while(*s) {
- if( *s < 0x80)
- {
- LCD_PutChar(x+l*8,y,*s,fColor,bColor);
- s++;l++;
- }
- else
- {
- PutGB1616(x+l*8,y,(unsigned char*)s,fColor,bColor);
- s+=2;l+=2;
- }
- }
- }
- /*-----------------------------------------------------------------------
- 顯示RGB顏色
- -----------------------------------------------------------------------*/
- void Show_RGB (unsigned int x0,unsigned int x1,unsigned int y0,unsigned int y1,unsigned int Color)
- {
- unsigned int i,j;
- LCD_SetPos(x0,x1,y0,y1);
- for (i=y0;i<=y1;i++)
- {
- for (j=x0;j<=x1;j++)
- Write_Data_U16(Color);
- }
- }
- /*-----------------------------------------------------------------------
- 顯示彩條
- -----------------------------------------------------------------------*/
- void show_colour_bar (void)
- {
- int V,H;
- LCD_SetPos(0,320,0,480);
- for(H=0;H<320;H++)
- {
- for(V=0;V<60;V++)
- Write_Data_U16(0xf800);
- }
- for(H=0;H<320;H++)
- {
- for(V=60;V<120;V++)
- Write_Data_U16(0x07e0);
- }
- for(H=0;H<320;H++)
- {
- for(V=120;V<180;V++)
- Write_Data_U16(0x001f);
- }
- for(H=0;H<320;H++)
- {
- for(V=180;V<240;V++)
- Write_Data_U16(0xffe0);
- }
- for(H=0;H<320;H++)
- {
- for(V=240;V<300;V++)
- Write_Data_U16(0xf81f);
- }
- for(H=0;H<320;H++)
- {
- for(V=300;V<360;V++)
- Write_Data_U16(0x07ff);
- }
- for(H=0;H<320;H++)
- {
- for(V=360;V<420;V++)
- Write_Data_U16(0xffff);
- }
- for(H=0;H<320;H++)
- {
- for(V=420;V<480;V++)
- Write_Data_U16(0x0000);
- }
- }
- /*-----------------------------------------------------------------------
- 寫指令 8位總線
- -----------------------------------------------------------------------*/
- void LCD_Write_Command(unsigned char u)
- {
- TFT_CS_SET(0);
- TFT_RS_SET(0);
- DATAOUT(u);
- TFT_WR_SET(0);
- TFT_WR_SET(1);
- TFT_CS_SET(1);
- }
- /*-----------------------------------------------------------------------
- 寫數據 8位總線
- -----------------------------------------------------------------------*/
- void LCD_Write_Data(unsigned char u)
- {
-
-
- TFT_CS_SET(0);
- TFT_RS_SET(1);
- DATAOUT(u);
- TFT_WR_SET(0);
- TFT_WR_SET(1);
- TFT_CS_SET(1);
- }
- /*-----------------------------------------------------------------------
- 寫16位數據
- -----------------------------------------------------------------------*/
- void Write_Data_U16(unsigned int y)
- {
- unsigned char m,n;
- m=y>>8;
- n=y;
- LCD_Write_Data(m);
- LCD_Write_Data(n);
- }
- /*-----------------------------------------------------------------------
- 延時程序
- -----------------------------------------------------------------------*/
- void delayms(unsigned int count)
- {
- int i,j;
- for(i=0;i<count;i++)
- {
- for(j=0;j<26;j++);
- }
- }
- /*-----------------------------------------------------------------------
- 液晶初始化
- -----------------------------------------------------------------------*/
- void ILI9325_Initial(void)
- {
- // //液晶接口初始化
- // RCC->APB2ENR|=0X0000001C;//先使能外設IO PORTA,B,C時鐘
- //
- // GPIOA->CRL=0X33333333; //PA0-7 推挽輸出
- // //GPIOA->ODR|=0X00FF;//全部輸出高
- // GPIOB->CRH=0X33333333; //PB8-15 推挽輸出
- //GPIOB->ODR|=0X00FF;//全部輸出高
- /*GPIOB->CRL&=0X000FFFFF;//PB5-7 推挽輸出
- GPIOB->CRL|=0X33300000;
- GPIOB->CRH&=0XFFFFFFF0;//PB8 推挽輸出
- GPIOB->CRH|=0X00000003;
- GPIOB->ODR|=0X01E0;//5-8 輸出高
- GPIOC->CRL&=0XFF00FFFF;//PC4,5 推挽輸出
- GPIOC->CRL|=0X00330000;
- GPIOC->ODR|=0X0030;//4,5 輸出高 */
- TFT_RST_SET(0);
- delayms(20);
- TFT_RST_SET(1);
- delayms(200);
- // VCI=2.80V
- //************* Reset LCD Driver ****************//
- // Synchronization after reset
- LCD_Write_Command(0xFF);
- LCD_Write_Command(0xFF);
- delayms(5);
- LCD_Write_Command(0xFF);
- LCD_Write_Command(0xFF);
- LCD_Write_Command(0xFF);
- LCD_Write_Command(0xFF);
- delayms(10);
- LCD_Write_Command(0xB0);
- LCD_Write_Data(0x00);
- LCD_Write_Command(0x11);
- delayms(150);
- LCD_Write_Command(0xB3);
- LCD_Write_Data(0x02);
- LCD_Write_Data(0x00);
- LCD_Write_Data(0x00);
- LCD_Write_Data(0x00);
- LCD_Write_Command(0xC0);
- LCD_Write_Data(0x13);
- LCD_Write_Data(0x3B);//480
- LCD_Write_Data(0x00);
- LCD_Write_Data(0x02);
- LCD_Write_Data(0x00);
- LCD_Write_Data(0x01);
- LCD_Write_Data(0x00);//NW
- LCD_Write_Data(0x43);
- LCD_Write_Command(0xC1);
- LCD_Write_Data(0x08);
- LCD_Write_Data(0x16);//CLOCK
- LCD_Write_Data(0x08);
- LCD_Write_Data(0x08);
- LCD_Write_Command(0xC4);
- LCD_Write_Data(0x11);
- LCD_Write_Data(0x07);
- LCD_Write_Data(0x03);
- LCD_Write_Data(0x03);
- LCD_Write_Command(0xC6);
- LCD_Write_Data(0x00);
- LCD_Write_Command(0xC8);//GAMMA
- LCD_Write_Data(0x03);
- LCD_Write_Data(0x03);
- LCD_Write_Data(0x13);
- LCD_Write_Data(0x5C);
- LCD_Write_Data(0x03);
- LCD_Write_Data(0x07);
- LCD_Write_Data(0x14);
- LCD_Write_Data(0x08);
- LCD_Write_Data(0x00);
- LCD_Write_Data(0x21);
- LCD_Write_Data(0x08);
- LCD_Write_Data(0x14);
- LCD_Write_Data(0x07);
- LCD_Write_Data(0x53);
- LCD_Write_Data(0x0C);
- LCD_Write_Data(0x13);
- LCD_Write_Data(0x03);
- LCD_Write_Data(0x03);
- LCD_Write_Data(0x21);
- LCD_Write_Data(0x00);
- LCD_Write_Command(0x35);
- LCD_Write_Data(0x00);
- LCD_Write_Command(0x36);
- LCD_Write_Data(0x00);
- LCD_Write_Command(0x3A);
- LCD_Write_Data(0x55);
- LCD_Write_Command(0x44);
- LCD_Write_Data(0x00);
- LCD_Write_Data(0x01);
- LCD_Write_Command(0xD0);
- LCD_Write_Data(0x07);
- LCD_Write_Data(0x07);//VCI1
- LCD_Write_Data(0x1D);//VRH
- LCD_Write_Data(0x03);//BT
- LCD_Write_Command(0xD1);
- LCD_Write_Data(0x03);
- LCD_Write_Data(0x30);//VCM
- LCD_Write_Data(0x10);//VDV
- LCD_Write_Command(0xD2);
- LCD_Write_Data(0x03);
- LCD_Write_Data(0x14);
- LCD_Write_Data(0x04);
- LCD_Write_Command(0x29);
- delayms(30);
- LCD_Write_Command(0x2A);
- LCD_Write_Data(0x00);
- LCD_Write_Data(0x00);
- LCD_Write_Data(0x01);
- LCD_Write_Data(0x3F);//320
- LCD_Write_Command(0x2B);
- LCD_Write_Data(0x00);
- LCD_Write_Data(0x00);
- LCD_Write_Data(0x01);
- LCD_Write_Data(0xDF);//480
- LCD_Write_Command(0xB4);
- LCD_Write_Data(0x00);
- delayms(100);
- LCD_Write_Command(0x2C);
- // Write_Cmd_Data(0x0022);//
-
- }
- /*-----------------------------------------------------------------------
- 設置坐標點
- -----------------------------------------------------------------------*/
- static void LCD_SetPos(unsigned int x0,unsigned int x1,unsigned int y0,unsigned int y1)
- {
- LCD_Write_Command(0x2A);
- Write_Data_U16(x0);
- Write_Data_U16(x1);
- //LCD_Write_Data(x0>>8);
- //LCD_Write_Data(x0);
- //LCD_Write_Data(x1>>8);
- //LCD_Write_Data(x1);
- LCD_Write_Command(0x2B);
- Write_Data_U16(y0);
- Write_Data_U16(y1);
- //LCD_Write_Data(y0>>8);
- //LCD_Write_Data(y0);
- //LCD_Write_Data(y1>>8);
- //LCD_Write_Data(y1);
- LCD_Write_Command(0x2C);
- }
- //void show_photo(unsigned int x0,unsigned int x1,unsigned int y0,unsigned int y1)
- //{
- // unsigned int x,y; //定義液晶屏坐標
- //
- // LCD_SetPos(x0,x1-1,y0,y1-1); //必須x1-1 y1-1
- // for(y=y0;y<y1;y++) //是否寫完圖片數據?
- // for(x=x0;x<x1;x++)
- // {
- // LCD_Write_Data(pic[2*((x1-x0)*y+x)+1]);
- // LCD_Write_Data(pic[2*((x1-x0)*y+x)]);
- // //Write_Data_U16(0x0f0f);
- // } //檢測是否寫到屏的邊緣 160x120 其他尺寸圖片請自行更改尺寸
- //
- //}
- void draw_point(unsigned int x0,unsigned int y0,unsigned int wcolor)
- {
- unsigned int x,y; //定義液晶屏坐標
-
- LCD_SetPos(x0,x0+1,y0,y0+1); //必須x1-1 y1-1
- for(y=y0;y<y0+1;y++) //是否寫完圖片數據?
- for(x=x0;x<x0+1;x++)
- {
- Write_Data_U16(wcolor); //16位顏色
- // LCD_Write_Data(pic[2*((x1-x0)*y+x)+1]); //每個格子的顏色分開了兩個8進制表示
- // LCD_Write_Data(pic[2*((x1-x0)*y+x)]);
- //Write_Data_U16(0x0f0f);
- } //檢測是否寫到屏的邊緣 160x120 其他尺寸圖片請自行更改尺寸
-
- }
復制代碼
|
-
0.png
(56.47 KB, 下載次數: 198)
下載附件
2016-10-20 23:26 上傳
評分
-
查看全部評分
|