基于51单片机数控直流电压源proteus仿真LCD显示+程序+设计报告+讲解视频

基于51单片机数控直流电压源proteus仿真LCD显示( proteus仿真+程序+设计报告+讲解视频)

仿真图proteus7.8及以上

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:S0072

讲解视频

基于51单片机数控直流电压源proteus仿真+程序+设计报告+讲解视频

1. 主要功能:

基于51单片机的数控电压源设计

1.单片机控制DA转换器使得输出电压为0-5V;

2.按键控制输出电压大小,一个按键控制电压值加,一个按键控制电压值减;

3.通过LCD1602显示输出的电压值;

4.使用DAC0832做DA转换;

需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。

img

以下为本设计资料展示图:

2. 讲解视频:

讲解视频包含仿真运行讲解和代码讲解

3. 仿真

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。开始仿真后LCD显示设置输出电压2.5V,实际输出2.19V。

img

可以通过按键设置输出的电压值。

4. 程序代码

使用keil4或者keil5编译,代码有注释,可以结合视频理解代码含义。

LCD1602显示部分代码

/*********************************************************
LCD1602部分
**********************************************************/
void delay_uint(uint i)
{
	while(i--);
}
/********************************************************************
* 名称 : write_com(uchar com)
* 功能 : 1602命令函数
* 输入 : 输入的命令值
* 输出 : 无
***********************************************************************/
void write_com(uchar com)
{
	e=0;
	rs=0;
	rw=0;
	P1=com;
	delay_uint(20);
	e=1;
	delay_uint(20);
	e=0;
}

/********************************************************************
* 名称 : write_data(uchar dat)
* 功能 : 1602写数据函数
* 输入 : 需要写入1602的数据
* 输出 : 无
***********************************************************************/
void write_data(uchar dat)
{
	e=0;
	rs=1;
	rw=0;
	P1=dat;
	delay_uint(20);
	e=1;
	delay_uint(20);
	e=0;	
}

/********************************************************************
* 名称 : write_sfm(uchar hang,uchar add,uchar date)
* 功能 : 设置当前行和列
* 输入 : 行,列
* 输出 : 无
***********************************************************************/
//void write_sfm(uchar hang,uchar add)
//{
//	if(hang==1)   			   //设置当前行
//		write_com(0x80+add);
//	else
//		write_com(0x80+0x40+add);	
//}

/********************************************************************
* 名称 : write_string(uchar hang,uchar add,uchar *p)
* 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示"ab cd ef" ,调用该函数如下
	 	 write_string(1,5,"ab cd ef;")
* 输入 : 行,列,需要输入1602的数据
* 输出 : 无
***********************************************************************/
void write_string(uchar hang,uchar add,uchar *p)
{
	if(hang==1)   
		write_com(0x80+add);
	else
		write_com(0x80+0x40+add);
		while(1)
		{
			if(*p == '\0')  break;
			write_data(*p);
			p++;
		}	
}

/********************************************************************
* 名称 : init_1602()
* 功能 : 初始化1602液晶 
* 输入 : 无
* 输出 : 无
***********************************************************************/
void init_1602()
{
	write_com(0x38);						//数据总线为8位,显示2行,5x7点阵
	write_com(0x0c);						//开显示,有光标,光标闪烁
	write_com(0x06);						//光标自动右移
	delay_uint(1000);						//等待设置完成
}

主函数

