基于STC89C52单片机的模数转换
基于STC89C52单片机的数字温度计(附源代码,完美实现)

基于STC89C52单片机的数字温度计学院:信息科学与工程学院专业:电子信息科学与技术一、摘要温度的检测是工业生产中比较典型的应用之一,随着传感器在生产和生活中的更加广泛的应用,利用新型数字温度传感器实现对温度的测试与控制得到更快的开发。
本文设计了一种基于STC89C52单片机的温度检测系统,该系统将温度传感器DS18B20接在控制器的端口上,对温度进行采集,将采集到的温度值显示在1602液晶屏上。
经实验测试表明,该系统设计和布线简单,结构紧凑,有可读性高,反应速度快,测量准确,抗干扰能力强,性价比高,扩展方便等优点,具有关阔的应用前景。
关键词:STC89C52 数字温度计 DS18B20二、前言随着人民生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便是不可否定的,其中数字温度计就是一个典型的例子。
单片机控制温度检测系统的温感系统主要是DS18B20芯片,该芯片由一根总线控制,电压范围为3.0v--5.5v。
DS18B20具有测温方便、测温范围广、测温精度高等特点。
出于对此类问题的探索,我们设计并制作了此温度检测系统。
本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确。
其输出温度采用数字显示,主要用于对测温比较准确的场所,该设计控制器模块主要使用STC89C52单片机,测温传感模块使用DS18B20;显示模块使用1602液晶显示屏,可以只管、准确的显示所测温度值。
三、系统组成及工作原理3.1、总体设计方案经分析,将系统分为两个部分,一个是由温度传感器DS18B20组成的检测部分,另一个是由单片机和1602液晶组成的主控与显示部分。
如图所示DS18B20将检测到的数据送到单片机,单片机对接收到的数据进行处理并送到1602显示,6V电源给各个部分供电。
3.2系统单元的选择与论证3.2.1单片机控制模块的选择与论证方案一:采用XC9000系列的FPGA。
基于STC89C52单片机的多功能智能台灯设计

基于STC89C52单片机的多功能智能台灯设计作者:***来源:《电脑知识与技术》2020年第18期摘要:随着科技的不断发展,各类台灯产品也随着走向智能化。
该设计介绍一种基于STC89C52单片机的多功能智能台灯设计,具有自适应调光、自动/手动调节切换、坐姿纠正提示、定时提醒等功能,并能实现“人来开灯、人走关灯”的智能控制,使台灯的使用更加智能与人性化,并实现环保节能的效果。
该设计给出了详细的方案、硬件设计及软件设计流程,对系统的原理及设计过程进行了深入解析,并通过Proteus与Keil软件的仿真调试分析及实物调试分析,验证了系统的正确性与可靠性。
关键词:智能台灯;单片机;自动调光;坐姿纠正;定时提醒中图分类号:TP274 文献标识码:A文章编号:1009-3044(2020)18-0198-02开放科学(资源服务)标识码(OSID):1 背景随着社会的进步和科技的发展,人们对照明的追求从单一的追求亮度提高到对灯光的舒适度、对视力的影响、功能多样化、智能化等方面的转变。
台灯在我们生活中使用广泛,但是普通台灯由于光线单一、缺乏智能按钮开关操作,无法实现人们对台灯的智能化需求。
特别是对青少年而言,由于学习需要较长用眼时间,青少年近视比例也越来越高,更需要一款可以保护青少年视力的多功能智能台灯。
本文介绍的这款智能台灯,用户可以主动调节亮度、自动开关灯,且能及时提醒用户纠正坐姿、保护视力,并能实现手动自动切换控制。
2 设计方案本智能台灯系统的总体框架如图1所示,主要由单片机、时钟电路、复位电路、人体感应输入模块、按键输入模块、光敏检测及其模数转换电路、LED台灯电路、指示灯电路等部分组成。
智能台灯的系统功能主要包括:1)人体感应自动开关灯。
当人靠近台灯,即距离在40cm-llOcm之间时台灯会亮;当人离开1分钟后台灯自动熄灭。
2)自适应亮度调节。
能自动根据环境光线的强弱变化进行亮度调节,达到环保节能效果。
一种基于STC89C52单片机的便携式电子秤设计

