我爱萝丽爱萝丽 发表于 2017-3-6 23:48:00

【STC单片机仿Arduino风格库函数】 V0.4版发布!

本帖最后由 我爱萝丽爱萝丽 于 2017-4-6 23:25 编辑

前言:
    自古关于库函数的优点和缺点就一直争论不休。楼主也曾经不愿意使用库函数。但是接触了Arduino以后,楼主对库的看法开始改变。
(插:什么是库? 库就是别人已经写好的底层代码)
一个实际的问题是:每个要编程的人都必须了解单片机的寄存器吗?
如果你要励志成为一个工程师,那么深入学习是必须的。
但是对于21世纪新兴的另一类人:创客来说,单片机只是一个实现想法的工具。一个好用的工具,应该可以直接控制它的行为,而不用知道其中的原理。
就如同启动发动机可以驱动汽车一样,调节油门还能控制转速,即使你并不知道发动机内部的结构。
一个优秀的库就应该如此。


关于Arduino:
    有无数种类的单片机,却没有一种像Arduino这样成功。它之所以那么成功,就在于Arduino创建了一个开源——共享的体系。在这个体系中,每个人都可以使用别人已经做好的库,也可以自己编写库。各种功能丰富的库,让实现创意易如反掌。
比如学单片机的新手面对液晶屏一定是一脸懵逼的,但如果有完善的库支持,你只需写两句程序:
初始化();
显示(xx);
一个优秀的库就应该如此。


STC还是Arduino:
    既然已经有Arduino了,还有必要出STC的库吗?
外国的月亮有外国的圆,中国的月亮也有自己的圆。不管是支持国产还是啥,STC还是有自己的优势:
价格低至一块钱,直插封装利于焊接,外围电路简单等……


新版库特点:
    首先,一定要轻量化。对于Flash只有4K的STC15W104来说,每一个字节都很珍贵。臃肿不堪的官方库是不可取的。
    其次,功能覆盖面要广。不仅要有单片机内部的功能,还要有操作如液晶屏等外部模块的功能,数学算法的功能等。
    最重要的是:易于使用,易于维护和共享。这方面会向Arduino学习







我爱萝丽爱萝丽 发表于 2017-3-7 14:02:02

本帖最后由 我爱萝丽爱萝丽 于 2017-4-6 23:24 编辑

STC库V0.4 发布:

命名规则:单片机型号+版本号
【STC_LIB_V0.4】

支持芯片:STC15系列
后期增加其他芯片支持

使用环境:keil编程软件
虽然keil是英文软件,但实际只需要掌握新建工程、编译的方法就能使用了。


调用库方法:

新建工程,新建自己的c文件,如test4.c;
Project中添加.LIB 库文件;
test4.c中包含.h 头文件(.h中有所有函数定义介绍);
在setup(); loop();中添加自己的代码,编译。



库说明和特点:

超轻量化:改变传统库函数臃肿的印象,小内存单片机也能使用;
化繁为简:简化使用,简化缩写,清爽体验;
站在别人肩膀上:多年编程经验去粗存精,精炼为一个库;
丰富扩展:库不仅支持单片机自身操作,还将逐步支持所有常见模块如12864、MPU6050等;
实际应用:与无人使用的官方库不同,库完善后制作电调、遥控器、智能车等将如搭积木一样简单;
实例教学:后期的开源教程将全部建立在库的基础上。开设新的单片机课堂用于库教学。


关于时钟:
个人认为单片机工作在12MHz基本通吃,90%的情况都适用,没有必要为了一些少见的特殊频率让库变复杂。
计划只支持两种时钟频率:12MHz和24MHz。当12MHz的运算速度不够时,可以使用24MHz。





V0.4版更新日志:
→ 增加软件模拟串口的波特率设置
→ 增加数码管支持
→ 增加软件模拟I2C
→ 增加1602液晶屏I2C模式
→ 多个函数优化

库V0.4版:


库工程源码,有兴趣的可以一起完善库:























我爱萝丽爱萝丽 发表于 2017-3-9 14:04:03

本帖最后由 我爱萝丽爱萝丽 于 2017-3-19 21:08 编辑

库结构和规划:
库主要由全局定义和封装好的函数构成。


全局定义篇:

引脚定义:
单片机所有引脚在库中已经全部定义好,如P3.5引脚,库定义为P35。
示例: P35=0;


引脚二次定义:
引脚作特殊使用时,引脚还会被二次定义。
比如改为自己习惯的定义: #define P35 LED1,之后对LED1操作等效P35
比如更改库默认的引脚:    #define P35 LCD1602_RS,这样屏幕接在哪个引脚上都可以使用




库函数篇:


//软件延时N微妙 最大255us
void Delay_us(u8 n);
//示例 Delay_us(255); //延时

//软件延时N毫秒 最大65535ms
void Delay_ms(u16 n);
//示例 Delay_ms(500);

//引脚输出模式设置
void PinMode(u8 pin_num,u8 mode);
//示例 PinMode(pin5,1);

//软件模拟串口发送字符
void Soft_putc(u8 D);
//示例 Soft_puts('A'); Soft_puts(0x55);

