STM8L152K4驱动LCD.rar

  • 瑛瑛美代子
    了解作者
  • C/C++
    开发工具
  • 480KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 1
    下载次数
  • 2020-10-16 14:21
    上传日期
使用STM8L152K4自带的液晶魔铠,驱动段码液晶,亲测可用。
STM8L152K4驱动LCD.rar
  • STM8L152K4驱动LCD
  • settings
  • KQ_STM8L152K_Test22_LCD.wsdt
    2.8KB
  • KQ_STM8L152K_Test22_LCD.dbgdt
    4.7KB
  • KQ_STM8L152K_Test22_LCD.dni
    1.4KB
  • KQ_STM8L152K_Test22_LCD.Debug.driver.xcl
    167B
  • KQ_STM8L152K_Test22_LCD.Debug.cspy.bat
    1.7KB
  • KQ_STM8L152K_Test22_LCD.wspos
    53B
  • KQ_STM8L152K_Test22_LCD.cspy.bat
    1KB
  • KQ_STM8L152K_Test22_LCD.Debug.general.xcl
    358B
  • Debug
  • Obj
  • main.o
    36.5KB
  • main.pbi.cout
    11.2KB
  • KQ_STM8L152K_Test22_LCD.pbd
    531KB
  • KQ_STM8L152K_Test22_LCD.pbd.browse
    531KB
  • main.pbi
    532.2KB
  • List
  • KQ_STM8L152K_Test22_LCD.map
    15.5KB
  • main.lst
    13.5KB
  • Exe
  • KQ_STM8L152K_Test22_LCD.hex
    2.8KB
  • KQ_STM8L152K_Test22_LCD.out
    40.8KB
  • KQ_STM8L152K_Test22_LCD.eww
    177B
  • KQ_STM8L152K_Test22_LCD.ewd
    12.3KB
  • Backup of KQ_STM8L152K_Test22_LCD.ewp
    40.9KB
  • Untitled1.c
    1KB
  • KQ_STM8L152K_Test22_LCD.ewp
    42.8KB
  • Backup of KQ_STM8L152K_Test22_LCD.ewd
    11KB
  • main.c
    7.1KB
  • KQ_STM8L152K_Test22_LCD.dep
    2.2KB
  • KQ_STM8L152K_Test22_LCD.ewt
    109KB