一种基于STC89C52单片机的便携式电子秤设计电子秤在日常生活中广泛应用,尤其在超市、货运、厨房等场景中起到了不可或缺的作用。
本文将介绍一种基于STC89C52单片机的便携式电子秤设计,以满足人们对便携、精确、易用的电子秤的需求。
1. 简介电子秤是一种利用传感器测量物体重量的设备。
传统的机械秤存在读数不准确、不易携带等问题,而基于单片机的电子秤则具备了更高的精确度和便携性。
2. 设计原理该电子秤的设计原理是利用压力传感器测量物体受力变化,然后将受力信号通过模拟电路转换为电压信号,再由单片机进行模拟数字转换(ADC)并进行计算,最终得出物体的重量。
3. 硬件设计3.1 单片机选择本设计采用STC89C52单片机作为主控芯片,其具备高性能、低功耗的优势,并且具备8位数据总线、32KB的闪存等特点,非常适用于小型应用。
3.2 传感器选择为了实现高精度的重量测量,我们选用了一款高精度的压力传感器。
该传感器具备良好的线性度和稳定性,能够准确地测量重量变化。
3.3 电路设计电路设计包括模拟电路和数字电路两部分。
模拟电路将传感器输出的模拟信号转换为电压信号,再经过条件放大后输入到单片机的模拟转换电路。
数字电路主要由单片机、LCD显示屏和按键等组成,实现数据处理和人机交互功能。
4. 软件设计4.1 硬件初始化在软件设计中,首先需要对硬件进行初始化设置。
通过配置单片机的GPIO口、中断、计时器等功能来实现对各个硬件模块的控制。
4.2 模拟转换和数据处理通过单片机提供的模拟数字转换(ADC)功能,将模拟电压信号转换为数字信号。
然后,通过数据处理算法对数字信号进行滤波和校准,得出准确的重量数据。
4.3 显示和人机交互使用LCD显示屏来展示测量结果,并增加按键功能,方便用户进行重量锁定、切换单位等操作。
同时,还可以通过串口通信将数据传输到其他设备。
5. 功能拓展在基本功能实现的基础上,可以对电子秤进行一些功能扩展。
例如,增加存储功能,记录每次测量的重量数据;增加串口通信功能,方便与其他设备进行数据交互;增加温湿度传感器等,实现多功能集成。
基于单片机STC89C52的直流电机PWM调速控制系统

第一章:前言Pwm 电机调速原理对于电机的转速调整,我们是采用脉宽调制(PWM)办法,控制电机的时候,电源并非连续地向电机供电,而是在一个特定的频率下以方波脉冲的形式提供电能。
不同占空比的方波信号能对电机起到调速作用,这是因为电机实际上是一个大电感,它有阻碍输入电流和电压突变的能力,因此脉冲输入信号被平均分配到作用时间上,这样,改变在始能端EN1 和EN2 上输入方波的占空比就能改变加在电机两端的电压大小,从而改变了转速。
此电路中用微处理机来实现脉宽调制,通常的方法有两种:(1)用软件方式来实现,即通过执行软件延时循环程序交替改变端口某个二进制位输出逻辑状态来产生脉宽调制信号,设置不同的延时时间得到不同的占空比。
(2)硬件实验自动产生PWM 信号,不占用CPU 处理的时间。
这就要用到STC89C52的在PWM模式下的计数器1,具体内容可参考相关书籍。
51 单片机PWM 程序产生两个PWM,要求两个PWM 波形占空都为80/256,两个波形之间要错开,不能同时为高电平!高电平之间相差48/256,PWM 这个功能在PIC 单片机上就有,但是如果你就要用51 单片机的话,也是可以的,但是比较的麻烦.可以用定时器T0来控制频率,定时器T1 来控制占空比:大致的的编程思路是这样的:T0 定时器中断是让一个I0口输出高电平,在这个定时器T0的中断当中起动定时器T1,而这个T1 是让IO 口输出低电平,这样改变定时器T0 的初值就可以改变频率,改变定时器T1 的初值就可以改变占空比。
前言:直流电机的定义:将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。
近年来,随着科技的进步,直流电机得到了越来越广泛的应用,直流具有优良的调速特性,调速平滑,方便,调速范围广,过载能力强,能承受频繁的冲击负载,可实现频繁的无极快速起动、制动和反转,需要满足生产过程自动化系统各种不同的特殊要求,从而对直流电机提出了较高的要求,改变电枢回路电阻调速、改变电压调速等技术已远远不能满足现代科技的要求,这是通过 PWM 方式控制直流电机调速的方法就应运而生。
STC89C52单片机测试报告

