历史上的今天
返回首页

历史上的今天

今天是:2025年01月22日(星期三)

正在发生

2020年01月22日 | 16x16点阵贪吃蛇 单片机源程序 带注释

2020-01-22 来源:51hei

一年前做的小玩意了,硬件丢失了,程序还在,以前都是写在一个文件内,翻出来分成几个文件,程序注释写的很详细,希望对初入单片机的师兄有所帮助3.png?imageView2/2/w/550

单片机源程序如下:

//=================================================================================================================================================================

//软件功能:贪吃蛇

//硬件描述:最小系统+4x(8x8点阵)+ (1x(HC154)+3x(74HC14D)) + 1x(HC595)

//程序描述:74595.c中有串进并出程序

//          delay.c中有延迟函数

//          dispaly.c中有点阵显示函数

//          anjian.c中有按键函数

//          related.c中有初始化参数函数、游戏结束图案函数、点阵显示清除函数、糖果随机函数、蛇显示变化函数

//功能概括描述:16x16点阵用于显示、5个按键有旋转按键、上、下、左、右按键

//              上、下、左、右按键用于控制蛇上下左右移动

//              有转折点判断(理论上蛇可以打15折)、蛇碰壁判断、蛇速度改变判断

//=================================================================================================================================================================

#include "reg52.h"                                                                                               //51头文件

#include "intrins.h"                                                                                             //部分运算符所需头文件

#include "74595.h"                                                                                               //74595程序

#include "delay.h"

#include "display.h"

#include "anjian.h"

#include "related.h"

#define uchar unsigned char 

#define uint unsigned int 

//=================================================================================================================================================================

//sbit Beep=P2^7;                                                                                                         //蜂鸣器

uint HUANCUN[16],STX,SWX,GCUNY;                       //缓存显示数组,蛇头横坐标,蛇尾横坐标,转折点存储数组,果子位置存储

uchar SSS,t,STY,SWY,GUO,CBN,GCUNX,Q,cus;                         //蛇方向变量,定时器计时变量,蛇头纵坐标,蛇尾纵坐标,转折点反向存储数组,糖果,计时变量,随机数,蛇方向前一个状态变量

uchar idata ZZS[16];

uint idata ZZD[16];

//=================================================================================================================================================================

void Init()                                                                                   //初始化

{

        TMOD=0x01;                                                                                                   //工作方式1

        EA=1;                                                                                                               //CPU中断开启

        ET0=1;                                                                                                             //定时器T0中断开启

        TH0=(65536-5000)/256;                                                                 //定时5ms

        TL0=(65536-5000)%256;

        TR0=0;                                                                                                             //定时器关闭状态

        KS=1;                                                                                                               //开始键置高电平

//        Beep=0;

}

//=================================================================================================================================================================

void main()

{

        Init();

        while(1)

        {

          Q=rand()%256;                                                 //随机代码放在while(1)函数中不停运转

                if(TR0==0){                                                   //如果定时器在关闭状态 

                        J_S();                                                           //清除缓存

                        K_S();                                                           //各种数据初始化 

                }else{

                   if(GUO!=1){                                         //如果没有糖果         

                     SUI_JI();                                         //调用随机子程序

                           t--;                                                           //蛇的速度加快

                           CBN=t;                                                   //CBN用于保存改变后的t

                   }

                 }

                XIANSI();                                                           //循环显示函数

        }

}

//=================================================================================================================================================================

void time0() interrupt 1

