fpga驱动oled iic显示代码_在OLED上显示ADC的值

6e74f7ad17c85f53d09374974d6e9581.png

来源:百问网_嵌入式Linux wiki_jz2440 新1期视频维基教程 (视频文字版)

作者:韦东山

本文字数:1533,阅读时长:2分钟

这节我们在OLED显示ADC电压值,通过调节可调电阻,让ADC的值在屏幕上不断变化。

在JZ2440的主光盘的hardware里面有一个adc_ts触摸屏的程序,把里面的adc_ts.c和adc_ts.h提取出来放在本节视频待写的代码里面。

主函数调用的是Test_Adc.c进行测试adc,因此在里面加上打印和OLED显示函数。

/*  * 测试ADC * 通过A/D转换,测量可变电阻器的电压值 */       void Test_Adc(void){    float vol0, vol1;    int t0, t1;    char buf[100];    printf("Measuring the voltage of AIN0 and AIN1, press any key to exit");    while (!awaitkey(0))    // 串口无输入,则不断测试    {        vol0 = ((float)ReadAdc(0)*3.3)/1024.0;  // 计算电压值        vol1 = ((float)ReadAdc(1)*3.3)/1024.0;  // 计算电压值        t0   = (vol0 - (int)vol0) * 1000;   // 计算小数部分, 本代码中的printf无法打印浮点数        t1   = (vol1 - (int)vol1) * 1000;   // 计算小数部分,  本代码中的printf无法打印浮点数        printf("AIN0 = %d.%-3dV    AIN1 = %d.%-3dV", (int)vol0, t0, (int)vol1, t1);        sprintf(buf,"ADC: %d.%-3d, %d.%-3d", (int)vol0, t0, (int)vol1, t1);                OLEDPrint(6, 0, buf);    }    printf("");}

这里调用了一个awaitkey()函数,需要再复制adc_ts触摸屏的程序里serial.c的该函数到本工程里面。

/* * 接收字符,若有数据直接返回,否则等待规定的时间 * 输入参数: *     timeout: 等待的最大循环次数,0表示不等待 * 返回值:  *    0     : 无数据,超时退出 *    其他值:串口接收到的数据 */unsigned char awaitkey(unsigned long timeout){while (!(UTRSTAT0 & RXD0READY))    {        if (timeout > 0)            timeout--;        else            return 0;   // 超时,返回0}    return URXH0;       // 返回接收到的串口数据}

修改Makefile,加入adc_ts.o,编译,报错,涉及除法操作,需要加入数学库:

LDFLASG := -L $(shell dirname $(CC) $(CFLAGS) -print-libgcc-file-name) -lgcc

现在重新编译即可通过。

现在将IIC的的结果也在OLED上显示出来,在主函数添加如下代码:

    i2c_init();    at24cxx_write(0, 0x55);    data = at24cxx_read(0);    OLEDClearPage(2);    OLEDClearPage(3);        if (data == 0x55)            OLEDPrint(2,0,"I2C OK!");    else        OLEDPrint(2,0,"I2C Err!");

先初始化iic,在0地址写入0x55,然后再读取出来,判断是否与写入的一样,一样则打印OK,否则打印Err。

为了防止OLED出现之前显示的数据残留,需要再写一个清除Page的函数:

void OLEDClearPage(int page){    int i;    OLEDSetPos(page, 0);    for (i = 0; i < 128; i++)        OLEDWriteDat(0);    }

「新品首发」STM32MP157开发板火爆预售!首批仅300套

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值