找回密码
 立即注册
楼主: 浦江一水

自制 AI8051U-DIP40 最小系统实验板

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:215
  • 最近打卡:2025-05-03 00:37:12
已绑定手机

36

主题

561

回帖

1948

积分

荣誉版主

积分
1948
发表于 2024-8-29 22:17:41 | 显示全部楼层
纯手工的乐趣
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-09 08:51:43

31

主题

347

回帖

3541

积分

荣誉版主

积分
3541
发表于 2024-8-30 10:23:18 | 显示全部楼层
感谢楼上多位坛友的浏览、留言。

不是产品,因陋就简,就地取材,七拼八凑,搭搭拆拆,随心所欲,动手动脑,图个快乐,敝帚自珍,见笑见笑。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:130
  • 最近打卡:2025-05-07 18:17:53

13

主题

164

回帖

375

积分

中级会员

积分
375
发表于 2024-8-30 11:10:26 | 显示全部楼层
斯是陋室,惟吾德馨
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-09 08:51:43

31

主题

347

回帖

3541

积分

荣誉版主

积分
3541
发表于 2024-8-30 16:55:30 | 显示全部楼层
阿杰爱*** 发表于 2024-8-30 11:10
斯是陋室,惟吾德馨

  
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-09 08:51:43

31

主题

347

回帖

3541

积分

荣誉版主

积分
3541
发表于 2024-8-30 21:21:48 | 显示全部楼层
本帖最后由 浦江一水 于 2024-8-31 07:52 编辑

实验一下彩色黑白双屏同时显示...
彩色模块 LCD7735_240*240
黑白模块 OLED_SSD306_128*64
拍摄不佳, 实际效果是比较清晰的...

双屏同时显示.jpg
端口尚有富余,理论上还可挂一屏...


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-09 08:51:43

31

主题

347

回帖

3541

积分

荣誉版主

积分
3541
发表于 2024-9-11 20:24:57 | 显示全部楼层
本帖最后由 浦江一水 于 2024-9-11 20:28 编辑

学习实验"AI8051U驱动0.96寸单色OLED12864实验程序 SPI+DMA"

实验代码取自官方DEMO文件包(第77号), 只是做了两点微小的调整.
一是改变了所显示的汉字, 算是做一次小字库点阵模制作练习. (对于OLED SSD1306显示屏. 取模为: 从左到右,从上到下,纵向排列高位在下.)
二是加入了定时器0的1微秒中断, 利用他做显示速度测试, 进一步了解了SPI+DMA的传输速度.
实验结果先看视频...

视频中可见, 循环显示两幅图片,( 每幅1024字节.)
第一幅图显示用时1300us, 这是指: 将图片数据先传入显示缓存区, 再启动DMA传输, 再等待DMA传输结束的总用时.
第二幅图显示用时589us,  这是指:  不算将图片数据先传入显示缓存区的时间, 仅从启动DMA传输后, 等待DMA传输结束的这一段用时.
这一实验结果, 与官方的DEMO文献描述相比较, 应该是基本接近和吻合的.
存在一点误差, 是因为定时器中断的重载入数据, 是按照20MHz中断函数来推算的,不是非常精确的.
同时也要认识到: 显示一幅图片的用时, 与传输这副图片数据的用时, 概念有所区别.  

最后,贴一下相关改动部分的主函数和定时器中断函数的代码, 供有兴趣的坛友看看...



//全局变量说明  
char S[80];                    //字符串显示缓存
unsigned int Delaynus;   //微秒计数器
......
void main(void)
{
  u16  i;
  EAXFR = 1;  //允许访问扩展寄存器

  WTST  = 0;
  CKCON = 0;
  P0M1 = 0;  P0M0 = 0;  //设置为准双向口
  P1M1 = 0;  P1M0 = 0;  //设置为准双向口
  P2M1 = 0;  P2M0 = 0;  //设置为准双向口
  P3M1 = 0;  P3M0 = 0;  //设置为准双向口
  P4M1 = 0;  P4M0 = 0;  //设置为准双向口
  P5M1 = 0;  P5M0 = 0;  //设置为准双向口
  P6M1 = 0;  P6M0 = 0;  //设置为准双向口
  P7M1 = 0;  P7M0 = 0;  //设置为准双向口
  LCD12864_config();

  Timer0_Init();
  EA = 1;
  while(1)
  {
    for(i=0; i<1024; i++)  DisTmp = 0;  //清除显存
    SPI_DMA_TRIG(DisTmp);
    while(B_SPI_DMA_busy);       //等待SPI DMA完成

    printf_ascii(0, 0, "TestOLED12864 AI8051U");
    for(i=0; i<7; i++)  WriteHZ16((u8)(8+i*16),2,i);
    printf_ascii_10x24(0,5,"-12.345 678");
    LCD_delay_ms(1000);

    Delaynus=0;                          //计数清零
    for(i=0; i<1024; i++)  DisTmp = gImage_picture1;  //将图片装载到显存
    SPI_DMA_TRIG(DisTmp);        //启动DMA传输指令,用时1us
    while(B_SPI_DMA_busy);        //等待SPI DMA完成
    sprintf(S,"%03dus",Delaynus);//显示一幅图, 用时 1300us
    printf_ascii(0,0,S);                 //显示用时
    LCD_delay_ms(1000);
   
    for(i=0; i<1024; i++)  DisTmp = gImage_picture2;  //将图片装载到显存
    SPI_DMA_TRIG(DisTmp);        //启动DMA传输指令,用时1us
    Delaynus=0;                          //计数清零
    while(B_SPI_DMA_busy);        //等待SPI DMA完成
    sprintf(S,"%03dus",Delaynus); //传输一幅图数据用时  589us
    printf_ascii(0,0,S);                  //显示
    LCD_delay_ms(1000);
  }
}

//========================================================================

// 函数: void timer0_Init (void)
// 描述: timer0初始化.  //1微秒@40.000MHz
//========================================================================
void Timer0_Init(void)   
{
  AUXR |= 0x80;      //定时器时钟1T模式
  TMOD &= 0xF0;    //设置定时器模式
  TL0 = 0xD8;         //设置定时初始值
  TH0 = 0xFF;         //设置定时初始值
  TF0 = 0;              //清除TF0标志
  TR0 = 1;              //定时器0开始计时
  ET0 = 1;              //允许T0中断
}
//========================================================================
// 函数: void timer0_int (void) interrupt TIMER0_VECTOR
// 描述:  timer0中断函数.
//========================================================================
void timer0_int (void) interrupt 1
{
  Delaynus++;     //us计数器+1
}



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-09 00:28:12
已绑定手机

35

主题

2111

回帖

2263

积分

荣誉版主

积分
2263
发表于 2024-9-12 10:25:07 | 显示全部楼层
不错不错,动手能力实属强悍!
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-09 08:51:43

31

主题

347

回帖

3541

积分

荣誉版主

积分
3541
发表于 2024-9-12 12:05:32 | 显示全部楼层
本帖最后由 浦江一水 于 2024-9-12 12:10 编辑
晓*** 发表于 2024-9-12 10:25
不错不错,动手能力实属强悍!

感谢晓飛飛版主的浏览和留言. 过奖了. 制作简陋(芯片是官方送的,双列直插,尚能焊焊),自娱自乐.
感觉AI8051U+SPI+DMA@40MHz刷图速度并不逊色于STM32F103.
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-9 09:08 , Processed in 0.161045 second(s), 98 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表