LCD.c
上传用户:yyyd609
上传日期:2022-07-18
资源大小:183k
文件大小:1k
源码类别:

微处理器开发

开发平台:

C/C++

  1. #include <stdio.h>
  2. #include <stdarg.h>
  3. #include "LCD.h"
  4. static void Delay(void)
  5. {
  6. int i;
  7. for(i = 0; i < 0x180; i++);
  8. }
  9. void LCD_Init(void)
  10. {
  11. static const u8 LCD_InitCmd[4]= {0x38, 0x0C, 0x06, 0x01};
  12. int i;
  13. GPIO_Config(GPIO2, 0x000F, GPIO_AF_PP);
  14. EMI_Config(3, EMI_ENABLE | EMI_WAITSTATE(15) | EMI_SIZE_8);
  15. for(i = 0; i < 4; i++)
  16. {
  17. *(vu16*)&LCD_CMD_PORT = LCD_InitCmd[i] << 8 | LCD_InitCmd[i];
  18. Delay();
  19. }
  20. for(i = 0; i < 40; i++)
  21. Delay();
  22. }
  23. void LCD_Goto(int line, int col)
  24. {
  25. unsigned cmd = 0x80 | line << 6 | col;
  26. *(vu16*)&LCD_CMD_PORT = cmd << 8 | cmd;
  27. Delay();
  28. }
  29. void LCD_Putc(char c)
  30. {
  31. *(vu16*)&LCD_DAT_PORT = (u8)c << 8 | (u8)c;
  32. Delay();
  33. }
  34. void LCD_Puts(const char *s)
  35. {
  36. while(*s)
  37. {
  38. *(vu16*)&LCD_DAT_PORT = *s << 8 | *s;
  39. s++;
  40. Delay();
  41. }
  42. }
  43. void LCD_Printf(const char *format, ...)
  44. {
  45. static char buf[256];
  46. va_list args;
  47. va_start(args, format);
  48. vsprintf(buf, format, args);
  49. va_end(args);
  50. LCD_Puts(buf);
  51. }