卡东欧:C51科学计算器
nichengyan2024/08/14原创 极客DIY IP:河南
中文摘要
C51 科学计算器 表达式解析 函数绘图 多功能

相信不少同志看到“C51”准备掉头了…

Wait Wait!


这是基于STC8H8K64U的计算器程序


硬件平台上,STC8H这家伙虽然性能拼比不上X32,但肯定是吊打传统51,能跟328p叫板。这个计算器结构很简单:

一片主控,一个oled12864,两个ADC控制15+20个按键,一片8Mflash,一块电池和一个喇叭(诶,flash和喇叭是干嘛的)堆在一片洞洞板上,整机成本低至15RMB


那这个程序能干什么呢---

这个版本叫做

[卡东欧数学基础]CadioMathBasic

功能分为一般计算和函数绘图

###计算: 能解析数学表达式 (仅这一点应该就能干掉好多自制计算器了)

支持加减乘除乘方,指对幂,三角函数及其反函数,双曲函数,随机数,随机整数,绝对值,阶乘,弧角转化。

内置三个变量xyz和参量uvw,可以通过Ans调用上次的结果,拥有16步记忆,可以随时回滚之前的计算步骤

输入表达式长度最大32个字符,严格按照Geogebra表达式规范,能无限括号嵌套。

比如输入sin(2*e^(ln(2-cos(2)))-2*e),就会得到-0.568161,和GGB的结果一样



###函数:(重头戏,本程序的一个特色)

支持单元函数,隐函数,动态函数(就是能像GGB那样实时改变参数让函数动起来),参数曲线  (以上所有都是直角坐标系里的,极坐标正在开发)

支持缩放平移坐标系,可以随时调出光标查看具体点坐标。多函数同屏时支持快捷键隐藏/显示某个图像,可以设置迭代区间和步长


单元函数:

输入含有x的表达式f(x)),代表图像y=f(x)。

一屏最多支持同时多个图像(做多9个),来观察他们的关系

来看几个直观的高中放缩式叭  分别是

lnx<=x-1 

e^x-lnx>4/3*sqrt(3)

e^x+e^-x>=2x

IMG_20240813_181812_edit_738678546978428.jpg IMG_20240813_181943_edit_738671819300305.jpg IMG_20240813_182046_edit_738664515829993.jpg


隐函数:

输入含有xy的表达式f(x,y),表示图像f(x,y)=0。这个功能就有意思了,不光能画圆锥曲线这些基础的,随便输点式子都能给你意想不到的图像


IMG_20240813_191113.jpg

IMG_20240813_191157.jpg IMG_20240813_191749.jpg

动态函数:

这个没得说,就是通过调参数让函数动起来

有uvw三个长沙参数,支持多图像


参数方程:

可以以u vw为参数,分别输入x部分和y部分。既然都参数方程了,不来点李萨如怎么行

IMG_20240814_091430.jpg IMG_20240814_091519.jpg IMG_20240814_091548.jpg IMG_20240814_091325.jpg


以上就是 卡东欧数学基础 部分

怎么样,够基础吧。

那还有别的部分吗?    当然是  有!

[卡东欧统计基础]和[卡东欧空间基础]

正在开发.......


最后的最后

为什么老是说这是个程序?它不是个实体机吗?还有Flash和喇叭,是干甚的?


Emmmmm.........






+1  科创币    全桥整流    2024/08/14 看着不错
来自:综合交流区 / 极客DIY
22
6
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
粥粥
1个月13天前 IP:湖北
935648

强强强

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
1427
1个月13天前 IP:天津
935652

可以参考下代码吗,手里还有半袋子的51,正愁没的玩呢

sticker

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
nichengyan作者
1个月13天前 IP:河南
935655

卡东欧数学基础 全部用C语言完成,Keil环境。

程序核心有两大模块:Gui.c和Expression

Gui.c负责绘制和动画(底层仅链接oled绘制位图函数,所以和硬件关系不大)

Expression.c负责解析表达式。


引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
nichengyan作者
1个月13天前 IP:河南
935656

关于gui,一会传个视频,感觉效果还行,比较丝滑,至少比生硬的直接切屏好些。


