[资源共享] 74hc595数码管C语言,74HC595 数码管程序

[复制链接]
4058|9
 楼主| 我爱台妹mmd 发表于 2023-3-30 17:05 | 显示全部楼层 |阅读模式
本帖最后由 芯圣电子官方QQ 于 2023-7-20 10:22 编辑
  1. 摘要:

  2. 74HC595 数码管程序

  3. #include        //51芯片管脚定义头文件 #include      //内部包含延时函数 _nop_();

  4. #de

  5. 74HC595 数码管程序

  6. #include        //51芯片管脚定义头文件

  7. #include      //内部包含延时函数 _nop_();

  8. #define uchar unsigned char

  9. #define uint  unsigned int uchar code DAT[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//共阴数码管显示码

  10. sbit HC595_SRCLR=P1^0;  // 清空移位寄存器

  11. sbit HC595_sRCLK=P1^1;  // 寄存器输出时钟

  12. sbit HC595_RCLK =P1^2;  // 移位时钟

  13. sbit HC595_OE   =P1^3;  // 并行输出使能

  14. sbit HC595_sER  =P1^4;  // 串行数据

  15. uchar temp;              /********************************************************/

  16. /*

  17. /* 延时子程序

  18. /*

  19. /*******************************************************/ void delay(int ms)

  20. {

  21. int k;

  22. while(ms--)

  23. {

  24. for(k=0; k<250; k++)

  25. {

  26. _nop_();

  27. _nop_();

  28. _nop_();

  29. _nop_();

  30. }

  31. }

  32. } /********************************************************/

  33. /*                                                                                                            */

  34. /*将显示数据送入74HC595内部移位寄存器                                  */

  35. /*                                                                                                            */

  36. /********************************************************/ void WR_595(void)

  37. {

  38. uchar j;

  39. for (j=0;j<8;j++)

  40. {

  41. temp=temp<<1 ;

  42. HC595_sER=CY;

  43. HC595_sRCLK=1;                     //上升沿发生移位

  44. _nop_();

  45. _nop_();

  46. HC595_sRCLK=0;

  47. }

  48. } /********************************************************/

  49. /*                                                                                                            */

  50. /*将移位寄存器内的数据锁存到输出寄存器并显示                              */

  51. /*                                                                                                            */

  52. /********************************************************/ void OUT_595(void)

  53. {

  54. HC595_RCLK=0;

  55. _nop_();

  56. _nop_();

  57. HC595_RCLK=1;                     //上升沿将数据送到输出锁存器

  58. _nop_();

  59. _nop_();

  60. _nop_();

  61. HC595_RCLK=0;

  62. } /********************************************************

  63. *                                                                                                              *

  64. *  主程序                                                                  *

  65. *                                                                                                              *

  66. *********************************************************/ main()

  67. { //

  68. //以下为输出位初始化   HC595_OE=1;      //并行输出为高阻状态

  69. _nop_();

  70. _nop_();   HC595_sRCLR=0; //清空移位寄存器

  71. _nop_();   HC595_sER=0;  //清零

  72. _nop_();

  73. _nop_();  HC595_RCLK=0;  //移位时钟初始为低

  74. _nop_();    HC595_sRCLK=0; //寄存器时钟初始为低

  75. _nop_();    HC595_OE=0;  //允许并行输出

  76. _nop_();    HC595_sRCLR=1; //结束复位状态

  77. //循环显示 0--9    while(1)

  78. {

  79. uchar i;

  80. for (i=0; i<10; i++)

  81. {

  82. temp=DAT[i];               //取显示数据

  83. WR_595();

  84. OUT_595();

  85. delay(200);

  86. }

  87. }

  88. }


有何不可0365 发表于 2024-7-31 14:55 | 显示全部楼层
74HC595的QA到QH引脚分别通过限流电阻连接到NPN三极管的基极,三极管的集电极连接到数码管的公共阴极,发射极接地。
亚瑟 发表于 2024-7-31 21:56 | 显示全部楼层
可以节省不少io口
tpgf 发表于 2024-8-3 16:19 | 显示全部楼层
这是通过什么方式进行控制的数码管呢
晓伍 发表于 2024-8-3 17:11 | 显示全部楼层
为什么基本上所有操作数码管的语句都是这么的简单但是语句又那么多呢
磨砂 发表于 2024-8-3 20:23 | 显示全部楼层
外部引脚应该如何进行连接呢 需要加电阻吗
木木guainv 发表于 2024-8-3 21:32 | 显示全部楼层
有没有专门用于控制数码管的芯片呢
xiaoqizi 发表于 2024-8-3 22:48 | 显示全部楼层
能控制数码管的路数和什么有关系呢
wowu 发表于 2024-8-3 23:58 | 显示全部楼层
为什么要使用这么多的短延时呢
jxdayz123 发表于 2024-8-15 16:56 | 显示全部楼层
temp变量是怎么送到ACC中的不明白
您需要登录后才可以回帖 登录 | 注册

本版积分规则

72

主题

648

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部