模吧

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

67152查看 | 227回复

[开源教程] 【STC单片机仿Arduino风格库函数】 V0.4版发布!

  [复制链接]
发表于 2017-3-6 23:48:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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

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


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


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


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







评分

参与人数 8牛币 +43 收起 理由
RenShen + 1 很给力!
人生边上的路 + 5 很给力!
dzqj + 1 赞一个!
hp34401a + 1 很给力!
细雪带风 + 5 赞一个!
pxhxkij + 10 虽然不会单片机,但是看到此文不于不赞。.
浅雪 + 10 赞一个!
飞来峰 + 10 好人

查看全部评分

 楼主| 发表于 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();中添加自己的代码,编译。
【STC单片机仿Arduino风格库函数】 V0.4版发布! 开源,发动机,算法,arduino,争论不休 作者:我爱萝丽爱萝丽 6515


库说明和特点:

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


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





V0.4版更新日志:

  → 增加软件模拟串口的波特率设置
  → 增加数码管支持
  → 增加软件模拟I2C
  → 增加1602液晶屏I2C模式
  → 多个函数优化

库V0.4版
【STC单片机仿Arduino风格库函数】 V0.4版发布! 开源,发动机,算法,arduino,争论不休 作者:我爱萝丽爱萝丽 7614 STC库 V0.4.rar (52.46 KB, 下载次数: 345)


库工程源码,有兴趣的可以一起完善库:
【STC单片机仿Arduino风格库函数】 V0.4版发布! 开源,发动机,算法,arduino,争论不休 作者:我爱萝丽爱萝丽 1056 STC库工程源码 V0.4.rar (85.86 KB, 下载次数: 332)






















点评

这是一个伟大的工程,天道酬勤,好运会伴你一生。  发表于 2018-5-18 09:02
 楼主| 发表于 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);


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



点评

用起来方便多了  发表于 2019-6-3 11:28
手把手的教,这才是好教程。  发表于 2018-5-18 09:06
讲的太好了,详细明了,  发表于 2017-3-9 16:21
回复 支持 2 反对 0

使用道具 举报

发表于 2020-8-5 19:40:29 | 显示全部楼层
此乃是单片机爱好者的福音恭喜!萝莉老师辛苦,谢谢您!
回复 支持 1 反对 0

使用道具 举报

发表于 2020-5-19 12:55:49 | 显示全部楼层
多赚牛币下东西
回复 支持 1 反对 0

使用道具 举报

发表于 2020-4-30 19:30:38 来自手机 | 显示全部楼层
很好啊!膜拜!
回复 支持 1 反对 0

使用道具 举报

发表于 2020-4-29 09:29:40 | 显示全部楼层
我爱萝丽爱萝丽 发表于 2017-3-7 14:02
STC库V0.4 发布:

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

谢谢分享
回复 支持 0 反对 1

使用道具 举报

发表于 2020-2-9 01:18:17 | 显示全部楼层
这个6,收藏了
回复 支持 1 反对 0

使用道具 举报

发表于 2019-12-24 13:22:59 | 显示全部楼层
大侠现身,顶起!
回复 支持 1 反对 0

使用道具 举报

发表于 2017-3-9 18:22:05 | 显示全部楼层
我爱萝丽爱萝丽 发表于 2017-3-9 17:43 【STC单片机仿Arduino风格库函数】 V0.4版发布! 开源,发动机,算法,arduino,争论不休 作者:2MHNmg8eFy 2471
哈,放群里吧。有没有兴趣一起完善库?把一些常用模块的操作全部封装,以后自己用着方便别人也方便 ...

版主和浅雪合作将产量大增!哈哈!
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-3-9 17:43:23 | 显示全部楼层
浅雪 发表于 2017-3-9 15:43
好吧,没牛币下载了。。。。能不能放到云盘上去。。。

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

使用道具 举报

发表于 2017-3-9 16:39:09 | 显示全部楼层
我爱萝丽爱萝丽 发表于 2017-3-9 12:00 【STC单片机仿Arduino风格库函数】 V0.4版发布! 开源,发动机,算法,arduino,争论不休 作者:机甲老顽童 4701
keil要破解。包含了头文件才能调用。
具体使用方法以后单片机课堂会讲

好的,等教程
回复 支持 1 反对 0

使用道具 举报

发表于 2017-3-7 00:21:07 | 显示全部楼层
终于更新了。
发表于 2017-3-7 01:57:45 | 显示全部楼层
支持支持一直在关注
发表于 2017-3-7 02:18:49 | 显示全部楼层
终于盼到萝丽大神了
发表于 2017-3-7 06:14:40 | 显示全部楼层
期待中
发表于 2017-3-7 06:50:29 | 显示全部楼层
!!!
发表于 2017-3-7 07:13:46 | 显示全部楼层
坐等你发布,哈哈
发表于 2017-3-7 07:17:11 | 显示全部楼层
本帖最后由 eagle56 于 2017-3-7 07:20 编辑

顶楼主,中国的月亮因你而圆。低端平台,玩出高端的感觉,才是真正的大神。
发表于 2017-3-7 07:29:02 | 显示全部楼层
支持萝丽
发表于 2017-3-7 08:09:42 | 显示全部楼层
是不是库只支持这两种STC15W104、STC15W408AS
其它型号不能用,应像arduino哪样可以选芯片。

点评

库完善以后15W系列都可以用  详情 回复 发表于 2017-3-7 12:36
发表于 2017-3-7 08:40:46 | 显示全部楼层
期待,正是我想要的。
发表于 2017-3-7 08:48:01 | 显示全部楼层
支持版主
发表于 2017-3-7 09:42:26 | 显示全部楼层
库在哪里。或有谁知道的回一个
发表于 2017-3-7 11:34:49 | 显示全部楼层
萝丽开车了!快上车!【STC单片机仿Arduino风格库函数】 V0.4版发布! 开源,发动机,算法,arduino,争论不休 作者:机甲老顽童 3882
 楼主| 发表于 2017-3-7 12:36:07 | 显示全部楼层
2MHNmg8eFy 发表于 2017-3-7 08:09
是不是库只支持这两种STC15W104、STC15W408AS
其它型号不能用,应像arduino哪样可以选芯片。
...

库完善以后15W系列都可以用
发表于 2017-3-7 12:39:53 | 显示全部楼层
支持萝丽!!
发表于 2017-3-7 12:45:58 | 显示全部楼层
厉害,支持!顶!
发表于 2017-3-7 15:05:55 | 显示全部楼层
支持大师!!这样对于没有时间深入学习的爱好者有很大的用处。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|关于模吧|APP下载|广告报价|小黑屋|手机版|企业会员|商城入驻|联系我们|模吧 ( 冀公网安备13080502000084号 )

© 2013-2020 Moz8.com 模吧,玩出精彩!