郭天祥2023全新51单片机教程-入门+提高——数码管
本文最后更新于 2024-07-23,文章内容可能已经过时。
郭天祥2023全新51单片机教程-入门+提高——数码管
8051单片机最小系统【PS:32位单片机最小系统】
1、电源
2、复位电路
3、晶振
4、如果要使用P0口,必须加4.7K-10K上拉电阻
5、如果要下载程序,必须要与电脑连接的串口下载通道
数码管的显示原理
数码管分为两种,共阴数码管/共阳数码管
阴极变成低电平,阳极给高电平,则发光二极管导通
使用数码管作显示时,要注意区分这两种不同的接法,为了显示数字或字符,
必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。
因此为LED显示器提供的编码正好是一个字节。TX-1CN实验板用共阴极数码管,
根据电路连接图显示16进制数的编码见下表。
TX-1CN共阴数码管列表
0x3f | 0x06 | 0x5b | 0x4f | 0x66 | 0x6d |
0 | 1 | 2 | 3 | 4 | 5 |
0x7d | 0x07 | 0x7f | 0x6f | 0x77 | 0x7c |
6 | 7 | 8 | 9 | A | B |
0x39 | 0x5e | 0x79 | 0x71 | 0x00 | |
C | D | E | F | 无显示 |
数组的用法
标准写法:unsigned char table[ ]={a,b,c….};
unsigned char :数组内元素的数据类型
table:定义这个数组的名称,可自己随意定义
内部按从0到n的顺序依次编写,如下:
unsigned char table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
注意:当写成unsigned char code table[]={};时,告诉编译器,将此数组存在程序存储区,而不是放在SRAM中。还有二维数组,多维数组知识
算数运算和求余
算数运算符:+ - * / %
特别说明:
/ 除法,求商,对于整型和字符型变量,只得出整数的商,小数抛弃。
% 求余数,简称:求余,对于整型和字符型变量,只得出余数部分,商抛弃
优先级:* / % 同级,优先于+ -, + - 同级
如: 3/2=1, 3%2=1,
15/7=2, 18%7=4,
将123中的三个数分别分离出来
123/100=1, 123/10%10=2, 123%10=3,
数组示例
/**
*功能:加减乘除求余商的示例
*/
#include<stc89c5xrc.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define beep P23
#define dula P26
#define wela P27
uchar num,temp;
uchar t1,t2,t3,t4,t5,t6;
char c1;
float f1;
uchar table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void DelayMs(uint c);
uint Sum(uchar i,uchar j);
void main ()
{
t1=1+2;
t2=1-3;
c1=1-3;
t3=2*3;
t4=15/7;
f1=15/7;
t5=18%7;
while(1);
}
uint Sum(uchar i,uchar j)
{
uint k;
k=i+j;
return k;
}
void DelayMs(uint c)
{
uint a,b;
for(a=c;a>0;a--)
for(b=11;b>0;b--);
}输出显示如下【嵌入式C语言在调试中进行】

代码示例
点亮第一个发光二极管示例代码
静态显示
动态显示
- 感谢你赐予我前进的力量