//软件模拟串口发送字符串
void Soft_puts(u8 code *s);
//示例 Soft_puts("Hallow\n");

//定时器0时间设置
void Timer0_init(u16 us);
//示例 Timer0_init(10000);

//定时器2时间设置
void Timer2_init(u16 us);
//示例 Timer0_init(500);

//EEPROM扇区擦除 (按扇区操作,一个扇区0~511字节)
void EEPROM_erase(u8 sector);
//示例 EEPROM_erase(1); //擦除1号扇区

//EEPROM单字节读取
u8 EEPROM_read(u8 sector,u16 address);
//示例 dat=EEPROM_read(0,100); //读取储存在0号扇区、第100个字节的数据

//EEPROM单字节写入
void EEPROM_write(u8 sector,u16 address,u8 byte);
//示例 EEPROM_write(1,500,0xAA); //将0xAA存放在1号扇区、第500个字节处



功能性函数:
//按键检测
u8 KeyScan(u8 pin_num);
//示例 if(KeyScan(P33)==1);

//软件延时法测量脉冲宽度
u16 Soft_measure(u8 mode);
//示例 time=Soft_measure(High); //测量高电平宽度 Soft_measure(Low);


显示屏驱动函数:
//
//



airwolf001 发表于 2020-8-5 19:40:29

此乃是单片机爱好者的福音恭喜!萝莉老师辛苦,谢谢您!

hdfwdjz 发表于 2020-5-19 12:55:49

多赚牛币下东西

hgr2004 发表于 2020-4-30 19:30:38

很好啊!膜拜!

zhuhai 发表于 2020-4-29 09:29:40

我爱萝丽爱萝丽 发表于 2017-3-7 14:02
STC库V0.4 发布:

命名规则:单片机型号+版本号


谢谢分享

chengx-i 发表于 2020-2-9 01:18:17

这个6,收藏了

寒冬 发表于 2019-12-24 13:22:59

大侠现身,顶起!

2MHNmg8eFy 发表于 2017-3-9 18:22:05

我爱萝丽爱萝丽 发表于 2017-3-9 17:43 static/image/common/back.gif
哈,放群里吧。有没有兴趣一起完善库?把一些常用模块的操作全部封装,以后自己用着方便别人也方便 ...

版主和浅雪合作将产量大增!哈哈!

我爱萝丽爱萝丽 发表于 2017-3-9 17:43:23

浅雪 发表于 2017-3-9 15:43
好吧,没牛币下载了。。。。能不能放到云盘上去。。。

哈,放群里吧。有没有兴趣一起完善库?把一些常用模块的操作全部封装,以后自己用着方便别人也方便

机甲老顽童 发表于 2017-3-9 16:39:09

我爱萝丽爱萝丽 发表于 2017-3-9 12:00 static/image/common/back.gif
keil要破解。包含了头文件才能调用。
具体使用方法以后单片机课堂会讲

好的,等教程

麒麟科技 发表于 2017-3-7 00:21:07

终于更新了。

oplover 发表于 2017-3-7 01:57:45

支持支持一直在关注

LDQ00 发表于 2017-3-7 02:18:49

终于盼到萝丽大神了

夢裡飛 发表于 2017-3-7 06:14:40

期待中

带着梦想起飞 发表于 2017-3-7 06:50:29

!!!

52myzb 发表于 2017-3-7 07:13:46

坐等你发布,哈哈

eagle56 发表于 2017-3-7 07:17:11

本帖最后由 eagle56 于 2017-3-7 07:20 编辑

顶楼主,中国的月亮因你而圆。低端平台,玩出高端的感觉,才是真正的大神。

飞来峰 发表于 2017-3-7 07:29:02

支持萝丽

2MHNmg8eFy 发表于 2017-3-7 08:09:42

是不是库只支持这两种STC15W104、STC15W408AS
其它型号不能用,应像arduino哪样可以选芯片。

sjphl650421 发表于 2017-3-7 08:40:46

期待,正是我想要的。

武杰杰 发表于 2017-3-7 08:48:01

支持版主

Marshal 发表于 2017-3-7 09:42:26

库在哪里。或有谁知道的回一个

机甲老顽童 发表于 2017-3-7 11:34:49

萝丽开车了!快上车!http://www.moz8.com//mobcent//app/data/phiz/default/03.png

我爱萝丽爱萝丽 发表于 2017-3-7 12:36:07

2MHNmg8eFy 发表于 2017-3-7 08:09
是不是库只支持这两种STC15W104、STC15W408AS
其它型号不能用,应像arduino哪样可以选芯片。
...

库完善以后15W系列都可以用

小冰 发表于 2017-3-7 12:39:53

支持萝丽!!

adikesi 发表于 2017-3-7 12:45:58

厉害,支持!顶!

lwjmf 发表于 2017-3-7 15:05:55

支持大师!!这样对于没有时间深入学习的爱好者有很大的用处。

Bumsei 发表于 2017-3-7 15:33:41

强烈支持!!!!
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 【STC单片机仿Arduino风格库函数】 V0.4版发布!