引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
nichengyan作者
1个月13天前 IP:河南
935657

expression可能会对各位同志们有用。

它负责解析数学表达式。一个函数。字符串入,浮点数出(或抛出特定类型的错误)

光一个它就已经完成了科学计算器的基本功能那个(稍后会传两个Expression的特写版:数学计算的串口交互和命令行交互)

这个expression的实现其实不难,就是最传统的中缀式转后缀式,然后后缀式求值。

这样基础性的东西,但为什么弄的人不多?

可能是因为太麻烦了。。。

引用
评论
3
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
nichengyan作者
1个月13天前 IP:河南
935664

attachment icon User_test.zip 6.77MB ZIP 2次下载

attachment icon calculatorV1.0.zip 470.96KB ZIP 1次下载

两个Expression的特写版,User_test是STC8H8K64U的串口交互,另一个是c++控制台交互(已经编译好了可以直接体验,点开exe直接输入表达式就行了)

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
nichengyan作者
1个月13天前 IP:河南
935665

正在赶工焊新板子,演示用的那个太破了。。。


引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
豆腐干
1个月13天前 IP:浙江
935690

这个好

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
nichengyan作者
1个月10天前 IP:河南
935912

姗姗来迟的代码!(个人原因耽误了几天。。。)

attachment icon CadioMathBasic.zip 1.24MB ZIP 2次下载



引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
nichengyan作者
1个月10天前 IP:河南
935913


d02675f0b27b45e2249dd664ae42c481.mp4 点击下载


视频中间画不了隐函数的那个小Bug源码里已经修正过了

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
nichengyan作者
1个月10天前 IP:河南
935914

微信图片_20240817232049.jpg 微信图片_202408172320491.jpg 微信图片_20240817232051.jpg 微信图片_20240817232050.jpg

硬件的样子

这就是新版本的硬件,亮点是:几乎全部是直插原件


上一个版本图省事用了大量贴片(尤其是ADC键盘部分,好多好多贴片电阻)

然后就导致,一不小心摔了一下或者用力过猛让板子有机械形变,嘎嘣脆的贴片电阻就寄了

关键是肉眼还看不出来哪个电阻寄了!!!只能眼睁睁的看着按键失灵


吸取教训,这次的ADC键盘,我敢说,只要板子没折,他就能正常工作!!!(ADC键盘已经通过2m摔落测试)

这次的硬件分为2块板子,主板和底板。

除了喇叭和8M Flash之外,诶,怎么还有块8266?!!!!!!!

 Emmmmmmm


引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
nichengyan作者
1个月10天前 IP:河南
935915

电池是挪鸡鸭板砖电池,顶耐用

那两颗blinblin的大LED是充电指示。

充电是4056a

喇叭功放,8002。

3.3v稳压供电,1117。

烂大街的方案,经典中的经典。

详细原理图和按键键码表稍后整理完会上传

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
nichengyan作者
1个月10天前 IP:河南
935916

esp8266的电源开关部分,刚开始用三极管竟然不行,又换pmos,nmos,竟然也不行(一启动联网就死机,怀疑是开关内阻太大供电不足)。最后找了个遥控车马达驱动max512当开关,就ok了

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
WernerPleischner
1个月10天前 修改于 1个月10天前 IP:广东
935921

8266性能甩主控5条街系列

全手搓的软件功能还是很强大的,要不要再搓个CAS

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
nichengyan作者
1个月10天前 IP:河南
935922
引用WernerPleischner发表于14楼的内容
8266性能甩主控5条街系列全手搓的软件功能还是很强大的,要不要再搓个CAS

还真是,8266表示不甘心被支配。。。😂

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
nichengyan作者
1个月10天前 IP:河南
935925

[卡东欧数学基础]这个软件(直接叫bin文件好了),只能说是卡东欧计算器的重要程序之一,绝不是全部。


-----什么?!这bin文件已经40k了,哪还有空间运行别的,难不成在spiflash里跑程序?哥们,你这可是51!


-----确实是要运行flash里的程序。