STC89C52单片机调试报告The debugging report of STC89C52MCU姓名:***专业:电子信息工程时间:2011年8月2日STC89C52单片机调试报告摘要:通过这次对单片机最小系统的焊接与调试,我对单片机内部结构有了深入的了解,并且学会了利用单片机扩展其他模块,对单片机的外围器件已经能熟练地操作,自己亲自焊接与调试,发现了自己画的PCB 板有许多问题,经过不断的调试,最后顺利完成了52单片机基本外围器件的调试和扩展,这次52单片机外围器件的调试为我以后参加比赛奠定了基础。
【本科组】1.技术讨论:STC89C52是一种八位的单片机,共40个引脚,五个中断源,三个内部中断,分别为定时器0,定时器1,串口中断,两个外部中断,分别为外部中断0和外部中断1,4个双向的I/O口可以用来扩展外部器件和存储器。
除此之外,利用单片机的ALE和PSEN引脚也可以扩展外部存储器。
如果外部器件需要时钟信号,可以利用单片机的定时器作外部器件的时钟,由于单片机正常工作的时候ALE 引脚会输出6分频的方波,所以时钟信号也可以接单片机的ALE引脚。
2.技术路线:我用的PCB板是自己画的,板子上除了STC89C52单片机主控芯片外,主要模块有:四位数码管,两位数码管,蜂鸣器,虚拟串口,矩阵键盘,电源指示灯,时钟芯片DS1302,温度传感器DS18B20,12864液晶,诺基亚液晶,除此之外,我利用单片机外围引脚的排针扩展了ADC0809,DS18B20多点测温。
3.硬件设计:3.1数码管部分采用的是四位共阴数码管,段选通过单片机的P2口控制,位选通过P0.4-P0.7控制,驱动用的是8050NPN数码管,R5-R8的作用是限流,防止电流过大烧坏数码管,R1-R4的作用也是限流作用,防止电流过大烧坏单片机。
3.2复位电路单片机的第九脚只要出现连续两个机器周期以上的高电平就恢复位,复位电路上电容采用的是10UF,电阻中的阻值是10K。
基于STC89C52单片机智能教室灯光控制系统设计

基于STC89C52单片机智能教室灯光控制系统设计一、概述随着科技的快速发展和智能化时代的到来,人们对于教室灯光控制系统的要求也越来越高。
传统的教室灯光控制系统往往存在操作不便、能耗较高以及无法根据环境自动调节等问题,这既影响了教学质量,也增加了能源浪费。
设计一种基于STC89C52单片机的智能教室灯光控制系统具有重要的现实意义和应用价值。
本系统以STC89C52单片机为核心控制器,结合传感器技术、无线通信技术以及智能控制算法,实现对教室灯光的智能化控制。
系统能够实时监测教室内的光照强度、人员分布等信息,并根据这些信息自动调节灯光亮度和开关状态,从而营造一个舒适、节能的教学环境。
具体来说,本系统通过光照传感器实时监测教室内的光照强度,当光照强度低于设定阈值时,系统会自动开启灯光反之,则关闭或调低灯光亮度。
同时,系统还配备了人体红外传感器,用于检测教室内的人员分布情况,当教室内无人时,系统会自动关闭所有灯光,实现节能降耗。
本系统还支持远程控制功能,用户可以通过手机APP或电脑端软件对教室灯光进行远程操控,方便灵活。
同时,系统还具备故障检测和报警功能,一旦发现异常情况,会及时发出警报并通知管理人员进行处理。
基于STC89C52单片机的智能教室灯光控制系统能够有效解决传统教室灯光控制存在的问题,提高教学环境的舒适度和节能性,具有重要的推广和应用价值。
1. 教室灯光控制的重要性教室灯光控制作为现代教育环境中的重要组成部分,其重要性不容忽视。
适宜的灯光环境能够直接影响学生的学习效率和视力健康。
过亮或过暗的灯光都可能造成学生的视觉疲劳,甚至引发近视等视力问题。
合理控制教室灯光,确保光线柔和、均匀且亮度适中,对于保护学生视力、提高学习效率至关重要。
智能教室灯光控制系统能够实现能源的有效管理和节约。
传统的教室灯光控制方式往往存在能源浪费的现象,如无人时灯光依然开启、光线充足时仍使用高亮度照明等。
而智能灯光控制系统能够根据教室内的光线强度和人员活动情况自动调节灯光亮度和开关状态,从而实现能源的智能管理和节约。
基于STC89C52单片机的简易数字电压表设计【毕业设计

