单片机 74HC595 实例
1、采用2片595驱动数码管,需要单片机3路IO口根据数码管动态扫描原理进行显示。
2、数码管型号:0.36 4位共阳。
原理图
点亮一个数码管
定义IO口
sbit DIO = P1^0; //串行数据口
sbit S_CLK = P1^2;//移位寄存器时钟
sbit R_CLK = P1^1;//输出锁存器时钟
发送数据
void main(){//第二个数码管显示0unsigned char i, dat;//i循环次数 dat需要发送的数据dat = 0xc0;//发送列值for(i=0; i<8; i++)//循环8次{S_CLK = 0;//拉低移位寄存器时钟R_CLK = 0;//拉低输出锁存器时钟//先发送高位if(dat & 0x80)//发送1 DIO = 1;else //发送0DIO = 0;S_CLK = 1;//拉高移位寄存器时钟,数据移位dat <<= 1;//数据左移}dat = 0x02;//发送行值for(i=0; i<8; i++)//循环8次{S_CLK = 0;//拉低移位寄存器时钟R_CLK = 0;//拉低输出锁存器时钟if(dat & 0x80)//发送1DIO = 1;else //发送0DIO = 0;S_CLK = 1;//拉高移位寄存器时钟,数据移位dat <<= 1;//数据左移}R_CLK = 1;//拉高输出锁存器时钟,并行输出数据while(1);}
点亮8位数码管
#define uchar unsigned charvoid main (void); // 主函数
void LED4_Display (void); // LED显示
void LED_OUT(uchar X); // LED单字节串行移位函数unsigned char code LED_0F[]; // LED字模表sbit DIO = P1^0; //串行数据输入
sbit R_CLK = P1^1; //输出锁存器时钟——上升沿有效
sbit S_CLK = P1^2; //移位寄存器时钟————上升沿有效//-----------------------------------------------------------------------------
// 全局变量
uchar LED[8]; //用于LED的8位显示缓存//*****************************************************************************
// 主程序
//
void main (void)
{LED[0]=1;LED[1]=2;LED[2]=3;LED[3]=4;LED[4]=5;LED[5]=6;LED[6]=7;LED[7]=8;while(1){LED4_Display ();}
} void LED4_Display (void)
{unsigned char code *led_table; // 查表指针uchar i;//显示第1位led_table = LED_0F + LED[0];i = *led_table;LED_OUT(i); LED_OUT(0x01); R_CLK = 0;R_CLK = 1;//显示第2位led_table = LED_0F + LED[1];i = *led_table;LED_OUT(i); LED_OUT(0x02); R_CLK = 0;R_CLK = 1;//显示第3位led_table = LED_0F + LED[2];i = *led_table;LED_OUT(i); LED_OUT(0x04); R_CLK = 0;R_CLK = 1;//显示第4位led_table = LED_0F + LED[3];i = *led_table;LED_OUT(i); LED_OUT(0x08); R_CLK = 0;R_CLK = 1;//显示第5位led_table = LED_0F + LED[4];i = *led_table;LED_OUT(i); LED_OUT(0x10); R_CLK = 0;R_CLK = 1;//显示第6位led_table = LED_0F + LED[5];i = *led_table;LED_OUT(i); LED_OUT(0x20); R_CLK = 0;R_CLK = 1;//显示第7位led_table = LED_0F + LED[6];i = *led_table;LED_OUT(i); LED_OUT(0x40); R_CLK = 0;R_CLK = 1;//显示第8位led_table = LED_0F + LED[7];i = *led_table;LED_OUT(i); LED_OUT(0x80); R_CLK = 0;R_CLK = 1;
}void LED_OUT(uchar X)
{uchar i;for(i=8;i>=1;i--){if (X&0x80) DIO=1; else DIO=0;X<<=1;S_CLK = 0;S_CLK = 1;}
}unsigned char code LED_0F[] =
{// 0 1 2 3 4 5 6 7 8 9 A b C d E F -0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x8C,0xBF,0xC6,0xA1,0x86,0xFF,0xbf
};
单片机 74HC595 实例相关推荐
- 51单片机 74HC595应用实例+Proteus仿真
51单片机 74HC595应用实例+Proteus仿真 Proteus仿真 实例代码 #include <reg52.h> #include <intrins.h> #defi ...
- hc05与单片机连接图_基于proteus的51单片机开发实例(13)-LED指示那个按键被按下
1. 基于proteus的51单片机开发实例(13)-LED指示那个按键被按下 1.1. 实验目的 本实例将实现两路外部中断的检测和识别,让我们能够更好地理解51单片机的外部中断以及中断优先级的概念. ...
- c++程序设计_基于proteus的51单片机开发实例30-模块化程序设计
1. 基于proteus的51单片机开发实例30-模块化程序设计 1.1. 实验目的 模块化程序设计 不知不觉我们的51单片机开发实例已经进行到第三十篇了,是时候进行一个总结和反思了,总结什么?反思什 ...
- c51中断优先级c语言,基于proteus的51单片机开发实例(14)中断嵌套和中断优先级...
1. 基于proteus的51单片机开发实例(14)中断嵌套和中断优先级 1.1. 实验目的 在前面实例中我们已经学习了51单片机的定时器/计数器中断,外部中断,通过这些实例,知道了中断电路的设计,中 ...
- hc05与单片机连接图_基于proteus的51单片机开发实例37-DAC0832
学习手记 1. 基于proteus的51单片机开发实例37-DAC0832 1.1. 实验目的 之前我们学习了数模转换芯片DAC0808,今天我们继续学习另一种D/A转换芯片DAC0832. 1.2. ...
- 无刷直流电机介绍及单片机控制实例
无刷直流电机介绍及单片机控制实例 前言 基本概念 优势与劣势 使用寿命 基本结构 使用单片机控制实例 电子调速器(ESC) Arduino BLDC电机控制电路图 代码 前言 在机器人的结构中,往往电 ...
- 从头开始学51单片机之实例2:用定时中断实现流水灯
一.仿真环境 Proteus8.9 Keil5 二.Proteus模型搭建 具体过程参考上一篇: 从头开始学51单片机之实例1:用Proteus和Keil搭建流水灯模型_Forster-C的博客-CS ...
- 生活中计算机应用的实例,单片机应用(生活中单片机应用实例)
单片机应用 单片机 完整问题:什么是单片机?它有什么应用?谢谢 好评回答:什么是单片机?单片机有什么用? 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上. ...
- 单片机16个灯四种花样c语言,基于Proteus的MSP430单片机仿真实例5-16个花样灯控制...
一.任务要求 利用MSP430F247单片机的P1和P4端口控制16个发光二极管D1~D16,发光二极管有8种花样显示,显示速度可调,由P2端口的三个按键控制,分别是模式按键.加速按键.减速按键.模式 ...
- SpiFlash同步/异步读写单片机裸机实例
单片机裸机开发中会经常遇到外设速度过慢,长时间读忙等待,但CPU又不能长时间阻塞的问题. 这种问题可以通过实现一个状态机来异步处理. 异步状态机代码结构示例: enum {eIDLE = 0,eSTA ...
最新文章
- python websocket异步高并发_Python3.5异步和多个websocket服务器
- 详细!快速入门指南!Docker!
- R语言数据结构之矩阵
- 最新网络工程师考试大纲
- 【复习笔记】电力系统基础
- java变量名转字符串_JS中将变量转为字符串
- Little Alchemy 游戏 - 扒答案。。 Java
- atitit。获取表格的字段注释metadata的原理以及AND 字段表格描述文档方案
- 嵌入式设备ntp同步时间的一些笔记
- AI换脸APP“ZAO”刷屏并一夜爆火,它能红多久?
- DB2 数据库密码过期
- linux伊甸园论坛,Deepin2014壁纸大赛评审团——不断努力的Linux伊甸园
- Python 安装pytz
- 计算机组装与系统维护技术,计算机组装与系统维护技术.pdf
- 我的回忆和有趣的故事 by李维(台湾)
- 测试换发型用啥软件,什么软件可以测试自己适合的发型
- 15款android设备上的代码编辑器
- 从CVPR 2021的论文看计算机视觉的现状
- 如何注册免费的服务器和域名?如何将自己的项目部署到免费的服务器上并生成线上地址?
- centos7.2 搭建BugFree
热门文章
- 上古卷轴5捏脸php导入,上古卷轴5捏脸预设导入 上古卷轴5捏脸预设怎么导入
- 利用持续同调在基于深度学习的分割框架中引入显式的拓扑学约束
- 所以,网络工程师能从事什么工作?
- Oracle的sqlnet.ora文件配置
- csapp bomb lab (《深入理解计算机系统》lab2)
- python3+selenium3+ie9初体验
- java implode函数_PHP警告:implode():传递的参数无效
- 手机wifi显示连接到服务器地址,手机连接路由器wifi上网总是提示正在获取IP地址怎么办...
- 人员离职it检查_员工离职的IT流程
- luoguP2123 皇后游戏(贪心)