历史上的今天
返回首页

历史上的今天

今天是:2024年12月27日(星期五)

正在发生

2021年12月27日 | 51单片机12864大液晶屏俄罗斯方块

2021-12-27 来源:eefocus

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考源代码:

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

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

//<程序名>:俄罗斯方块游戏 **

//<版本说明>:此版是第一版,在LCD1608第4版基础上改进而来,目前只可以绘制游戏区域的边框。 **

//<完成时间>:2007年8月28日 **

//<作者>:从零开始单片机 **

**

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

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


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

//* *

//* 头文件及宏定义 *

// *

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

#include “includes.h”


#define TIME1H 0x3C

#define TIME1L 0xB0 //定时器1溢出时间:50ms


#define SCANPORT P1


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

//* *

//* 全局变量****** *

//* *

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


//unsigned char code uca_TEST[]={0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0};

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<防抖动标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

bit b_KeyShock=0; //键盘防抖动标志位。

//当按键中断产生时,首先判断此位。

//0–执行键盘扫描及键码处理程序;1–不执行。


bit b_KillShock=0; //防抖标志清除位:0–不清除;1–清除。


unsigned char uc_KillCount=0; //抖动标志清除计数,使用定时器1。


//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<键盘扫描开启标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

bit b_KeyScan=0; //0–不扫描;

//1–扫描。


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

//* *

//* 主函数 *

// *

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


/*********************** main ************************/

void main(void)

{

vLCDInitialize();


vShowOneChin(0,0,uca_QING);

vShowOneChin(2,0,uca_SHU);

vShowOneChin(4,0,uca_RU);

vShowOneChin(6,0,uca_MAOHAO);


vShowGraph(2,60,32,4,uca_Pig);

vShowFrame();


SCANPORT=0x0F;


//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<外部中断0,用于开启键盘扫描及键码处理标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

IT0=1; // 中断方式:下降沿。

EX0=1; // 开启外部中断。


//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器1,用于防抖动标志清除 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

TH1=TIME1H;

TL1=TIME1L;

TR1=1; //开启定时器1

ET1=1; //开定时器1中断


EA=1;


while(1)

{

if(b_KeyScan==1)    //如果有按键按下,则进行按键扫描和键码处理。

{

b_KeyScan=0;

vKeyProcess(ucKeyScan());

}

}


}


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

//* *

//* 外部中断0,用于开启键盘扫描及键码处理 *

// *

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

void vINT0(void) interrupt 0

{

if(b_KeyShock==0)

{

b_KeyScan=1; //开启键盘扫描标志。

b_KeyShock=1; //设置防抖动标志。

}

else b_KeyShock=0; //如果有抖动则不执行键扫描,恢复防抖动标志。


//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<设置防抖动清除标志位 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

if(b_KeyShock==1)

b_KillShock=1; //如果防抖动标志位开启则开启防抖动标志清除位,

//300ms后清除防抖动标志。


}


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

//* *

//* 定时器1中断,用于计时功能和防抖动标志清除*********** *

//* *

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

void vTimer1(void) interrupt 3

{

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<防抖动标志清除>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

if(b_KillShock1)

{

if(uc_KillCount5) //当防抖动标志位为1时,计时300ms后清除抖动标志位。

{

b_KeyShock=0;

b_KillShock=0;

uc_KillCount=0;

}

else uc_KillCount++;

}

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<恢复定时器1溢出时间>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

TH1=TIME1H;

TL1=TIME1L;

}

推荐阅读

史海拾趣

Acme Electric Corporation公司的发展小趣事

Acme Electric Corporation是一家专注于生产变压器和电源设备的公司。以下是该公司发展的五个相关故事:

  1. 公司成立和初期发展: Acme Electric Corporation成立于1958年,总部位于美国威斯康星州。公司最初是一家小规模的家庭企业,致力于生产各种类型的变压器和电源设备,主要用于工业、商业和农业应用。

  2. 技术创新和产品扩展: 随着市场需求的增长和技术进步,Acme Electric Corporation不断进行技术创新,并扩展了产品线。公司推出了一系列高性能、高效率的变压器和电源设备,包括控制变压器、隔离变压器、电源逆变器等,满足不同客户的需求。

  3. 市场拓展和客户合作: Acme Electric Corporation积极开拓国内外市场,并与各行各业的客户建立了合作关系。公司的产品被广泛应用于制造业、电力行业、建筑业等领域,为客户提供稳定可靠的电源解决方案。同时,Acme Electric Corporation与客户密切合作,根据客户的需求定制产品,提供个性化的服务。

  4. 质量控制和生产管理: Acme Electric Corporation注重产品质量和生产管理,采用先进的生产设备和严格的质量控制体系,确保产品的稳定性和可靠性。公司拥有一支专业的研发团队和生产团队,不断改进工艺流程,提升产品质量和生产效率。

  5. 未来发展展望: Acme Electric Corporation将继续致力于变压器和电源设备领域的研发和生产,不断推出更先进、更可靠的产品和解决方案,以满足客户在各个领域的需求。公司将加强国际市场拓展,提升自身在全球市场的竞争力,为行业的发展做出更大的贡献。

