当前位置:网站首页 > Haskell函数式编程 > 正文

单片机编程实例大全(单片机编程实例大全图解)



一、数码管的动态显示原理

动态显示的特点是将所有数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示,所谓动态扫描显示即轮流向各位数码管送出字形码和相应的选位,利用发光管的余晖和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示的要差一些,所以在选择限电阻时应略小于静态显示电路中的。

1..1、数码管的共阴与共阳

image.png

image.png


a b c d e f


共阴 a~f: 0x77 0x7c 0x39 0x5e 0x79 0x71


共阳 a~f: 0x88 0x83 0xa7 0xa1 0x86 0x8e


二、双P沟道增强型MOS---D74HC245芯片

特点:D74HC245是一种三态输出、八路信号收发器,主要应用于大屏显示,以及其他的消费类电子产品中增强驱动。


2.1、主要特性

采用CMOS工艺

宽电压工作范围:3.0V ---- 5V

双向三态输出

八线双向收发器

封装形式:SOP20、SOP20-2、TSSOP20、DIP20,

通透:输入是高电平,输出也是高电平;输入是低电平,输出也为低电平;


双向三态


双向:可以输出,也可以输出


三态:


P0口高阻态输出

管脚可以输出高电平,也可以输出低电平

2.2、应用领域

适用于显示器以及其他数字电路的驱动。


2.3、管脚的定义说明

image.png

三、功能真值表

image.png

四、译码器----D74HC138

是一种三通道输入,八通道输出译码器,主要应用于消费电子产品。


采用COMS工艺

低功耗

工作电压3.0V ----5.0V

封装形式:SOP16


4.1、应用领域

适用于数字电路中的 3—8 译码功能


4.2、管脚说明

4.3、封装形式

SOP16


代码

5.1、16进制

十六进制(简写为hex或下标16)在数学中是一种逢16进1的进位制。一般用数字0到9和字母A到F(或a~f)表示,其中:A~F表示10~15,这些称作十六进制数字。


0x后面跟随的十六进制计数,十六进制计数用a~f表示该位上取百值10~15


0x3f


十六进制个位基数是1,高位=低位*16,那么度3对应的位基数专是16*1=16,f对应的基数是1,中包含3个16和15个1,加起来等于63。


0xfc表示对应基数是16这位上取值15,对属应基数是1的位上取值12,即15个16加12个1这个十进制数


5.2、ASCII码

5.3、静态数码管代码

#include "reg52.h"

#include "intrins.h"

typedef unsigned char u8;

typedef unsigned int u16;

u8 code smgduan[16] = {0X3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,

0x77,0x7c,0x39,0x5e,0x79,0x71}; //

void main(){

P0=~smgduan[0];

while(1)

{

}

}

5.4、动态数码管代码

#include

#include

typedef unsigned char u8; // 预处理数据类型

typedef unsigned int u16; // 预处理数据类型

// 138译码器管脚定义

sbit LSA = P2^2;

sbit LSB = P2^3;

sbit LSC = P2^4;

// 延迟函数

void delay(u16 i){

while(i--);

}

// 数组

/

数码管显示真值表 共阳

0 1 2 3 4 5

0xc0 0xf9 0xa4 0xb0 0x99 0x92

6 7 8 9 a b

0x82 0xf8 0x80 0x90 0x88 0x83

c d e f

0xa7 0xa1 0x86 0x8e

*

数码管显示数字的真值表

*/

u8 code smgduan[16]={0X3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,

0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴

void DigDisplay(){

u8 i; //

for(i=0;i<8;i++){

switch(i){

case(0):

LSA = 0;LSB=0;LSC=0;break;

case(1):

LSA = 1;LSB=0;LSC=0;break;

case(2):

LSA = 0;LSB=1;LSC=0;break;

case(3):

LSA = 1;LSB=1;LSC=0;break;

case(4):

LSA = 0;LSB=0;LSC=1;break;

case(5):

LSA = 1;LSB=0;LSC=1;break;

case(6):

LSA = 0;LSB=1;LSC=1;break;

case(7):

LSA = 1;LSB=1;LSC=1;break;

}

P0 = smgduan[i];

delay(100);

//P0= 0X00;

}

}

void main(){

P0=~smgduan[0];

while(1){

DigDisplay();

}

}

六、报错

* WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS


SEGMENT: ?PR?DIGDISPLAY?MAIN


未调用已定义的函数

到此这篇单片机编程实例大全(单片机编程实例大全图解)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 支付方式怎么更换银行卡(如何更换付款银行卡)2025-06-30 16:54:07
  • hpg是什么文件(hpg什么格式)2025-06-30 16:54:07
  • 服务器部署方式有哪几种模式(服务器部署方式有哪几种模式呢)2025-06-30 16:54:07
  • 随机生成某个范围内的任意数(随机生成一个范围内的数的函数)2025-06-30 16:54:07
  • pcapng格式解析(scapy解析pcap文件)2025-06-30 16:54:07
  • lead函数是聚合函数不是窗口函数对吗(lead 函数)2025-06-30 16:54:07
  • 随机生成一个范围内的数的函数(自动生成一定范围内的随机数)2025-06-30 16:54:07
  • 支付方式怎么改成指纹(支付方式怎么改成指纹锁)2025-06-30 16:54:07
  • rm计算公式(rm计算公式极限重量)2025-06-30 16:54:07
  • 软件卸载快捷方式(卸载软件快捷命令)2025-06-30 16:54:07
  • 全屏图片