简单讨论一下小白学习单片机所需要的软件环境、硬件环境
///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免费的,私信我就可以哦~点我头像黑色字体加我地球呺也能领取哦。最近比较闲,带做毕设,带学生参加省级或以上比赛///
单片机让很多同学觉得难,是因为单片机是软硬件结合的产品。你需要对软件了解,也需要对硬件了解一些,但是这不是单片机入门最关键的要素,大部分同学不入门最关键的问题是好高骛远,另一个关键问题是目前市面上大部分的单片机书籍不适合入门。
作者一直提倡学习使用框架法、逆推法、一步步学习,此次也不例外。
直接了当,我们做个学习单片机的知识框架:
·单片机核心当然是必不可少的,单片机就是将电脑所拥有的大部分硬件集成到一个芯片中,当然是精简过,但是也强悍的不得了。
·都将计算机集成了,我们考虑下,自然需要有些基础学习单片机才能进展快,所以要了解一些模拟电路、数字电路的基础知识,但是大家不要被这两个名词吓住了,针对单片机应用来说,我们仅学习其中万分之一的基础知识就好。
·当然单片机学习离不开单片机编程,早期学单片机很费劲,要学习汇编语言,机器语言,感谢C语言的发明人和拓展科学家吧!他们把问题简化,我们可以用中级语言C语言完成单片机编程,C语言是核心,这个要学会,现在甚至有些可以用高级语言或者图形化单片机编程,但是还不够实用化,C语言仍然是核心。
·我们用编写单片机软件来控制单片机硬件,所以软件环境、硬件环境都必不可少。软件环境包括编程平台(软件开发平台)和调试工具(串口调试助手、TCP/IP/UDP调试助手等等);硬件环境我们要准备单片机开发板和调试工具万用表、示波器、逻辑分析仪等。
·准备这些很麻烦,有些还比较贵,所以在公司内部和学校学习是最好的方式,另外现在有个神器-Proteus,它包含了单片机编程平台、硬件仿真、硬件调试工具,作为初学者可以从proteus入手学习单片机,事半功倍。
·通讯协议是重点、重点、重点!单片机核心与外部模块、芯片通讯,都要有通讯协议才行,要用几根线与外部连线,要发送什么数据...
向导的专栏从来不是劝退专栏,而是想尽各种办法让零基础、非专业的同学入门。
不要被上面的英文单词或者专业术语吓住了,实际上框架罗列出来,是让大家有个清晰的认识,知道单片机系统是什么。
大部分不适合入门的最大的问题就是无框架、跳跃式讲解,任何一个专业术语,都有办法解释清楚,一篇文章不够100篇!
仅以此篇,作为单片机入门专栏的总目录。
总目录:
第一篇,单片机入门系列
向导:D1.1单片机入门第一课
向导:D1.2单片机入门第二课程序语言框架
向导:单片机入门框架三学习思路代码结构流程图与分析工具
向导:单片机核心概念1---定时器
向导:PM10单片机调试方法与技巧软件工具使用
第二篇,进阶工程师内容
向导:E2.1单片机开源框架--时间片轮询
向导:E2.2单片机开源框架--时间片轮询--思路
附录
向导:单片机学习方法与步骤
向导:代码分析工具understand与实用化配置
向导:玲珑剑与生锈刀--串口调试利器
向导:向导单片机训练营--开源资料
向导:最简洁的单片机状态机模型(X-状态机)
向导:单片机--学习全流程框架(初稿)
待补充...
声明:
文中所有论点、结论皆根据作者经历经验总结,限于知识结构、层次、经历局限性,必然有不少偏颇,甚至部分内容偏激,作者所有的文章也是试错的过程,欢迎批评斧正,如有不同意见或建议,请与讨论区提出讨论。
1.数码管静态与动态的原理
1.1静态
概念:每个数码管必须接8位数据线。当送入一次字形码后,可保持不变,直至送入新的为止。
优点:CPU占用时间少
缺点:硬件电路复杂,成本高
1.2 动态
特点:将所有数码管的段选线并联,由位选线决定哪一个数码管工作。同一时刻,仅有一个数码管工作。
动态显示的亮度要差一些,所以选择限流电阻时,应略小于静态显示电路中的电阻。
2.中断
2.1概念:略
2.2中断过程:1.中断发生;2.中断服务;3.中断返回(自己看书本的描述,记一下)
2.3相关寄存器
2.3.1TCON
TR0=1,定时器0启动;TF0:定时器0溢出中断标志位
2.3.2SCON
TI、RI:收发中断标志位,需软件清零。
2.3.3中断允许控制
EA:中断总开关
如果要打开定时器中断,要开两个中断!先EA=1,再ET0=1。
如果要打开串口中断,则是先EA=1,再ES=1。
2.3.4中断优先级控制
2.4定时器/计数器
51单片机的定时器,有4种工作方式,通过寄存器M1,M0来设置。
2.5程序(仅摘录关键部分)
2.5.1定时器初始化部分
TMOD=0x01;
TH0=(65536-N)/256;
TL0=(65536-N)%256;
EA=1;
ET0=1;
TR0=1;
2.5.2中断服务
void T0_time()interrupt 1
{
TH0=...;
TL0=...;
num++;
}
如果时使用定时器1,则是interrupt 3。
2.5.3 延时函数
void delayms(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
第四章 键盘
1.键盘分类
1.1编码键盘
硬件部分已经帮键盘编好码了
1.2非编码键盘
需要软件去编码和判断哪个按键按下。其中常见的有独立键盘和矩阵键盘。
2.去抖
去抖的关键是加delay函数,看程序就很好理解了。
3.独立键盘程序编写
sbit s1=p3^0;
if(s1 == 0)
{
delayms(0);//去抖
if(s1 == 0)
{
...
while(s1!=0)//等待按键放下
}
}
4.矩阵键盘编写
假设,先检测第2列
P3=0xfd;//关键1:0xfd即(11111101),扫描第2列
temp=P3;//
temp=temp&0xf0;//关键2:读取第1、2、3、4行
if(temp!=0xf0)
{
delayms(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case ...//逐行排除,看看是谁被按下了。
}
}
矩阵键盘特点:节省I/O口资源,但编程复杂。