STM32单片机LCD240128搬货物Proteus仿真程序

发布者:TechVoyager最新更新时间:2020-08-06 来源: 51hei关键字:STM32  单片机  LCD240128 手机看文章 扫描二维码
随时随地手机看文章

单片机源程序如下:

#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++;

[1] [2] [3]
关键字:STM32  单片机  LCD240128 引用地址:STM32单片机LCD240128搬货物Proteus仿真程序

上一篇:STM32温度传感器DS18B20测试程序 可通过TFT显示屏显示
下一篇:MAX30102空气质量监测模块STM32源程序与资料

推荐阅读最新更新时间:2024-11-02 10:39

STM32 USB SD卡读卡器和NAND FLASH模拟U盘
本次工程是要同时实现SD卡读卡器和NAND Flash模拟U盘的功能。结合之前的两个工程,稍稍修改下就可以了。 既然要实现两个盘,当然在usb_prop.c中的Max_Lun变量赋值为1,在USB_User组中同时添加fsmc_nand.c和sdio_sdcard.c这两个文件,在外设库中挺尸添加stm32f10x_sdio.c和stm32f10x_fsmc.c两个文件。 添加完之后,可能会有些许的错误,解决完后,我们就要修改下mass_mal.c文件了,这个文件本次要同时实现SD卡和NAND Flash的相关驱动代码的挂接,代码如下: uint32_t Mass_Memory_Size ; uint32_t Mass_Block
[单片机]
<font color='red'>STM32</font> USB SD卡读卡器和NAND FLASH模拟U盘
一种基于AVR单片机的工频干扰滤除快速算法
摘要:提出了一种利用数字滤波器滤除工频干扰的快速算法。这种算法从AVR单片机内部硬件乘法器的特点出发,采用分配系统数法进行低通数字滤波器设计。经过VMLAB集成开发环境的仿真验证,算法速度快、代码效率高、滤波效果理想。 关键词:单片机 定点小数 FIR 工频干扰 分配系数法 VMLAB 工频干扰广泛存在各种工业现场中,其产生的途径主要包括输电馈线、照明设备、发动机以及各种电子仪器设备等。一般可以通过滤波电路消除工频干扰,但这必将增加硬件结构的复杂程度。实际上,还可以采用数字信号处理的相关算法,通过软件滤波器滤除工频干扰。软件滤波算法的采用,无疑会在简化电路结构的同时,使系统的硬件资源得到更加充分的利用,并达到降低产品成本的要求
[单片机]
浅析单片机、ARM、FPGA 、嵌入式的特点
单片机的特点: (1)受集成度限制,片内存储器容量较小,一般内ROM:8KB以下;(2)内RAM:256KB以内。(3)可靠性高(4)易扩展(5)控制功能强(6)易于开发 ARM的特点: (1) 自带廉价的程序存储器(FLASH)和非易失的数据存储器(EEPROM)。这些存储器可多次电擦写,使程序开发实验更加方便,工作更可靠。 (2) 高速度,低功耗。在和M51单片机外接相同晶振条件下,AVR单片机的工作速度是M51单片机的30-40倍;并且增加了休眠功能及CMOS技术,使其功耗远低于M51单片机。 (3) 工业级产品。具有大电流输出可直接驱动SSR和继电器,有看门狗定时器,防止程序走飞,从而提高了产品的抗干扰能力。 (4
[单片机]
浅析<font color='red'>单片机</font>、ARM、FPGA 、嵌入式的特点
STM32 USB学习笔记5
主机环境:Windows 7 SP1 开发环境:MDK5.14 目标板:STM32F103C8T6 开发库:STM32F1Cube库和STM32_USB_Device_Library 承接前文,对于上层应用而言只剩下CDC类接口文件即usbd_cdc_interface,该文件主要为实现CDC类接口所用到的物理资源以及逻辑资源,需要参考通信设备通用串行总线类定义版本1.2以及PSTN设备通用串行总线通信类子类规范版本1.2,这两个文档都可以在USB组织官网上下载得到,首先看下usbd_cdc_interface.h文件,如下: /* Define to prevent recursive inclusion
[单片机]
<font color='red'>STM32</font> USB学习笔记5
单片机实现温度远程显示
    摘要: 介绍用AT89S8252单片机的串行接口与智能温度巡回检测仪(XJ-08S)通过RS485总线相互通信实现热水温度远程显示的一种低成本解决方案。内容涉及RS485总线通信、单片机驱动数码管显示、数据转换以及键盘处理软硬件设计等内容。     关键词: 单片机 RS485总线 数码管显示 数据转换 键盘处理 引 言   目前检测温度一般采用热电偶或热敏电阻作为传感器。这种传感器至仪表之间一般都要用专用的温度补偿导线;而温度补偿导线价格很贵,并且线路太长也会影响测量精度。在实际应用中往往需要对较远处(1 km左右)的温度信号进行监视。现有的解决方案有很多,例如:① 在现场用
[工业控制]
单片机波形发生器源码
程序源码 #include reg51.h #include intrins.h #include math.h #define uchar unsigned char #define uint unsigned int unsigned long Result,i; sbit SDA=P1^1; //PCF8591 接口 sbit SCL=P1^0; unsigned int a=0; // 波形采样点值 unsigned int b=0; unsigned int c=0; unsigned int bx_chang=0; unsigned int n=40; // 频率计算值 unsigned c
[单片机]
<font color='red'>单片机</font>波形发生器源码
5-基于51单片机的仓库三路温度检测调节系统设计
具体实现功能 具体功能: 1、采用三个DS18B20温度传感器测温并用LCD1602显示三个温度值,并显示三路温度平均值; 2、按键为设置按键、加键和减键,可设置上下限温度控制范围; 3、当平均温度值超过设定的上或下限时,相应的指示灯亮,同时相应的继电器吸合,继电器可以驱动负载工作; 4、当平均温度值超过设定的上限时,继电器吸合,风扇转动表示降温; 5、当平均温度值低于设定的下限时,继电器吸合,加热膜工作表示升温。 单片机介绍 51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多
[单片机]
5-基于51<font color='red'>单片机</font>的仓库三路温度检测调节系统设计
STM32 DMA彻底研究
typedef struct { u32 DMA_PeripheralBaseAddr; u32 DMA_MemoryBaseAddr; u32 DMA_DIR; u32 DMA_BufferSize; u32 DMA_PeripheralInc; u32 DMA_MemoryInc; u32 DMA_PeripheralDataSize; u32 DMA_MemoryDataSize; u32 DMA_Mode; u32 DMA_Priority; u32 DMA_M2M; } DMA_InitTypeDef; DMA_InitTypeDef 定义于文件“stm32f10x_dma.h” DMA_PeripheralBaseA
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved