ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

蓝桥杯单片机综合练习7

2020-02-01 14:40:24  阅读:268  来源: 互联网

标签:P2 break P0 数码管 void 练习 蓝桥 单片机 case


模块:数码管动态显示 (官方竞赛开发平台)

 功能; 在CD107D单片机综合训练平台上,实现数码管的动态显示,在8位数码管中,前面4位显示年份“2020”,接下来的两位是分隔符“-” , 最后两位显示月份,从1月开始,每间隔一段时间加一月,到12月后,又从一月开始递增,依次重复

 

#include "STC15F2K60S2.H" 
#include <intrins.h>
#define uint unsigned int 
#define uchar unsigned char
sbit fe = P0^6;
sbit ji = P0^4;
uchar num = 1;
uint code SMG_duanma[] =  //数码管段选表
{0xc0  ,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
void Delay2ms()		//@12.000MHz
{
	unsigned char i, j;

	i = 24;
	j = 85;
	do
	{
		while (--j);
	} while (--i);
}

void HC138init (uchar n)  // HC138 译码器初始化函数 当形参是数字几 就让第几个端口 输出低电平
{
  switch (n)
  {
  	 case 4:
	    P2 = (P2 & 0x1f) | 0x80;	 // 4 是流水灯控制位
	 break;
	 case 5:						 //5 是蜂鸣器以及继电器控制位
	    P2 = (P2 & 0x1f) | 0xa0;
	 break;
	 case 6:						// 6 是数码管位选控制位
	    P2 = (P2 & 0x1f) | 0xc0;
	 break;
	 case 7:					   // 7 是数码管段选控制位
	    P2 = (P2 & 0x1f) | 0xe0;
	 break;
  }
}
void LEDinit()	  // LED 初始化函数 因为LED和数码管都是接在P0口 需要把LED 全部熄灭
{
   HC138init(4);
   P0 = 0xff;
}
void displaybit (uchar pos,dat) // 数码管静态显示
{
   HC138init (6);
   P0 = 0x01<<(pos-1);
   HC138init (7);
   P0 = SMG_duanma[dat]; 
}
void display()
{
   displaybit (1,2)	;// 第一个数码管显示2
   Delay2ms();	
   displaybit (2,0)	;// 第二个数码管显示0
   Delay2ms();
   displaybit (3,2)	;// 第三个数码管显示2
   Delay2ms();	
   displaybit (4,0)	;// 第四个数码管显示0
   Delay2ms();
   displaybit (5,10)	;	// 第五个数码管显示 第一个分隔符
   Delay2ms();
   displaybit (6,10)	; // 第六个数码管显示 第二个分隔符
   Delay2ms();
   displaybit (7,(num/10))	;	// 第五个数码管显示 第一个分隔符
   Delay2ms();
   displaybit (8,(num%10))	; // 第六个数码管显示 第二个分隔符
   Delay2ms();
}
void delay (uchar time)
{
  while(time--)
  {
  	 display();
  }
}
void main ()
{
  LEDinit();
  while(1)
  {
  	 display();
	 num++;
	 if(num == 13)
	 num = 1;
	 delay(50); // 题目要求,要经过一段时间后,数字累加变化。要有一个延时,这个延时过程中,保持数字不变
  } 
}

 

一直在奔跑的孩子 发布了12 篇原创文章 · 获赞 2 · 访问量 4065 私信 关注

标签:P2,break,P0,数码管,void,练习,蓝桥,单片机,case
来源: https://blog.csdn.net/weixin_42432428/article/details/104131607

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有