浦江一水 发表于 2025-3-27 08:51:46

vb2002 发表于 2025-3-27 00:31
擎天柱那个电位器是做 掉电检测的嘛?

是的.

蓝天白云51 发表于 2025-4-6 12:12:33

这是我多年前购买的普中试验箱.配上擎天柱真是如鱼得水!

前几天试用了楼主介绍的1.8寸7735tft彩屏.楼主这个屏的驱动写的真好.
功能齐全,有详尽注释.正好手上备有几个,可以好好玩玩了.
不知楼主是否能发表这个驱动的8位51机版本.8位机应用更多.

浦江一水 发表于 2025-4-6 19:15:58

蓝天白云51 发表于 2025-4-6 12:12
这是我多年前购买的普中试验箱.配上擎天柱真是如鱼得水!

前几天试用了楼主介绍的1.8寸7735tft彩屏.楼主 ...
这位朋友贴上了普中实验箱的图片,很漂亮的。充分利用它,学习编程,是其乐无穷的。

也感谢你对我所写7735彩屏驱动程序代码的肯定和缪赞。

关于希望改编成8位单片机的7735彩屏驱动版本,我觉得是不需要做大动作的。

聊聊本人的认知理解:

首先,AI8051U是32位单片机,不同于传统的8051单片机,它兼容8位模式,但是它不并是所有功能都可以用8位的模式来实现的。
如果说,所有功能都可以用8位的模式来实现的话,那么AI8051U升级为32位模式,就失去意义了。

然而它确实兼容8位模式,能实现传统8051单片机的功能。
对于驱动7735屏这样的操作,其实没有啥特殊性,用的都是最基础功能语句,因此改写为8位模式,源代码几乎是不需要做任何修改的。

只是在工程的制作编译方面是需要做一点点修改的。
因为32位模式,是用C251编译,8位模式是用C51编译的。
所以,若需要兼容8位模式, 只要改用C51编译器就可以了。

具体做法是这样的,打开原有工程文件...
1,在Keilc工程的Device页CPU选项中选择“AI8051U-8bit”即可,如图:

此时,Keil已经自动转为使用C51编译了。
2,正确设置Target页中的存储器设置选项等,如图:

3,正确设置Output页,创建HEX文件。如图:

其它设置一如往常。
这样编译生成的HEX就是8位模式了,执行的效果感觉与32位模式是没啥区别的。
4, 最后别忘了,用ISP下载时,要选择8bit模式。

可以按照上述方法,自己先实践一下,你肯定是行的。有问题再交流

另外,要注意理解一点:(你可能会遇到编译不通的貌似奇怪的问题,其实并不奇怪)
32位模式与8位模式,它们的头文件是不同的。如果工程当前目录下,没有AI8051U.H的话,
那么Keil会自动在自己的环境下寻找到它的。
要特别注意,8位模式下的头文件, 对某些特殊寄存器的定义与访问是不同的。有的寄存器只有字节访问,没有位访问功能。

举一个例子:
像 AUXR 这个寄存器,32位模式的头文件中是这样定义的:
sfr         AUXR      =         0x8E;
    sbit    T0x12       =         AUXR^7;
    sbit    T1x12      =          AUXR^6;
    sbit    S1M0x6    =         AUXR^5;
    sbit    T2R         =         AUXR^4;
    sbit    T2_CT      =         AUXR^3;
    sbit    T2x12       =      AUXR^2;
    sbit    EXTRAM   =         AUXR^1;
    sbit    S1BRT      =         AUXR^0;

而8位模式的头文件中是这样定义的:
sfr         AUXR      =         0x8E;
    #define T0x12               0x80
    #define T1x12               0x40
    #define S1M0x6               0x20
    #define T2R                  0x10
    #define T2_CT                0x08
    #define T2x12               0x04
    #define EXTRAM            0x02
    #define S1BRT               0x01

这说明啥?
这说明32位模式下,AUXR寄存器中的各个位,是可以位访问的,如果...
写   T2R = 1;       //是可以的,是合法的。
而8位模式下,AUXR中的各个位,是不可以位访问的,只能字节访问,8位一起访问,
写   T2R = 1;       //是不可以的,是非法的,编译通不过的。
遇到这种类似情况,源代码就要改写了。

此外,也建议你看看本版块荣誉版主ercircle写的”普中单片机学习板◎89C52教学程序移植到强大的AI8051U..."的帖子,定有收获的。




蓝天白云51 发表于 2025-4-13 15:38:10

浦江一水 发表于 2025-4-6 19:15
这位朋友贴上了普中实验箱的图片,很漂亮的。充分利用它,学习编程,是其乐无穷的。

也感谢你对我所写773 ...

谢谢楼主指导.7735演示程序移植至8位模式终于搞定了.过程中许多伪错误,费时很久终于搞定.
void delayAms(void)        //@22.1184MHz
{ unsigned longi; //unsigned long edata i;
        _nop_();
        i = 5528UL;
        while (i) i--;
}
上面语句中,unsigned long edata i;
32位模式没问题.
8位模式通不过.改为unsigned longi;
就可以了.
不理解.不管了,能用就行.
另外,串口通信函数因为暂时用不上懒得排错就移除了.
感谢楼主授人以鱼,更授人以渔.

蓝天白云51 发表于 2025-4-13 18:16:36

蓝天白云51 发表于 2025-4-13 15:38
谢谢楼主指导.7735演示程序移植至8位模式终于搞定了.过程中许多伪错误,费时很久终于搞定.
void delayAm ...

看了手册,明白了,8位模式,没有edate空间,可以用xdate空间但速度慢些.

浦江一水 发表于 2025-4-14 11:16:38

蓝天白云51 发表于 2025-4-13 15:38
谢谢楼主指导.7735演示程序移植至8位模式终于搞定了.过程中许多伪错误,费时很久终于搞定.
void delayAm ...

移植8位模式已经搞定, 为你高兴.

在2楼的例程中, 如果不使用串口通讯, 可以将有关串口的文件和语句删除,直接改为8位模式编译即可,是没有任何问题的.
如果日后需要用到串口通讯, 只要稍稍修改即可,不是太麻烦的,若有问题再交流, 共同学习.

擎天柱核心板, 将自身原来的P3.0和P3.1作为USB口下载调试(Type-C接口), 而将P5.0和P5.1(UART3)引到了DIP40排针的原P3.0和P3.1位置, 这一点是很用心的. 这样就很方便连接传统实验板的原串口1外设了. 就像你这块普中的HC6800-MS实验板, 红色USB线(通过CH340芯片)是可以连接到擎天柱核心板的P5.0和P5.1了,很方便做串口通讯实验.

香河英茂工作室 发表于 3 天前

感谢分享,鲜花。
页: 1 2 3 [4]
查看完整版本: 初学51单片机的爱好者之入门佳配+擎天柱 (多项实验源码)