-
p.1 开发环境搭建
https://pan.baidu.com/s/1bBUV3k3kw2WTg7sNGkLdXw
提取码是:idi8
https://pan.baidu.com/s/1gzIDCsBubfAMue-sH18LAQ
提取码是:io17
•双击proteus8.8.SP1.exe安装,选择Use a
locally installed license key, 点击browse去选
择Licence.lxk安装,最后运行Patch.exe完成破解
•双击c51v959.exe安装keil,完成安装后打开keil,
选择file菜单,点License Mangement,将CID中对
应的号码复制下来,然后双击注册机.exe,粘贴CID到注册机,Target选C51,点Generate产生破
解码,最后将破解码复制到keil的LIC后面,点LIC完成破解
双击SETUP.EXE安装USB驱动
-
p.2电子元器件功能简介
-
p.3常用电平标准
- TTL全名:Transistor-Transistor Logic三极管结构。Vcc:5V;VOH>=2.4V;VOL<=0.5V;VIH>=2V;VIL<=0.8V。
- 3.3V LVTTL: Vcc:3.3V;VOH>=2.4V;VOL<=0.4V;VIH>=2V;VIL<=0.8V。
- 2.5V LVTTL: Vcc:2.5V;VOH>=2.0V;VOL<=0.2V;VIH>=1.7V;VIL<=0.7V。
- CMOS全名:Complementary Metal Oxide Semiconductor(PMOS+NMOS)Vcc:5V;VOH>=4.45V;VOL<=0.5V;VIH>=3.5V;VIL<=1.5V
- 3.3V LVCMOS:Vcc:3.3V;VOH>=3.2V;VOL<=0.1V;VIH>=2.0V;VIL<=0.7V。
- 2.5V LVCMOS:Vcc:2.5V;VOH>=2V;VOL<=0.1V;VIH>=1.7V;VIL<=0.7V。
- RS232电平:计算机的串口(负逻辑体系)
高 -12V 低+12V
-
p.4 C51框架介绍
-
p.5 开发板套件介绍
-
p.6 点亮一个LED灯
#include <reg52.h> //引用单片机头文件
void main(void) //主函数,程序的入口
{
P0 = 1; // 0000 0001,将P0.0引脚输出高电平
while(1) //无限循环
{
}
}
•P0口是可以位寻址的,即可以单独操作某个位
•C-51的数据类型扩充定义
•sfr:特殊功能寄存器声明
•sfr16:sfr的16位数据声明
•sbit:特殊功能位声明
•bit:位变量声明
例如:sbit led = P0^0;
led特殊功能位变量将与P0口的第0脚关联上了,操作led就可以操作P0.0引脚的状态
#include <reg52.h> //引用单片机头文件
sbit led = P0^0; // led的取值范围为0,1两个值
void main(void) //主函数,程序的入口
{
led = 1; // 1,将P0.0引脚输出高电平
// 相当于 P0 = P0 | 1;
while(1) //无限循环
{
}
}
•在51单片机中,1个机器周期等于12个振荡周期,则在计算定时时间t时
计数值N乘以机器周期Tcy就是定时时间t
使用机器周期实现硬延时
void delayMills(unsigned int ms)
{
unsigned char i,j;
for(j=ms; j>0; j--) {
for(i=100;i>0;i--); //空操作等待实现延时
}
}
-
程序结构:
•前后台程序架构的优缺点
优点----简洁,明了,新手的上手速度很快,特别是专注用来做一件事情的时候,一个while循环基本是无敌的,
只要维护好后台与前台之间的关联就可以。
缺点--软件规模大了,很难管理。处理的模块一多的话,实时性也根本难以保障
所以,硬延时对系统的响应影响非常大,建议在前台线程中少用硬延时,改用定时器软延时,上例中的闪烁灯
使用了硬延时,如果还有其它功能模块,这将严重会影响其它模块得到的执行时间,之后会用定时器解决此问题。
如果对于延时精度不高的情况下,计数的形式实现,每执行一次函数调用进行一次计数,一直计数到0进行LED灯翻转,计数值恢复到设定的值,周而复始,LED就会闪烁
void LED_delay(unsigned int i) {
static unsigned int ms = 0;
if(ms-- == 0) {
ms = i;
P3 ^= 0X1;
}
}
-
P1,P2,P3口IO结构介绍