/********************************************************************
* 名称 : main()
* 功能 : mian函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void main()
{
    完整代码见文件下载链接
  uchar i=255;
  init_1602();
  write_string(1,1,'h');
  key_init();   //外部中断初始化
  temp=0x7D;
  sei();       //开总中断
  while(1)
  {
    ADIN = temp;	  //等待中断,实时保持输出
	DAC_cs=0;     // 选中芯片,低电平有效
    DAC_wr=0;    // 数据锁存器写选通输入线, 向 DAC0832芯片写入转换的数字量

    DAC_cs=1;    // 关闭等待DAC0832输出
    DAC_wr=1;    //锁存起来	  

   	 dis[8] = (temp*2%1000)/100+0x30; //百
	 dis[10] = (temp*2%100)/10+0x30;  //十
 	 dis[11] = temp*2%10+0x30; 
	 write_string(1,0,dis); 
	 	while(--i);
	while(--i);
	while(--i);
  }
}

5. 设计报告

7067字设计报告,内容包括硬件设计、软件设计、软硬件框图、调试、结论等

img

随着电子技术日新月异的进步,数控电压源在众多应用领域中的价值与作用日益显著,无论是工业自动化控制、教学实验演示、科研项目研究,还是电子产品测试和校准等方面,都展现出其无可替代的优势。鉴于此,本设计项目的核心目标是基于51系列单片机,在Proteus仿真平台上构建一个简易且功能完善的数控电压源系统。

该设计将充分利用Proteus强大的电路仿真功能和51单片机的灵活编程特性,实现对输出电压的精确数字化控制。具体功能包括:通过编程设定并实时调整输出电压值,确保电压输出范围0-5V且精度高;采用图形化界面进行人机交互,方便用户直观地设置和监控电压参数;此外,借助Proteus仿真平台,设计师可以在设计阶段就进行全面的功能验证和性能测试,减少实际硬件制作过程中的错误和成本,提高开发效率。总体而言,本设计旨在打造一款基于51单片机的简易数控电压源仿真模型,为相关领域的教学、学习及初步研发提供便捷高效的工具,进一步推动电子技术在各行业的深入应用和发展。

通过Proteus软件进行模拟测试,可以验证设计的可行性和正确性,从而缩短开发周期、降低开发成本。我们希望能够掌握相关的硬件和软件设计方法,为今后的学习和工作打下坚实的基础。同时,我们也希望能够通过这次设计,培养我们的团队协作能力和创新精神。

6. 设计资料内容清单&&下载链接

资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。

0、常见使用问题及解决方法–必读!!!!

1、程序

2、proteus仿真

3、功能要求

4、软硬件流程图

5、开题报告

6、设计报告

7、讲解视频

Altium Designer 安装破解

KEIL+proteus 单片机仿真设计教程

KEIL安装破解

Proteus元器件查找

Proteus安装

Proteus简易使用教程

单片机学习资料

相关数据手册

答辩技巧

设计报告常用描述

鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url

img

资料下载链接(可点击):

https://docs.qq.com/doc/DS1l0T3NKSGlubkpL

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/485205.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

37、Linux中Xsync数据同步备份工具

37、Linux中Xsync数据同步备份工具 一、介绍二、配置集群hostname三、修改xsync文件四、赋权五、安装Rsync六、验证一七、配置免密登录1、生成rsa密钥2、copy机器自身公钥到目标机器3、.ssh/文件目录赋权 八、验证二 ⚠️ 注:本文全程在普通用户下操作,…

基于spring boot的个人博客系统的设计与实现(带源码)

随着国内市场经济这几十年来的蓬勃发展,突然遇到了从国外传入国内的互联网技术,互联网产业从开始的群众不信任,到现在的离不开,中间经历了很多挫折。本次开发的个人博客系统,有管理员,用户,博主…

QT----基于QT的人脸考勤系统ubuntu系统运行,编译开发板

目录 1 Ubantu编译opencv和seetaface库1.1 Ubantu编译opencv1.2 Ubuntu编译seetaface1.3 安装qt 2 更改代码2.1 直接运行报错/usr/bin/ld: cannot find -lGL: No such file or directory2.2 遇到报错摄像头打不开2.3 修改部分代码2.4 解决中文语音输出问题 3 尝试交叉编译rk358…

QTabWidget的tabbar不同方向显示 文字方向设置 图标跟随变化 实现方式 qt控件绘制原理

先来看结果图:(参考博客:QTabWidget中tab页文本水平或垂直设置_pyqt tab_widget.settabposition(qtabwidget.west) 字体-CSDN博客) 从图中可知,"普通"是qt自己的样式,但是很明显,在垂…

SpringBoot Starter解析

conditional注解解析 介绍 基于条件的注解作用: 根据是否满足某一个特定条件决定是否创建某个特定的bean意义: Springboot实现自动配置的关键基础能力 常见的conditional注解 ConditionalOnBean: 当容器中存在某个Bean才会生效ConditionalOnMissingBean: 不存在某个Bean才会…

JavaEE企业级分布式高级架构师课程

教程介绍 本课程主要面向1-5年及以上工作经验的Java工程师,大纲由IT界知名大牛 — 廖雪峰老师亲自打造,由来自一线大型互联网公司架构师、技术总监授课,内容涵盖深入spring5设计模式/高级web MVC开发/高级数据库设计与开发/高级响应式web开发…

【ESP32S3 Sense接入百度在线语音识别】

视频地址: ESP32S3 Sense接入百度在线语音识别 1. 前言 使用Seeed XIAO ESP32S3 Sense开发板接入百度智能云实现在线语音识别。自带麦克风模块用做语音输入,通过串口发送字符“1”来控制数据的采集和上传。 步骤概括    (1) 在百度云控制端选择“语音…

【从零开始学习Redis | 第七篇】认识Redis底层数据结构

目录 前言: 动态字符串SDS: SDS的优势: IntSet: IntSet的特点: Dict: Dict的扩容: ​编辑 Dict的收缩: Rehash: Dict的特点: 总结&#xff1…

uniapp-Form示例(uviewPlus)

示例说明 Vue版本&#xff1a;vue3 组件&#xff1a;uviewPlus&#xff08;Form 表单 | uview-plus 3.0 - 全面兼容nvue的uni-app生态框架 - uni-app UI框架&#xff09; 说明&#xff1a;表单组建、表单验证、提交验证等&#xff1b; 截图&#xff1a; 示例代码 <templat…

C++入门:类和对象(上)

类和对象重点解析 1.类的定义1.类的访问限定符及封装1.C实现封装的方式2.访问限定符注意 3.封装 2.类对象模型2.1类对象存储方式2.2类对象的大小2.2.1结构体内存对齐原则2.2.2为什么要内存对齐 3.this指针3.1this指针的引出3.2this指针的特性3.3this指针的存储3.4this指针可以为…

Three.js 中的 OrbitControls 是一个用于控制相机围绕目标旋转以及缩放、平移等操作的控制器。

demo案例 Three.js 中的 OrbitControls 是一个用于控制相机围绕目标旋转以及缩放、平移等操作的控制器。下面是它的详细讲解&#xff1a; 构造函数: OrbitControls(object: Camera, domElement?: HTMLElement)object&#xff1a;THREE.Camera 实例&#xff0c;控制器将围绕…

Kafka快速入门及使用

入门 官网 简介 Kafka是一个分布式的流媒体平台应用&#xff1a; 消息系统日志收集用户行为追踪流式处理 特点 高吞吐量消息持久化高可靠性高扩展性 常用术语 Broker&#xff1a;集群中的服务器Zookeeper&#xff1a;服务管理Topic&#xff1a;主题&#xff0c;Kafka发…

Attention Is All You Need若如爱因斯坦的相对论,Transformer模型则堪称E=MC^2之等量公式

Transformer模型已经成为当前所有自然语言处理NLP的标配&#xff0c;如GPT&#xff0c;Bert&#xff0c;Sora&#xff0c;LLama&#xff0c;Grok等。假如《Attention Is All You Need》类比为爱因斯坦的侠义相对论&#xff0c;Transformer模型则堪称EMC^2之等量公式。 看过论文…

IDEA Android新建项目基础

title: IDEA Android基础开发 search: 2024-03-16 tags: “#JavaAndroid开发” 一、构建基本项目 在使用 IDEA 进行基础的Android 开发时&#xff0c;我们可以通过IDEA自带的新建项目功能进行Android应用开发基础架构的搭建&#xff0c;可以直接找到 File --> New --> …

数据库管理开发工具Navicat for MySQL Mac版下载

Navicat for MySQL&#xff08;Mac版&#xff09;是一款强大的数据库管理开发工具&#xff0c;专为MySQL设计。它提供直观的用户界面&#xff0c;支持数据建模、查询构建、数据传输等功能&#xff0c;帮助用户轻松管理数据库。其特点包括高效的数据处理能力、安全的数据传输机制…

【算法与数据结构】 C语言实现单链表队列详解

文章目录 &#x1f4dd;队列&#x1f320; 数据结构设计&#x1f309;初始化队列函数 &#x1f320;销毁队列函数&#x1f309;入队函数 &#x1f320;出队函数&#x1f309;获取队首元素函数 &#x1f320;获取队尾元素函数&#x1f309; 判断队列是否为空函数&#x1f309;获…

HTTPS:原理、使用方法及安全威胁

文章目录 一、HTTPS技术原理1.1 主要技术原理1.2 HTTPS的工作过程1.2.1 握手阶段1.2.2 数据传输阶段 1.3 HTTPS的安全性 二、HTTPS使用方法三、HTTPS安全威胁四、总结 HTTPS&#xff08;全称&#xff1a;Hyper Text Transfer Protocol over Secure Socket Layer&#xff09;&am…

ARM:按键中断

key_inc.c #include"key_inc.h"void key1_it_config(){//使能GPIOF外设时钟RCC->MP_AHB4ENSETR | (0x1<<5);//将PF9设置为输入模式GPIOF->MODER & (~(0x3<<18));//设置由PF9管脚产生EXTI9事件EXTI->EXTICR3 & (~(0XFF<<8));EXTI…

【HarmonyOS】ArkUI - 页面路由

一、概念 页面路由是指在应用程序中实现不同页面之间的跳转和数据传递。 案例&#xff1a;第一次使用某个购物应用&#xff0c;打开时肯定会是一个登录页&#xff0c;在登录成功以后&#xff0c;会跳转到首页&#xff0c;然后可能会去搜索&#xff0c;就会进入到搜索列表页&am…

掌握Python中re模块的正则表达式应用与技巧【第155篇—正则表达式】

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 掌握Python中re模块的正则表达式应用与技巧 Python 中的 re 模块是用于处理正则表达式的强…