ICode9

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

蓝桥杯单片机(二) 数码管与按键

2021-02-14 18:29:19  阅读:237  来源: 互联网

标签:P2 code show 数码管 number dsp 蓝桥 单片机


蓝桥杯单片机(二) 数码管与按键

数码管的动态扫描使用1ms的定时器扫描,放在中断服务函数中,数码管显示很稳定

例子:数码管后五位显示12345

#include<stc15f2k60s2.h>

typedef unsigned char uchar;
typedef unsigned int uint;

uchar dsp_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar dsp_show[8]={0xff,0xff,0xff};  //数码管前三位熄灭,后五位显示12345
uint number=12345;

void Timer0Init(void)		//中断初始化,1毫秒@11.0592MHz
{
	AUXR |= 0x80;		//定时器时钟1T模式
	TMOD &= 0xF0;		//设置定时器模式
	TL0 = 0xCD;		//设置定时初值
	TH0 = 0xD4;		//设置定时初值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
	
	ET0=1;  //记得加上这两句
	EA=1;
}

void Timer0_Service() interrupt 1  //中断入口
{
	static uchar bit_com=0;
	
	P0=0;      //消影,使所有数码管熄灭
	P2=0xc0;
	P2=0;
	
	P0=dsp_show[bit_com];  //段选内容,即要显示的数字
	P2=0xe0;    //打开锁存器控制数码管段选
	P2=0;       //关闭锁存器
	
	P0=1<<bit_com;   //位选左移一位
	P2=0xc0;         //打开锁存器控制数码管位选
	P2=0;
	
	if(++bit_com==8)
		bit_com=0;
}

void main()
{
	Timer0Init();  //中断初始化
	dsp_show[3]=dsp_code[number/10000];
	dsp_show[4]=dsp_code[number/1000%10];
	dsp_show[5]=dsp_code[number/100%10];
	dsp_show[6]=dsp_code[number/10%10];
	dsp_show[7]=dsp_code[number%10];
	
	while(1)
	{
		;
	}
}

标签:P2,code,show,数码管,number,dsp,蓝桥,单片机
来源: https://blog.csdn.net/weixin_44026026/article/details/113809751

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

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

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

ICode9版权所有