用51单片机的LCD1602显示小车每行驶一圈的圈数和此时的速度,写出代码并解释每一行代码的含义

时间: 2024-03-03 14:52:47 浏览: 18
好的,以下是用51单片机的LCD1602显示小车每行驶一圈的圈数和此时的速度的代码,以及每一行代码的解释: ```c #include<reg52.h> #include<intrins.h> #include<stdio.h> #include<math.h> #include"lcd1602.h" #define uchar unsigned char #define uint unsigned int uchar speed; //速度变量 uint count; //计数变量 void main() { InitLcd1602(); //初始化LCD1602 TMOD=0x05; //设置定时器0为工作方式1,定时器1为工作方式2 TH0=0; //定时器0初始值为0 TL0=0; TH1=0; //定时器1初始值为0 TL1=0; ET0=1; //使能定时器0的中断 EA=1; //开总中断 TR0=1; //启动定时器0 while(1) { WriteLcd1602(0x80,0); //显示第一行 printf("count:%d ",count); //显示圈数 WriteLcd1602(0x8F,0); //光标移动到第一行最后一个字符 printf("V=%d.%d km/h",speed/10,speed%10); //显示速度 } } void isr_t0() interrupt 1 { count++; //计数器加1 TH0=(65536-50000)/256; //定时器0赋初值 TL0=(65536-50000)%256; speed=65536/(TH1*256+TL1); //计算速度 TH1=0; //定时器1赋初值 TL1=0; } ``` 代码解释: 1. `#include<reg52.h>`:头文件,包含单片机寄存器定义等信息。 2. `#include<intrins.h>`:头文件,包含一些汇编指令的函数,如 `_nop_()`。 3. `#include<stdio.h>`:头文件,包含输入输出函数的定义。 4. `#include<math.h>`:头文件,包含数学函数的定义。 5. `#include"lcd1602.h"`:头文件,包含LCD1602的初始化函数等自定义函数的定义。 6. `#define uchar unsigned char`:宏定义,将 `uchar` 替换为 `unsigned char`。 7. `#define uint unsigned int`:宏定义,将 `uint` 替换为 `unsigned int`。 8. `uchar speed;`:定义变量 `speed`,用于保存速度。 9. `uint count;`:定义变量 `count`,用于保存计数器的值。 10. `void main()`:主函数。 11. `InitLcd1602();`:调用初始化函数,初始化LCD1602。 12. `TMOD=0x05;`:设置定时器0为工作方式1,定时器1为工作方式2。 13. `TH0=0; TL0=0; TH1=0; TL1=0;`:定时器0和定时器1的初始值都为0。 14. `ET0=1; EA=1;`:使能定时器0的中断和总中断。 15. `TR0=1;`:启动定时器0。 16. `while(1)`:死循环,程序将在此处一直循环执行。 17. `WriteLcd1602(0x80,0);`:将光标移动到第一行第一个字符的位置。 18. `printf("count:%d ",count);`:在LCD上显示当前圈数。 19. `WriteLcd1602(0x8F,0);`:将光标移动到第一行最后一个字符的位置。 20. `printf("V=%d.%d km/h",speed/10,speed%10);`:在LCD上显示当前速度。 21. `void isr_t0() interrupt 1`:定时器0的中断服务函数。 22. `count++;`:计数器加1。 23. `TH0=(65536-50000)/256; TL0=(65536-50000)%256;`:定时器0赋初值,使其每隔50ms中断一次。 24. `speed=65536/(TH1*256+TL1);`:计算速度,公式为速度=轮子周长/时间间隔,这里采用定时器1的时间间隔来计算速度。 25. `TH1=0; TL1=0;`:定时器1赋初值,使其每隔一段时间计算一次速度。

相关推荐

最新推荐

recommend-type

基于FPGA的LCD1602动态显示---Verilog实现

FPGA驱动LCD1602,其实就是通过同步状态机模拟单片机驱动LCD1602,由并行模拟单步执行,状态过程就是先初始化LCD1602,然后写地址,最后写入显示数据。
recommend-type

STM32单片机驱动LCD1602液晶程序

最近看到网上很多人都在找STM32单片机驱动LCD1602液晶程序,有的人写的比较复杂刚好自己最近也在搞STM32...就花了点时间写出一份仅供参考和学习。单片机IO驱动能力弱这里用的是10K上拉电阻,也可以采用74HC245来驱动。
recommend-type

基于51单片机的超声波避障小车设计(含Proteus仿真)

超声波避障程序随处可见,基于51单片机的超声波避障小车也很成熟,但是完整的Proteus仿真并不容易找到开源资料。 这次主要给大家分享其Proteus仿真部分。 涉及到的模块有:超声波模块(hc-sr04)、L293D电机驱动器和...
recommend-type

####这是一篇对python的详细解析

python
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://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

用Spring boot和vue写一个登录注册界面

好的,这是一个比较常见的技术问题,我可以为您提供一些参考资料和思路。首先,您可以使用Spring Boot作为后端框架来处理用户认证和注册的逻辑,比如使用Spring Security实现用户登录认证。同时,您还需要设计相应的数据模型和数据库表结构来存储用户信息。在前端方面,您可以使用Vue.js作为框架来构建登录注册页面,使用Axios来发起API请求并和后端进行交互。当然,在实现过程中,还需要考虑一些具体细节,比如数据校验、安全性和用户体验等方面。希望这些信息能够帮助到您。
recommend-type

JSBSim Reference Manual

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

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依