IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 关于双74HC595芯驱动4段数码管的介绍--51单片机 -> 正文阅读

[嵌入式]关于双74HC595芯驱动4段数码管的介绍--51单片机

直接上图:

这款LED显示是比较常见的,tao包和并夕夕上都有的卖的,价格便宜。他有5个引脚,两个电源(Vcc和GND),剩下来3个引脚接单片机。此款为共阳数码管。

3个接单片机引脚的分别是:DO、RCK、SCK。

DO:串行数据输入引脚,也就是说你想显示的数据只从这一根线上走,其他两根线是作控制使用。数据是8位的。

RCK:存储寄存器时钟输入引脚。上升沿有用(程序中赋值给单片机引脚为1时模拟一个上升沿),数据从移位寄存器转入到存储寄存器。

SCK:移位寄存器时钟引脚。上升沿时,移位寄存器中的bit数据整体后移,并接受新的数据。

注意:共阳数码管如果要点亮,对应的74HC595输出引脚需要给0。

程序如下:

#include<reg51.h>
unsigned char code LED_0F[ ] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0x90,0x8C,0xBF,0xC6,0xA1,0x86,0xFF,0xbf};//共阳数码管码表

unsigned char code ?smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值

// 函数原形定义
#define uchar unsigned char
#define uint unsigned int
//能够使用unsigned char /unsigned int 尽量使用最原始的变量类型名字

void main (void); ? ? ? ? ? ? ? ? ? ? ? ?? // 主函数
void LED4_Display (void);?? ??? ??? ?// LED数码管显示
void LED_OUT(uchar X); ? ? ? ? ? ? // LED数码管单字节串行移位函数

unsigned char code LED_0F[ ]; ? ?? // LED字模表
/* 端口引脚定义*/
sbit DIO ? = ? P1^0; ? ? ? ? ? ? ? ? ? //串行数据输入
sbit RCLK ?= ? P1^1;?? ??? ??? ??? ?//时钟脉冲信号――上升沿有效
sbit SCLK ?= ? P1^2;?? ??? ??? ??? ?//打入信号――――上升沿有效

// 全局变量
unsigned char LED[8];?? ?//用于LED的8位显示缓存


//*****************************************************************************
// 主程序
//
void main (void)?
{
? ? LED[3]=2;?? ?//最高位
? ? LED[2]=0;
?? ? LED[1]=1;
?? ? LED[0]=9; ? //最低位

?? ?while(1)
?? ?{
?? ??? ?LED4_Display ();
?? ?}?
}?


// ****************LED数码管显示函数***********************
void LED4_Display (void)
{
?? ?unsigned char code? *led_table; ? ? ? ? ?// 查表指针
?? ?unsigned char i;
?? ?//显示第1位
?? ?led_table = LED_0F + LED[0];
?? ?i = *led_table;

?? ?LED_OUT(i);?? ??? ??? ?
?? ?LED_OUT(0x01);?? ?//0x01显示在第一位?? ?

?? ?RCLK = 0;
?? ?RCLK = 1;
?? ?//显示第2位
?? ?led_table = LED_0F + LED[1];
?? ?i = *led_table;

?? ?LED_OUT(i);?? ??? ?
?? ?LED_OUT(0x02);?? ?//0x02显示在第2位?? ?

?? ?RCLK = 0;
?? ?RCLK = 1;
?? ?//显示第3位
?? ?led_table = LED_0F + LED[2];
?? ?i = *led_table;

?? ?LED_OUT(i);?? ??? ??? ?
?? ?LED_OUT(0x04);?? ?//0x04显示在第3位

?? ?RCLK = 0;
?? ?RCLK = 1;
?? ?//显示第4位
?? ?led_table = LED_0F + LED[3];
?? ?i = *led_table;

?? ?LED_OUT(i);?? ??? ??? ?
?? ?LED_OUT(0x08);?? ?//0x08显示在第4位?? ?

?? ?RCLK = 0;
?? ?RCLK = 1;
}

// ****************************LED数码管单字节串行移位函数*****************************
void LED_OUT(unsigned char number)
{
?? ?unsigned char i;
?? ?for(i=8;i>=1;i--)
?? ?{
?? ? if (number & 0x80)
? ? ? ? ? {
? ? ? ? ? ? ? ?DIO=1;
? ? ? ? ? }?
? ? ? ? ? else
? ? ? ? ? {
? ? ? ? ? ? ? DIO=0;
? ? ? ? ? }
?? ??? ?number<<=1;
?? ??? ?SCLK = 0;
?? ??? ?SCLK = 1;
?? ?}
}

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-13 17:37:47  更:2021-07-13 17:40:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/4 20:51:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码