为AT89C52RC单片机设计一个箱子存储页面, 大箱子有5个,编号为1-5,中箱子有6个编号为1-6,小箱子有7个编号为1-7, 开机时候,或者按返回键S16,进入主页面 首先显示大箱子 剩余 个数,显示 1---xx,xx为箱子剩余数量,0.5秒闪烁显示2秒后,显示中箱子 剩余 个数,显示2---xx,xx为箱子剩余数量,0.5秒闪烁显示2秒后,显示小箱子 剩余个数,显示 3---xx,xx为箱子剩余数量,0.5秒闪烁显示没有其他按键按下时,循环显示

时间: 2023-06-26 15:03:29 浏览: 42
以下是一个基本的AT89C52RC单片机箱子存储页面设计代码,你可以根据自己的需求进行修改。 ```c #include <reg52.h> #include <stdio.h> #define uchar unsigned char #define uint unsigned int uchar code bigBoxNum = 5; // 大箱子数量 uchar code midBoxNum = 6; // 中箱子数量 uchar code smallBoxNum = 7; // 小箱子数量 uchar bigBoxLeft = 5; // 剩余大箱子数量 uchar midBoxLeft = 6; // 剩余中箱子数量 uchar smallBoxLeft = 7; // 剩余小箱子数量 uchar currentPage = 0; // 当前页面,0为主页面,1为大箱子页面,2为中箱子页面,3为小箱子页面 void delay(uint xms) { uint i, j; for (i = xms; i > 0; i--) { for (j = 112; j > 0; j--) { ; } } } void showMainPage() { printf("\r\nHello World!\r\n"); // 主页面显示内容 } void showBigBoxPage() { printf("\r\nBig Box Left: %d\r\n", bigBoxLeft); // 大箱子页面显示内容 } void showMidBoxPage() { printf("\r\nMid Box Left: %d\r\n", midBoxLeft); // 中箱子页面显示内容 } void showSmallBoxPage() { printf("\r\nSmall Box Left: %d\r\n", smallBoxLeft); // 小箱子页面显示内容 } void main() { EA = 1; // 总中断开关 ES = 1; // 串口中断开关 TMOD = 0x20; // 定时器1工作方式2 TH1 = 0xfd; // 波特率9600 TL1 = 0xfd; TR1 = 1; // 启动定时器1 SCON = 0x50; // 串口工作方式1 while (1) { if (currentPage == 0) { showMainPage(); delay(500); } else if (currentPage == 1) { showBigBoxPage(); delay(500); } else if (currentPage == 2) { showMidBoxPage(); delay(500); } else if (currentPage == 3) { showSmallBoxPage(); delay(500); } } } void serial() interrupt 4 { uchar c = SBUF; // 读取串口数据 RI = 0; // 清除接收中断标志位 if (c == 0x1B || c == 'S') { // 如果接收到ESC或S键 currentPage = 0; // 返回主页面 } else if (c == '1') { // 如果接收到1键 currentPage = 1; // 进入大箱子页面 } else if (c == '2') { // 如果接收到2键 currentPage = 2; // 进入中箱子页面 } else if (c == '3') { // 如果接收到3键 currentPage = 3; // 进入小箱子页面 } } ``` 在这个代码中,我们使用了定时器和串口中断来实现页面的切换以及显示内容的更新。在主循环中,根据当前页面的值来选择对应的显示函数。在串口中断中,根据接收到的数据来切换页面。具体细节你可以根据需要进行修改。

相关推荐

最新推荐

recommend-type

基于AT89C52单片机最小系统接口电路设计

AT89C52是美国Atmel公司生产的低电压、高性能CMOS 8位单片机,片内含8KB的可反复擦写的程序存储器和256B的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,...
recommend-type

基于AT89C52单片机的SD卡读写设计

单片机使用12MHz的晶体振荡器时,读写速度和功耗都基本...本文详细阐述了用AT89C52单片机对SD卡进行操作的过程,提出了一种不带SD卡控制器,MCU读写SD卡的方法,实现了SD卡在电能监测及无功补偿数据采集系统中的用途。
recommend-type

基于AT89C52单片机的语音录放系统实现

文中给出以单片机AT89C52为核心构成的语音录放系统原理图及软件流程。通过实验验证该语音录放系统录音和放音效果良好,单片机控制相当准确。在应用方面,将该系统作为一个模块可与其他功能电路集成,实现各种功能...
recommend-type

51单片机(AT89C52)一键多功能(短按、长按)

短按(按下持续时间小于3s)一次数码管显示加1,同时流水灯计数加1。长按(按下持续时间大于3s)时,数码管显示每500ms加1,同时流水灯每500ms计数加1。
recommend-type

基于AT89C52单片机的智能交通灯系统设计

交通灯启动后,南北方向红灯和东西方向绿灯各亮十秒,然后红灯保持不变,黄灯闪烁五下,之后变为南北方向绿灯和东西方向红灯且各保持十秒,南北方向黄灯闪烁五秒之后转变回南北方向红灯、东西方向绿灯。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB结构体与对象编程:构建面向对象的应用程序,提升代码可维护性和可扩展性

![MATLAB结构体与对象编程:构建面向对象的应用程序,提升代码可维护性和可扩展性](https://picx.zhimg.com/80/v2-8132d9acfebe1c248865e24dc5445720_1440w.webp?source=1def8aca) # 1. MATLAB结构体基础** MATLAB结构体是一种数据结构,用于存储和组织相关数据。它由一系列域组成,每个域都有一个名称和一个值。结构体提供了对数据的灵活访问和管理,使其成为组织和处理复杂数据集的理想选择。 MATLAB中创建结构体非常简单,使用struct函数即可。例如: ```matlab myStruct
recommend-type

详细描述一下STM32F103C8T6怎么与DHT11连接

STM32F103C8T6可以通过单总线协议与DHT11连接。连接步骤如下: 1. 将DHT11的VCC引脚连接到STM32F103C8T6的5V电源引脚; 2. 将DHT11的GND引脚连接到STM32F103C8T6的GND引脚; 3. 将DHT11的DATA引脚连接到STM32F103C8T6的GPIO引脚,可以选择任一GPIO引脚,需要在程序中配置; 4. 在程序中初始化GPIO引脚,将其设为输出模式,并输出高电平,持续至少18ms,以激活DHT11; 5. 将GPIO引脚设为输入模式,等待DHT11响应,DHT11会先输出一个80us的低电平,然后输出一个80us的高电平,
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。