内容介绍
/* 添加包含芯片的头文件 */ #include<iostm8l152k4.h> unsigned char LCD_DisBuffer[4];//显示缓冲区 //码值表 /* 0 1 2 3 4 */ const unsigned short Data[16] = {0x3132, 0x2020, 0x3212, 0x3222, 0x2320, /* 5 6 7 8 9 */ 0x1322, 0x1332, 0x3020, 0x3332, 0x3322, /* A b c d e f*/ 0x3330, 0x0332, 0x1112, 0x2232, 0x1312, 0x1310}; //数值 BAGFCEDP 码值 //0 11011110 3132 //1 10001000 2020 //2 11100110 3212 //3 11101010 3222 //4 10111000 2320 //5 01111010 1322 //6 01111110 1332 //7 11001000 3020 //8 11111110 3332 //9 11111010 3322 //A 11111100 3330 //b 00111110 0332 //C 01010110 1112 //d 10101110 2232 //E 01110110 1312 //F 01110100 1310 unsigned char number1 , number2 , number3 , number4; /******************************************************************************* **函数名称:void InitLCD(void) **功能描述:初始化LCD模块参数 **入口参数:无 **输出:无 *******************************************************************************/ void InitLCD(void) { CLK_PCKENR2_PCKEN22=1; CLK_PCKENR2_bit.PCKEN23 = 1; //使能LCD时钟 //CLK_ECKR_bit.LSEON = 1; //开启LSE //while(CLK_ECKR_bit.LSERDY == 0); //等待LSE准备就绪 CLK_CRTCR_bit.RTCSEL0 = 0; //选择内部低速时钟为RTC时钟源 CLK_CRTCR_bit.RTCSEL1 = 1; CLK_CRTCR_bit.RTCSEL2 = 0; CLK_CRTCR_bit.RTCSEL3 = 0; CLK_CRTCR_bit.RTCDIV0 = 0; //RTC时钟源进行1分频 CLK_CRTCR_bit.RTCDIV1 = 0; CLK_CRTCR_bit.RTCDIV2 = 0; LCD_FRQ_bit.PS0 = 0; //设置LCD的时钟进行2的4次方分频 = 16分频 LCD_FRQ_bit.PS1 = 1; LCD_FRQ_bit.PS2 = 0; LCD_FRQ_bit.PS3 = 0; LCD_FRQ_bit.DIV0 = 0; //设置LCD的刷屏频率为DIV + 16 = 0 +16 = 16分频的LCD时钟 LCD_FRQ_bit.DIV1 = 0; LCD_FRQ_bit.DIV2 = 0; LCD_FRQ_bit.DIV3 = 0; LCD_CR1_bit.DUTY0 = 1; //设置DYTY = 3 LCD的输出占空比选择为1/4 LCD_CR1_bit.DUTY1 = 1; LCD_CR1_bit.B2 = 0; //设置LCD的输出为1/3偏置选择 LCD_CR2_bit.VSEL = 0; //选择LCD的电源为内部集成电源 LCD_PM0 = 0x00; //设置LCD的SEG0 -SEG7禁止输出 STM8L152K4T6没有SEG0-SEG7的段控制 LCD_PM1 = 0xff; //设置LCD的SEG8-SEG15全球通输出 LCD_PM2 = 0x00; //以下SEG全禁止 LCD_PM3 = 0x00; LCD_CR3_bit.DEAD0 = 0; //设置死区时间 : 设置LCD没有死区电压 LCD_CR3_bit.DEAD1 = 0; LCD_CR3_bit.DEAD2 = 0; LCD_CR2_bit.PON0 = 1; //PON = 1 设置液晶的脉冲持续时间为1个时钟周期 LCD_CR2_bit.PON1 = 0; LCD_CR2_bit.PON2 = 0; LCD_CR2_bit.HD = 1; //使能LCD高速控制 LCD_CR3_bit.LCDEN = 1; //使能LCD模块 } /******************************************************************************* **函数名称:void Display() **功能描述:向LCD显示缓存输入要显示的数据 **入口参数:无 **输出:无 *******************************************************************************/ void Display() { //对显示缓冲区操作,要结合液晶数据手册进行数据调整给LCD缓存显示 LCD_DisBuffer[0]=(((Data[ number4] &0xf000)>>12)<<0)|(((Data[number3] &0xf000)>>12)<<2)|(((Data[number2] &0xf000)>>12)<<4)|(((Data[number1] &0xf000)>>12)<<6); //COM0,SEG15-SEG8 LCD_DisBuffer[1]=(((Data[ number4] &0x0f00)>>8)<<0)|(((Data[ number3] &0x0f00)>>8)<<2)|(((Data[ number2] &0x0f00)>>8)<<4)|(((Data[ number1] &0x0f00)>>8)<<6); //COM1 LCD_DisBuffer[2]=(((Data[ number4] &0x00f0)>>4)<<0)|(((Data[ number3] &0x00f0)>>4)<<2)|(((Data[ number2] &0x00f0)>>4)<<4)|(((Data[ number1] &0x00f0)>>4)<<6); //COM2 LCD_DisBuffer[3]=(((Data[ number4] &0x000f)>>0)<<0)|(((Data[ number3] &0x000f)>>0)<<2)|(((Data[ number2] &0x000f)>>0)<<4)|(((Data[ number1] &0x000f)>>0)<<6); //COM3 LCD_RAM1 = LCD_DisBuffer[0]; //SEG8-SEG15对应寄存器RAM1,COM0 LCD_RAM4 = LCD_DisBuffer[1]<<4; //COM1,SEG8-SEG11对应RAM4高四位 LCD_RAM5 = LCD_DisBuffer[1]>>4; //COM1,SEG12-SEG15对应RAM5低四位 LCD_RAM8 = LCD_DisBuffer[2]; //COM2,SEG8-SEG15对应RAM8 LCD_RAM11 = LCD_DisBuffer[3]<<4; //COM3,SEG8-SEG11对应RAM11高四位 LCD_RAM12 = LCD_DisBuffer[3]>>4; //COM3,SEG12-SEG15对应RAM12低四位 } /******************************************************************************* **函数名称:void Display_lcd_dot(unsigned char p) **功能描述:在LCD里的4个小数点任意筢显示 **入口参数:P ;1代表双点显示,2代表2P显示,3代表3P显示,4代表4显示 **输出:无 *******************************************************************************/ void Display_lcd_dot(unsigned char p) { switch(p) { case 1: LCD_RAM11 = (LCD_DisBuffer[3]<<4)|0x10; //1P,COM3,SEG8对应RAM的第5位,所以要与0X10相或 break; case 2: LCD_RAM11 = (LCD_DisBuffer[3]<<4)|0x40; //2P,COM3,SEG10对应RAM的第7位,所以要与0X40相或 break; case 3: LCD_RAM12 = LCD_DisBuffer[3]>>4|0x01; //3P break; case 4: LCD_RAM12 = LCD_DisBuffer[3]>>4|0x04; //4P break; default: break; } } /******************************************************************************* **函数名称:void delay(unsigned int ms) Name: void delay(unsigned int ms) **功能描述:大概延时 **入口参数:unsigned int ms 输入大概延时数值 **输出:无 *******************************************************************************/ void delay(unsigned int ms) { unsigned int x , y; for(x = ms; x > 0; x--) /* 通过一定周期循环进行延时*/ for(y = 1000 ; y > 0 ; y--); } /******************************************************************************* **函数名称:void ClockSwitch_HSE() **功能描述:将系统时钟切换到外部高速晶振时钟 **入口参数:无 **输出:无 *******************************************************************************/ void ClockSwitch_HSE() { //启用外部高速晶振且16分频,外部晶振1-16MHz CLK_SWCR_bit.SWEN = 1; //使能开启切换 CLK_ECKR_bit.HSEON = 1; //开启HSE while(CLK_ECKR_bit.HSERDY == 0); //等待HSE准备就绪 CLK_SWR = 0x04; //选择HSE为主时钟源 while(CLK_SWCR_bit.SWBSY == 1); //等待切换完成 CLK_CKDIVR_bit.CKM = 0; //1分频直接用外部16M晶振 //CKM = 0 系统1分频 //CKM = 1 系统2分频 //CKM = 2 系统4分频 //CKM = 3 系统8分频 //CKM = 4 系统16分频 //CKM = 5 系统32分频 //CKM = 6 系统64分频 //CKM = 7 系统128分频 CLK_SWCR_bit.SWEN = 0; //关闭切换 } /* 主函数 */ void main() { char i , j; //CLK_CKDIVR_bit.CKM = 0; //1分频直接用外部16M晶振 ClockSwitch_HSE(); //内部时钟为1分频 = 16Mhz InitLCD(); //调用LCD初始化函数 while(1) //循环在LCD里显示0_F数字 { for(i = 0; i< 16; i++) { number4= i; //加载要显示的数值 number3 = i; number2 = i; number1 = i; Display(); j++; //循环显示4个点 if(j >= 5) { j = 1; } Display_lcd_dot(j); //小数点显示 delay(5000); } } }
评论
    相关推荐
    • stm32 tft lcd驱动
      stm32 tft lcd 底层驱动 使用STM32F103RBT6驱动彩色液晶屏,本人亲自测试过得,绝对可用
    • WinCE LCD驱动知识点
      WinCE LCD驱动知识点,说明,即HHARM9-EDU PB5.0的驱动代码
    • lcd 驱动 linux
      linux lcd 驱动 linux lcd 驱动 linux lcd 驱动
    • Linux下LCD驱动
      利用framebuffer来制作Linux下的LCD驱动
    • LCD驱动器程序
      基于C和C++的LCD驱动程序,可以直接与别的程序兼容
    • 树莓派LCD驱动
      树莓派LCD驱动/2.8/3.2/3.5/3.97/4.3/5/7等! You can focus on the following GitHub web site, for the latest lcd drivers: https://github.com/goodtft/LCD-show =============================================...
    • 240128lcd驱动程序
      液晶显示屏lcd240128的驱动程序,程序是用51单片机驱动的,引脚图最好找厂家要或者在淘宝上是搜
    • wince LCD 驱动修改
      wince lcd 驱动修改 s3c2440 ARM 920 支持800*600 的修改 驱动修改 驱动修改
    • 嵌入式LCD驱动
      韦东山第二期的LCD驱动源码,经本人测试可以用,可能板子不同,部分代码需要修改
    • LCD驱动源码
      嵌入式 ARM LCD 驱动 LCD驱动源码 基于armCPU