




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#include "led.h"#include "sys.h"#include "delay.h"#include "adc.h"#include "lcd.h"#include "usart.h"#include "lcdfot.h"#include "hx711.h"#include "key.h"int main(void)u8 num,flag;float vol1;delay_init();uart_in
2、it(9600);LED_Init();LCD_Init();Adc_Init();KEY_Init();HX711_Init();POINT_COLOR=RED;HZ_show();LCD_ShowString(54+25,55,200,24,16,":000.00g");/提示信息显示LCD_ShowString(54+25,85,200,24,16,":00.00$");/提示信息显示LCD_ShowString(54+25,115,200,24,16,":000.00$");/提示信息显示LCD_ShowString(54+2
3、5,145,200,24,16,":000.00g");/提示信息显示while(1)vol1=HX711_count();if(KEY_Scan(1)=WKUP_PRES) /单价设置 num的值可直接用 num+;if(num=100)num=0;LCD_ShowxNum(54+25+8,85,num,2,16,0);if(KEY_Scan(1)=KEY0_PRES) /控制金额是否累加flag=1是累加 flag=0不累加HZ_show_moy();flag+;LED0=0;if(flag=2)LED0=1;LCD_ShowString(54+25+32+30,115
4、,200,16,16," ");flag=0;printf("%d",flag);delay_ms(300);LED1=!LED1;#include "lcd.h"#include "lcdfot.h"u8 table1=0x00,0x00,0x00,0x00,0x00,0x04,0x02,0x00,0x04,0x02,0x00,0x04,0x02,0x00,0x24,0x0A,0xFF,0xA4,0x0A,0x7F,0x24,0x0A,0x49,0x24,0x12,0x49,0x24,0x12,0x49,0x24
5、,0x12,0x49,0x24,0x1F,0xFF,0xFC,0x12,0x49,0x24,0x12,0x49,0x24,0x12,0x49,0x24,0x22,0x49,0x24,0x22,0x49,0x24,0x22,0xFF,0xA4,0x02,0x40,0x64,0x06,0x00,0x24,0x06,0x00,0x0C,0x02,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,;/*重*/u8 table2=0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x40,0x02,0x00,0x40,0x02,0x00,0x40,0x1
6、2,0x3F,0xDF,0xD2,0x3F,0x52,0x92,0x25,0x52,0x92,0x25,0x52,0x92,0x25,0x52,0x92,0x25,0x52,0x92,0x25,0x5F,0xFC,0x25,0x5F,0xFC,0x25,0x52,0x92,0x25,0x52,0x92,0x25,0x52,0x92,0x25,0x52,0x92,0x3F,0x5F,0xD2,0x20,0x5F,0xB2,0x00,0x40,0x12,0x00,0x40,0x04,0x00,0xC0,0x04,0x00,0x40,0x00,0x00,0x00,0x00,;/*量*/u8 tabl
7、e3=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x40,0x00,0x00,0x40,0x03,0xFE,0x40,0x02,0x22,0x40,0x22,0x22,0x40,0x32,0x22,0x40,0x1E,0x22,0x40,0x02,0x22,0x40,0x03,0xFF,0xFE,0x02,0x22,0x40,0x06,0x22,0x40,0x0A,0x22,0x40,0x72,0x22,0x40,0x22,0x22,0x40,0x02,0x22,0x40,0x03,0xFE,0x40,0x02,0x00,0x
8、40,0x00,0x00,0xC0,0x00,0x00,0xC0,0x00,0x00,0x40,0x00,0x00,0x00,;/*单*/u8 table4=0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x10,0x00,0x00,0x60,0x00,0x01,0xC0,0x00,0x07,0xFF,0xFE,0x3C,0x80,0x00,0x30,0x10,0x02,0x00,0x20,0x04,0x00,0x40,0x08,0x00,0x80,0x18,0x03,0x3F,0xE0,0x06,0x3E,0x00,0x3C,0x00,0x00,0x30,0x00,0
9、x00,0x0C,0x00,0x00,0x02,0x00,0x01,0x01,0x3F,0xFE,0x00,0x80,0x00,0x00,0xC0,0x00,0x00,0x60,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,;/*价*/u8 table5=0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x01,0x08,0x08,0x01,0x08,0x0C,0x01,0x08,0x1C,0x01,0x08,0x2C,0x01,0x08,0x4C,0x01,0x08,
10、0x88,0x01,0x0B,0x08,0x3F,0xFE,0x08,0x3F,0xF8,0x08,0x01,0x08,0x08,0x01,0x08,0x08,0x01,0x08,0x48,0x01,0x08,0x68,0x01,0x08,0x38,0x03,0x08,0x18,0x01,0x08,0x1E,0x00,0x18,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,;/*去*/u8 table6=0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x04,0x00,0x00,0x18,0x00,0x00
11、,0xE2,0x07,0xFF,0x82,0x02,0x00,0x02,0x02,0x00,0x02,0x02,0x08,0x04,0x02,0x0E,0x04,0x02,0x09,0x08,0x02,0x08,0xC8,0x7F,0xF0,0x70,0x3F,0xF0,0x30,0x02,0x08,0x70,0x02,0x09,0x88,0x02,0x0B,0x0C,0x02,0x0E,0x0C,0x02,0x98,0x04,0x07,0x08,0x06,0x06,0x00,0x06,0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x00,0x00,;/*皮*/u8
12、table7=0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x08,0x02,0x00,0x10,0x02,0x00,0x21,0x02,0x00,0x41,0x82,0x00,0xC1,0x42,0x01,0x91,0x32,0x03,0x11,0x1A,0x0E,0x11,0x02,0x38,0x11,0x02,0x30,0x1F,0xFC,0x28,0x11,0x02,0x04,0x11,0x02,0x02,0x11,0x04,0x01,0x11,0x1A,0x00,0xA1,0xE2,0x00,0xD1,0x42,0x00,0x62,0x02,0x00,0x6
13、2,0x02,0x00,0x30,0x04,0x00,0x20,0x04,0x00,0x20,0x00,0x00,0x00,0x00,;/*金*/u8 table8=0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x08,0x80,0x0C,0x31,0x00,0x04,0xD3,0xFC,0x07,0x96,0x84,0x24,0x5C,0x84,0x1C,0x58,0x84,0x04,0x68,0x84,0x05,0xCD,0xFC,0x06,0x06,0x00,0x0C,0x02,0x02,0x16,0x00,0x02,0x11,0xFF,0x84,0x11,0x
14、00,0x08,0x13,0x00,0x10,0x1D,0x47,0xE0,0x11,0x3F,0x00,0x11,0x20,0x20,0x11,0x00,0x10,0x11,0xFF,0xD8,0x23,0xFF,0x8C,0x00,0x00,0x06,0x00,0x00,0x00,;/*额*/u8 table9=0x00,0x00,0x00,0x01,0x7C,0x12,0x54,0x94,0x54,0x90,0x55,0xB2,0x56,0xB1,0x7C,0xDE,0x54,0xD0,0x54,0x90,0x55,0x14,0x54,0x32,0x7C,0x19,0x00,0x00,0
15、x00,0x00,0x00,0x00,;/*累*/u8 table10=0x08,0x01,0x08,0x02,0x08,0x0C,0xFF,0xF0,0x08,0x02,0x08,0x01,0x0F,0xFE,0x00,0x00,0x00,0x00,0x1F,0xFE,0x10,0x04,0x10,0x04,0x10,0x04,0x1F,0xFE,0x00,0x00,0x00,0x00,;/*加*/ 显示一个汉字/u8 lcdoneHZ(u8 x,u8 y,unsigned char *code) u8 temp,t,y0,t1;u8 table72;y0=y;POINT_COLOR=RED
16、;for(t=0;t<72;t+)temp= *code+;for(t1=0;t1<8;t1+)if(temp&0x80)LCD_DrawPoint(x,y);temp<<=1;y+;if(y-y0)=24)y=y0;x+;break;u8 lcdone16HZ(u8 x,u8 y,unsigned char *code) u8 temp,t,y0,t1;u8 table32;y0=y;POINT_COLOR=RED;for(t=0;t<32;t+)temp= *code+;for(t1=0;t1<8;t1+)if(temp&0x80)LCD
17、_DrawPoint(x,y);temp<<=1;y+;if(y-y0)=16)y=y0;x+;break;void HZ_show(void)lcdoneHZ(30,50,table1);/重量lcdoneHZ(54,50,table2);lcdoneHZ(30,80,table3); /单价lcdoneHZ(54,80,table4);lcdoneHZ(30,110,table7); /金额lcdoneHZ(54,110,table8); /金额lcdoneHZ(30,140,table5);/去皮lcdoneHZ(54,140,table6);void HZ_show_moy
18、(void)lcdone16HZ(54+25+32+30,115,table9);lcdone16HZ(54+25+32+30+17,115,table10);#ifndef _LCDFOT_H#define _LCDFOT_H#include "sys.h"u8 lcdoneHZ(u8 x,u8 y,unsigned char *code); /显示24位汉字 u8 lcdone16HZ(u8 x,u8 y,unsigned char *code); /显示16位汉字void HZ_show(void);void HZ_show_moy(void);#endif#incl
19、ude "hx711.h"#include "delay.h"#include "usart.h"void HX711_Init(void) GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); /使能PE端口时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; /LED0->PB.5 端口配置 GPIO_InitStructure.GPIO_Mode = GPIO_
20、Mode_Out_PP; /推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /IO口速度为50MHz GPIO_Init(GPIOA, &GPIO_InitStructure); /根据设定参数初始化GPIOB.5 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; /LED0->PB.5 端口配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; /上拉输入 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_
21、50MHz; /IO口速度为50MHz GPIO_Init(GPIOA, &GPIO_InitStructure); /根据设定参数初始化GPIOB.5 GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_6);u32 HX711_read(void)u32 count;u8 i;delay_us(1);HX711_SCL=0;count=0;while(HX711_DOUT);for(i=0;i<24;i+)HX711_SCL=1;count=count<<1;HX711_SCL=0;if(HX711_DOUT)count+;HX711_S
22、CL=1;count=count0x800000;delay_us(1);HX711_SCL=0;return count;/得到的质量单位是 g 克float HX711_count(void)u8 a;u32 adc,wei;float vol;for(a=10;a>0;a-)adc=HX711_read();wei=wei+adc;wei=wei/10;printf("hx711值:%drn",wei);vol=(float)(wei-7431260)/1118)-1.8-1.55; /注意改参数wei=0;printf("重量=%frn",
23、vol);return vol;#ifndef _HX711_H#define _HX711_H #include "sys.h"#define HX711_SCL PAout(5)#define HX711_DOUT PAin(6)void HX711_Init(void);u32 HX711_read(void);float HX711_count(void);#endif#include "lcd.h"#include "stdlib.h"#include "font.h" #include "us
24、art.h" #include "delay.h" / /本程序只供学习使用,未经作者许可,不得用于其它任何用途/2.4/2.8寸/3.5寸 TFT液晶驱动 /支持驱动IC型号包括:ILI9341/ILI9325/RM68042/RM68021/ILI9320/ILI9328/LGDP4531/LGDP4535/SPFD5408/SSD1289/1505/B505/C505等 /正点原子ALIENTEK/*/V1.2修改说明/支持了SPFD5408的驱动,另外把液晶ID直接打印成HEX格式.方便查看LCD驱动IC./V1.3/加入了快速IO的支持/修改了背光控制的
25、极性(适用于V1.8及以后的开发板版本)/对于1.8版本之前(不包括1.8)的液晶模块,请修改LCD_Init函数的LCD_LED=1;为LCD_LED=1;/V1.4/修改了LCD_ShowChar函数,使用画点功能画字符。/加入了横竖屏显示的支持/V1.5 20110730/1,修改了B505液晶读颜色有误的bug./2,修改了快速IO及横竖屏的设置方式./V1.6 20111116/1,加入对LGDP4535液晶的驱动支持/V1.7 20120713/1,增加LCD_RD_DATA函数/2,增加对ILI9341的支持/3,增加ILI9325的独立驱动代码/4,增加LCD_Scan_Dir
26、函数(慎重使用) /6,另外修改了部分原来的函数,以适应9341的操作/V1.8 20120905/1,加入LCD重要参数设置结构体lcddev/2,加入LCD_Display_Dir函数,支持在线横竖屏切换/V1.9 20120911/1,新增RM68042驱动(ID:6804),但是6804不支持横屏显示!原因:改变扫描方式,/导致6804坐标设置失效,试过很多方法都不行,暂时无解。/V2.0 20120924/在不硬件复位的情况下,ILI9341的ID读取会被误读成9300,修改LCD_Init,将无法识别/的情况(读到ID为9300/非法ID),强制指定驱动IC为ILI9341,执行9
27、341的初始化。/V2.1 20120930/修正ILI9325读颜色的bug。/V2.2 20121007/修正LCD_Scan_Dir的bug。/ /LCD的画笔颜色和背景色 u16 POINT_COLOR=0x0000;/画笔颜色u16 BACK_COLOR=0xFFFF; /背景色 /管理LCD重要参数/默认为竖屏_lcd_dev lcddev; /写寄存器函数/regval:寄存器值void LCD_WR_REG(u16 regval) LCD->LCD_REG=regval;/写入要写的寄存器序号 /写LCD数据/data:要写入的值void LCD_WR_DATA(u16
28、data) LCD->LCD_RAM=data; /读LCD数据/返回值:读到的值u16 LCD_RD_DATA(void) return LCD->LCD_RAM; /写寄存器/LCD_Reg:寄存器地址/LCD_RegValue:要写入的数据void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)LCD->LCD_REG = LCD_Reg;/写入要写的寄存器序号 LCD->LCD_RAM = LCD_RegValue;/写入数据 /读寄存器/LCD_Reg:寄存器地址/返回值:读到的数据u16 LCD_ReadReg(u8 L
29、CD_Reg) LCD_WR_REG(LCD_Reg);/写入要读的寄存器序号delay_us(5); return LCD_RD_DATA();/返回读到的值 /开始写GRAMvoid LCD_WriteRAM_Prepare(void) LCD->LCD_REG=lcddev.wramcmd; /LCD写GRAM/RGB_Code:颜色值void LCD_WriteRAM(u16 RGB_Code) LCD->LCD_RAM = RGB_Code;/写十六位GRAM/从ILI93xx读出的数据为GBR格式,而我们写入的时候为RGB格式。/通过该函数转换/c:GBR格式的颜色值/
30、返回值:RGB格式的颜色值u16 LCD_BGR2RGB(u16 c)u16 r,g,b,rgb; b=(c>>0)&0x1f;g=(c>>5)&0x3f;r=(c>>11)&0x1f; rgb=(b<<11)+(g<<5)+(r<<0); return(rgb); /当mdk -O1时间优化时需要设置/延时ivoid opt_delay(u8 i)while(i-);/读取个某点的颜色值 /x,y:坐标/返回值:此点的颜色u16 LCD_ReadPoint(u16 x,u16 y) u16 r=0
31、,g=0,b=0;if(x>=lcddev.width|y>=lcddev.height)return 0;/超过了范围,直接返回 LCD_SetCursor(x,y); if(lcddev.id=0X9341|lcddev.id=0X6804)LCD_WR_REG(0X2E);/9341/6804 发送读GRAM指令else LCD_WR_REG(R34); /其他IC发送读GRAM指令 if(lcddev.id=0X9320)opt_delay(2);/FOR 9320,延时2us if(LCD->LCD_RAM)r=0;/dummy Read opt_delay(2);
32、 r=LCD->LCD_RAM; /实际坐标颜色 if(lcddev.id=0X9341)/9341要分2次读出 opt_delay(2); b=LCD->LCD_RAM; g=r&0XFF;/对于9341,第一次读取的是RG的值,R在前,G在后,各占8位g<<=8;else if(lcddev.id=0X6804)r=LCD->LCD_RAM;/6804第二次读取的才是真实值if(lcddev.id=0X9325|lcddev.id=0X4535|lcddev.id=0X4531|lcddev.id=0X8989|lcddev.id=0XB505)ret
33、urn r;/这几种IC直接返回颜色值else if(lcddev.id=0X9341)return (r>>11)<<11)|(g>>10)<<5)|(b>>11);/ILI9341需要公式转换一下else return LCD_BGR2RGB(r);/其他IC /LCD开启显示void LCD_DisplayOn(void) if(lcddev.id=0X9341|lcddev.id=0X6804)LCD_WR_REG(0X29);/开启显示else LCD_WriteReg(R7,0x0173); /开启显示 /LCD关闭显示v
34、oid LCD_DisplayOff(void) if(lcddev.id=0X9341|lcddev.id=0X6804)LCD_WR_REG(0X28);/关闭显示else LCD_WriteReg(R7,0x0);/关闭显示 /设置光标位置/Xpos:横坐标/Ypos:纵坐标void LCD_SetCursor(u16 Xpos, u16 Ypos) if(lcddev.id=0X9341|lcddev.id=0X6804) LCD_WR_REG(lcddev.setxcmd); LCD_WR_DATA(Xpos>>8); LCD_WR_DATA(Xpos&0XFF)
35、; LCD_WR_REG(lcddev.setycmd); LCD_WR_DATA(Ypos>>8); LCD_WR_DATA(Ypos&0XFF);elseif(lcddev.dir=1)Xpos=lcddev.width-1-Xpos;/横屏其实就是调转x,y坐标LCD_WriteReg(lcddev.setxcmd, Xpos);LCD_WriteReg(lcddev.setycmd, Ypos); /设置LCD的自动扫描方向/注意:其他函数可能会受到此函数设置的影响(尤其是9341/6804这两个奇葩),/所以,一般设置为L2R_U2D即可,如果设置为其他扫描方式,
36、可能导致显示不正常./dir:07,代表8个方向(具体定义见lcd.h)/9320/9325/9328/4531/4535/1505/b505/8989/5408/9341等IC已经实际测试 void LCD_Scan_Dir(u8 dir)u16 regval=0;u8 dirreg=0;u16 temp; if(lcddev.dir=1&&lcddev.id!=0X6804)/横屏时,对6804不改变扫描方向! switch(dir)/方向转换case 0:dir=6;break;case 1:dir=7;break;case 2:dir=4;break;case 3:di
37、r=5;break;case 4:dir=1;break;case 5:dir=0;break;case 6:dir=3;break;case 7:dir=2;break; if(lcddev.id=0x9341|lcddev.id=0X6804)/9341/6804,很特殊switch(dir)case L2R_U2D:/从左到右,从上到下regval|=(0<<7)|(0<<6)|(0<<5); break;case L2R_D2U:/从左到右,从下到上regval|=(1<<7)|(0<<6)|(0<<5); bre
38、ak;case R2L_U2D:/从右到左,从上到下regval|=(0<<7)|(1<<6)|(0<<5); break;case R2L_D2U:/从右到左,从下到上regval|=(1<<7)|(1<<6)|(0<<5); break; case U2D_L2R:/从上到下,从左到右regval|=(0<<7)|(0<<6)|(1<<5); break;case U2D_R2L:/从上到下,从右到左regval|=(0<<7)|(1<<6)|(1<&l
39、t;5); break;case D2U_L2R:/从下到上,从左到右regval|=(1<<7)|(0<<6)|(1<<5); break;case D2U_R2L:/从下到上,从右到左regval|=(1<<7)|(1<<6)|(1<<5); break; dirreg=0X36; regval|=0X08;/BGR if(lcddev.id=0X6804)regval|=0x02;/6804的BIT6和9341的反了 LCD_WriteReg(dirreg,regval); if(regval&0X20)if
40、(lcddev.width<lcddev.height)/交换X,Ytemp=lcddev.width;lcddev.width=lcddev.height;lcddev.height=temp; else if(lcddev.width>lcddev.height)/交换X,Ytemp=lcddev.width;lcddev.width=lcddev.height;lcddev.height=temp; LCD_WR_REG(lcddev.setxcmd); LCD_WR_DATA(0);LCD_WR_DATA(0);LCD_WR_DATA(lcddev.width-1)>
41、>8);LCD_WR_DATA(lcddev.width-1)&0XFF);LCD_WR_REG(lcddev.setycmd); LCD_WR_DATA(0);LCD_WR_DATA(0);LCD_WR_DATA(lcddev.height-1)>>8);LCD_WR_DATA(lcddev.height-1)&0XFF); else switch(dir)case L2R_U2D:/从左到右,从上到下regval|=(1<<5)|(1<<4)|(0<<3); break;case L2R_D2U:/从左到右,从下到上re
42、gval|=(0<<5)|(1<<4)|(0<<3); break;case R2L_U2D:/从右到左,从上到下regval|=(1<<5)|(0<<4)|(0<<3);break;case R2L_D2U:/从右到左,从下到上regval|=(0<<5)|(0<<4)|(0<<3); break; case U2D_L2R:/从上到下,从左到右regval|=(1<<5)|(1<<4)|(1<<3); break;case U2D_R2L:/从上到
43、下,从右到左regval|=(1<<5)|(0<<4)|(1<<3); break;case D2U_L2R:/从下到上,从左到右regval|=(0<<5)|(1<<4)|(1<<3); break;case D2U_R2L:/从下到上,从右到左regval|=(0<<5)|(0<<4)|(1<<3); break; if(lcddev.id=0x8989)/8989 ICdirreg=0X11;regval|=0X6040;/65K else/其他驱动IC dirreg=0X03;r
44、egval|=1<<12; LCD_WriteReg(dirreg,regval); /画点/x,y:坐标/POINT_COLOR:此点的颜色void LCD_DrawPoint(u16 x,u16 y)LCD_SetCursor(x,y);/设置光标位置 LCD_WriteRAM_Prepare();/开始写入GRAMLCD->LCD_RAM=POINT_COLOR; /快速画点/x,y:坐标/color:颜色void LCD_Fast_DrawPoint(u16 x,u16 y,u16 color) if(lcddev.id=0X9341|lcddev.id=0X6804
45、) LCD_WR_REG(lcddev.setxcmd); LCD_WR_DATA(x>>8); LCD_WR_DATA(x&0XFF); LCD_WR_REG(lcddev.setycmd); LCD_WR_DATA(y>>8); LCD_WR_DATA(y&0XFF);else if(lcddev.dir=1)x=lcddev.width-1-x;/横屏其实就是调转x,y坐标LCD_WriteReg(lcddev.setxcmd,x);LCD_WriteReg(lcddev.setycmd,y); LCD->LCD_REG=lcddev.wra
46、mcmd; LCD->LCD_RAM=color; /设置LCD显示方向(6804不支持横屏显示)/dir:0,竖屏;1,横屏void LCD_Display_Dir(u8 dir)if(dir=0)/竖屏lcddev.dir=0;/竖屏lcddev.width=240;lcddev.height=320;if(lcddev.id=0X9341|lcddev.id=0X6804)lcddev.wramcmd=0X2C; lcddev.setxcmd=0X2A;lcddev.setycmd=0X2B; if(lcddev.id=0X6804)lcddev.width=320;lcddev.
47、height=480;else if(lcddev.id=0X8989)lcddev.wramcmd=R34; lcddev.setxcmd=0X4E;lcddev.setycmd=0X4F; elselcddev.wramcmd=R34; lcddev.setxcmd=R32;lcddev.setycmd=R33; else if(lcddev.id!=0X6804)/6804不支持横屏显示 lcddev.dir=1;/横屏lcddev.width=320;lcddev.height=240;if(lcddev.id=0X9341)lcddev.wramcmd=0X2C; lcddev.se
48、txcmd=0X2A;lcddev.setycmd=0X2B; else if(lcddev.id=0X8989)lcddev.wramcmd=R34; lcddev.setxcmd=0X4F;lcddev.setycmd=0X4E; elselcddev.wramcmd=R34; lcddev.setxcmd=R33;lcddev.setycmd=R32; LCD_Scan_Dir(DFT_SCAN_DIR);/默认扫描方向 /初始化lcd/该初始化函数可以初始化各种ILI93XX液晶,但是其他函数是基于ILI9320的!/在其他型号的驱动芯片上没有测试! void LCD_Init(voi
49、d) GPIO_InitTypeDef GPIO_InitStructure;FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure; FSMC_NORSRAMTimingInitTypeDef readWriteTiming; FSMC_NORSRAMTimingInitTypeDef writeTiming; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC,ENABLE);/使能FSMC时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPI
50、OD|RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOG|RCC_APB2Periph_AFIO,ENABLE);/使能PORTB,D,E,G以及AFIO复用功能时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; /PB0 推挽输出 背光 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure
51、); /PORTD复用推挽输出 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_14|GPIO_Pin_15; /PORTD复用推挽输出 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; /复用推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure); /PORTE复用推挽输出 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; /PORTD复用推挽输出 GPIO_InitStructure.GPI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年商用POS加密机合作协议书
- 2025年脱硝催化剂合作协议书
- 2025年诊断血清生物制品合作协议书
- 2025年赣州危险品运输资格证考试题一共多少道
- 2025年拉萨危险品模拟考试
- 2025年白兰地相关饮料酒合作协议书
- 2025年吡嗪酮项目合作计划书
- 2025年天津危险品运输资格证模拟考试题及答案详解
- 2025年信阳押运证模拟考试2024
- 管理竞争策略与创新能力的提升试题及答案
- 酒店如何做年度经营分析
- 拆除工程施工安全培训
- 《一本书读懂Web3.0区块链、NFT、元宇宙和DAO》读书笔记
- 客服线上运营方案
- 项目管理班子人员岗位职责及分工
- 《物控培训资料》课件
- 稻谷加工砻谷及砻下物分离
- 物联网技术及在油气生产中的应用(2015石油论坛)
- 【黄芪的化学成分与药理作用研究进展综述报告6700字(论文)】
- 数独六宫格练习题
- 电子产品与辐射危害
评论
0/150
提交评论