存档编号华北水利水电大学North China University of Water Resources and Electric Power 毕业设计题目基于单片机的数字电压表设计学院信息工程学院专业通信工程姓名学号 200912303指导教师完成时间 2013年5月20日教务处制目录摘要 (I)Abstract (II)绪论...................................................................................................................... I II 一设计背景................................................................................................ I II 二设计意义. (V)第一章数字电压表 (1)1.1 数字电压表的优点 (1)1.2 数字电压表发展趋势 (1)1.3 设计平台 (2)1.3.1 KEIL C51开发平台 (2)1.3.2 Proteus 7 Professional设计软件 (2)第二章总体设计方案 (4)2.1数字电压设计的两种方案 (4)2.1.1 由数字电路及芯片构建 (4)2.1.2 由单片机系统及A/D 转换芯片构建 (4)2.2 设计要求 (5)2.3 技术要求 (5)2.4 设计方案 (5)第三章硬件简介 (7)3.1 本设计单片机的选择 (7)3.1.1常用单片机的特点比较 (7)3.1.2 单片机的选择 (7)3.1.3 STC89C52单片机介绍 (8)3.2 本设计显示器件选择 (13)3.2.1 常用显示器件简介 (13)3.2.2 显示器件的选择 (14)3.2.3 1602字符型LCD简介 (14)3.3A/D芯片 (19)3.3.1常用的A/D芯片 (19)3.3.2 ADC0809芯片 (20)第四章接口电路 (23)4.1 显示电路 (23)4.2 ADC0809与单片机接口电路 (23)第五章硬件电路系统模块设计 (25)5.1 总电路模块 (25)5.2 硬件系统电路简介 (25)第六章系统软件设计 (26)6.1 主程序 (26)6.2 A/D转换子程序 (26)6.3 显示子程序 (27)第七章调试及性能分析 (28)7.1 调试与测试 (28)7.2 性能分析 (28)总结 (30)参考文献 (31)致谢 (33)附录 (34)附录I(外文翻译) (34)外文译文 (44)附录II(任务书) (52)附录III(开题报告) (54)附录IV(图表) (57)I Proteus仿真图 (57)II 硬件总电路图 (58)III 实物图 (59)附录V(程序清单) (60)摘要随着时代的进步,用指针式万用表测量小幅度直流电压已经显得有些不太方便。
基于STC89C52单片机的计算器

