蓝桥杯单片机数码管动态显示_蓝桥杯单片机开发板 CT107D开发板矩阵按键 数码管显示(含定时器)...

news/2024/7/4 9:34:04

蓝桥杯单片机开发板 CT107D开发板矩阵按键 数码管显示,含定时器源码,J5跳线 接12关键 ,J13接23

#include

#include

#define uchar unsigned char

#define Y4        P2 = 0X9F & (P2 | 0XE0);                //打开y4        可以控制led

#define Y5        P2 = 0XBF & (P2 | 0XE0);                //打开y5        可以控制蜂鸣器

#define Y6        P2 = 0XDF & (P2 | 0XE0);                //打开y6        可以控制数码管位选

#define Y7        P2 = 0XFF & (P2 | 0XE0);                //打开y7        可以控制数码管段选

/****************************************************************************

*        数码管

****************************************************************************/

/*加上code的话 存在rom中  数不可变*/

unsigned char code table[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

unsigned char code w[8] ={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

unsigned char display_buff[10] = {0,1,2,3,4,5,6,7,8,9};

int number = 0;

/****************************************************************************

*        延时

****************************************************************************/

void Delay10ms()                //@11.0592MHz

{

unsigned char i, j;

i = 108;

j = 145;

do

{

while (--j);

} while (--i);

}

void Delay5ms()                //@11.0592MHz

{

unsigned char i, j;

i = 54;

j = 199;

do

{

while (--j);

} while (--i);

}

/****************************************************************************

*        矩阵按键

****************************************************************************/

bit key_flag = 0;                                                                //当按键按下为1,没有按下为0

uchar key_num = 0;                                                        //存储按键的值

void key_debounce()

{

Delay10ms();

while(!(P34&P35&P42&P44));

Delay10ms();

}

int key_scanf()

{

uchar  key_y,key_x = 0;

if(key_flag == 0)                        //为0 时 扫描

{

P3 = 0x0f;

P42 = 0;

P44 = 0;

if(!P30|!P31|!P32|!P33)

{

if(P30 == 0){key_y = 1;}

if(P31 == 0){key_y = 2;}

if(P32 == 0){key_y = 3;}

if(P33 == 0){key_y = 4;}

}

P3 = 0xf0;P42 = 1;P44 = 1;

if(!P34|!P35|!P42|!P44)

{

if(P34 == 0){key_x = 4;}

if(P35 == 0){key_x = 3;}

if(P42 == 0){key_x = 2;}

if(P44 == 0){key_x = 1;}

}

if(key_x == 0)

{

key_flag = 0;

}

else

{

key_num = key_y * 4 + key_x - 5;

}

}

return key_num;

}

/****************************************************************************

*        定时器中断初始化

****************************************************************************/

void Timer0Init(void)                //3毫秒@11.0592MHz

{

AUXR |= 0x80;                //定时器时钟1T模式

TMOD &= 0xF0;                //设置定时器模式

TL0 = 0x66;                //设置定时初值

TH0 = 0x7E;                //设置定时初值

TF0 = 0;                //清除TF0标志

TR0 = 1;                //定时器0开始计时

ET0 =1;

EA = 1;

}

/****************************************************************************

*        中断服务函数

****************************************************************************/

void timer0() interrupt 1

{

key_scanf();

}

/****************************************************************************

*        主函数

****************************************************************************/

int main()

{

P2 = 0XA0;                        //关闭蜂鸣器

P0 = 0X00;

P2 = 0X00;                        //关闭所有led

P0 = 0XFF;

Timer0Init();                                //定时器中断初始化.

while(1)

{

key_debounce();

number = key_scanf();

Y6;                                                        //位选

P0 = w[1];

Y7;                                                        //段选

P0 = table[display_buff[number / 10]];

Delay5ms();

Y6;                                                        //位选

P0 = w[2];

Y7;                                                        //段选

P0 = table[display_buff[number % 10]];

Delay5ms();

}

}


http://www.niftyadmin.cn/n/3927166.html

相关文章

su灯光插件_V-Ray for SketchUp渲染外部照明快速入门

本教程介绍了在SketchUp中使用V-Ray照亮外部场景的基础知识。它将包括使用各种V-Ray灯进行日夜渲染。最后,您将了解SketchUp中外部的一般照明工作流程。要学习本教程,您需要安装V-Ray for SketchUp插件。教程步骤打开示例场景首先启动SketchUp。打开项目…

机器学习 算法基础 九 SVM实践

SVM代码实践 这里写自定义目录标题练习1:鸢尾花分类练习2:SVM实现一个多分类器练习3:SVM选用不同核参数练习4:手写数字识别练习1:鸢尾花分类 #!/usr/bin/python # -*- coding:utf-8 -*-import numpy as np import pan…

2020年书法落款_2020年中国书法家协会书法考级天津考区的评审工作顺利完成

2020年中国书法家协会书法考级天津考区的评审工作顺利完成杨健君、郝金宝、朱立、高秀红在评审现场。心墨艺术网讯 11月12日,2020年中国书法家协会书法考级天津考区的评审工作顺利完成。天津市书法家协会秘书长杨健君,天津市书法家协会隶书委员会副主任、…

自适应网页设计(Responsive Web Design

http://www.ruanyifeng.com/blog/2012/05/responsive_web_design.html

机器学习 算法基础 十 聚类

聚类 聚类是针对给定的样本,依据他们特征的相似度或距离,将其归并到若干个“类”或“簇”的数据分析问题。在某些场景下聚类和降维是一个意思。聚类算法只作为pipline上对特征降维使用。 相似度/计算方法 当 μxμy0\mu_x \mu_y 0μx​μy​0 时二者相…

golang 获取 utc 时间戳_多传感器融合中的时间同步2-论文阅读

前言阅读硕士论文《GPS/INS组合导航系统研究及实现》,该论文第5章为时间同步系统设计,为GPS/INS系统设计的时间同步系统部分内容非常丰富,非常值得参考。在数据融合中如果融合的数据是来自两个不同的时间点的数据,即INS数据和GPS数…

bean覆盖 springboot_spring boot面试问题集锦

点击上方“蓝色字体”,选择“置顶或者星标”与你一起成长~译文作者:david 原文链接:https://www.javainuse.com/spring/SpringBootInterviewQuestions如遇到不好阅读的格式问题,请移步到博客园查看:https:…

python调用手机蓝牙_python对串口蓝牙模块的操作

python提供了丰富的module 对串口的操作同样有对应的module:serial环境:python3.5 蓝牙模块:HC-05 波特率38400首先导入serial模块(通过pip install serial 安装)获取串口ser 通过serial.Serial(地址,波特率,超时时间)…