历史上的今天
返回首页

历史上的今天

今天是:2025年08月06日(星期三)

正在发生

2020年08月06日 | STM32单片机LCD240128搬货物Proteus仿真程序

2020-08-06 来源:51hei

单片机源程序如下:

#include

#include //关卡的界面

#include //在此文件中定义了汉字编码,用点阵液晶字模提取软件

#define uchar unsigned char

#define uint  unsigned int


sbit cd = P2^0;          //=0,数据通道;=1,命令通道

sbit rd = P2^1;          //=0,读选通有效

sbit wr = P2^2;          //=0,写选通有效

sbit ce = P2^3;         

sbit md = P2^4;

sbit rst= P2^5;         


uchar  renh=6,   renl=4,  bu=0,  guan=1;

static uchar SB[8][10];

bit flag=1;


void  wrdat(uchar) ;//写数据

void  wrcmd(uchar cmd);                     //写命令

void  wrdcmd(uchar dat1, cmd);//写带有一个参数的命令

void  lcddcmd(uchar dat1,dat2,cmd);  //写带有两个参数的命令

void  LCD24012864_init();

void  dischar(uchar hang,uchar lie,uchar cha) ;//写ASCII码字符

void  delay();

void  disxg();                   //显示选关提示

void  clear();               //清屏

void  disphz(uchar count) ; //数字和汉字代码写入自定义字符存储区

void  dishan(uchar hang, lie,uchar bianma);//写汉字代码行,列,bianma汉字在自定义字符中的位置,

void  disshu(uchar hang, lie, bianma);//写数字代码行,列,bianma汉字在自定义字符中的位置,

void  bushu();

uchar key()        ;               //检测按键


void tupian()          //画关卡地图

{

        uchar i,j;

        for(i=0;i<8;i++)

                for(j=0;j<10;j++)

                {

                        dishan(2*i,2*j,han[map[guan-1][i][j]]);

                        SB[i][j]=map[guan-1][i][j];

                        if(SB[i][j]==0x07) SB[i][j]=0x00;

                }

                dishan(4,22,han[4]);

                disshu(4,24,shu[0]);

                disshu(4,25,shu[guan]);

                dishan(4,26,han[5]);

                bushu();

                dishan(2*renh,2*renl,han[1]);

}


void shengli()                         //过关判断

{

        uchar i,j,s1=0,s2=0;

        for(i=0;i<8;i++)

                for(j=0;j<10;j++)

                {

                        if(map[guan-1][i][j]==0x07)     //检视目标

                        {

                                s1++;                                            //目标计数

                                if(SB[i][j]==0x02) s2++;        //目标上箱子计数

                        }

                }

                if(s1==s2)                                    //目标计数和目标上箱子计数相同,则过关

                {

                        dishan(2,20,han[10]);                //显示过关提示

                        dishan(2,22,han[11]);

                        dishan(2,24,han[12]);

                        dishan(2,26,han[5]);

                        disshu(2,28,shu[11]);

                        flag=0;                                     //停止游戏

                        disxg();                                 //显示选关提示

                }

}


void xuanguan(uchar k)                 //选关处理

{

        if((k==1||k==3)&&guan<3) {guan++;renh=6;renl=4;tupian();}

        if((k==2||k==4)&&guan>1) {guan--;renh=6;renl=4;tupian();}

}


void huintfumubiao()                //恢复目标显示,(被人踩的目标)

{

        uchar i,j;

        for(i=0;i<8;i++)

                for(j=0;j<10;j++)

                {

                        if(map[guan-1][i][j]==0x07&&SB[i][j]!=0x02)         //有目标且没有箱子

                        {

                                if(renh!=i||renl!=j) dishan(2*i,2*j,han[7]);

                        }

                }        

}


void game(uchar k)                        //游戏控制

