找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 790|回复: 6
收起左侧

采用单片机+74HC164的数码管测试仪制作 附程序

[复制链接]
ID:95809 发表于 2023-12-23 21:32 | 显示全部楼层 |阅读模式
单片机采用8脚的STC15F104W单片机,驱动5个74HC164轮流点亮数码管的段位,夹具用的是2个40脚的夹紧座,方便测试使用。供电采用的是锂电池供电,采用TP4033作为电池的充电和升压。已经用了2年了,很方便。

制作出来的数码管测试仪实物图如下:
Snapshot000000.jpg

电路原理图如下:
002.png

单片机数码管测试仪源程序如下:
  1. #include "CNT.H"
  2. #include "STC15.H"

  3. uchar_t dl = 0;        //当前点亮段 0-39
  4. bit led_zt = 0;        //当前共阳或共阴灯亮
  5. bit bzw = 0;


  6. void Timer0Init(void)                //400微秒@30.000MHz
  7. {
  8.         AUXR |= 0x80;        //定时器时钟1T模式
  9.         TMOD &= 0xF0;        //设置定时器模式
  10.         TL0 = 0x20;                //设置定时初值
  11.         TH0 = 0xD1;                //设置定时初值
  12.         TF0 = 0;                //清除TF0标志
  13.         ET0 = 1;
  14.         TR0 = 1;                //定时器0开始计时
  15. }


  16. void LED1_Dl(void)        //共阴灯亮
  17. {
  18.         P34 = 1;        
  19.         P35 = 0;
  20. }
  21. void LED2_Dl(void)        //共阳灯亮
  22. {
  23.         P34 = 0;        
  24.         P35 = 1;
  25. }
  26. void KS_Init(void)
  27. {
  28.         P30 = 1;
  29.         P31 = 1;
  30.         P33 = 0;

  31.         LED1_Dl();
  32.         Timer0Init();                //400微秒@30.000MHz
  33. }
  34. void Delay15ms()                //@33.000MHz
  35. {
  36.         uchar_t i, j, k;
  37.         
  38.         i = 2;
  39.         j = 226;
  40.         k = 126;
  41.         do
  42.         {
  43.                 do
  44.                 {
  45.                         while (--k);
  46.                 } while (--j);
  47.         } while (--i);
  48. }
  49. void main(void)
  50. {
  51.         KS_Init();
  52.         EA = 1;
  53.         while(1)
  54.         {
  55.         
  56.         }
  57. }
  58. void Timer0_Rountine(void) interrupt 1
  59. {
  60.         //硬件清零
  61.         uchar_t x;
  62.         P34 = ~P34;
  63.         P35 = ~P35;
  64.         if(led_zt==0)        //共阴
  65.         {
  66.                 for(x=0;x<40;x++)
  67.                 {
  68.                         if(dl == x)
  69.                                 P30 = 0;
  70.                         else
  71.                                 P30 = 1;
  72.                         
  73.                         P31 = 0;        //上升沿
  74.                         P31 = 1;
  75.                 }
  76.         }
  77.         else
  78.         {
  79.                 for(x=0;x<40;x++)
  80.                 {
  81.                         if(dl == x)
  82.                                 P30 = 1;
  83.                         else
  84.                                 P30 = 0;
  85.                         
  86.                         P31 = 0;        //上升沿
  87.                         P31 = 1;
  88.                 }
  89.         }
  90.         dl++;
  91.         if(dl>=40)
  92.         {
  93.                 dl = 0;
  94.         }
  95. }
复制代码

原理图: 无
仿真: 无
代码: 代码.7z (17.42 KB, 下载次数: 14)

评分

参与人数 1黑币 +90 收起 理由
admin + 90 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表