8MB(64Mbit)算下来能装好多程序呢。但怎么运行呢?又怎么把程序放进去呢?这就不得不安利一波STC的IAP了(就是在程序内修改程序空间flash,跑着这,改着那),可以搞一个bootloader放在前12k,让它充当引导程序从外部加载程序,加载完跳转就ok了。


-----不就加载个bin文件,怎么会写出来12k,莫非里面有

-----有确实还有点东西,就是hex80解析,和fat12解析。

这样,就允许了我们不光能加载bin文件,keil直接生成的hex80也来者不拒。同时,如果能让电脑能读写flash,就可以像操作优盘文件一样管理众多bin和hex


于是另一个重要的程序就出场了:USB_MSC

它正是负责把单片机模拟成一个8MB优盘,搭电脑和spiflash的桥梁。至于为什么是fat12就很明显了,因为8M的优盘用windows自带格式化就只能格成fat12


现在就清晰了,通过一个bootloader和一个usbmsc,就能实现电脑<->spiflash->51内部flash的数据传输,于是就能加载外部的程序文件了(usbmsc自己也是一个可被加载的文件,要跟电脑传文件,就先得加载usbmsc)

那一开始,flash里什么也没有,怎么加载usbmsc呢?先给单片机直接烧录一份,usb再用电脑往flash里拖一份就好了。


所以的所以,卡东欧数学基础就是一个能被加载的程序罢了,这个计算器还可以运行好多好多别的

比如简单的串口中端,允许你在上课时候AT+去随便访问点东西,或者打开播放器,播放一首wav,再或者玩一局扫雷贪食神什么的。


从这个意义上,这个是个通用的硬件。

如果从使用角度来看,他就是个能玩游戏能听歌能联网的多功能计算器(自习课摸鱼神器)

如果从学习角度来看,它就是个好玩的C51开发板











引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
nichengyan作者
1个月9天前 IP:河南
935992

测试了一波函数绘图,一般GGB能画的它都能画!

(但可能比较慢,最慢的要将近1分钟!) 微信图片_202408182125561.jpg 微信图片_20240818212556.jpg 微信图片_202408182125541.jpg 微信图片_20240818212555.jpg 微信图片_20240818212554.jpg 微信图片_202408182125551.jpg 微信图片_202408182125542.jpg 微信图片_20240818212552.jpg 微信图片_20240818212553.jpg

p1:x^2+(y-(x^2)^(1/3))-1=0    隐函数

p2:sin(x)^2+y^2-1=0     隐函数

p3:x=8*cos(u)-6*cos(8*u/3)   y=8*sin(u)-6*sin(8*u/3)   参数方程

p4:cos(y)-tan(x)=0  隐函数

p5:x=u*cos(u)  y=u*sin(u)    参数方程(其实就是极坐标的p=theta,可以写成参数方程)

p6:sin(x)-cos(y)=0    隐函数

p7:忘了。。。

p8:   y^2+cos(x+y^2)-1=0  隐函数

p9:  x=1*sin(9*u)*cos(u)  y=1*sin(9*u)*sin(u)参数方程

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
nichengyan作者
1个月1天前 IP:河南
936585

卡东欧只能用来计算吗?

当然不是!

它还可以弹奏音乐,看时间,玩游戏,听歌,玩鸡乐盒,敲AT指令联网,甚至还能发射激光

下面就是卡东欧非正规用途的演示


VID_20240826_191736.mp4 点击下载


引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
nichengyan作者
1个月1天前 IP:河南
936586

程序稍后上传

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
仰望星辰
1个月1天前 IP:辽宁
936613
引用nichengyan发表于19楼的内容
程序稍后上传

期待完整资料,希望复刻成功。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
nichengyan作者
29天3时前 IP:河南
936691

attachment icon CadioV2.0.zip 85.49MB ZIP 7次下载

卡东欧V2.0,所有代码

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
nichengyan作者
29天2时前 IP:河南
936694

IMG_20240829_065419.jpg IMG_20240829_065348.jpg

IMG_20240829_065353.jpg

原理图,代码(尤其是ADC按键)是按这个来的

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
nichengyan
进士 机友
文章
5
回复
27
学术分
0
2023/03/18注册,11天5时前活动

这个人很勤快,什么也没留下

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:天津
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}