以下内容为我理解的单片机及程序。51单片机,简单的可以实现交通灯功能,一般的可以驱动机器人,打印机等,可以实现温度、压力自动控制。复杂的可以制成例如俄罗斯方块等游戏机。其他还有很多等待你改变世界......。
本课程以STC80C51系列芯片为基础(STC80C52,STC80C51RC,80C52RC均可),强调实用、简单为特点,适合没有基础的学生学习,后续课程陆续更新中。
适应范围:有一点电子基础,会用烙铁(当然不会也可以用面包板),万用表,这是一个硬件和软件结合的事业,这里主要讨论C程序部分.
学习前的准备工作:1.要有一块学习版(因为新手焊接技术也不一定过关)或最小系统板。
2.要有电脑并安装C程序编辑软件KEIL、和烧录芯片的软件stc-isp-v6.86L程序见附件
3.能上网查询相关资料,STC80C52资料见附件,相关软件安装及使用可搜索百度。
准备工作做完了我们来编程:
目标让一个LED灯亮: 打开vision4软件输入
#include <at89x52.h> //斜杠就是注释的意思,第一行就是将at89x52的注册表加进来 //也可以在程序里点右键打开看看都有啥。编程必备语句。
void main() //程序从这开始,编程必备语句。
{ //程序包含内容的起点标记
P2_0=0; //让芯片P2.0脚为低电平,如你的机器上P2.0脚连着LED,就可以点亮要注意学习板连接
} //程序包含内容的终点标记
以上程序就写完了,虽然不太标准,但好用,编辑一下形成.hex文件,这就是点亮一个LED的C 程序,然后用STC-ISP-V6.86烧录
注意事项:
1. P一定要大写,后面一定要加分号,0是零不是英文字母O
2. vision4软件需设置HEX输出,在闪存---配置闪存工具---输出---选中产生HEX文件--确定,芯片ATMEL---AT89C51即可。
3. STC-ISP-V6.86软件,注意先点下载,然后再打开学习版电源才能烧录成功,芯片型号必须对
是不是很简单啊,实际编程也没那么难,不用学太多理论,先点亮一个灯再说这样比较有兴趣。那点亮两个呢三个呢学习版一般会配7个你都可点亮
扩展:
#include <at89x52.h>
void main()
{
P2_0=0;
P2_2=0;
}
这就是点亮两个的程序同样你可以同时点亮7个(一般学习版会有七个供直接点亮的LED),其实能点亮LED理论上你就可以点继电器模块、直流小电机、小风扇等等。
让我们再扩展一下让蜂鸣器响:
#include <at89x52.h>
void main()
{
P1_5=~P1_5; //假设你的学习版P1.5是蜂鸣器那就可以响了
}
注意:输入程序一定要在纯英文输入状态输入这个~,它的意思是状态翻转从高电平到低电平再高电平循环,直接 P1_5=0是不行的,因为得震动,但发过来这个符号是可以点亮LED的,学不在多要会活用。
#include <at89x52.h>
void main()
{
P2_0=~P2_0;
}
虽然是亮了只是有些暗,为什么呢?因为其实它是在快速闪,其实让灯亮还有正规写法
#include "at89x52.h"
sbit led=P2^0; //将单片机的P2.0端口定义为led
void main()
{
while(1) //后面括号里的程序循环
{
led=0; //P2.0端口设置为低电平
}
}
这又是一种写法也可以点亮LED,自己多试验一下吧。
学习板自带的烧录程序也可以烧录,好处就是可以开机直接烧不用关机,坏处是有些芯片烧不了所以建议一开始就用STC-ISP烧。再拓展一下点亮LED的方法:
#include "at89x52.h"
void main()
{
P2=0xfe; //这点亮的是P2.0口的灯,P2.1是0xfd,全亮是0x00
}
这是16进制的表示方法,以后学习复杂的程序必须用的,所以有时间看看背一下2进制、10进制、16进制的转换,有助于以后学习。
|