学习STM32编程LCD显示实验
关键代码:
lcd.c//写寄存器函数 //regval:寄存器值 void LCD_WR_REG(vu16 regval) { regval=regval; //使用-O2优化的时候,必须插入的延时 LCD->LCD_REG=regval;//写入要写的寄存器序号 } //写LCD数据 //data:要写入的值 void LCD_WR_DATA(vu16 data) { data=data; //使用-O2优化的时候,必须插入的延时 LCD->LCD_RAM=data; } //读LCD数据 //返回值:读到的值 u16 LCD_RD_DATA(void) { vu16 ram; //防止被优化 ram=LCD->LCD_RAM; return ram; } //写寄存器 //LCD_Reg:寄存器地址 //LCD_RegValue:要写入的数据 void LCD_WriteReg(u16 LCD_Reg,u16 LCD_RegValue) { LCD->LCD_REG = LCD_Reg; //写入要写的寄存器序号 LCD->LCD_RAM = LCD_RegValue;//写入数据 } //读寄存器 //LCD_Reg:寄存器地址 //返回值:读到的数据 u16 LCD_ReadReg(u16 LCD_Reg) { LCD_WR_REG(LCD_Reg); //写入要读的寄存器序号 delay_us(5); return LCD_RD_DATA(); //返回读到的值 } //开始写GRAM void 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 } //读取个某点的颜色值 //x,y:坐标 //返回值:此点的颜色 u16 LCD_ReadPoint(u16 x,u16 y) { u16 r=0,g=0,b=0; if(x>=lcddev.width||y>=lcddev.height)return 0; //超过了范围,直接返回 LCD_SetCursor(x,y); if (lcddev.id == 0X5510) //5510 发送读GRAM指令 { LCD_WR_REG(0X2E00); } else //其他IC(9341/5310/1963/7789)发送读GRAM指令 { LCD_WR_REG(0X2E); } r=LCD_RD_DATA(); //dummy Read if (lcddev.id == 0X1963) //对1963来说,是真读 { return r; //1963直接读就可以 } r = LCD_RD_DATA(); //实际坐标颜色 //9341/5310/5510/7789 要分2次读出 b = LCD_RD_DATA(); g = r & 0XFF; //对于 9341/5310/5510/7789, 第一次读取的是RG的值,R在前,G在后,各占8位 g <<= 8; return (((r >> 11) << 11) | ((g >> 10) << 5) | (b >> 11)); // 9341/5310/5510/7789 需要公式转换一下 } //LCD开启显示 void LCD_DisplayOn(void) { if (lcddev.id == 0X5510) //5510开启显示指令 { LCD_WR_REG(0X2900); //开启显示 } else //9341/5310/1963/7789 等发送开启显示指令 { LCD_WR_REG(0X29); //开启显示 } } //LCD关闭显示 void LCD_DisplayOff(void) { if (lcddev.id == 0X5510) //5510关闭显示指令 { LCD_WR_REG(0X2800); //关闭显示 } else //9341/5310/1963/7789 等发送关闭显示指令 { LCD_WR_REG(0X28); //关闭显示 } } //设置光标位置 //Xpos:横坐标 //Ypos:纵坐标 void LCD_SetCursor(u16 Xpos, u16 Ypos) { //9341/5310/7789等设置坐标 { LCD_WR_REG(lcddev.setxcmd); LCD_WR_DATA(Xpos >> 8); LCD_WR_DATA(Xpos & 0XFF); LCD_WR_REG(lcddev.setycmd); LCD_WR_DATA(Ypos >> 8); LCD_WR_DATA(Ypos & 0XFF); } } //画点 //x,y:坐标 //POINT_COLOR:此点的颜色 void LCD_DrawPoint(u16 x,u16 y) { LCD_SetCursor(x,y); //设置光标位置 LCD_WriteRAM_Prepare(); //开始写入GRAM LCD->LCD_RAM=POINT_COLOR; } //SSD1963 背光设置 //pwm:背光等级,0~100.越大越亮. void LCD_SSD_BackLightSet(u8 pwm) { LCD_WR_REG(0xBE); //配置PWM输出 LCD_WR_DATA(0x05); //1设置PWM频率 LCD_WR_DATA(pwm*2.55);//2设置PWM占空比 LCD_WR_DATA(0x01); //3设置C LCD_WR_DATA(0xFF); //4设置D LCD_WR_DATA(0x00); //5设置E LCD_WR_DATA(0x00); //6设置F } //初始化lcd //该初始化函数可以初始化各种ILI93XX液晶,但是其他函数是基于ILI9320的!!! //在其他型号的驱动芯片上没有测试! void LCD_Init(void) { vu32 i=0; GPIO_InitTypeDef GPIO_InitStructure; FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure; FSMC_NORSRAMTimingInitTypeDef readWriteTiming; FSMC_NORSRAMTimingInitTypeDef writeTiming; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOE|RCC_AHB1Periph_GPIOF|RCC_AHB1Periph_GPIOG, ENABLE);//使能PD,PE,PF,PG时钟 RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC,ENABLE);//使能FSMC时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;//PB15 推挽输出,控制背光 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉 GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化 //PB15 推挽输出,控制背光 GPIO_InitStructure.GPIO_Pin = (3<<0)|(3<<4)|(7<<8)|(3<<14);//PD0,1,4,5,8,9,10,14,15 AF OUT GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用输出 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉 GPIO_Init(GPIOD, &GPIO_InitStructure);//初始化 GPIO_InitStructure.GPIO_Pin = (0X1FF<<7);//PE7~15,AF OUT GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用输出 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉 GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;//PF12,FSMC_A6 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用输出 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉 GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;//PF12,FSMC_A6 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用输出 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉 GPIO_Init(GPIOG, &GPIO_InitStructure);//初始化 GPIO_PinAFConfig(GPIOD,GPIO_PinSource0,GPIO_AF_FSMC);//PD0,AF12 GPIO_PinAFConfig(GPIOD,GPIO_PinSource1,GPIO_AF_FSMC);//PD1,AF12 GPIO_PinAFConfig(GPIOD,GPIO_PinSource4,GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOD,GPIO_PinSource5,GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOD,GPIO_PinSource8,GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOD,GPIO_PinSource9,GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOD,GPIO_PinSource10,GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOD,GPIO_PinSource14,GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOD,GPIO_PinSource15,GPIO_AF_FSMC);//PD15,AF12 GPIO_PinAFConfig(GPIOE,GPIO_PinSource7,GPIO_AF_FSMC);//PE7,AF12 GPIO_PinAFConfig(GPIOE,GPIO_PinSource8,GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOE,GPIO_PinSource9,GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOE,GPIO_PinSource10,GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOE,GPIO_PinSource11,GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOE,GPIO_PinSource12,GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOE,GPIO_PinSource13,GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOE,GPIO_PinSource14,GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOE,GPIO_PinSource15,GPIO_AF_FSMC);//PE15,AF12 GPIO_PinAFConfig(GPIOF,GPIO_PinSource12,GPIO_AF_FSMC);//PF12,AF12 GPIO_PinAFConfig(GPIOG,GPIO_PinSource12,GPIO_AF_FSMC); readWriteTiming.FSMC_AddressSetupTime = 0XF; //地址建立时间(ADDSET)为16个HCLK 1/168M=6ns*16=96ns readWriteTiming.FSMC_AddressHoldTime = 0x00; //地址保持时间(ADDHLD)模式A未用到 readWriteTiming.FSMC_DataSetupTime = 60; //数据保存时间为60个HCLK =6*60=360ns readWriteTiming.FSMC_BusTurnAroundDuration = 0x00; readWriteTiming.FSMC_CLKDivision = 0x00; readWriteTiming.FSMC_DataLatency = 0x00; readWriteTiming.FSMC_AccessMode = FSMC_AccessMode_A; //模式A writeTiming.FSMC_AddressSetupTime =9; //地址建立时间(ADDSET)为9个HCLK =54ns writeTiming.FSMC_AddressHoldTime = 0x00; //地址保持时间(A writeTiming.FSMC_DataSetupTime = 8; //数据保存时间为6ns*9个HCLK=54ns writeTiming.FSMC_BusTurnAroundDuration = 0x00; writeTiming.FSMC_CLKDivision = 0x00; writeTiming.FSMC_DataLatency = 0x00; writeTiming.FSMC_AccessMode = FSMC_AccessMode_A; //模式A FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4;// 这里我们使用NE4 ,也就对应BTCR[6],[7]。 FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; // 不复用数据地址 FSMC_NORSRAMInitStructure.FSMC_MemoryType =FSMC_MemoryType_SRAM;// FSMC_MemoryType_SRAM; //SRAM FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;//存储器数据宽度为16bit FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode =FSMC_BurstAccessMode_Disable;// FSMC_BurstAccessMode_Disable; FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low; FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait=FSMC_AsynchronousWait_Disable; FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable; FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState; FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; // 存储器写使能 FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable; FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Enable; // 读写使用不同的时序 FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &readWriteTiming; //读写时序 FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &writeTiming; //写时序 FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); //初始化FSMC配置 FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE); // 使能BANK1 delay_ms(50); // delay 50 ms //尝试9341 ID的读取 LCD_WR_REG(0XD3); lcddev.id=LCD_RD_DATA(); //dummy read lcddev.id=LCD_RD_DATA(); //读到0X00 lcddev.id=LCD_RD_DATA(); //读取93 lcddev.id<<=8; lcddev.id|=LCD_RD_DATA(); //读取41 if(lcddev.id==0X9341||lcddev.id == 0X7789 ||lcddev.id==0X5310||lcddev.id==0X5510||lcddev.id==0X1963)//如果是这几个IC,则设置WR时序为最快 { //重新配置写时序控制寄存器的时序 FSMC_Bank1E->BWTR[6]&=~(0XF<<0);//地址建立时间(ADDSET)清零 FSMC_Bank1E->BWTR[6]&=~(0XF<<8);//数据保存时间清零 FSMC_Bank1E->BWTR[6]|=3<<0; //地址建立时间(ADDSET)为3个HCLK =18ns if(lcddev.id == 0X7789) { FSMC_Bank1E->BWTR[6]|=3<<8; //数据保存时间(DATAST)为6ns*3个HCLK=18ns } else { FSMC_Bank1E->BWTR[6]|=2<<8; //数据保存时间(DATAST)为6ns*3个HCLK=18ns } } printf(" LCD ID:%xr ",lcddev.id); //打印LCD ID if(lcddev.id==0X9341) //9341初始化 { LCD_WR_REG(0xCF); LCD_WR_DATA(0x00); LCD_WR_DATA(0xC1); LCD_WR_DATA(0X30); LCD_WR_REG(0xED); LCD_WR_DATA(0x64); LCD_WR_DATA(0x03); LCD_WR_DATA(0X12); LCD_WR_DATA(0X81); LCD_WR_REG(0xE8); LCD_WR_DATA(0x85); LCD_WR_DATA(0x10); LCD_WR_DATA(0x7A); LCD_WR_REG(0xCB); LCD_WR_DATA(0x39); LCD_WR_DATA(0x2C); LCD_WR_DATA(0x00); LCD_WR_DATA(0x34); LCD_WR_DATA(0x02); LCD_WR_REG(0xF7); LCD_WR_DATA(0x20); LCD_WR_REG(0xEA); LCD_WR_DATA(0x00); LCD_WR_DATA(0x00); LCD_WR_REG(0xC0); //Power control LCD_WR_DATA(0x1B); //VRH[5:0] LCD_WR_REG(0xC1); //Power control LCD_WR_DATA(0x01); //SAP[2:0];BT[3:0] LCD_WR_REG(0xC5); //VCM control LCD_WR_DATA(0x30); //3F LCD_WR_DATA(0x30); //3C LCD_WR_REG(0xC7); //VCM control2 LCD_WR_DATA(0XB7); LCD_WR_REG(0x36); // Memory Access Control LCD_WR_DATA(0x48); LCD_WR_REG(0x3A); LCD_WR_DATA(0x55); LCD_WR_REG(0xB1); LCD_WR_DATA(0x00); LCD_WR_DATA(0x1A); LCD_WR_REG(0xB6); // Display Function Control LCD_WR_DATA(0x0A); LCD_WR_DATA(0xA2); LCD_WR_REG(0xF2); // 3Gamma Function Disable LCD_WR_DATA(0x00); LCD_WR_REG(0x26); //Gamma curve selected LCD_WR_DATA(0x01); LCD_WR_REG(0xE0); //Set Gamma LCD_WR_DATA(0x0F); LCD_WR_DATA(0x2A); LCD_WR_DATA(0x28); LCD_WR_DATA(0x08); LCD_WR_DATA(0x0E); LCD_WR_DATA(0x08); LCD_WR_DATA(0x54); LCD_WR_DATA(0XA9); LCD_WR_DATA(0x43); LCD_WR_DATA(0x0A); LCD_WR_DATA(0x0F); LCD_WR_DATA(0x00); LCD_WR_DATA(0x00); LCD_WR_DATA(0x00); LCD_WR_DATA(0x00); LCD_WR_REG(0XE1); //Set Gamma LCD_WR_DATA(0x00); LCD_WR_DATA(0x15); LCD_WR_DATA(0x17); LCD_WR_DATA(0x07); LCD_WR_DATA(0x11); LCD_WR_DATA(0x06); LCD_WR_DATA(0x2B); LCD_WR_DATA(0x56); LCD_WR_DATA(0x3C); LCD_WR_DATA(0x05); LCD_WR_DATA(0x10); LCD_WR_DATA(0x0F); LCD_WR_DATA(0x3F); LCD_WR_DATA(0x3F); LCD_WR_DATA(0x0F); LCD_WR_REG(0x2B); LCD_WR_DATA(0x00); LCD_WR_DATA(0x00); LCD_WR_DATA(0x01); LCD_WR_DATA(0x3f); LCD_WR_REG(0x2A); LCD_WR_DATA(0x00); LCD_WR_DATA(0x00); LCD_WR_DATA(0x00); LCD_WR_DATA(0xef); LCD_WR_REG(0x11); //Exit Sleep delay_ms(120); LCD_WR_REG(0x29); //display on } LCD_Display_Dir(0); //默认为竖屏 LCD_LED=1; //点亮背光 LCD_Clear(WHITE); } //清屏函数 //color:要清屏的填充色 void LCD_Clear(u16 color) { u32 index = 0; u32 totalpoint = lcddev.width; totalpoint *= lcddev.height; //得到总点数 LCD_SetCursor(0x00, 0x0000); //设置光标位置 LCD_WriteRAM_Prepare(); //开始写入GRAM for (index = 0; index < totalpoint; index++) { LCD->LCD_RAM=color; } }
main.cint main(void) { u8 x=0; u8 lcd_id[12]; //存放LCD ID字符串 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2 delay_init(168); //初始化延时函数 uart_init(115200); //初始化串口波特率为115200 LED_Init(); //初始化LED LCD_Init(); //初始化LCD FSMC接口 POINT_COLOR=RED; //画笔颜色:红色 sprintf((char*)lcd_id,"LCD ID:%04X",lcddev.id);//将LCD ID打印到lcd_id数组。 while(1) { switch(x) { case 0:LCD_Clear(WHITE);break; case 1:LCD_Clear(BLACK);break; case 2:LCD_Clear(BLUE);break; case 3:LCD_Clear(RED);break; case 4:LCD_Clear(MAGENTA);break; case 5:LCD_Clear(GREEN);break; case 6:LCD_Clear(CYAN);break; case 7:LCD_Clear(YELLOW);break; case 8:LCD_Clear(BRRED);break; case 9:LCD_Clear(GRAY);break; case 10:LCD_Clear(LGRAY);break; case 11:LCD_Clear(BROWN);break; } POINT_COLOR=RED; LCD_ShowString(30,40,210,24,24,"Explorer STM32F4"); LCD_ShowString(30,70,200,16,16,"TFTLCD TEST"); LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK"); LCD_ShowString(30,110,200,16,16,lcd_id); //显示LCD ID LCD_ShowString(30,130,200,12,12,"2014/5/4"); x++; if(x==12)x=0; LED0=!LED0; delay_ms(1000); } }
刘备一生看错两人,一人间接害死关羽,一人间接耗死孔明众所周知,作为三国霸主之一的刘备,看人识人非常准,也正是因为这个原因,所以刘备才能创建蜀汉,开创霸业!然而再厉害的人也有失算的时候,刘备看人虽准,但他这辈子也看错了两个人,一人间接
高柳镇后饮马村的传奇一个还魂的神医1980年高柳镇发生了一件奇事后饮马村的一个女人生病死了,活过来就成了神医,还给人看病,村里正热闹呢!事情发生是这样的有家的女人病了,当时这家男人已经去世,这个女人病得很重,眼看就
女生节变味了吗?阳春三月,巾帼逐梦,妇女节也即将到来,这是全国乃至全世界妇女都欢呼的日子。但是在妇女节的前一天,还穿插一个女生节,一开始以为女生近十年才有的节日,因为现在情侣之间的节日是越来越多,
从宏观角度探究,秦始皇统一度量衡后对秦朝发展及后世的影响文梅利编辑梅利前言秦始皇是中国历史上一个极具争议性的人物。他一手创建了一个极为庞大的帝国,结束了长达数百年的分裂局面,建立了一种新的中央集权制度,并采取了一系列措施来加强自己的统治
略谈六朝及隋时期的南方土豪历史开讲在阅读此文之前,麻烦您点击一下关注,既方便您进行讨论和分享,又能给您带来不一样的参与感,感谢您的支持。在中国历史上,南方土豪一词,最早可以追溯到东晋时期。南方指的是中国南部
科举直赴法朝鲜科举的特殊通道一朝鲜科举的起源与发展众所周知,我国的科举制度起于隋唐,覆灭于清末,延续了一千多年,是我国最重要也是最具代表性的选官制度。其实这一制度,在邻国朝鲜也存在了近千年。公元936年,建国
浅析刘邦击败项羽的多种因素文多芬奇编辑多芬奇刘邦和项羽是中国历史上著名的两位战国时期的英雄人物,他们之间的军事竞争被称为楚汉之争。楚汉之争是中国历史上一次具有深远意义的战争,它标志着中国的统一和中央集权的建
百年超级工程再造淮河黄金水道,能否拯救淮海经济洼地?水运,是人类交通的第一选择。目前,世界主要的经济带和大城市基本都分布在沿海和沿江地区,其原因就是沿海沿江的水运发达,运输成本低廉,运输能力强。而中国内陆也有诸多的河流,通过这些江河
一代战神霍去病的封地,一村出了三个冠军侯邓州冠军古村里,聆听岁月的回响王玉卓(前中)讲解着冠军村发现的相关文物情况。有的地方,一听名字便让人心生向往,就像位于邓州市张村镇南部的冠军村,霸气的名字让人不由想探究其来历。冠军村因是西汉冠军侯霍去病封地而得
魏灭蜀之后,为什么不趁胜进攻东吴?有何难言之隐?公元263年8月,魏国实际掌权者大将军司马昭决定对蜀汉发动战争,派出钟会邓艾诸葛绪各率大军分三路伐蜀。蜀军统帅姜维率军在天险剑阁阻挡魏军主力,进行对峙,不料,邓艾率军偷渡阴平奇袭江
对越反击战中,他率全连二百多人投降越军,结局如何?1979年,一则消息被紧急送往了指挥部,参谋长在看到之后就露出了震惊的眼神,他来不及汇报,立刻打断了正在全神贯注观看影片的许世友。许司令员,有重要消息!许世友看着眼前人严肃的脸庞他
从窦氏五龙的传奇,学窦燕山的育儿经窦燕山,有义方,教五子,名俱扬出自童蒙学语三字经,五代时,燕山人窦禹钧教子有方,他教育的五个儿子(仪俨侃偁僖)都很有成就,高中登科,名扬四方,被时人赞为窦氏五龙。今天就和众语小编一
冬天是吃萝卜的黄金季节,建议多喝六道萝卜汤,顺季而食身体好大家好,这里是邱哥说美食,俗话说得好,冬吃萝卜,夏吃姜,冬天萝卜小人参。因此,冬天是吃萝卜的黄金季节。建议朋友们多给家人做六道营养萝卜汤,暖心又暖胃,营养又滋补,顺季而食身体好,特
和我在隆阜的老街走一走,感受下徽州古老街道的市井和文化气息和我在隆阜的老街走一走,感受下徽州古老街道的市井和文化气息司马狂文因为有朋友家在隆阜的缘故,去过很多次隆阜,只不过每次都是匆匆而过,在我的印象里隆阜基本上和徽州地区大多数的乡镇一个
初冬大唐芙蓉园柳色金黄,秋意还浓来源西部网(陕西新闻网)西部网讯(记者魏永贤)初冬时节,西安大唐芙蓉园秋色依旧,秋意还浓。芙蓉湖边柳枝阿娜多姿柳树叶渐渐变黄,形成秋冬交替时特有的风景。初冬大唐芙蓉园柳色金黄,秋意
初冬时节,别有一番枫味在心头或许春有了百花,枫在春季并不张扬。而在秋,虽然有秋菊绽放,却再也无法遮挡枫的色彩亦或许枫爱极了秋,才在心爱之人面前一展芳华。最近时常看手机里的天气预报,唯恐气温骤降,冰冻了自然风景
大衣裙子才是初冬的本命穿法,优雅有气质,美得很高级初冬季节,想要穿的保暖又时髦,就一定要学会避开臃肿感的情况出现,在今年大衣裙子才是本命穿法,不仅优雅有气质,而且能够让你美得非常高级。大衣在初冬季节最受女性欢迎,包容性高任何身材都
四步搞定质谱分析质谱,即质量的谱图,物质的分子在高真空下,经物理作用或化学反应等途径形成带电粒子,某些带电粒子可进一步断裂,形成离子,质谱的离子可以质谱的核心内容,今天就和大家聊一聊质谱使用者都应
吴亦凡先生被判了,下一个是不是该都美竹女士了?头条创作挑战赛吴先生宣判结果出来后,都女士像打了胜仗的士兵一样,第一时间跳出来分享了自己的喜悦终于等到了!并且不忘夸自己一番我只是一个勇敢了一些的普通人。都女士这小人得志的做派,让
寒冬喝酒莫随意,年长的酒友更需谨记2喝3不饮,即可安心过冬大自然有着无穷的伟力,四季流转,万物随之变化的规律还有很多是我们难以探寻的。夏季的暑气让我们不得不去改变自己的习惯,去穿上单薄的外衣来让自己凉快点,而冬季的寒潮也一直侵袭着我们,让
露营已进入精细化运营,不能是一锤子买卖帐篷天幕草坪美食三五好友远离喧嚣亲近自然仰望星空,轻松又惬意的氛围使露营受到大众青睐。自疫情以来,露营逐渐成为大众热衷的休闲旅游方式,今年露营更是火热出圈,社交平台上露营短视频露营
Ai绘画布达拉宫今天是Ai绘画,城市系列的第六站,西藏布达拉宫!城市不分先后,如果你想要看到你所在城市的Ai绘画照片,可以在评论区留言,我将会挑选点赞最高的评论,优先哦!记得把屏幕调到最亮,下面开