提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
我是刚刚学习单片机,通过这篇文章来记录学习单片机之前需要的一些基本的数字电路和C语言的知识,这篇文章主要介绍电平特性,二进制与十六进制,与运算,非运算,或运算,异或运算等,下面进入正题。
一、电平特性
数字电路中只有两种电平: 高电平和低电平
单片机输入输出电平为TTL电平:
高+5V或+3.3V(相当于逻辑电平1)
低0V(相当于逻辑电平0)。
RS232电平:计算机的串口,高-12V、低+12V。
TTL 电路和 CMOS 电路的逻辑电平关系如下:
①VOH:逻辑电平 1 的输出电压。
②VOL:逻辑电平 0 的输出电压。
③VIH:逻辑电平 1 的输入电压。
④VIL:逻辑电平 0 的输入电压。
二、二进制与十六进制
2.1进制换算
单片机中高低电平用 0 和 1 表示,但在KEIL程序中一般用十六进制或十进制,所以要将二进制转换为十六进制,然后可能还会根据代码功能进行逻辑运算。
2.1.1二进制
类似于十进制进位退位的特点,二进制数的特点是"逢二进一,借一当二”
以15为例,整数部分反复除以2余数写后面,直到商为1为止,逆向写出结果即为二进制。
从二进制1111 的左边开始,左边第一位为1,乘以2的0次方,依次类推,最后将所有值相加,得出的值即为十进制15
十进制 | 二进制 | 十进制 | 二进制 |
0 | 0 | 5 | 101 |
1 | 1 | 6 | 110 |
2 | 10 | 7 | 111 |
3 | 11 | 8 | 1000 |
4 | 100 | 9 | 1001 |
2.1.2十六进制
十六进制特点:逢十六进一,借一当十六 ,十进制的 0-15 表示成十六进制为 0~9、 A、B、C、D、E、F。二进制转化为十六进制,一个字节八位二进制,四位一组,转换位十六进制。例如:
1010 1100转换为十六进制为0xAC
十进制 | 二进制 | 十六进制 | 十进制 | 二进制 | 十六进制 |
0 | 0 | 0 | 8 | 1000 | 8 |
1 | 1 | 1 | 9 | 1001 | 9 |
2 | 10 | 2 | 10 | 1010 | A |
3 | 11 | 3 | 11 | 1011 | B |
4 | 100 | 4 | 12 | 1100 | C |
5 | 101 | 5 | 13 | 1101 | D |
6 | 110 | 6 | 14 | 1110 | E |
7 | 111 | 7 | 15 | 1111 | F |
2.2与运算
与运算 :与运算是通过比较二进制位,同为1才为1,否则都为0,即全真才真。C 语言中运算符为“&”,所有输入都为高时,才会输出高。与门符号如下:
真值表:
输入A | 输入B | 输出F |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
例如:5&7
十进制5转换成二进制的5:0101
十进制7转换成二进制的7:0111
与运算结果: 0101 转换成十进制 5
2.3非运算
非运算:是实现“求反”这种逻辑关系的一种运算。C 语言中运算符为“!”,非门符号如下:
真值表:
输入A | 输出F |
0 | 1 |
1 | 0 |
例如:!5
十进制5转换成二进制的5:0101
非运算结果: 1010 转换成十进制 10
2.4或运算
或运算:所以输出为低,才会输出低,即全假才假。C 语 言中运算符为 “|”,或门符号如下:
真值表:
输入A | 输入B | 输出F |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
例如:5|7
十进制5转换成二进制的5:0101
十进制7转换成二进制的7:0111
或运算结果: 0111 转换成十进制 7
2.5异或运算
异或运算:输入相同时输出为底,否则为高,即相同为0,不同为1,否则为0, 其逻辑运算符为 “⊕”。异或门符号如下:
输入A | 输入B | 输出L |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
例如:5⊕7
十进制5转换成二进制的5:0101
十进制7转换成二进制的7:0111
异或运算结果: 0010 转换成十进制 2
总结
以上就是今天要讲的内容,本文仅仅简单介绍了单片机中一些常用的数字电路和C语言的基础,其他内容还需要去专门学习数字电路知识和C语言。