当前位置: 首页 > news >正文

从零开始学习单片机15

用三个IO控制一个数码管

#include <reg52.h>sbit ds = P0^3;
sbit shcp = P0^5;
sbit stcp = P0^4;unsigned char num[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//hc595的发送数据以及显示
void hc595_send_byte(unsigned char byte){int index = 0;for(index = 0;index<8;index++){//串行输入引脚,所谓串行就是使数据在一根信号线上按顺序一位一位地传输if(byte & 0x80)ds = 1;else ds = 0;shcp = 0;shcp = 1;//SHCP发生一次上升沿的时候,74HC595才会从DS引脚上取得当前的数据byte = byte << 1;}//上升沿把移位寄存器里的数据发送到锁存寄存器里//在对应的Q0-Q7输出对应的信号
}
void main()
{while(1){hc595_send_byte(num[0]);//在第一个数码管显示数字0hc595_send_byte(0xFE);stcp = 0;stcp = 1;//上升沿把移位寄存器里的数据发送到锁存寄存器里}
}

用三个IO控制多个数码管

LED灯虽然是逐个点亮的,但由于速度非常快,人眼看不出灿烁,可以认为是常亮,多位数码管的原理也是这样

51单片机使用了一个2位的数码管,为共阴型,为了节省单片机的IO口,使用了两片74HC595作为数码管的驱动芯片,共占用3个IO口(分别连接DS,STCP,SHCP)。

Q0、Q1连接WE1、WE2,可以选择哪个数码管被点亮,切换速度足够快时,就像是常亮

第二个595的Q0-Q7接到数码管的数据位,第一个595的Q7S是串行输出把输入的数据按同样的顺序去输出,接到第二个595的DS口上。向第一个595发送第二个数据时,第一次的数据通过Q7S输出到第二个595上。先发送数据,再选择是要哪个数码管

#include <reg52.h>sbit ds = P0^3;
sbit shcp = P0^5;
sbit stcp = P0^4;unsigned char num[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//向74HC595发送1个字节数据的函数
void hc595_send_byte(unsigned char byte)
{unsigned int index = 0;for(index = 0;index < 8;index++){if(byte & 0x80)ds = 1;else ds = 0;shcp = 0;shcp = 1;//上升沿,将ds引脚数据移入移位寄存器byte = byte << 1;}
}
void hc595_send_data(unsigned char num, unsigned char addr)
{hc595_send_byte(num);//先发送数码管段码,决定显示什么数字if(addr == 1){hc595_send_byte(0xFE);}else if(addr == 2){hc595_send_byte(0xFD);}stcp = 0;stcp = 1;上升沿将位移寄存器中数据锁存到输出,让数码管显示
}void main()
{while(1){hc595_send_data(num[5],1);hc595_send_data(num[3],2);}
}	
http://www.xdnf.cn/news/1364581.html

相关文章:

  • MySQL常见报错分析及解决方案总结(1)---Can‘t connect to MySQL server on ‘localhost‘(10061)
  • 什么是事件循环(Event Loop)?浏览器和 Node.js 中的事件循环有什么区别?
  • 维度建模 —— 雪花模型 和 星型模型的优缺点
  • 冯·诺依曼架构:现代计算机的基石与瓶颈
  • Linux驱动开发笔记(七)——并发与竞争(下)——自旋锁信号量互斥体
  • k8s笔记03-常用操作命令
  • vite 项目创建、插件配置
  • JBL音响代理——河北正娱科技的声学精品工程
  • 智慧城市SaaS平台/交通设施运行监测系统之桥梁运行监测、城市道路塌陷风险运行监测系统架构内容
  • 网络编程--TCP/UDP Socket套接字
  • 验证码流程
  • 【AI解读源码系列】ant design mobile——Space间距
  • 京东API分类接口实战指南:获取各类商品信息
  • 【大模型本地运行与部署框架】Ollama的API交互
  • Spring拦截器中@Resource注入为null的问题
  • PAT乙级_1120 买地攻略_Python_AC解法_含疑难点
  • 6.3Element UI 的表单
  • 【python断言插件responses_validator使用】
  • 分布式系统与单机系统的优劣势对比
  • Reachability Query
  • Linux系统编程——进程 | 线程
  • 直播美颜SDK技术解析:人脸美型功能的算法原理与实现方案
  • TCP与HTTP协议以及爬虫
  • 如何在Debian服务器上设置Node.js日志轮转
  • cs61a中的递归小例子
  • 创建高效MCP客户端:多服务器环境解决方案指南
  • 决策树原理与 Sklearn 实战
  • Hadoop MapReduce Task 设计源码分析
  • 【C++高并发内存池篇】ThreadCache 极速引擎:C++ 高并发内存池的纳秒级无锁革命!
  • 【目标跟踪】《FastTracker: Real-Time and Accurate Visual Tracking》论文阅读笔记