8086微处理器LCD及LED显示的C语言程序设计

版权申诉
5星 · 超过95%的资源 1 下载量 8 浏览量 更新于2024-10-07 收藏 2KB RAR 举报
资源摘要信息:"8086 LCD与LED灯的C语言程序设计" 知识点一: 8086微处理器设计 8086微处理器是英特尔公司在1978年推出的一款16位微处理器,广泛应用于早期的个人计算机中。8086的设计包括了CPU内部结构、指令集、寄存器组、中断系统、寻址模式等关键组件。在设计8086的心片时,需要对这些组件有深入的了解和掌握。特别是针对外设的操作,如LED灯的控制,需要利用8086的IO指令集。 知识点二: LCD显示技术 LCD(Liquid Crystal Display,液晶显示)是一种利用液晶材料的电光效应来显示信息的技术。在8086微处理器的项目中,LCD屏幕通常被用于显示信息,如文字、图形等。使用C语言操作LCD,需要编写特定的函数来控制LCD的初始化、数据输入、显示等功能。这些函数通常会涉及到LCD的接口协议和控制指令。 知识点三: LED灯控制 LED灯是一种发光二极管,具有响应速度快、耗电量小、使用寿命长等特点。在8086微处理器项目中,LED灯可以被用作指示灯或者简单的输出设备。通过编写C语言程序,可以控制LED灯的亮灭,从而实现对微处理器工作状态的指示。具体的控制方式通常涉及对微处理器的特定IO端口进行读写操作。 知识点四: C语言在微处理器编程中的应用 C语言以其接近硬件、可移植性好、功能强大等特点,成为微处理器编程的首选语言。在针对8086微处理器的开发中,C语言可以被用来编写程序,以实现对硬件的操作和控制。C语言编写的程序可以编译成机器码,直接在8086处理器上运行,进行LED灯控制和LCD显示等任务。 知识点五: 8086汇编语言与C语言结合 虽然可以直接使用C语言来编写程序,但有时候为了实现更高效的控制,可能需要结合使用8086汇编语言。特别是在进行硬件操作和优化时,汇编语言提供了更为精细的控制能力。在项目中,可能需要在C语言程序中嵌入汇编代码片段,以便直接控制硬件。 知识点六: 外部库文件的使用 在文件列表中,提到了“Lcd.h”这一头文件,这表明程序可能引用了外部库来简化LCD的控制。在C语言开发中,使用库文件可以让开发者不必关心底层细节,只需调用库中定义的函数就可以实现特定功能。这种做法能够提高开发效率,并且易于维护和更新。 知识点七: 文件压缩与解压缩 给定的文件信息中包含了“rar”这一压缩格式,表明原始资源文件可能被压缩打包成rar文件。在使用这些资源之前,需要解压缩rar文件。了解和掌握常见的文件压缩与解压缩工具的使用,对于获取和利用这些资源至关重要。 综合以上知识点,可以看出本资源涉及了8086微处理器硬件控制、C语言编程、LCD显示技术、LED灯控制等多方面的知识内容。通过对这些知识点的学习和理解,可以掌握如何利用C语言与8086微处理器结合,进而控制LCD显示和LED灯,完成相关的硬件项目开发。

#include "prepare_ogm.hpp" namespace senior { namespace guardian { namespace prepare { std::string PrepareOgm::Name() { return "Prepare Ogm Element"; } void PrepareOgm::Initiate() {} void PrepareOgm::Process(data::DataFrame& his, data::DataFrame& cur) { if (cur.source_ogm_points_.is_invalid()) return; if (cur.source_visual_ogm_points_.is_valid()) { cur.source_ogm_points_.insert(cur.source_ogm_points_.end(), cur.source_visual_ogm_points_.begin(), cur.source_visual_ogm_points_.end()); } if (cur.source_higher_ogm_points_.is_valid()) { cur.source_ogm_points_.insert(cur.source_ogm_points_.end(), cur.source_higher_ogm_points_.begin(), cur.source_higher_ogm_points_.end()); } auto& predict_path = cur.monitor_data_.mutable_predict_path(); predict_path.GenerateBoundary(cur); cur.AABox2d_ = predict_path.vehicle_AABox2d_; // if (!his.monitor_data_.is_need_to_take_over()) { // LOG(INFO)<<"1"; cur.AABox2d_.SetWidth(cur.AABox2d_.width() + 1.0); cur.AABox2d_.SetLength(cur.AABox2d_.length() + 1.0); // } std::vector<math::Vec2d> corner_points_; cur.AABox2d_.GetAllCorners(&corner_points_); auto& polygon2d = predict_path.tractor_polygon2d_; math::Vec2d temp; VoxelGrid filter_; common::Time now = common::Time::Now(); for (auto& point : cur.source_ogm_points_) { temp.set_x(point.x()); temp.set_y(-point.y()); if (cur.AABox2d_.IsPointIn(temp)) { cur.AABB_ogm_points_.emplace_back(point); } } cur.guardian_diagnose_["Prepare_PrepareOgm_AABox_filter"] = std::to_string((common::Time::Now() - now).ToSecond() * 1000); now = common::Time::Now(); filter_.VoxelGrid_ApplyFilter( cur.AABB_ogm_points_, cur.ogm_points_, corner_points_, 0.1, 0.1, 0); cur.guardian_diagnose_["Prepare_PrepareOgm_VoxelGrid_ApplyFilter"] = std::to_string((common::Time::Now() - now).ToSecond() * 1000); cur.ogm_points_.set_stamp(cur.source_ogm_points_.stamp()); cur.ogm_points_.set_time(cur.source_ogm_points_.time()); cur.ogm_points_.set_delay_time(cur.source_ogm_points_.delay_time()); cur.ogm_points_.set_valid(); } } // namespace prepare } // namespace guardian } // namespace senior 改变为C语言程序

2023-06-13 上传