[Atmel] 用SAM-BA或JLINK跑ATSAM4E16的程序(7)ili93XX显示屏

[复制链接]
 楼主| ddllxxrr 发表于 2015-11-4 22:13 | 显示全部楼层 |阅读模式
这个是个驱动彩色显示屏ili93XX_LCD的例程。

这个例程使用了一个高难的东东----SMC

至于SMC是什么东东,数据手册上有说明。这个我想在以后好好研究一下。



从字面上看应是静态存贮控制

以下是运行效果:




这个程序先是初使化静态存贮,然后通过静态存贮控制显示屏。

程序如下:

  1. #include "asf.h"
  2. #include "stdio_serial.h"
  3. #include "conf_board.h"
  4. #include "conf_clock.h"
  5. #include "smc.h"

  6. /** Chip select number to be set */
  7. #define ILI93XX_LCD_CS      1

  8. struct ili93xx_opt_t g_ili93xx_display_opt;

  9. /**
  10. *  Configure UART console.
  11. */
  12. static void configure_console(void)
  13. {
  14.         const usart_serial_options_t uart_serial_options = {
  15.                 .baudrate = CONF_UART_BAUDRATE,
  16.                 .paritytype = CONF_UART_PARITY
  17.         };

  18.         /** Configure console UART. */
  19.         sysclk_enable_peripheral_clock(CONSOLE_UART_ID);
  20.         stdio_serial_init(CONF_UART, &uart_serial_options);
  21. }

  22. /**
  23. * \brief Application entry point for smc_lcd example.
  24. *
  25. * \return Unused (ANSI-C compatibility).
  26. */
  27. int main(void)
  28. {
  29.         sysclk_init();
  30.         board_init();

  31.         /** Initialize debug console */
  32.         configure_console();

  33.         /** Enable peripheral clock */
  34.         pmc_enable_periph_clk(ID_SMC);

  35.         /** Configure SMC interface for Lcd */
  36.         smc_set_setup_timing(SMC, ILI93XX_LCD_CS, SMC_SETUP_NWE_SETUP(2)
  37.                         | SMC_SETUP_NCS_WR_SETUP(2)
  38.                         | SMC_SETUP_NRD_SETUP(2)
  39.                         | SMC_SETUP_NCS_RD_SETUP(2));
  40.         smc_set_pulse_timing(SMC, ILI93XX_LCD_CS, SMC_PULSE_NWE_PULSE(4)
  41.                         | SMC_PULSE_NCS_WR_PULSE(4)
  42.                         | SMC_PULSE_NRD_PULSE(10)
  43.                         | SMC_PULSE_NCS_RD_PULSE(10));
  44.         smc_set_cycle_timing(SMC, ILI93XX_LCD_CS, SMC_CYCLE_NWE_CYCLE(10)
  45.                         | SMC_CYCLE_NRD_CYCLE(22));
  46. #if ((!defined(SAM4S)) && (!defined(SAM4E)))
  47.         smc_set_mode(SMC, ILI93XX_LCD_CS, SMC_MODE_READ_MODE
  48.                         | SMC_MODE_WRITE_MODE
  49.                         | SMC_MODE_DBW_8_BIT);
  50. #else
  51.         smc_set_mode(SMC, ILI93XX_LCD_CS, SMC_MODE_READ_MODE
  52.                         | SMC_MODE_WRITE_MODE);
  53. #endif
  54.         /** Initialize display parameter */
  55.         g_ili93xx_display_opt.ul_width = ILI93XX_LCD_WIDTH;
  56.         g_ili93xx_display_opt.ul_height = ILI93XX_LCD_HEIGHT;
  57.         g_ili93xx_display_opt.foreground_color = COLOR_BLACK;
  58.         g_ili93xx_display_opt.background_color = COLOR_WHITE;

  59.         /** Switch off backlight */
  60.         aat31xx_disable_backlight();

  61.         /** Initialize LCD */
  62.         ili93xx_init(&g_ili93xx_display_opt);

  63.         /** Set backlight level */
  64.         aat31xx_set_backlight(AAT31XX_AVG_BACKLIGHT_LEVEL);

  65.         ili93xx_set_foreground_color(COLOR_WHITE);
  66.         ili93xx_draw_filled_rectangle(0, 0, ILI93XX_LCD_WIDTH,
  67.                         ILI93XX_LCD_HEIGHT);
  68.         /** Turn on LCD */
  69.         ili93xx_display_on();
  70.         ili93xx_set_cursor_position(0, 0);

  71.         /** Draw text, image and basic shapes on the LCD */
  72.         ili93xx_set_foreground_color(COLOR_BLACK);
  73.         ili93xx_draw_string(10, 20, (uint8_t *)"ili93xx_lcd example");

  74.         ili93xx_set_foreground_color(COLOR_RED);
  75.         ili93xx_draw_circle(60, 160, 40);
  76.         ili93xx_set_foreground_color(COLOR_GREEN);
  77.         ili93xx_draw_circle(120, 160, 40);
  78.         ili93xx_set_foreground_color(COLOR_BLUE);
  79.         ili93xx_draw_circle(180, 160, 40);

  80.         ili93xx_set_foreground_color(COLOR_VIOLET);
  81.         ili93xx_draw_line(0, 0, 240, 320);

  82.         while (1) {
  83.         }
  84. }
至于SMC的具体分析下一帖说明。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2403

主题

6994

帖子

68

粉丝
快速回复 在线客服 返回列表 返回顶部