智能车培训阶段一第一部分内容摘要

天津大学智能车队阶段一第一部分培训内容主要包含:
基础C语言编程;
单片机及简单电路介绍;
STC89C52 GPIO口数字量输入输出及仿真。

基础C语言编程:

硬件是软件的躯体,软件是硬件的灵魂,单片机等嵌入式开发需要具备最基础的C语言编程能力,熟悉常用的编程语法与技巧,以下介绍只是C语言编程的基本知识或知识框架,继续深入学习,一方面可以以以下内容为枝干拓展,一方面多加练习。
补充学习网站:
C语言补充学习网站:菜鸟教程
数制:
二进制(0b),十进制,十六进制(0x)
进制之间转换

数据类型及所占字节数:
char(1),int(4),float(4),unsigned int(4),bool
例如:
char为1字节,表示范围为-128~127;
unsigned char为1字节,表示范围为0-256;
注意float与double等的符号位;

ASCII码表:
0-9: 48-57 A-Z:65-90 a-z:97-122
数字转ASCII:‘0’+5==‘5’
特殊字符:
换行’\n’:0x0a 回车’\r’:0x0d 空格’ ':0x20 空字符:0x00
详细参考链接:
ASCII码表

变量与常量:
变量定义(定义后养成初始化的习惯):

float a;   unsigned int num;
float a=5.5;   unsigned int num=8;

变量声明:
定义方式,extern方式 extern详细介绍

float a;
extern float a;

常量定义:

使用 #define 预处理器。  
#define LENGTH 10;
使用 const 关键字。  
const int  LENGTH = 10;

运算符:
算术运算符:+,-,**,/,%,++,–
关系运算符:==,!=,>,<,>=,<=
逻辑运算符:&&,||,!
位运算符:&,|,^,~,<<,>>
赋值运算符:=,+=,-=,*=,/=,%=,<<=

判断语句:
if语句,if-else语句,if-else if-else语句
switch语句
三元运算符:a==5? b=3:b=4;

循环语句:
for循环,while循环(while-do,do-while)
break语句:终止循环或switch语句
continue语句:终止本次循环,进行下一次循环

函数:
库函数与自定义函数
函数定义:

返回类型  函数名(参数列表)
{
	执行语句;
	返回值;
}
例如:
int Add(int Num1,int Num2)
{
	int Result=Num1+Num2;
	return Result;
}

函数声明:int Add(int Num1,int Num2);
函数调用:注意:在源文件中定义的函数在另一个文件中调用时,函数声明是必须的。如:file1.c文件定义,file1.h声明,file2#include<file1.h>
函数传参:
传值调用:传递变量的值得复制,退出函数不影响参数值
引用调用:传递变量地址,退出函数影响参数值

作用域:
变量的有效作用范围
全局变量:分配全局区内存,整个程序周期均有效,通常定义在函数外部,程序顶部。
局部变量:分配栈内存,只在具体代码块内有效,使用时分配地址初始化,使用结束即释放。

数组:
同一种类型的数据的集合,分配连续内存,通过数组下标确定具体访问元素。下标从0开始,数组定义并初始化:

type arrayName [ arraySize ];

例如:

double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};
double balance[] = {1000.0, 2.0, 3.4, 7.0, 50.0};

数组示意图数组元素的访问与修改:
下标方式:balance[0]=3.4; balance[0]=balance[2];
指针方式:自行根据掌握程度学习掌握;
二维数组及多维数组;
数组指针,函数传入数组参数,返回数组等。

字符串:
一串字符组成,以NULL(’\0’,0x00)结尾
字符型数组:

char Test[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
char Test[] = "Hello";

字符串字符串相关的库函数:strlen(s1);strcpy(s1,s2);等

typedef关键字:
为类型取一个新的名字; 例如:

typedef unsigned char uchar;
uchar Test='a';

与#define的区别;#define:类型+数值

输入输出:
![标准输入输出流](https://i-blog.csdnimg.cn/blog_migrate/76119369b91c4dd328279d3e2cae0f2b.png#pic_center标准输入输出流包含

int getchar(void):读取单一字符,可与循环配合使用;
int putchar(int c) :输出单一字符;
int scanf(const char *format, ...) 函数从标准输入流 stdin 读取输入,并根据提供的 format 来浏览输入。
int printf(const char *format, ...) 函数把输出写入到标准输出流 stdout ,并根据提供的格式产生输出。

例如:

#include <stdio.h>  //必须包含头文件
int main()
{
    float f;
    printf("Enter a number: ");
    // %f 匹配浮点型数据
    scanf("%f",&f);
    printf("Value = %f", f);
    return 0;
}

头文件:
头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享。有两种类型的头文件:程序员编写的头文件和编译器自带的头文件。
头文件引用:
#include 可以引用用户和系统头文件:
用户头文件:

 #include <file>

系统头文件:

 #include "file"

防止多次引用:

#ifndef HEADER_FILE
#define HEADER_FILE
the entire header file file
#endif

单片机基础部分

培训使用的两款单片机:

图片:STC89C52
图片:STM32F103ZET6

电源介绍:
电池浮动电压通过稳压电路获得稳定电压,常用控制稳压:3.3V,5.0V

电平特性:
单片机的输入输出电平为TTL电平,其中高电平为+5V,低电平为0V。计算机串口为RS-232电平,其中高电平为-12V,低电平为+12V。注意,RS-232为负逻辑电平。

STC89C52介绍:
单片机最小系统:
51单片机最小系统详细介绍
单片机能工作的最少元件组成的单片机系统(时钟电路,CPU,复位电路)
例如:
STC89C52最小系统GPIO:
单片机GPIO详细介绍
STC89C52包含四组IO口: P0口、P1口、P2口、P3口。
P0口(39-32脚)——双向8位I/O口,每个口可独立控制,没有上拉电阻,所以不能正常的输出高低电平,因此该组IO口在使用时务必要接上拉电阻,一般选10千欧。
P1口(1-8脚)——准双向8位IO口,每个口可独立控制,内带上拉电阻,这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向IO口。在作为输入使用前,要先向该口进行写1操作,然后单片机内部才可正确的读出外部信号,初始化时可以直接设置为高。
P2口(21-28脚)—— 准双向8位I/O口,每个口可独立控制,内带上拉电阻,与P1口相似。
P3口(10-17脚)——准双向8位IO口,每个口可独立控制,内带上拉电阻。作为第一功能可以当做普通I/O口,与P1口相似。P3口可做第二功能使用。第二功能如下所示:
P3.0特殊功能引脚STC89C52数字量输入输出:
sbit:sbit是定义特殊功能寄存器的位变量。bit和sbit都是C51扩展的变量类型。可以通过sbit直接对52单片机进行位操作,即读取或写入对应口位的电平状态,如:sbit Key=P0^0;即定义了Key代表P0口0号引脚。

软件使用:
Proteus使用详细介绍
Keil使用详细介绍
Proteus常用元件对照表

实验演示

按键控制LED灯:按键按下LED灯亮,按键松开,LED灯灭。

附加:
中断介绍

  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值