设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 1368|回复: 0
收起左侧

STC单片机 定时器中断实现I/O口强推挽直接驱动4位共阴动态数码管显示数字

[复制链接]
发表于 2021-10-22 10:18:51 | 显示全部楼层 |阅读模式
上电数码管全亮1秒,然后显示数字:1234
单片机型号:STC任意 (必须支持 PxMx 寄存器,STC89、STC90除外) 晶振频率:12Mhz
硬件连接:P2.0~P2.7连接共阴数码管段码、P1.0~P1.3连接位码。

4位数码管显示.png
  1. #include "STC15.h"
  2. #include "intrins.h"
  3. #define u8 unsigned char
  4. #define u16 unsigned int
  5. #define u32 unsigned long
  6. u8 code nbr[16] = {                //共阴数码管段码16进制
  7.     0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
  8. };
  9. u8 show[4];                //4位数码管当前显示的段码 更改数码管显示的段码 只需更改此数组


  10. u16 delay_ms;   //定时器中断延时毫秒
  11. bit delay;      //定时器中断延时毫秒开关 中断外置1 延时完中断内清0
  12. bit test;       //此值为1数码管全亮 蜂鸣器响 所有按键无效 否则正常

  13. void InitTimer0() {
  14.     TMOD = 0x01;
  15.     TH0 = 0xFC;
  16.     TL0 = 0x18;
  17.     EA = 1;
  18.     ET0 = 1;
  19.     TR0 = 1;
  20. }

  21. void main() {
  22.     WDT_CONTR = 0x27;
  23.     P1M0 = 0x0F; P1M1 = 0x00;   //P1.0~P1.3强推挽
  24.     P2M0 = 0xFF; P2M1 = 0x00;   //P2.0~P2.7强推挽
  25.     test = 1;
  26.     InitTimer0();
  27.     delay_ms = 1000;delay = 1;
  28.     while (delay);
  29.     test = 0;

  30.     show[0] = nbr[1];
  31.     show[1] = nbr[2];
  32.     show[2] = nbr[3];
  33.     show[3] = nbr[4];
  34.     while (1) {
  35.         WDT_CONTR |= 0x10;      //看门狗喂狗
  36.     }
  37. }

  38. void Timer0Interrupt() interrupt 1{         //12Mhz 1mS定时器中断
  39.     static u8 seg = 0;    //当前正在扫描的数码管段码 4位数码管 范围:0~3
  40.     TH0 = 0xFC;
  41.     TL0 = 0x18;
  42.     P1 |= 0xF;          //消影
  43.     P2 = test ? 0xFF : show[seg];      //段码
  44.     P1 &= ~(1<< seg);   //位码
  45.     if (++seg >= 4) seg = 0;

  46.     if (delay && !--delay_ms) {
  47.         delay = 0;
  48.     }

  49. }
复制代码

相关帖子

您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-26 06:18 , Processed in 0.750043 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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