Gigavac LLC公司的发展小趣事

对于数-模转换(D/A转换)用高稳定度稳压电源电路,网友可能提出多个方面的问题。以下是一些可能的问题及其详细回答:

问题一:为什么数-模转换需要高稳定度的稳压电源?

回答
数-模转换器(D/A转换器)将数字信号转换为模拟信号,其输出精度和稳定性直接受到供电电源的影响。高稳定度的稳压电源能够确保D/A转换器在转换过程中电压波动小,从而减小转换误差,提高转换精度。此外,稳定的电源还能保护D/A转换器免受电压波动可能引起的损坏,延长其使用寿命。

问题二:如何设计高稳定度的稳压电源电路?

回答
设计高稳定度的稳压电源电路通常需要考虑以下几个方面:

  1. 选择合适的稳压元件
    • 稳压二极管(齐纳二极管):具有稳定的反向击穿电压,可作为简单的稳压元件。
    • 线性稳压器(LDO):提供低噪声、高精度的输出电压,适用于对电源噪声敏感的场合。
    • 开关稳压器:效率高,但可能引入一定的纹波噪声,需要适当的滤波电路设计。
  2. 优化电源滤波
    • 在稳压电源的输出端加入滤波电容,以减小输出电压的纹波和噪声。
    • 对于开关稳压器,可能需要额外的LC滤波电路来进一步降低纹波。
  3. 考虑温度稳定性
    • 温度变化会影响元件的性能,因此在设计时应考虑元件的温度系数,并采取适当的温度补偿措施。
  4. 采用反馈控制
    • 通过引入电压反馈控制环路,可以实时监测输出电压并调整稳压元件的工作状态,以保持输出电压的稳定。
  5. 选用高质量的元件
    • 使用低漂移、高精度的电阻、电容等元件,以提高电源电路的整体稳定性。

问题三:如何评估稳压电源的稳定度?

回答
评估稳压电源的稳定度通常需要考虑以下几个方面:

  1. 输出电压的纹波和噪声
    • 使用示波器测量输出电压的纹波和噪声水平,确保其在可接受的范围内。
  2. 负载调整率
    • 在不同负载条件下测量输出电压的变化量,评估电源对负载变化的响应能力。
  3. 线性调整率
    • 在输入电压变化时测量输出电压的变化量,评估电源对输入电压变化的抵抗能力。
  4. 温度稳定性
    • 在不同温度条件下测量输出电压的变化量,评估电源的温度稳定性。
  5. 长期稳定性
    • 在长时间运行后测量输出电压的变化量,评估电源的长期使用稳定性。

问题四:有哪些常见的稳压电源故障及其解决方案?

回答
常见的稳压电源故障及其解决方案包括:

  1. 输出电压不稳定
    • 检查稳压元件是否损坏或老化。
    • 检查滤波电容是否失效或容量不足。
    • 检查反馈控制环路是否正常工作。
  2. 无输出电压
    • 检查输入电源是否正常。
    • 检查保险丝是否熔断。
    • 检查稳压元件是否短路或开路。
  3. 输出电压过高或过低
    • 调整稳压元件的工作参数。
    • 检查负载是否过大或过小。
    • 检查输入电压是否在正常范围内。
  4. 温度过高
    • 检查散热系统是否正常工作。
    • 考虑增加散热装置或降低负载。

通过以上问题和答案的梳理,可以帮助网友更全面地了解数-模转换用高稳定度稳压电源电路的设计、评估和维护等方面的知识。

Focus公司的发展小趣事

在数字化转型的大潮中,一家名为Focus的电子产品制造商(虚构)意识到传统制造模式的局限性,决定实施全面的数字化转型战略。公司首先引入了先进的ERP系统和智能制造技术,实现了生产流程的自动化和智能化。同时,为了快速扩大市场份额和增强技术实力,Focus积极寻求并购机会,先后收购了多家在物联网、人工智能等领域具有核心竞争力的初创企业。通过资源整合和优势互补,Focus迅速成长为行业内的领军企业。

