单片机oled显示浮点数函数_问中文编程在单片机上实现一个电子时钟,总共有几步?...

首先介绍开发一下语言:mcuScript,他是一个支持同时支持中文编程和英文编程的弱数据类型的脚本语言。相关介绍可参考前面的两篇文章:

彭贞:mcuScript一个洋名字的中文(汉语)编程语言,初体验​zhuanlan.zhihu.com
彭贞:mcuScript中文编程,Windows解释器发布(很小1MB多点,含测试代码),有兴趣下载来玩​zhuanlan.zhihu.com

既然叫mcuScript,单片机等mcu(微控制器)才是他的主战场。让我们看一个真实的案例。

5870c12359a7bbb72b1a7f35684f2136.png

第一步:打开一个文本编辑器,啥都行。

b77dc2da6a34a55e94a17de7d6906d5d.png

第二步:写入中文代码。

cfc427f46ce80043adbf6e03c11c6628.png
/*
	项目名称: wp9
	创建时间: 2020年9月25日
*/

显示器=OLED({
addr:0x78,
scl:SYS.pin("D6"),
sda:SYS.pin("D7")
});

功能块 得到星期(n)
{
	星期 = ["一","二","三","四","五","六","日"];
	返回 "星期"+星期[n];
}

//得到星期(时间.星期());

显示器.显示(0,0,"正在初始化...");

智能配网({
	"wifi名":"ljs4f",
	"密码":"12345678",
	"成功时":功能块(){
		全局的 显示器;
		显示器.清屏();
		//显示器.显示(0,0,"成功连接到wifi");
		
		周期定时器(功能块(){
			全局的 显示器;
			时间 = 时间日期();
			时年量 = 时间.年();
			时月量 = 时间.月();
			时日量 = 时间.号();
			时时量 = 时间.时();
			时分量 = 时间.分();
			时秒量 = 时间.秒();
			如果 (时月量 < 10) {
				时月量 = "0"+时月量;
			}
			如果 (时日量 < 10) {
				时日量 = "0"+时日量;
			}
			如果 (时时量 < 10) {
				时时量 = "0"+时时量;
			}
			如果 (时分量 < 10) {
				时分量 = "0"+时分量;
			}
			如果 (时秒量 < 10) {
				时秒量 = "0"+时秒量;
			}
			显示器.显示(14,0,时年量+"年"+时月量+"月"+时日量+"日");
			显示器.显示(40,2,时时量+":"+时分量+":"+时秒量);
			显示器.显示(50,4,得到星期(时间.星期()));
	    }, 100);
	}
});

第三步:刷入单片机,观看代码效果。

知乎视频​www.zhihu.com

真实案例的尾巴:这是一个真实的案例(mcuScript已经在少量应用了),写出这段中文代码的是一个从来没有学过编程的25岁青年(我将他的源码原封不动的复制了过来),视频也是演示他录制的,这是我对他的采访,看看一个非程序员是如何看待中文编程的

c524275e3e2be42419267bc777b4e35a.png

最后,来看一下mcuScript是怎么扩展的(说人话就是:脚本是怎么调用C语言函数的)。

以单片机中的OLED对象为例:

a1723c485294af7f56fd9c903d271a54.png

其实核心方法一幕了然,mcuScript使用一个结构体数组,进行对象的扩展,数组中的结构体包含方法的英文名和中文名,这么做当然会造成效率的降低(因为每个标识符都要和中英文名对比一次或两次),但我认为这点效率损失是值得的,相对于开发而言。

607e64380722e9f555d6bf19dc711580.png

方法的结构体类型。

不知道大家看了一个真实的非程序员对中文编程的看法后,有什么想法,欢迎来讨论。我知道有些程序员对中文编程不屑一顾,但是事实就是中文编程对广大非程序员确实很友好,对他们来说降低了入门门槛,对他们来说还真是刚需

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值