本次实现的(国信长天)蓝桥杯的一个单片机比赛,实现起来用定时器中断配合数码管实时显示,达到时钟效果。

//main.c#include "sys.h"typedef unsigned char u8;typedef unsigned int   u32;u8 code smg_index[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};
void Delay100us()       //@11.0592MHz
{unsigned char i, j;i = 2;j = 15;do{while (--j);} while (--i);
}void smgshow(u8 weis,u8 dus){P2=P2&0x1f;P0=0xff;P2=(P2&0x1f) | 0xe0;   //消除干扰P2=P2&0x1f;P0=1<<weis;             //位选P2=(P2&0x1f)|0xc0;P2=P2&0x1f;P0=smg_index[dus];    //某位数码管显示的数字P2=(P2&0x1f)|0xe0;P2=P2&0x1f;}
static  u32 count =0;
static u8 time=0;int  main(){ET0=1;EA=1;sys_init();Timer0Init();while(1){if(time>=10&&time<60){smgshow(0,0); smgshow(1,11); smgshow(3,time%10); smgshow(2,time/10); }else if(time>=60&&time<1000){smgshow(0,time/60);  smgshow(1,11); smgshow(2,time%60/10); smgshow(3,time%60%10); }
else if(time<10){smgshow(0,0);smgshow(1,11);smgshow(2,time%10);
}
}return 0;}void timer0()interrupt 1{count++;if(count%1000==0){time++;}if(count==60000)count=0;if(time>=240)time=0;}//sys.c#include "sys.h"static u8 key_state=0;
u8 key_press;
u8 code smg_index[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0x7f,0xbf};
sbit buzzer=P0^6;
sbit relay=P0^4;
static u8 sec=0;
void sys_init(){P2=(P2&0x1f)|0x80;P0=0xff;P2&=0x1f;P2=(P2&0x1f)|0xa0;buzzer=0;relay=0;P2&=0x1f;P2=(P2&0x1f)|0xc0;P0=0xff;P2&=0x1f;P2=(P2&0x1f)|0xe0;P0=0xff;P2&=0x1f;}u8 keyscan(){u8 row=0;switch(key_state){case 0:P3=0X0F;P42=0;P44=0;key_press=P3&0x0F;if(key_press!=0x0F){key_state=1;}break;case 1:P3=0X0F;P42=0;P44=0;key_press=P3&0x0f;if(key_press!=0x0f){if(key_press==0x0e) row=7;            else if(key_press==0x0d) row=6;else if(key_press==0x0b)  row=5;                   else if(key_press==0x07) row=4;P3=0xf0;P42=1;P44=1;key_press=P3&0xf0;if(key_press!=0xf0){if(P44==0) row+=0;else if(key_press==0xd0) row+=8;else if(key_press==0xe0)  row+=12;else if(P42==0) row+=4;}sec=row;key_state=2;}else key_state=0;break;case 2:P3=0x0f;key_press=P3&0x0f;if(key_press==0x0f){key_state=0;}break;default :break;}return row;
}
u8 getsec(){if(key_state==2) return sec;else return 0;
}
void smgshow(u8 weis,u8 dus){P2=P2&0x1f;P0=0xff;P2=(P2&0x1f) | 0xe0;   //消除干扰P2=P2&0x1f;P0=1<<weis;             //位选P2=(P2&0x1f)|0xc0;P2=P2&0x1f;P0=smg_index[dus];    //某位数码管显示的数字P2=(P2&0x1f)|0xe0;P2=P2&0x1f;}void Timer0Init(void)      //1000??@11.0592MHz
{AUXR |= 0x80;      TMOD &= 0xF0;      TL0 = 0xCD;        TH0 = 0xD4;        TF0 = 0;       TR0 = 1;
}
//sys.h#ifndef  __SYS_H_
#define __SYS_H_#include "stc15f2k60s2.h"void  Timer0Init();void sys_init();#endif

以上就是全部工程的3个文件,欢迎交流学习。

结尾:一切疑难杂症都能通过死磕加调试的方法解决。

国信长天单片机竞赛训练之用定时器中断实现时钟(一)相关推荐

  1. 国信长天单片机竞赛训练之DS18B20温度报警实验(三)

    目标要求:通过板载的DS18B20获取温度,并在数码管上保留4位小数显示,温度超过25.0000度,蜂鸣器报警:低于等于25.0000度,所有LED间隔2秒闪烁:温度超过25.0000度,通过串口发送 ...

  2. 国信长天单片机竞赛训练之原理图讲解及常用外设原理(遗失的章节-零)

    目录 基本外设 1.1锁存器,led灯,蜂鸣器,继电器及注意事项 1.2 数码管(板载共集成8位共阳级数码管),数码管分段选和位选 1.3 矩阵键盘和独立键盘 1.4 数码管消影: 1.5 按键的长按 ...

  3. 国信长天单片机竞赛训练之超声波实验(四)

    本次是第四次作业了,作业要求如下: 1.结合定时器知识,使用定时器1作为中断源,使用定时器0做计数器进行超声波测距,并在数码管上显示: 2.以第一种方式进行测距.当测试距离大于10cm,小于等于20c ...

  4. 国信长天单片机竞赛训练之通过iic光敏,电位器采样(五)

    本次培训内容学iic,要求实现:  开机显示光敏电阻的值,S4按键控制显示光敏电阻值,S5按键控制显示Rb2电位器的值,S8按键控制存数据进EEPROM,S9按键控制显示存入EEPROM的值. 代码如 ...

  5. 蓝桥杯国信长天单片机--硬件环境(一)

    CT107D 单片机由以下功能模块组成 1.功能模块 (1)单片机芯片 配置IAP15F2K61S2单片机 (2)显示模块 配置8路LED输出L1-L8 配置8位8段共阳极数码管DS1-DS2 配置L ...

  6. 蓝桥杯国信长天单片机--串口程序设计(十)

    实验目的: 1.掌握51单片机串口工作模式及相关寄存器配置方法 2.了解51单片机波特率的计算方法 3.掌握单片机串口接收中断服务函数的设计方法 程序说明: 1.通过USB连接线连接PC机,在计算机硬 ...

  7. 《STM32单片机开发应用教程(HAL库版)—基于国信长天嵌入式竞赛实训平台(CT117E-M4)》第四章4.9 TIM---输入捕获(脉冲频率测量)实验

    写在前面-- <STM32单片机开发应用教程(HAL库版)-基于国信长天嵌入式竞赛实训平台(CT117E-M4)>第四章4.9 TIM-输入捕获(脉冲频率测量)实验,讲解TIM输入捕获的原 ...

  8. STM32单片机开发应用教程 (HAL库版) ---基于国信长天嵌入式竞赛实训平台(CT117E-M4)教程汇总 与第一章 硬件平台简介

    写在前面-- 作为<STM32单片机开发应用教程(HAL库版)-基于国信长天嵌入式竞赛实训平台(CT117E-M4)>教程汇总,第一章将介绍国信长天嵌入式竞赛实训平台(CT117E-M4) ...

  9. 《STM32单片机开发应用教程(HAL库版)---基于国信长天嵌入式竞赛实训平台(CT117E-M4)》第二章 软件安装与使用

    写在前面-- 作为<STM32单片机开发应用教程(HAL库版)-基于国信长天嵌入式竞赛实训平台(CT117E-M4)>系列之第二章,本章节将介绍开发软件STM32CubeMX和KEIL5的 ...

最新文章

  1. python判断是否为类的实例,是否为子类
  2. SQL Server索引怎么用
  3. WaitForMultipleObjects函数有效值分析
  4. 29.Jwt集成(3):token设置过期时间、异常判断
  5. 技术人 | 浅谈如何成为技术一号位?
  6. windows守护进程工具_Linux进程管理
  7. php怎么用origin打开,[转载]origin 使用技巧 (4)
  8. 双拼输入法软件测试,为什么推荐你使用双拼输入法?
  9. 微分几何笔记(2) —— 曲线的参数化
  10. 第九章 贝叶斯信念网络分类
  11. 电脑连接手机测MIDI
  12. 人工智能时代,教育革命迫在眉睫
  13. 如何获取Java运行时的性能数据
  14. 数字转字符串;字符串转数字
  15. KindEditor编辑器上传图片超过限制
  16. java四则运算程序_java实现四则运算程序
  17. 斗拱展开面积表_各种斗拱斗口尺寸调整表
  18. 服务器不响应是不是光纤断了,二台S9306互联的光纤切断,服务器就不通了……已解决 - 华为技术论坛 - 51CTO技术论坛_中国领先的IT技术社区...
  19. ADIS16400/ADIS16405带磁力计的三轴惯性传感器(4)
  20. oppo手机解锁_oppo手机屏幕锁密码忘记了怎么办?oppo手机强制解锁教程

热门文章

  1. Badge在多种机型上显示
  2. fastjson详解
  3. JS解析提取LRC格式的歌词
  4. 这人乃是智多星吴用 未来软件
  5. python成功将PDF文件转为图片,一次成功,不再踩坑!
  6. Linux不留历史痕迹-清除历史命令
  7. MPAndroidChart—— pieChart 属性详解
  8. Windows驱动通过inf文件生成cat文件步骤
  9. 可见光-反射红外遥感
  10. 通达信超音速巡航指标公式