扫盲教程:深入浅出讲解单片机控制单只数码管循环显示0~F
最近有好多小伙伴留言说,我发的项目很难,他们都是刚入门的,希望我写一些入门级的教程,那么今天我就从硬件和软件两个方面来给大家讲一下最基本也是十分重要的电路 单片机驱动数码管显示电路。
要弄清楚单片机控制数码管显示字符的原理我们首先要知道:三个概念
单片机:通俗的讲单片机是一种集成电路芯片,利用一些特殊工艺把许多不同功能的模块集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。单片机可以烧进程序,然后从不同的IO口输出规定的电平信号。
七段数码管(如下图):
数码管是一类价格便宜 使用简单,通过对其不同的管脚输入相对的电流,使其发亮,从而显示出数字能够显示 时间、日期、温度等所有可用数字表示的参数的器件。一般的七段数码管拥有七个发光二极管(三横四纵)用以显示十进制0至9的数字外加小数点,也可以显示英文字母 A 至 F(b、d 为小写,其他为大写)。现时大部分的七段数码管会以斜体显示。
好了,上面是单片机和数码管的概念,下面说一下单片机的工作原理:
一个单片机要想能正常工作必须满足它工作的最小系统,这个最小系统包括,电源电路,晶振电路,复位电路等,当电源电路给单片机正常供电后,在上电的一瞬间会给复位电容充电从而完成上电复位的动作。单片机复位结束后,我们把需要控制数码管显示的代码烧进单片机,这时候单片机就会根据写的代码从不同的IO口输出不同的电平,从而控制七段数码管每一段的亮灭,而达到显示不同数字的目的。
好了说了半天理论了,下面我们开始实践一下吧!
首先用PROTEUS仿真软件画好单片机最小系统和LED数码管驱动原理图:本项目中用STC89C52
把程序烧进去以后,数码管开始从0到F显示,适当调整源代码参数可以修改显示不同的数字和不同的时间间隔。
51单片机参考源代码如下:
/*单只数码管循环显示0~F 作者 科技小伟1*/
#include <reg51.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
code uint8 LED_CODE[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8E};
void delay(uint16 x)
{
uint16 i,j;
for(i = x; i > 0; i --)
for(j = 114; j > 0; j --);
}
void main()
{
uint8 i = 0;
while(1)
{
for(i = 0; i < 16; i ++) //i = (i + 1) % 16
{
P0 = LED_CODE[i];
delay(500);
}
}
}
好了以上就是单片机控制数码管显示的全部内容了,本文从软件和硬件两个角度分别讲解,如果有任何意见或者需要设计文件 欢迎留言或者私信,如果你也对单片机感兴趣,那么快点行动起来吧!我们下期再见!
单片机入门必备知识,c语言基础来了
C语言是一种中级语言,易于移植,既具有高级语言的通用性及易写易读的特点,又具有汇编语言的"位处理"、“地址操作"等能力,允许直接访问无力物理地址,能进行位运算操作,能实现汇编语言的大部分功能!
C语言的特点:
1.C语言是一种结构化语言
2.C语言语言简洁、紧凑,使用方便、灵活
C语言程序结构:
第一个C语言程序
main 表示主函数,void 为函数类型,每个程序必须有且只能有一个 main函数,函数体(功能语句)放在{}中。
#include: 表示明程序中用到C语言系统提供的标准
功能。
printf 是C语言的输出函数,/**/ 为注释,增加程序可读性。一般情况下,C语言程序由5部分组合而成
1.文件包含部分(预处理部分)
2.变量说明部分
3.函数原型声明部分
4.主函数部分
5.自定义函数部分
不是每一个C语言程序都包含上面的5个部分,最简单的C语言程序可以只有文件包含和主体部分
重点来了,程序结构说明!
1. C语言程序可以由多个函数 构成,但是只能有一个 main函数,程序从main函数开始执行,然后通过函数调用完成部分功能,最后在main函数结束。
2. main函数位置任意 ,函数时C程序的基本单位
3.被调用的函数可以是系统提供的库函数,也可以是用户自己编制设计的函数,因为这种特点使得很容易实现程序的模块化。
一个函数由两部分组成:
函数说明部分:包括函数类型、函数名,形式参数类型、函数参数(形参)名
函数体:即函数说明部分下面{}中的部分,如果一个函数内有多个大括弧,则最外面的一对{}为函数体的范围
函数体通常包括:
1. 变量定义(声明),如:inta,a,b,c ;
2.执行部分在某些情况下也可以没有变量定义部分,如:第一个C语言程序。甚至既无变量定义也无执行部分,如:
1 temp()
2 { }
他是一个空函数,什么也不干,但这是合法的。
每一条语句由分号结束
书写格式自由,一行可以写多句,一句可以写多行,但是要注意不要将字符串整体分开!!
大小写敏感,大小写不能混用,一般程序语句用小写字母,符号常量要用大写
C语言本身没有输入输出语句 ,输入输出的操作是由库函数scanf和printf等 函数来完成的,C语言对输入输出实行函数化。
C语言程序的是怎么执行的?
1. C语言程序主要通过编译、链接后生成可加载模块(执行文件),才能在计算机上运行。
2. 完整的程序生成过程:
源代码→编译器→目标程序→连接器→载入模块→加载→执行程序
程序开发的具体步骤:
编译源程序:将C语言源程序用一个后缀为.c 的文件保存。如:myfile.c
编译:检查源程序中的语法错误,生成目标代码文件(.obj )。如:myfile.obj
链接:将多个目标程序(包含C语言函数库)链接到一个程序中,生成可执行文件。如:myfile.exe
运行可执行文件,验证程序正确性。
C语言基本数据类型、运算符和表达式
C语言的数据类型
不同类型的数据在内存中占用的字节数是不同的,数据类型的长度和取值范围会随着机器的CPU类型和编译器的不同而不同。
无符号的整数指不带符号的整数,即零或正整数
储存有符号的整数时,储存单元的最高位是符号位,其余各位表示数值,储存无符号的整数时,储存单元的全部用于表示数值
标识符
1. 所使用的字符:字母、数字、下划线
2. 标识符只能由字母数字下划线组成,且第一个字符必须为字母或下划线关键
注:C语言中选用变量名、函数名等标识符时,不能与关键字发生冲突。
常量和符号常量
程序运行中其值可以改变的量为常量,存储输入数据,中间结果,最终结果
变量三要素:变量名称,变量的数据类型,变量的值。
变量的数据类型决定了他在内存中占据的储存单元个数,在储存单元中存放的数据即为变量的值!
变量的名字是标识符,C语言里面所有的名字都用标识符表示!
变量的基本操作:
将数值存入变量中,称为赋值
将变量中的值取出,称为取值
变量特性:喜新厌旧,取之不尽,变量必须先定义后使用 !!
注意:在同一个作用域中,不要定义同名变量!!尽量避免定义与库函数名同名的变量!!
回复“入门资料”获取单片机入门到高级进阶教程
免费领!单片机入门到高级开挂学习路径(附教程+工具)
以上就是对c语言的一个基础入门知识的简单讲解,有想掌握各种c语言基础语法结构的朋友们关注我,每天更新一些小知识分享给大家
相关问答
单片机0x 01表示什么?应答报文的格式:功能码01(1字节)+线圈字节数N(1字节)+线圈值(N字节);0x02——读取离散量输入数值。请求报文的格式:功能码02(1字节)+起始地址(...0x02...
单片机 中的sbit= 0x 90中的 0x 和90分别指的是什么是什么意思?这个是C51单片机特有的语句之一。sbit是C51扩展的变量类型,用来定义特殊功能寄存器的位变量。P1_0指的是芯片管脚上的标准输入输出管脚1.0。由于P1.0并不是...
单片机 中 0x 08代表什么意思呢尤其是其中?简单点说吧+-*/加减乘除是常用的运算,在计算机中还有%取余,也就是计算余数Num就是计算Num/10后的余数,相当于计算个位数,除此之外还有按位的计算,比如&(与),|...
单片机0x 7f是什么意思?单片机程序用0x表示16进制数,0x7F就是16进制的7F,也就是10进制的127。除0x格式以外,单片机程序还可以用H后缀字符表示16进制数,例如0x7f可以写成7FH。数字中...
51 单片机 TCON= 0x 01脚?看来你对C51不太熟悉,可以看一些关于C51基本编程的书TCON=0x01就是简单的赋值操作.TCON是51单片机内部定时器控制的特殊功能寄存器(sfr),将它赋值为0x01是说...
单片机 一个地址几个字节?在数据手册上,BSRR的偏移地址为0X18,然后手册讲完BSRR后直接讲LCKR了,并且LCKR的偏移地址是OX1C。所以根据OX1C-0X18=0X04就知道BSRR是32位寄存器了。因为....
单片机 数字1-9怎么表示?在单片机程序中,数字通常有二进制,十进制和十六进制三种表示法,以数字9为例:二进制写成00001001B,B就是二进制的意思,注意,这个字母不能缺少!十进制写...在...
计算题:弱弱地问一下 单片机 中“~ 0x 3f& 0x7f,0x06& 0x7f”...[最佳回答]&这个符号是按位与的运算这个符号为取反0x3f&0x7f=0xc0&0x7f=0x400x06&0x7f=0xf9&0x7f=0x79
51 单片机 中液晶代码里地址和 0x 80或是干什么的?没有源码,只能泛泛而谈的说一下,地址是液晶模块的控制端口,该地址选择,那么可以对液晶进行读写。0x80,这个数据一般而言,是D8位有效,是液晶的状态位,表...没...
单片机 的十六进制怎么表示?单片机的数据(或者是C程序)里面经常出现一些字母(例如0xff)表示一个字节的数据,你如果想表示两个字节,也就是16位数据的时候就直在0x后跟四个字母(16进制...