基于STC89C52单片机的计算器一、引言计算器作为一种常见的电子设备,经常被人们用于日常的数学计算。
本文将介绍一种基于STC89C52单片机的计算器的设计与实现。
该计算器具有基本的四则运算功能,并且支持浮点数的运算。
二、硬件设计1.单片机选择本文选择STC89C52单片机作为计算器的核心处理器。
STC89C52是基于8051架构的单片机,具有强大的计算和控制能力,适合用于计算器的设计。
2.显示器设计本文选用16x2LCD液晶显示器作为计算器的显示器。
液晶显示器具有容量小、功耗低、反射型等优点,非常适合计算器的显示要求。
3.按键设计本文选用矩阵按键设计。
通过矩阵按键设计,可以设计出较多的按键功能,并且能够节省IO口的使用。
4.电源设计计算器使用直流电源供电,可以选择使用电池或者外部电源适配器供电。
三、软件设计计算器的软件设计主要包括界面设计和计算功能设计两个方面。
1.界面设计计算器的界面设计主要包括显示数字和调用函数。
a.显示数字通过将用户输入的数字显示到LCD液晶屏上,实现数字的显示功能。
液晶屏可以显示16个字符,可以一次性显示一个较长的数字。
b.调用函数通过监测用户按键的输入,调用相应的函数实现计算功能。
可以设置加、减、乘、除等函数,并通过按键的组合调用相应的函数。
2.计算功能设计计算器的计算功能设计主要包括四则运算和浮点数运算两个方面。
a.四则运算通过四个函数实现加、减、乘、除的功能。
在用户按下相应的运算符号键后,调用相应的函数对输入的数字进行相应的运算,并将结果显示在LCD液晶屏上。
b.浮点数运算在用户输入的数字或运算结果存在小数的情况下,可以设计相应的浮点数运算函数,通过运算可以得到带有小数点的结果,并将结果显示在LCD液晶屏上。
四、系统实现五、总结基于STC89C52单片机的计算器设计和实现包括硬件设计和软件设计两个方面。
通过合理的硬件设计和功能完善的软件设计,可以实现一款功能强大的计算器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
/****************************主程序******************************************/
main()
{ sys_initial();
//系统初始化
while(1)
//进入主循环
{
if(flag==1) //判断是否收到了上位机发来的启动信号即是否产生了接收中断
}
/*************************启动 A/D 转换***************************************/
void AD_start()
{
WR=1; _nop_();
//通过送进低电平来启动 AD 转换 //延时
WR=0;
_nop_();
WR=1;
}
/**********************打开 AD 芯片,读取数值***********************************/
//启动 AD 转换
delay(10); AD_get();
//延时100us左右等待 AD 转换接收 //读取 AD 转换结果
bai=DATA/100; //将转换后的十进制0-255分解成三位数
shi=(DATA%100)/10;
ge=DATA%10;
value=5.0*DATA/256; //将数字量换算成模拟量准备发送给上位机
//显示十位数
dual=1; P0=table[ge]; dual=0; P0=0xff; wela=1; P0=0x7b; wela=0; delay(5);
//显示个位数
} /*****************************系统初始化**************************************/
{
dual=1;
//显示百位数
基于 STC89C52RC 单片机的 A/D 转换测试及串口数据及数码管显示
安徽工业大学 自动化系 刘昌元
P0=table[bai]; dual=0; P0=0xff; wela=1; P0=0x7e; wela=0; delay(5);
dual=1; P0=table[shi]; dual=0; P0=0xff; wela=1; P0=0x7d; wela=0; delay(5);
void delay(uint a)
{
uint i,j;
for(i=a;i>0;i--)
for(j=110;j>0;j--)
;
}
/**************三位数循环扫描显示函数***************************************/
void display(uchar bai,uchar shi,uchar ge)
for(i=0;i<20;i++)
//数码管循环显示转换后的数值0-255
display(bai,shi,ge); TI=1;
//把模拟量电压发送回上位机显示
printf("The voltage is %f V\n",value);
while(!TI);
TI=0;
}
}
}
ES=1;
//打开串口中断,接收上位机发送来的字符
uchar code table[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
/*********************延时函数********************************************/
{
flag=0; //标志位清 0 ES=0; //关闭串口中断
TI=1;
//发送中断标志位置1准备向上位机发送字符串
switch(data1) //判断从上位机收到的数据是否是启动信号
{ case 1ቤተ መጻሕፍቲ ባይዱputs("Turn on AD\n"); //接收到1,则启动 AD 转换
break;
default :puts("Erro!");
三:程序测试记录: 当 单 片 机 接 收 到 处 数 字 1 之 外 的 其 他 字 符 时 由 单 片 机 返 回 Erro! 给 上 位 机
基于 STC89C52RC 单片机的 A/D 转换测试及串口数据及数码管显示
安徽工业大学 自动化系 刘昌元
当单片机收到上位机发来的1时,单片机发送“Turn on AD!”,之后便开始显示对应的模量 电压值。例如,数码管上显示:117 ,上位机对应的显示“The voltage is 2.285156 V”
void AD_get()
{ P1=0xff; RD=1;
//P1 口置 1,作为数据输入口使用 //通过送进低电平信号来打开 ADC0804 数据通道
_nop_();
RD=0;
_nop_(); DATA=P1;
//将 P1 口的数据存到变量 DATA 中
RD=1;
//关闭 ADC0804 数据通道
{ RI=0;
//当单片机通过串行口收到 PC 机发来字符时进中断,清接收中断标志位
基于 STC89C52RC 单片机的 A/D 转换测试及串口数据及数码管显示
安徽工业大学 自动化系 刘昌元
data1=SBUF; //把数据缓冲器中数据存到变量 data1 中。
flag=1;
//自定义变量标志位置 1
基于 STC89C52RC 单片机的 A/D 转换测试及串口数据及数码管显示
安徽工业大学 自动化系 刘昌元
一:测试目的: 在工业控制和检测等过程中经常会用到来自传感器或变送器等装置的模拟量信号,所有的这 些信号都需要经过模数转换后方能送进单片机处理获得后续系统控制的其他信号,因此模数 转换就显得尤为重要,现在很多单片机内部集成有 A/D 模块,直接利用它自带的模块和寄 存器编程就可以实现,但是对于有些价格比较便宜但性能优越,基本满足控制要求的控制器 却往往不自带 A/D 模块,此时就需要我们自己来组建 A/D 转换电路。此处本人采用的是 ADC0804LCN,售价一般在 6 元左右,性能还不错,搭建电路也比较方便,但此芯片使用 熟练后大家可以再去尝试多通道的 ADC0809,控制方式基本上差不多,在搭建电路时芯片的 时钟信号显得尤为重要,这是我在实际测试过程最大的体会,要保证转换器的可靠工作,它 的 CLCK 信号特别要注意,ADC0804 可以利用电阻和电容的自激振荡;来产生时钟信号, ADC0809 可以使用 51 系列单片的 ALE 引脚的 4 分频来提供时钟信号,具体情况需要参考 芯片的手册和自己搭建的电路,下面我就我自己测试的程序来大致讲一下转换采样过程。此 处我是将 0-5V 的模拟电压量转换成数字量后在数码管上显示出来,ADC0804 是 8 位的采样 芯片,对应的数字量应该为 0x00-0xFF,十进制的 0-255 同时将其运算成对应的模拟量通过 串行口发送回 PC 机显示出来,PC 机作为控制机发送字符来选择是否启动模数转换。
break;
} while(!TI);
//等待字符串发送结束
基于 STC89C52RC 单片机的 A/D 转换测试及串口数据及数码管显示
安徽工业大学 自动化系 刘昌元
TI=0;
//发送标志位清0
} }
if(data1==1) //判断是否是启动 AD 转换信号
{
while(1)
{ AD_start();
//启动定时器 1 //串行口选择方式 1 收发,8 位数据位,1 位起始位,1 位停止位。 //打开串口中断 //打开总中断
}
/*****************************接收中断函数**********************************/
void receive()interrupt 4
void sys_initial()
{
EA=0;
//关闭总中断
TMOD=0x20; //启用定时器 1 做破特率发生器,工作于方式 2,计数初值自动重装
TH1=0xfd; TL1=0xfd;
//装定时器 1 高八位计数初值 //装定时器 1 低八位计数初值
TR1=1; SCON=0x50; ES=1; EA=1;
二:测试程序
#include<reg52.h>
// 头文件包含
#include<intrins.h>
#include<stdio.h>
#define uint unsigned int //宏替换定义
#define uchar unsigned char
sbit dual=P2^6;
//两个锁存器的控制端
sbit wela=P2^7;
uchar data1,flag;
//全局变量定义
uchar i,j,bai,shi,ge,DATA,AD_flag;
uchar b;
uchar n=0;
float value;
/********************数码管显示对应的查表值*******************************/