{

        TH0=(65536-5000)/256;

        TL0=(65536-5000)%256;

        AN_J();                                       //调用按键子程序         

        if((--CBN==0)||(cus!=SSS)){

          CBN=t;                                                                               //CBN随t的变化而变化

推荐阅读

史海拾趣

C&K Switches公司的发展小趣事

在Littelfuse的支持下,C&K Switches公司继续保持着稳健的发展态势。它不断推出新产品和技术,拓展新的应用领域和市场。同时,C&K还加强了与全球客户和合作伙伴的合作关系,共同推动电子行业的发展。展望未来,C&K将继续致力于技术创新和产品研发,不断提升产品质量和服务水平,为客户提供更优质、更可靠的产品和解决方案。

这些故事展示了C&K Switches公司在电子行业中的发展历程和成就。从创立之初的精湛技艺和创新理念,到全球布局和业务拓展,再到技术突破和创新以及与Littelfuse的收购与合作,C&K始终保持着对技术的追求和对市场的敏锐洞察。未来,C&K将继续在电子行业中发挥重要作用,推动行业的发展和进步。

Edsun Laboratories Inc公司的发展小趣事

企业文化是企业发展的灵魂。ECM Electronics Limited.注重企业文化的建设,倡导“诚信、创新、协作、共赢”的价值观。公司注重员工的培训和发展,为员工提供良好的工作环境和职业发展机会。通过团队建设活动,增强员工的凝聚力和归属感。正是这些积极向上的企业文化和优秀的团队,为ECM Electronics Limited.的持续发展提供了源源不断的动力。

HAHN - Elektrobau GmbH & Co KG公司的发展小趣事

高通公司在追求技术创新的同时,也积极履行企业社会责任。公司发布了《2023高通中国企业责任报告》,详细介绍了高通如何通过赋能数字化转型、负责任地经营以及可持续地运营等战略重点领域,推动社会公平发展。高通与中国乡村发展基金会、中国红十字基金会等多个机构合作,开展智慧农业、基层医务工作者培训等项目,助力乡村振兴和医疗卫生事业发展。此外,高通还致力于STEM教育,通过合作项目为下一代创新者提供技能和知识支持。这些举措不仅体现了高通的社会责任感,也为其在电子行业中的长远发展奠定了良好的社会基础。

CUI公司的发展小趣事

在电子行业的初期,CUI技术的应用受限于其导电性能和稳定性。然而,随着科研人员的不断努力,新型的CUI材料逐渐问世,它们不仅导电性能优良,而且能够抵御各种环境因素的影响。与此同时,市场对于小型化、高集成度的电子产品需求日益增长,CUI技术因其能够在狭小空间内实现高效电路连接而备受青睐。

Dielectric Laboratories公司的发展小趣事

为了进一步拓展业务,DLI于1955年加入了知名的都福集团(Dover Corporation)。通过这一合作,DLI获得了更多的资金支持和市场资源,加速了公司的发展步伐。同时,都福集团也为DLI提供了更广阔的发展平台,使其能够接触到更多的行业前沿技术和市场信息。

Allegro公司的发展小趣事

1955年,一家名为Dielectric Laboratories(DLI)的公司正式成立,它以其独特的电子元件研发能力在电子行业中崭露头角。起初,DLI专注于电容器的研发和生产,以其高品质和稳定性赢得了市场的认可。随着业务的逐步扩大,DLI不断投入研发资金,探索新的技术领域,为公司的长远发展奠定了坚实的基础。

问答坊 | AI 解惑

人民币找人做东西

我想用一台电脑去控制另一台电脑的键盘和鼠标事件。用电脑A控制电脑B,电脑A就象电脑B的键盘和鼠标一样。在电脑A上发出指令通过您做的这个单片机发到电脑B上去执行。电脑A上可以装任何软件。但电脑B上不行任何软件。在电脑A 上我是用我做VB做的一个 ...…

查看全部问答>

初学嵌入式开发ARM的学习方法(转载)

这个题目很大,给人一种感觉我好像很成功,其实不然。实际上自己水平不高,甚至很低,但是做过了一些曲折的学习道路,同时把自己真实的学习历程表达出来,希望对后来者有借鉴的意义,甚幸!     工作三年、几成废人!      我2000年毕业 ...…

查看全部问答>

请教

请教各位, AD片子采集的输入电压0~5V(也就是说AD片子需要5V供电的),而与其通过I2C通讯的MCU是3V供电,这样可以直接连接使用吗? [ 本帖最后由 chixuetao 于 2009-10-8 10:32 编辑 ]…

查看全部问答>

Wince 5.0 上编写的程序如何打包?用C#写的?

有两个,一个是Program Files 文件夹,一个是应用程序文件夹。 分别代表什么什么意思,可以可以给我讲一下…

查看全部问答>

Windows Embedded CE 6.0 FATFS 无法加载,CF卡内容无法显示

我用CF卡做启动盘,在一些少数小品牌的CF卡上启动后能在根目录下看到\\Hard Disk。 但在Sandisk、Kingston这样的大品牌的CF卡,却只能启动而不能在根目录下看到Hard Disk。 我在调试模式下,使用不同的CF卡,用Eboot方式下载镜像启动,从VS2005的 ...…

查看全部问答>

求助:关于pxa270实现4级灰度控制的驱动程序

我们使用PXA270平台,wince 5.0操作系统。客户提供了一片单色LCD,4bit输入,每1个bit代表1个点,每个点都有ON/OFF两种状态。分辨率640*480。LCD中内置了一颗Max5484来控制灰度。客户要求我们做到4bpp,16级灰度。 但是Max5484这个芯片只能调整整 ...…

查看全部问答>

浏览器的思想

各位高手:     我最近要写一个浏览器(c语言,gtk ,linux),有没有写过的阿,给个提示呀 …

查看全部问答>

帮忙啊

有哪位好心人把windows live id号码借我用一下啊,我要下载个wdk,最近注册了好几次都没有成功,是不是不开放注册了?…

查看全部问答>

有没有人参加3月18号,19号深圳区ST的培训课

专门针对STM32的,, 北京区好象是25,26号,,…

查看全部问答>