打印
[活动专区]

【AT-START-L021测评】9、16位并口屏及ADC曲线绘制

[复制链接]
31|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 sujingliang 于 2024-12-2 20:12 编辑



AT-START-L021有39个GPIO,GPIOA和GPIOB都有完整的16pin引脚。引脚充沛到足够驱动16位并口屏。

1、接线
驱动16位并口屏程序上其实比8位并口屏更简单,但是接线真是复杂:


2、引脚定义
#define LCD_CS  GPIOA,GPIO_PINS_6       //PA6
#define LCD_RS  GPIOA,GPIO_PINS_10      //PA10
#define LCD_WR  GPIOA,GPIO_PINS_4       //PA4
#define LCD_RD  GPIOA,GPIO_PINS_1       //PA1
#define LCD_RST GPIOA,GPIO_PINS_8       //PA8
#define LCD_LED GPIOA,GPIO_PINS_11      //PA11

3、GPIO初始化

static void lcd_gpio_init(void)
{
        gpio_init_type gpio_init_struct;

  /* enable the led clock */
  crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);
        crm_periph_clock_enable(CRM_GPIOB_PERIPH_CLOCK, TRUE);

  /* set default parameter */
  gpio_default_para_init(&gpio_init_struct);

  /* configure the lcd GPIOA gpio */
  gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
  gpio_init_struct.gpio_out_type  = GPIO_OUTPUT_PUSH_PULL;
  gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;
  gpio_init_struct.gpio_pins = GPIO_PINS_8|GPIO_PINS_10|GPIO_PINS_9|GPIO_PINS_15|GPIO_PINS_7|GPIO_PINS_6|GPIO_PINS_5;
  gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
  gpio_init(GPIOA, &gpio_init_struct);
        
        /* configure the lcd GPIOB gpio */
  gpio_init_struct.gpio_pins = GPIO_PINS_10|GPIO_PINS_4|GPIO_PINS_3|GPIO_PINS_5|GPIO_PINS_7|GPIO_PINS_9|GPIO_PINS_8;
  gpio_init(GPIOB, &gpio_init_struct);
}
GPIOA的引脚用于控制,GPIOB0-15做为并口总线。
4、GPIOB写16位数据
void gpio_lcd_write_data_word(uint16_t* data, size_t length) {
  for (size_t i = 0; i < length; i++) {
    GPIOB->odt = data[i];
    LCD_WR_CLR;
    LCD_WR_SET;
  }
}
5、LCD写命令
void lcd_write_comm_word(uint16_t cmd)
{
                uint16_t c;
                c=0x00FF&cmd;
          LCD_CS_CLR;
    LCD_RS_CLR;
    gpio_lcd_write_data_word(&c, 1);
    LCD_CS_SET;
}
6、LCD写数据
void lcd_write_data_word(uint16_t dat)
{
                uint16_t *d=&dat;
          LCD_CS_CLR;
    LCD_RS_SET;
    gpio_lcd_write_data_word(d, 1);
    LCD_CS_SET;
}
7、写寄存器
void lcd_write_register_word(uint16_t addr, uint16_t data)
{
    lcd_write_comm_word(addr);
    lcd_write_data_word(data);
}
8、16位并口屏显示效果

可以看出16位(PIN顺序排列)驱动比8位(PIN混乱排列)显示效果有质得飞跃,显示汉字基本没有闪烁。

9、ADC曲线绘制
void test_run(void)
{
        int i;
        uint8_t buff[10];
        
        double v;
        if(vmor_flag_index == 1)
  {
      vmor_flag_index = 0;

                        v=adc1_ordinary_valuetab[0]*3.3/4096;
                        sprintf((char*)buff,"%0.2f",v);
                        inputData=176-adc1_ordinary_valuetab[0]*176/4096;

  }
  adc_ordinary_software_trigger_enable(ADC1, TRUE);

        for(i=0;i<43;i++)
        {
                setColor(0X0000);
                drawLine(5*i,canvas[i],5*i+5,canvas[i+1]);
          if(i<42){
                 setColor(0XFB80);
                 drawLine(5*i,canvas[i+1],5*i+5,canvas[i+2]);
                }
                canvas[i]=canvas[i+1];         
        }

        canvas[43]=inputData;
        

        gridding();
        GUI_WriteASCII(154,2,(unsigned char*)buff,0XA7F9,0X13A6);
        delay_ms(50);
}


画方格图
void gridding(void)
{
        uint8_t i,j;
        
        setColor(0X5345);
        setBgColor(0x0000);
        
        for(i=0;i<8;i++)
        {
                if(i!=1)
                        drawHLine_step(0,i*22,220,2);
                else drawHLine_step(0,i*22,150,2);
        }
        drawHLine_step(0,175,220,2);
                for(j=0;j<13;j++)
        {
                if(j!=8&&j!=9&&j!=10)
                        drawVLine_step(j*20,0,176,2);
                else
                        drawVLine_step(j*20,25,176,2);
        }
        drawVLine_step(219,0,176,2);
}

void drawHLine_step(unsigned char x, unsigned char y, unsigned char l,uint8_t step)
{
    setXY(x, y, x+l, y);

    for(int i=0; i<l+1; i++)
    {
                        if(i%step==0)
        lcd_write_data_word(fcolor);
                        else
                                lcd_write_data_word(bcolor);
    }

    clrXY();
}




8位屏用得比较方便,上面是8位屏显示效果。

test1.rar (122.36 KB)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

60

帖子

0

粉丝