{

        if(k==1)                        //向上

        {

                if(SB[renh-1][renl]==0x00)                    //上面是空白

                {

                        dishan(2*renh,2*renl,han[0]);          //人原来的位置清0

                        renh--;                                                          //上移一行

                        dishan(2*renh,2*renl,han[1]);          //人新位置显示

                        bu++;                                                      //步数加1

                }


                else if((SB[renh-1][renl]==0x02)&&(SB[renh-2][renl]==0x00)) //上面是箱子,箱子上是空格

                {

                        dishan(2*renh,2*renl,han[0]);dishan(2*(renh-1),2*renl,han[0]);

                        renh--;

                        dishan(2*renh,2*renl,han[1]);dishan(2*(renh-1),2*renl,han[2]);

                        SB[renh][renl]=0x00;SB[renh-1][renl]=0x02;

                        bu++;

                }

        }


        if(k==4)

        {

                if(SB[renh+1][renl]==0x00)

                {

                        dishan(2*renh,2*renl,han[0]);

                        renh++;

                        dishan(2*renh,2*renl,han[1]);

                        bu++;

                }

                else if((SB[renh+1][renl]==0x02)&&(SB[renh+2][renl]==0x00))

                {

                        dishan(2*renh,2*renl,han[0]);dishan(2*(renh+1),2*renl,han[0]);

                        renh++;

                        dishan(2*renh,2*renl,han[1]);dishan(2*(renh+1),2*renl,han[2]);

                        SB[renh][renl]=0x00;SB[renh+1][renl]=0x02;

                        bu++;

推荐阅读

史海拾趣

HEC Inc公司的发展小趣事

机顶盒,全称为数字视频变换盒,是现代家庭娱乐中不可或缺的重要设备。从广义上讲,任何与电视机连接的网络终端设备均可视为机顶盒,其发展历程涵盖了从模拟频道增补器到数字卫星、地面及有线电视机顶盒的广泛范畴。而从狭义角度看,机顶盒特指那些具备数字处理能力的设备,如IPTV机顶盒、DVB-S卫星机顶盒、DVB-T地面机顶盒及DVB-C有线电视机顶盒等。

机顶盒的核心功能在于接收并转换数字电视信号,使之能在传统或智能电视上播放。它不仅能接收来自有线电缆、卫星天线及宽带网络的信号,还能提供电子节目指南、网页浏览等增值服务。通过机顶盒,用户能够享受到高清乃至4K超高清的电视节目,体验更为细腻的画面和震撼的音效。此外,机顶盒还具备网络交互能力,支持在线购物、观看网络视频、玩游戏等多元化活动,使电视机从单向接收信息的设备转变为智能互动终端。

随着技术的不断进步,机顶盒正朝着高清化、智能化方向发展。未来,机顶盒将不仅限于基本的信号接收与解码功能,还将融入更多智能推荐、语音识别等先进技术,为用户提供更加个性化、便捷的娱乐体验。总之,机顶盒作为连接电视与互联网的桥梁,正以其丰富的功能和广泛的应用场景,不断满足用户日益增长的娱乐需求。

Hi-Tech Resistors Pvt Ltd公司的发展小趣事

机顶盒,全称为数字视频变换盒,是现代家庭娱乐不可或缺的重要设备。从广义上讲,任何与电视机连接的网络终端设备均可视为机顶盒,它们不仅限于接收和转换电视信号,还承载着丰富的娱乐与信息服务功能。

机顶盒的核心功能在于接收并转换来自有线电缆、卫星天线、宽带网络及地面广播的数字电视信号,将其转换为电视机可识别的视频和音频流。这一转换过程确保了观众能够享受到高清乃至4K超高清的画质和震撼的音效,极大地提升了观看体验。此外,机顶盒还集成了诸如电子节目指南、因特网网页浏览等增值服务,让电视机不再仅仅是单向接收信息的设备,而是成为一个能够与用户进行互动的智能终端。

随着技术的发展,机顶盒的种类日益丰富,按主要功能可分为数字卫星机顶盒、有线电视数字机顶盒、IPTV机顶盒等。这些机顶盒不仅满足了用户多样化的观看需求,还通过连接互联网,提供了在线购物、视频点播、游戏娱乐等多元化服务。未来,随着高清、超高清技术的普及以及人工智能、云计算等技术的应用,机顶盒将向智能化、多功能化方向发展,为用户提供更加便捷、个性化的使用体验。

总之,机顶盒作为连接电视与互联网的桥梁,在丰富家庭娱乐生活、提升观看体验方面发挥着重要作用。随着技术的不断进步和市场需求的持续增长,机顶盒行业将迎来更加广阔的发展前景。

CUI公司的发展小趣事

近年来,智能化和物联网技术的快速发展为电子行业带来了前所未有的机遇。CUI技术作为实现电子设备智能化和互联互通的关键环节之一,得到了广泛的应用。一些企业针对智能化和物联网的需求,开发出具有特殊功能的CUI材料,如柔性CUI、透明CUI等,为电子产品的创新提供了有力支持。

请注意,以上故事仅为概述性质,并非针对特定公司的实际发展历程。每个公司的具体情况可能因市场环境、技术实力、管理策略等因素而有所不同。如果需要了解特定公司的具体发展故事,建议查阅相关公司的官方网站、新闻报道或行业分析报告。

骅讯(Cmedia)公司的发展小趣事

近年来,随着科技的不断进步和市场的不断变化,骅讯公司也积极寻求创新转型和拓展市场。在保持其在音频芯片设计领域领先地位的同时,骅讯还积极开发新的业务领域,如软件研发、数字内容供应等。这些创新举措不仅为骅讯带来了新的增长点,也为其在电子行业中保持领先地位提供了有力支持。

以上是关于骅讯(Cmedia)公司在电子行业中发展起来的相关故事简要概述。这些故事展示了骅讯如何凭借其技术实力和市场洞察力在竞争激烈的电子行业中不断发展壮大。

Gang Song Electronics Co Ltd公司的发展小趣事

并购完成后,GainSpan的技术与Telit的物联网平台实现了深度融合。Telit利用GainSpan的低功耗WiFi模组技术,推出了更加高效、节能的物联网解决方案。这些方案不仅降低了物联网设备的能耗,还延长了设备的使用寿命,提高了整体系统的稳定性和可靠性。同时,GainSpan的技术也为Telit的物联网平台带来了更多创新应用的可能性。

B.B. Battery公司的发展小趣事

在国内市场取得一定成绩后,B.B. Battery公司开始积极拓展国际市场。他们参加国际电池展会,与全球知名企业建立合作关系,将产品打入国际市场。同时,公司还注重品牌建设,通过提升产品质量和服务水平,树立了良好的品牌形象。这些努力使得B.B. Battery公司的品牌在全球范围内都享有较高的知名度和美誉度。

问答坊 | AI 解惑

ARM与Cygyin

ARM与Cygyin 为了在 Windows 下开发嵌入式操作系统应用程序,可以在 Windows 环境下装上 Cygwin 软件。 ARM开发论坛 Cygwin 是一个在 Windows 平台上运行的 Unix 模拟环境,是 Cygnus Solutions 公司开发的自由软件。它对于学习把握 Unix/Lin ...…

查看全部问答>

最大功率点跟踪

本帖最后由 paulhyde 于 2014-9-15 09:28 编辑 A组的同学注意了 分享点资料  …

查看全部问答>

rt73模块占用率

加载好了rt73模块后,一直ping无线路由,开始能够ping通,然后关闭无线路由器。过10~20分钟后,重新启动无线路由器,但是此时已经不能ping通无线路由器,并且rt73 模块占用cpu 50%左右。然后必须重启。 另外,从3G切换到无线,当电脑和无线路由 ...…

查看全部问答>

高手进,基于RFID的仓储管理系统需要用到哪些技术?

高手进,基于RFID的仓储管理系统需要用到哪些技术? 小弟是学软件的,最近想做这样的东东,请高手指点。…

查看全部问答>

VC2005嵌入式利用cximage库打开jpg图象,在exe里面可以,完全相同的代码移植到ocx里面,这个ocx在wm5的pda里面注册不了,有人遇到类似的问

VC2005嵌入式利用cximage库打开jpg图象,在exe里面可以,完全相同的代码移植到ocx里面,这个ocx在wm5的pda里面注册不了,有人遇到类似的问题吗?…

查看全部问答>

ARM嵌入式开发板求教

本人想学习ARM嵌入式开发,想买一个开发板。 求达人推荐, 我希望 1:最重要的参考资料多,开发工具软件方便,多,免费。 2:开发板功能强大的。 另外新手学什么操作系统好?…

查看全部问答>

我想用单片机做个定时测温控制系统,请高手指导一下

我想用单片机做个定时测温控制系统,请高手指导一下…

查看全部问答>

evc++4.0 中如何显示中文

我在对话框中做的按钮,按扭上的字是中文,可是一运行就变成乱码了,想问一下在evc++ 4.0 中怎么让按钮上的字为中文显示…

查看全部问答>

提交电路,大家帮忙看看

提一下意见啊! [ 本帖最后由 moyuwyk 于 2010-11-24 21:04 编辑 ]…

查看全部问答>

有谁做过STM32通过FSMC驱动RGB接口TFT屏吗?

看到一份ST的官方App Note,提到可以用STM32的FSMC直接驱动RGB接口的TFT屏,这真是个好消息,不知道坛子里有没有哪位大虾这样做过? 官方给出的例子是驱动QVGA的屏,是否可以驱动WVGA的呢? 恳请各路大虾赐教,不胜感激。…

查看全部问答>