驱动——594驱动数码管显示
本文主要描述STM32控制4位数码管显示,为了节省MCU引脚,用了两个594级联,一个控制段选,一个控制位选,总共占用3个IO口。
1.74HC594简介
其中:
QA-QH:用来控制段选或位选
QH':用来级联,将它接到下一个595的DS端
SER:串行数据输入,级联时接上个595的Q7'
SCK:上升沿时数据寄存器移位
RCK:上升沿时移位寄存器的数据进入存储寄存器显示
2.原理图
![](/assets/blank.gif)
![](/assets/blank.gif)
3.程序源码
//=====大小键盘显示字母
const unsigned char DISPLAY_CODE[]=
{ //0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90,
//全灭 小数点
0xff, 0x7f,
};
这里用的共阴数码管,如果是共阳,则将上面数值取反即可。
/*******************************************************************
* 功能:扫描显示
* 输入:None
* 输出:None
* 返回值: None
* 备注:2ms调用
********************************************************************* */
void PhyLed_Display (void)
{
unsigned short i;
unsigned long controlBit = 0;
controlBit = (~((unsigned long)phyLed_buf[phyLedStep]))&0x000000FFL+(((0x00000800L>>phyLedStep))&0x0000FF00L);
GPIO_SetBits(GPIOA, GPIO_Pin_4); //RCK信号,上一拍为低,上升沿时输出显示
for(i = 0; i < 32; i++)
{
if(controlBit&0x80000000L)
{
GPIO_ResetBits(GPIOA, GPIO_Pin_6); //SER信号,不断移位输出
}
else
{
GPIO_SetBits(GPIOA, GPIO_Pin_6);
}
GPIO_ResetBits(GPIOA, GPIO_Pin_5);
PhySys_UsDelay(1);
GPIO_SetBits(GPIOA, GPIO_Pin_5); //SCK信号,上升沿时移位
PhySys_UsDelay(2);
controlBit = controlBit<<1;
}
GPIO_ResetBits(GPIOA, GPIO_Pin_4);
phyLedStep++;
if(phyLedStep >= LED_DISNUM) //LED_DISNUM=4,控制4位数码管
phyLedStep = 0;
}
controlBit为32位,当前只用到16位数据,对应两个595的输入,其中低8位控制段选,用于显示数字,高8位用于位选,控制哪一个数码管显示。
phyLedStep用于位选,这里用的分时控制,2ms调用一次,每次只控制一位数码管显示,4位数码管全部显示完共需要8ms。
驱动——594驱动数码管显示相关推荐
- 【Multisim仿真】74LS47译码器驱动共阳数码管显示(0-8)数字显示
[Multisim仿真]74LS47译码器驱动共阳数码管显示(0-8)数字显示 Multisim仿真演示 74ls47引脚功能 LT: 试灯输入,是为了检查数码管各段是否能正常发光而设置的.当LT=0 ...
- 【K210+micropython】驱动HS420561k-32四位数码管显示数字
[K210+micropython]使用HS420561k-32四位数码管显示数字 文章目录 [K210+micropython]使用HS420561k-32四位数码管显示数字 相关知识准备 一.四位 ...
- 74hc164驱动数码管c语言程序,基于51单片机的74HC164驱动数码管显示程序与仿真
基于51单片机的74HC164驱动数码管显示程序与仿真 基于51单片机的74HC164驱动一位数码管显示程序与仿真 #include #include #define uchar unsigned c ...
- 8051/2单片机基础 实现开关,驱动2位的共阳极数码管显示小数,驱动喇叭播放音乐
1. 实现开关,开关2次后,LED闪烁4次 2. 实现驱动共阳极数码关显示 3.1 3. 驱动喇叭播放 ,dao,re,mi,fa,sao,la,xi C代码: /** * 8051 DEMO 2 ...
- FPGA 动态数码管显示实验
参考:正点原子开拓者 FPGA 开发指南 一.数码管动态显示简介 由于一般的静态驱动操作虽然方便,但占用的I/0口较多,例如要驱动6位8段数码管,以静态驱动方式让数码管各个位显示不同的数值,如&quo ...
- LED计数电路,5输入按键编码器,7段数码管显示驱动集成为LED计数测试电路
LED计数电路: 5输入按键编码器: 7段数码管显示驱动真值表: 集成:
- void函数调用时显示不允许使用不完整的_4位数码管显示模块驱动
TM1637四位数码管模块是一个带时钟点的4位共阳数码管(0.36英寸)的显示模块,驱动芯片为TM1637,驱动方式为IIC,因此只需2根信号线即可使单片机控制4位8段数码管(数码管8级亮度可调). ...
- 键盘扫描并控制数码管C语言,CH454 数码管显示驱动和键盘扫描控制芯片
1.概述 CH454 是数码管显示驱动和键盘扫描控制芯片.CH454内置时钟振荡电路,可以动态驱动8 只16段的数码管或者128 只LED,支持11 段.14 段.16 段×8 以及17 段×7 等; ...
- stm32与驱动器AS1106驱动数码管显示
驱动器简述 驱动器就是为驱动某些显示设备,动作设备的器件,用户可通过单片机对驱动器设置驱动方式,时间等等来达到自己配置,而如何配置驱动器来达到我们想要的效果,便是要根据驱动器手册,输入相应的代码,配置 ...
最新文章
- ARM-CPU卷积网络的自动调谐
- Spring5源码 - 10 Spring事件监听机制_应用篇
- 标定中是什么意思_机械加工中,测头有什么作用呢?
- PHP判断是否有Get参数的方法
- CodeForces - 1520G To Go Or Not To Go?(bfs)
- php的全局p变量程序_php如何定义全局变量
- VUEJS-checkbox全选全不选
- 浅谈Javascript中的函数重载实现
- java 中以||作为split分隔符正确的写法
- cmd进入到python安装目录下_在python中安装basemap
- 栈实现队列(队列实现栈)
- CentOS7安装xrdp(windows远程桌面连接CentOS)
- 冰河木马简易使用 ——病毒木马 003
- XP系统电脑连不上服务器,windowsxp系统电脑连不上路由器如何解决
- python名人问题_Python 思考录 练习01
- 调用函数求三个数中的最大数
- 《Windows 8 权威指南》——2.2 Windows 8 Metro界面
- System.IO.FileNotFoundException: Could not load file or assembly ‘System.Data.SQLite.dll‘ or one of
- printf 打印结构体成员函数出错原因分析
- Docker自动部署Apache Tomcat