找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2050|回复: 2
收起左侧

STC15F2K60S2和74HC595控制数码管实现计时器程序

[复制链接]
ID:1002550 发表于 2022-1-19 20:45 | 显示全部楼层 |阅读模式
小小的一个双面手工板实验,可以把这个手工板当作自己学习路上的第一块最小系统板,不仅促进手工及写代码能力,文件包含原理图和简单实现的C代码。

51hei.gif

单片机源程序如下:
  1. #include <STC15F2K60S2.H>
  2. #include <LED595.h>//
  3. #include <Delay.h>
  4. #include <Digital595.h>
  5. #include <Timer0.h>
  6. #include <Key.h>
  7. #include <INTRINS.h>
  8. #include <Nixie.h>

  9. sbit sw1= P3^1;
  10. sbit sw0= P3^0;
  11. sbit sw2= P1^3;
  12. sbit LED= P1^2;
  13. sbit s0 = P3^7;
  14. sbit s1 = P1^4;
  15. sbit s2 = P1^1;
  16. sbit s3 = P1^0;

  17. unsigned char KeyNum,Time,sec1,sec2,min1,min2,i,LEDMode;
  18. unsigned char i=0,j=30000;
  19. void Delay1(unsigned int t)
  20. {
  21.         while(t--);
  22. }

  23. void main()
  24. {        
  25.         unsigned char key1 = 0, key2 = 0, key4 = 0,key5 = 0;
  26.         
  27.         Timer0_Init();

  28.         while(1)
  29.         {               

  30.       key1 = Key();
  31.             if(key1 == 3)
  32.                         {
  33.                                 key2 = ~key2;
  34.                         }
  35.                         if(key1 == 2)
  36.                         {
  37.                                 key4 = ~key4;
  38.                         }
  39.                         if(key1 == 1)
  40.                         {
  41.                                 key5 = ~key5;
  42.                         }
  43.                         if(key4)
  44.                         {
  45.                                 
  46.                                 LED595(0X00);//I am so lazy to write circulation,so I prefer to chick someone.
  47.                                 s0=0;s1=0;s2=0;
  48.                                 DIG595(0x00);
  49.                                 LED = 0;
  50.                                 Delay(100);
  51.                                 LED595(0XFF);
  52.                                 s0=1;s1=1;s2=1;
  53.                                 DIG595(0xFF);
  54.                                 LED = 1;
  55.                                 Delay(100);
  56.                                 LED595(0X00);
  57.                                 s0=0;s1=0;s2=0;
  58.                                 DIG595(0x00);
  59.                                 LED = 0;
  60.                                 Delay(100);
  61.                                 LED595(0XFF);
  62.                                 s0=1;s1=1;s2=1;
  63.                                 DIG595(0xFF);
  64.                                 LED = 1;
  65.                                 Delay(100);
  66.                                 LED595(0X00);
  67.                                 s0=0;s1=0;s2=0;
  68.                                 DIG595(0x00);
  69.                                 LED = 0;
  70.                                 Delay(100);
  71.                                 LED595(0XFF);
  72.                                 s0=1;s1=1;s2=1;
  73.                                 DIG595(0xFF);
  74.                                 LED = 1;
  75.                                 Delay(100);
  76.                                 LED595(0X00);
  77.                                 s0=0;s1=0;s2=0;
  78.                                 DIG595(0x00);
  79.                                 LED = 0;
  80.                                 Delay(100);
  81.                                 LED595(0XFF);
  82.                                 s0=1;s1=1;s2=1;
  83.                                 DIG595(0xFF);
  84.                                 LED = 1;
  85.                                 Delay(100);
  86.                                 LED595(0X00);
  87.                                 s0=0;s1=0;s2=0;
  88.                                 DIG595(0x00);
  89.                                 LED = 0;
  90.                                 Delay(100);
  91.                                 LED595(0XFF);
  92.                                 s0=1;s1=1;s2=1;
  93.                                 DIG595(0xFF);
  94.                                 LED = 1;
  95.                                 Delay(100);
  96.                                 LED595(0X00);
  97.                                 s0=0;s1=0;s2=0;
  98.                                 DIG595(0x00);
  99.                                 LED = 0;
  100.                                 Delay(100);
  101.                                 LED595(0XFF);
  102.                                 s0=1;s1=1;s2=1;
  103.                                 DIG595(0xFF);
  104.                                 LED = 1;
  105.                                 Delay(100);
  106.                         }
  107.                         if(key5)
  108.                         {LED=0;
  109.                                 DIG595(0xb0);//running river lights,my _crol_ can not running.total 10 second.
  110.                                 LED595(0x80);
  111.                                 Delay(1000);
  112.                                 LED595(0x40);
  113.                                 Delay(1000);
  114.                                 LED595(0x20);
  115.                                 Delay(1000);
  116.                                 LED595(0x10);
  117.                                 Delay(1000);
  118.                                 LED595(0x08);
  119.                                 Delay(1000);
  120.                                 LED595(0x04);
  121.                                 Delay(1000);
  122.                                 LED595(0x02);
  123.                                 Delay(1000);
  124.                                 LED595(0x01);
  125.                                 Delay(1000);
  126.                                 LED595(0x00);
  127.                                 Delay(1000);
  128.                                 LED595(0xff);
  129.                                 Delay(1000);
  130.                 }
  131.                
  132.                                 else
  133.                                 {
  134.                                 s0=1;s1=1;s2=1;
  135.                         if(key2)
  136.                         {
  137.                          Nixie(1,sec1);//clock
  138.                          Nixie(2,sec2);
  139.                          Nixie(3,min1);
  140.                          Nixie(4,min2);
  141.                          LED595(0xaa);
  142.                         }
  143.                         else
  144.                         {
  145.                                 sec1=0;//breath lights
  146.                                 sec2=0;
  147.                                 min1=0;
  148.                                 min2=0;
  149.                                 DIG595(0xf9);s3 = 0;
  150.                                                 for(Time=0;Time<100;Time++)
  151.                                 {
  152.                                                         for(i=0;i<50;i++)
  153.                                                                 {
  154.                                                                         LED=0;LED595(0x00);
  155.                                                                         Delay1(Time);
  156.                                                                         LED=1;LED595(0xff);
  157.                                                                         Delay1(100-Time);
  158.                                                                 }
  159.                
  160.                
  161.                                 }
  162.                                 
  163.                                 for(Time=100;Time>0;Time--)
  164.                                 {
  165.                                                         for(i=0;i<50;i++)
  166.                                                                 {
  167.                                                                         LED=0;LED595(0x00);
  168.                                                                         Delay1(Time);
  169.                                                                         LED=1;LED595(0xff);
  170.                                                                         Delay1(100-Time);
  171.                                                                 }
  172.                
  173.                
  174.                                 }
  175.                         }
  176.                 }
  177.                 }

  178.                
  179.                                        
  180. }

  181. void Timer0_Routine()  interrupt 1
  182. {               
  183.           static unsigned int T0Count; //This routine from BV1Mb411e7re
  184.                 TH0=64535/256;//new words;
  185.                 TL0=64535%256;
  186.                 T0Count++;
  187.         if(T0Count>=1000)
  188.         {
  189.                         T0Count=0;
  190.                         sec1++;
  191.                 if(sec1>9)
  192.                 {
  193.                         sec1=0;
  194.                         sec2++;
  195.                         if(sec2>=6)
  196.                         {
  197.                                 sec2=0;
  198.                                 min1++;
  199.                                 if(min1>9)
  200.                                 {
  201.                                         min1=0;
  202.                                         min2++;
  203.                                         if(min2>9)
  204.                                         {
  205.                                                 min2=0;
  206.                                         }
  207.                                 }
  208.                         }
  209.                 }
  210.         }
  211. }
复制代码

Keil代码下载:
手工板小实验.zip (167.72 KB, 下载次数: 28)

评分

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

查看全部评分

回复

使用道具 举报

ID:707309 发表于 2022-3-27 08:32 | 显示全部楼层
请问上面的图纸用什么软件画的
回复

使用道具 举报

ID:1002550 发表于 2022-4-5 20:32 | 显示全部楼层
cyf7175 发表于 2022-3-27 08:32
请问上面的图纸用什么软件画的

ALTIUM D
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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