ANOVA公司的发展小趣事

ANOVA公司的故事始于2018年,当时四个在物联网领域颇具影响力的品牌——Dataonline、Wikon、Wesroc和Itank,看到了工业远程监控领域的巨大潜力和商机,于是决定联手共创未来。这四个品牌都拥有超过一个世纪的工业监控经验,它们的联合不仅仅是资源的整合,更是技术与智慧的融合。ANOVA的创立,标志着电子行业中一个新的力量正在崛起。

Cotco公司的发展小趣事

面对电子行业日新月异的变化和不断涌现的新挑战,Cotco公司始终保持敏锐的市场触觉和应变能力。公司及时调整战略方向,加大在新兴领域如物联网、智能家居等的投入和研发力度。同时,Cotco也积极拓展国际市场,与全球多个国家和地区的合作伙伴建立合作关系,推动产品的全球化销售和服务。展望未来,Cotco将继续秉承创新、质量和服务的理念,致力于成为全球电子行业的佼佼者。

DALLAS公司的发展小趣事

随着移动设备市场的蓬勃发展,Dallas公司敏锐地捕捉到了电池电量管理技术的市场需求。在深入研究和技术攻关后,Dallas成功推出了可编程锂离子电池电量计DS2790。这款产品集成了先进的微控制器、大容量程序和数据存储器以及精密的电池电流、电压和温度测量系统,为定制单节电池电量计的算法提供了优秀的平台。DS2790的推出不仅满足了市场需求,也为Dallas公司在电池管理技术方面赢得了声誉。

问答坊 | AI 解惑

V2.0的采样时钟设计~

考虑时钟频率大于100MHz,同时,相位要比较精确.而且,当被采样信号在50M时,为设计达到7位以上的有效分辨率(ADC08200在被采样信号50M时典型ENOB为7.3位),同时有45DB以上信噪比(SNR),要求时钟的孔径抖动小于25ps,如此就对时钟源提出很高的要求. 有效位 ...…

查看全部问答>

NK.bin中N代表什么

nk.bin作为wince的内核文件,K 应该是Kernel,内核的意思吧。那么,其中的N代表什么呢…

查看全部问答>

mobile 的.exe程序在非触摸屏的手机里如何运行

mobile 的.exe程序在非触摸屏的手机里如何运行??请各位大虾指点 还有一个问题就是在部署程序时,当部署toolhelp.dll时提示在一个非套接字上尝试了一个套接字操作的错误,请各位高手指点,谢谢!…

查看全部问答>

最近有人找我做项目,可是我对项目的内容完全陌生

          最近一个学长介绍一个项目给我,我原来做的都是单片机,小功率电源,都是简单东西,可是项目的要求做的是高频滤波器之类的,一下子从低频的东西到了高频的东西,很迷茫,和一个工程师聊了 ...…

查看全部问答>

STM32IARRAM的问题,急!

IAR编译的C,函数体内的变量是存在堆里还是栈里啊?哪位大虾给指点一下。 症状: 在函数体内使用1.6KB大小数组,运行死机;将同一数组移至函数体外成为静态数组,运行通过。 xcl文件的配置如下,都给了16KB了: -D_CSTACK_SIZE=4000 -D_HE ...…

查看全部问答>

【低功耗】Artix-7 FPGA 系列资料大合集(二)

非常全的Artix-7 FPGA 系列资料 希望广大坛友顶起啊 为低功耗做贡献啊7 Series FPGAs User Guides 7 Series FPGAs Package Specifications [ 本帖最后由 hangsky 于 2011-11-10 12:53 编辑 ]…

查看全部问答>

SDRAM时钟频率设置

请问SDRAM的如果是PC133标准,那么他的工作频率必须工作在133M吗?最低值可以设置到多少?能用20M吗?…

查看全部问答>

【设计工具】PCI Express增强型端点模块核的总线主DMA参考设计

在本应用指南中,Jake Wiltgen介绍了如何利用包含了集成式PCI Express® 模块的Virtex®-5 FPGA为PCI Express增强型端点模块封装核设计和实现总线主直接存储器存取(DMA)设计。总线主DMA(BMD)设计可以将数据写入主存储器或从主存储器中读取数 ...…

查看全部问答>

msp430f149 按键接法

在P1口接个按键到地           不接上拉电阻可以吗?…

查看全部问答>

对于MSP430F5X系列的时钟系统的详细介绍

对于MSP430F5X系列的时钟系统的详细介绍可直接点击下载,也可附件下载…

查看全部问答>