[通用8051核FLASH系列] 【芯圣电子HC89S105A测评报告】+驱动OLED

[复制链接]
1134|0
 楼主| gaoyang9992006 发表于 2023-5-16 20:44 | 显示全部楼层 |阅读模式
本帖最后由 芯圣电子官方QQ 于 2023-7-20 09:31 编辑

由于我是用的事先写好的OLED库,该OLED为SSD1306驱动芯片,具备128*32分辨率。
I2C接口顺序为:GND、VCC、SCL、SDA
刚好我们的开发板上下面的接口有满足顺序的:GND、VCC、P22、P24
因此我们将对针脚做以下映射:
P22——SCL
P24——SDA
根据手册中对IO模式的说明,来操作端口功能选择寄存器,如下图所示:
29175646379a759e69.png


  1. P2M1 = P2M1 & 0xF0 | 0x08;   //P22设置为推挽输出
  2.         P2M2 = P2M2 & 0xF0 | 0x08;   //P24设置为推挽输出
这样我们就可以在OLED的头文件中映射这两个端口使用了
  1. #define OLED_SCL P2_2 //SCL
  2. #define OLED_SDA P2_4 //SDA
接下来,就是编写相关的显示代码了。
  1. /**
  2. *   ************************************************************************************
  3. *                                                                上海芯圣电子股份有限公司
  4. *                                                                    www.holychip.cn
  5. *        ************************************************************************************
  6. *        @Examle Version                V1.0.0.5
  7. *        [url=home.php?mod=space&uid=212281]@date[/url]                                      2023.04.07
  8. *        ************************************************************************************
  9. *                                                                         客户服务
  10. *        感谢您使用我们的单片机,若发现错误或对函数的使用存在疑问。请添加上海芯圣电子官方QQ群
  11. *        ************** **************技术支持群:201030494***********************************
  12. *   ************************************************************************************
  13. **/


  14. #define ALLOCATE_EXTERN
  15. #include "HC89S105AC8.h"
  16. #include "oled.h"

  17. void Delay_ms(unsigned int fui_i);   //延时函数

  18. /***************************************************************************************
  19.   * @实现效果        对P00口进行高、低电平转换
  20.   * @操作方法        示波器接P00口,查看输出波形
  21. ***************************************************************************************/

  22. void main()
  23. {
  24.         unsigned char i;
  25.         
  26. /********************************系统初始化*******************************************/        
  27.         WDTCCR = 0x00;                           //关闭看门狗
  28.                                                            //本例程为方便测试关闭看门狗,实际使用中,建议客户打开看门狗,详见WDT复位例程
  29.         CLKCON = 0x02;                           //选择内部高频RC为系统时钟,Fosc=32MHz
  30.         CLKDIV = 0x02;                           //Fosc 2分频得到Fcpu,Fcpu=16MHz

  31. /**********************************IO配置初始化***************************************/        
  32.         
  33.         P2M1 = P2M1 & 0xF0 | 0x08;   //P22设置为推挽输出
  34.         P2M2 = P2M2 & 0xF0 | 0x08;   //P24设置为推挽输出
  35.         
  36.         OLED_Init();
  37.         OLED_ColorTurn(0);
  38.         OLED_DisplayTurn(0);
  39.         OLED_Display_Off();
  40.         OLED_Display_On();
  41.         
  42.         for(i=0;i<8;i++)
  43.                 NumberShow(i, 16*i, 0, 0) ;Delay_ms(200);
  44.                 OLED_Clear_Left_To_Right();
  45.         for(i=0;i<8;i++)
  46.                 NumberShow(i, 16*i, 0, 1) ;Delay_ms(200);
  47.                 OLED_Clear_Left_To_Right();        
  48.         
  49.         while (1)
  50.         {
  51.                 for(i=0;i<8;i++)
  52.                         NumberShow(i, 16*i, 0, 0) ;
  53.                 for(i=0;i<8;i++)
  54.                         NumberShow(i, 16*i, 2, 1) ;
  55.                 Delay_ms(200);
  56.                 OLED_Clear_Left_To_Right();        
  57.         }
  58. }
  59. /*************************************************************************************
  60.   * @说明          延时函数
  61.   * @参数          fui_i : 延时时间
  62.   * @返回值 无
  63.   * @注         Fcpu = 16MHz,fui_i = 1时,延时时间约为1ms
  64. *************************************************************************************/
  65. void Delay_ms(unsigned int fui_i)
  66. {
  67.         unsigned int fui_j;
  68.         for (; fui_i > 0; fui_i--)
  69.                 for (fui_j = 1596; fui_j > 0; fui_j--);
  70. }

8215164637a539680a.png

这里提供工程给大家测试使用,确保我是没有骗人的。
1-OLED.rar (12.06 KB, 下载次数: 5)

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

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2052

主题

16403

帖子

222

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