【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-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-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);
显示屏驱动函数:
//
//
此乃是单片机爱好者的福音恭喜!萝莉老师辛苦,谢谢您! 多赚牛币下东西 很好啊!膜拜! 我爱萝丽爱萝丽 发表于 2017-3-7 14:02
STC库V0.4 发布:
命名规则:单片机型号+版本号
谢谢分享 这个6,收藏了
大侠现身,顶起! 我爱萝丽爱萝丽 发表于 2017-3-9 17:43 static/image/common/back.gif
哈,放群里吧。有没有兴趣一起完善库?把一些常用模块的操作全部封装,以后自己用着方便别人也方便 ...
版主和浅雪合作将产量大增!哈哈!
浅雪 发表于 2017-3-9 15:43
好吧,没牛币下载了。。。。能不能放到云盘上去。。。
哈,放群里吧。有没有兴趣一起完善库?把一些常用模块的操作全部封装,以后自己用着方便别人也方便 我爱萝丽爱萝丽 发表于 2017-3-9 12:00 static/image/common/back.gif
keil要破解。包含了头文件才能调用。
具体使用方法以后单片机课堂会讲
好的,等教程
终于更新了。
支持支持一直在关注
终于盼到萝丽大神了
期待中
!!!
坐等你发布,哈哈
本帖最后由 eagle56 于 2017-3-7 07:20 编辑
顶楼主,中国的月亮因你而圆。低端平台,玩出高端的感觉,才是真正的大神。
支持萝丽
是不是库只支持这两种STC15W104、STC15W408AS
其它型号不能用,应像arduino哪样可以选芯片。
期待,正是我想要的。 支持版主
库在哪里。或有谁知道的回一个 萝丽开车了!快上车!http://www.moz8.com//mobcent//app/data/phiz/default/03.png
2MHNmg8eFy 发表于 2017-3-7 08:09
是不是库只支持这两种STC15W104、STC15W408AS
其它型号不能用,应像arduino哪样可以选芯片。
...
库完善以后15W系列都可以用 支持萝丽!!
厉害,支持!顶!
支持大师!!这样对于没有时间深入学习的爱好者有很大的用处。 强烈支持!!!!