STC89C52单片机开发板设计
STC89C52单片机学习开发板介绍
![STC89C52单片机学习开发板介绍](https://img.taocdn.com/s3/m/b418718855270722192ef7b8.png)
STC89C52单片机学习开发板介绍全套配置:1 .全新增强STC89C52 1个【RAM512字节比AT89S52多256个字节FLASH8K】2 .优质USB数据线 1条【只需此线就能完成供电、通信、烧录程序、仿真等功能,简洁方便实验,不需要USB 转串口和串口线,所有电脑都适用】3 .八位排线 4条【最多可带4个8*8 LED点阵,从而组合玩16*16的LED点阵】4 .单P杜邦线 8条【方便接LED点阵等】5 .红色短路帽 19个【已装在开发箱板上面,短路帽都是各功能的接口,方便取用】6 .实验时钟电池座及电池 1PCS7 .DVD光盘 1张【光盘具体内容请看页面下方,光盘资料截图】8 .全新多功能折叠箱抗压抗摔经久耐磨 1个【市场没有卖,专用保护您爱板的折叠式箱子,所有配件都可以放入】9 .8*8(红+绿)双色点阵模块 1片【可以玩各种各样的图片和文字,两种颜色变换显示】10.全新真彩屏SD卡集成模块 1个【请注意:不包含SD卡,需要自己另外配】晶振【1个方便您做实验用】12.全新高速高矩进口步进电机 1个【价格元/个】13.全新直流电机 1个【价值元/ 个】14.全新红外接收头 1个【价格元/ 个】15.全新红外遥控器(送纽扣电池) 1个【价格元/个】16.全新18B20温度检测 1个【价格元/只】17.光敏热敏模块 1个(已经集成在板子上)【新增功能】液晶屏 1个配件参照图:v1.0 可编辑可修改温馨提示:四点关键介绍,这对您今后学习51是很有帮助的)1.板子上各模块是否独立市场上现在很多实验板,绝大部分都没有采用模块化设计,所有的元器件密密麻麻的挤在一块小板上,各个模块之间PCB布线连接,看上去不用接排线,方便了使用者,事实上是为了降低硬件成本,难以解决各个模块之间的互相干扰,除了自带的例程之外,几乎无法再做任何扩展,更谈不上自由组合发挥了,这样对于后继的学习非常不利。
几年前的实验板,基本上都是这种结构的。
基于STC89C52单片机的计算器
![基于STC89C52单片机的计算器](https://img.taocdn.com/s3/m/244b4d9a32d4b14e852458fb770bf78a64293a5d.png)
基于STC89C52单片机的计算器一、引言计算器作为一种常见的电子设备,经常被人们用于日常的数学计算。
本文将介绍一种基于STC89C52单片机的计算器的设计与实现。
该计算器具有基本的四则运算功能,并且支持浮点数的运算。
二、硬件设计1.单片机选择本文选择STC89C52单片机作为计算器的核心处理器。
STC89C52是基于8051架构的单片机,具有强大的计算和控制能力,适合用于计算器的设计。
2.显示器设计本文选用16x2LCD液晶显示器作为计算器的显示器。
液晶显示器具有容量小、功耗低、反射型等优点,非常适合计算器的显示要求。
3.按键设计本文选用矩阵按键设计。
通过矩阵按键设计,可以设计出较多的按键功能,并且能够节省IO口的使用。
4.电源设计计算器使用直流电源供电,可以选择使用电池或者外部电源适配器供电。
三、软件设计计算器的软件设计主要包括界面设计和计算功能设计两个方面。
1.界面设计计算器的界面设计主要包括显示数字和调用函数。
a.显示数字通过将用户输入的数字显示到LCD液晶屏上,实现数字的显示功能。
液晶屏可以显示16个字符,可以一次性显示一个较长的数字。
b.调用函数通过监测用户按键的输入,调用相应的函数实现计算功能。
可以设置加、减、乘、除等函数,并通过按键的组合调用相应的函数。
2.计算功能设计计算器的计算功能设计主要包括四则运算和浮点数运算两个方面。
a.四则运算通过四个函数实现加、减、乘、除的功能。
在用户按下相应的运算符号键后,调用相应的函数对输入的数字进行相应的运算,并将结果显示在LCD液晶屏上。
b.浮点数运算在用户输入的数字或运算结果存在小数的情况下,可以设计相应的浮点数运算函数,通过运算可以得到带有小数点的结果,并将结果显示在LCD液晶屏上。
四、系统实现五、总结基于STC89C52单片机的计算器设计和实现包括硬件设计和软件设计两个方面。
通过合理的硬件设计和功能完善的软件设计,可以实现一款功能强大的计算器。
基于STC89C52单片机的温度控制电路设计
![基于STC89C52单片机的温度控制电路设计](https://img.taocdn.com/s3/m/5ea77727f111f18583d05a2b.png)
2.7系统整体硬件电路系统整体硬件电路包括,传感器数据采集电路,温度显示电路,单片机主控电路等,通过Protel99se 可画出如图2-9所示的电路图[9][10][11]图2-9 温度控制电路原理三系统软件设计3.1 温度控制系统原理框图主控制程序的主要是用来实时控制当前所要测控的环境温度,并读出由DS18B20测量的经过处理的当前环境的温度值,同时检查温度是否在限度之内,否则报警,同时调整温度值。
其主控制程序流程图如3-1所示。
图3-1 主程序流程图图3-2读温度流程图温度控制系统C语言程序#include <reg51.h>#define uint unsigned int#define uchar unsigned charsbit p34=P2^4;sbit p35=P2^5;sbit p36=P2^6;sbit dp=P0^7;sbit p37=P2^7;sbit DQ=P2^2; //定义DS18B20总线I/Osbit SET=P3^1; //定义选择报调整警温度上限和下限(1为上限,0为下限)sbit LING=P2^0; //定义闪烁signed char m; //温度值全局变量bit sign=0; //外部中断状态标志signed char shangxian=38; //上限报警温度,默认值为38signed char xiaxian=5; //下限报警温度,默认值为5ucharcode LEDData[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf}; /*****延时子程序*****/void Delay(uint i){while( i-- );}/*****初始化DS18B20*****/void Init_DS18B20(void){unsigned char x=0;DQ=1;Delay(8); //稍做延时DQ=0; //单片机将DQ拉低Delay(80); //精确延时,大于480usDQ=1; //拉高总线Delay(14);x=DQ; //稍做延时后,如果x=0则初始化成功,x=1则初始化失败Delay(20);}/*****读一个字节*****/unsigned char ReadOneChar(void){unsigned char i=0;unsigned char dat=0;for (i=8;i>0;i--){DQ=0; // 给脉冲信号dat>>=1;DQ=1; // 给脉冲信号if(DQ)dat|=0x80;Delay(4);}return(dat);}/*****写一个字节*****/void WriteOneChar(unsigned char dat){unsigned char i=0;for (i=8; i>0; i--){DQ=0;DQ=dat&0x01;Delay(5);DQ=1;dat>>=1;}}void Tmpchange(void) //发送温度转换命令{Init_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0x44); //启动温度转换}/*****读取温度*****/unsigned int ReadTemperature(void){unsigned char a=0;unsigned char b=0;unsigned int t=0;float tt=0;Tmpchange();Init_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0xBE); //读取温度寄存器a=ReadOneChar(); //读低8位b=ReadOneChar(); //读高8位t=b;t<<=8;t=t|a;tt=t*0.0625;t= tt*100+0.5; //放大100倍输出并四舍五入return(t);}/*****显示开机初始化等待画面*****/Disp_init(){P0 = 0x80; //显示-p34=1;p35=0;p36=0;p37=0;Delay(200);P0 = 0x80;p34=0;p35=1;p36=0;p37=0;Delay(200);P0 = 0x80;p34=0;p35=0;p36=1;p37=0;Delay(200);P0 = 0x80;p34=0;p35=0;p36=0;p37=1;Delay(200);P0 = 0x80;}/*****显示温度子程序*****/Disp_Temperature() //显示温度{uint a,b,c,d,e;e=ReadTemperature(); //获取温度值a=e/1000; //计算得到十位数字b=e/100-a*10; //计算得到个位数字d=e%10; //计算得到小数点后两位c=(e%100)/10; //计算得到小数点后一位m=e/100;if(m>shangxian || m<xiaxian) LING=1; //温度不在范围内报警else LING=0;p34=0;p35=0;p36=0;p37=0;P0 =LEDData[d]; //显示小数点后两位p34=1;p35=0;p36=0;p37=0;Delay(300);p34=0;p35=0;p36=0;p37=0;P0 =LEDData[c]; //显示小数点后一位p34=0;p35=1;p36=0;p37=0;Delay(300);p34=0;p35=0;p36=0;p37=0;P0 =LEDData[b]; //显示个位dp=0;p34=0;p35=0;p36=1;p37=0;Delay(300);p34=0;p35=0;p36=0;p37=0;P0 =LEDData[a]; //显示十位p34=0;p35=0;p36=0;p37=1;Delay(300);p34=0;p35=0;p36=0;p37=0; //关闭显示}disptiaozheng(){uchar f,g,j,k;f=shangxian/10;g=shangxian%10;j=xiaxian/10;k=xiaxian%10;p34=0;p35=0;p36=0;p37=0;P0 =0xc0; //显示0p34=1;p35=0;p36=0;p37=0;Delay(200);p34=0;p35=0;p36=0;p37=0;P0 =0xc0; //显示0p34=0;p35=1;p36=0;p37=0;Delay(200);p34=0;p35=0;p36=0;p37=0;if(SET==1){P0 =LEDData[g];dp=0; //显示上限温度个位}else{P0 =LEDData[k];dp=0;}p34=0;p35=0;p36=1;p37=0;Delay(200);p34=0;p35=0;p36=0;p37=0;if(SET==1) P0 =LEDData[f]; //显示上限温度十位else{if(f==0) P0=0x00; //不显示下限温度十位else P0 =LEDData[j]; //显示下限温度十位}p34=0;p35=0;p36=0;p37=1;Delay(200);p34=0;p35=0;p36=0;p37=0; //关闭显示Delay(20);}/*****外部中断0服务程序*****/void int0(void) interrupt 0{EX0=0; //关外部中断0 sign=1;if(SET==1) shangxian++;else xiaxian++;Delay(500);EX0=1;}/*****外部中断1服务程序*****/void int1(void) interrupt 2{EX1=0; //关外部中断0 sign=1;if(SET==1) shangxian--;else xiaxian--;Delay(500);EX1=1;}/*****主函数*****/void main(void){uint z;IT0=1;IT1=1;EX0=1;EX1=1;EA=1;ReadTemperature();LING=0;for(z=0;z<100;z++){Disp_init();}while(1){Disp_Temperature();if(sign==1){for(z=0;z<300;z++)disptiaozheng();sign=0;}}}。
(完整版)STC89C52单片机详细介绍
![(完整版)STC89C52单片机详细介绍](https://img.taocdn.com/s3/m/4df98e0ce53a580217fcfe77.png)
STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-Flash Programable and Erasable Read Only Memory )的低电压,高性能COMOS8的微处理器,俗称单片机。
该器件采用ATMEL 搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
单片机总控制电路如下图4—1:图4—1单片机总控制电路1.时钟电路STC89C52内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端。
时钟可以由内部方式产生或外部方式产生。
内部方式的时钟电路如图4—2(a) 所示,在RXD和TXD引脚上外接定时元件,内部振荡器就产生自激振荡。
定时元件通常采用石英晶体和电容组成的并联谐振回路。
晶体振荡频率可以在1.2~12MHz之间选择,电容值在5~30pF之间选择,电容值的大小可对频率起微调的作用。
外部方式的时钟电路如图4—2(b)所示,RXD接地,TXD接外部振荡器。
对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。
片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。
示,RXD接地,TXD接外部振荡器。
对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。
片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。
RXD接地,TXD接外部振荡器。
对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。
片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。
(a)内部方式时钟电路(b)外部方式时钟电路图4—2时钟电路2.复位及复位电路(1)复位操作复位是单片机的初始化操作。
其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。
除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。
89C52单片机开发板设计报告
![89C52单片机开发板设计报告](https://img.taocdn.com/s3/m/40161b3ca32d7375a4178047.png)
P101P112P123P134P145P156P167P178R ESE T 9R DX /P3010TX D /P 3111INT 0/P3212INT 1/P3313T0/P 3414T1/P 3515W R /P3616R D/P3717X 218X 119G ND20P2021P2122P2223P2324P2425P2526P2627P2728PS EN 29A LE/P 30EA /VP 31P0732P0633P0534P0435P0336P0237P0138P0039V CC 4089C52U 1Z 89C523TitleN u mb erSize B D ate:19-Ju l-2013File:D :\P ro tel\Ex amp lesIN1G N D 2O UT3T17805IN1G N D 2O UT3T27905IN1G N D 2O UT3T37812IN1G N D 2O UT3T47912123J13+18V -18V -5V+12V-12VC 9104C 191000u f/25VD 1LE DR 12100KV CCU SB _IN C 7104C 8104C 11104C 17100u f/25VD 2LE DC 18100u f/25VD 3LE DC 20100u f/25VD 4LE DR 1110KR 1010KR 13100K1123456S13Z K AI GU A NU SB _IN V CC图3:多路输出稳压电路2.1.3振荡电路模块振荡电路由一个12M 的晶振和两个22pf 的电容所组成,原理图如下: C 1422p fC 1322p f Y 112MV CC V CC R 110KP11P12P10P14P15P16P17123J3V CCG ND 1V CC 23R S 4R /W5E 600701802903100411051206130714PS B 1516/RS T 1718V CC 19G ND20J2Z 12864M0M1M2M3V CC V CC V CC R 210KP10P11P12P17P16P15P14G ND 1V CC 2V L 3R S 4R /W5E 6D 07D 18D 29D 310D 411D 512D 613D 714V CC 15G ND16J6Z 1602M0M1M2M3V CC321D初在国内普及率较高,所以发展较好,大多数公司中低频电路设计都采用此软件。
基于STC89S52单片机开发板的功能设计与应用
![基于STC89S52单片机开发板的功能设计与应用](https://img.taocdn.com/s3/m/f456c0f65ef7ba0d4a733bdb.png)
目录第一章课程设计要求及功能说明 (1)1.1课程设计要求 (1)1.2课程设计电路及功能说明 (1)第二章程序设计及结果分析 (3)2.1程序设计思想 (1)2.2调试结果分析及问题解答 (1)单片机及通信接口设计课程设计总结 (6)第一章课程设计要求及功能说明1.1课程设计要求跑马灯。
设计要求:“123456”6个数字由右边进入1602液晶显示器模块,再由左边走出LCD模块,连续不断。
1.2课程设计电路及功能说明1.2.1设计电路1602液晶显示器电路LCD1602引脚排列LCD1602属于字符型显示器件,可显示2行16个字符,字符显示尺寸为5×7个像素点。
在显示模块的ROM中存放ASCII码字符字模等,输出时只需提供字符编码和显示位置即可。
LCD1602引脚排列如上图所示。
其中,D0-D7为数据口,E为使能信号,RW为读写信号,RS为寄存器选择信号,VL为亮度调节引脚,VCC、VCC1、GND和GND1均为电源引脚。
LCD1602的工作流程图1.2.2功能说明“123456”6个数字由右边进入1602液晶显示器模块,再由左边走出LCD模块,连续不断。
单片机的P3.4脚接E执行使能控制,读操作时,高电平有效;写操作时,下降沿有效。
P3.5脚接rs进行寄存器选择,当rs=1时,指向数据寄存器;当rs=0时,若执行写操作,则指向指令寄存器,若执行读操作,则指向地址计数器。
第二章程序设计及结果分析2.1编程思路及框架以单片机为核心,LCD1602液晶显示器为输出器件。
使单片机的P3.4脚接E执行使能控制,读操作时,高电平有效;写操作时,下降沿有效。
P3.5脚接rs进行寄存器选择,当rs=1时,指向数据寄存器;当rs=0时,若执行写操作,则指向指令寄存器,若执行读操作,则指向地址计数器。
,而LCD1602属于字符型显示器件,可显示2行16个字符,字符显示尺寸为5×7个像素点。
在显示模块的ROM中存放ASCII码字符字模等,输出时只需提供字符编码和显示位置即可。
基于STC89C52单片机的指纹密码锁系统设计与实现
![基于STC89C52单片机的指纹密码锁系统设计与实现](https://img.taocdn.com/s3/m/217793c89f3143323968011ca300a6c30c22f114.png)
基于STC89C52单片机的指纹密码锁系统设计与实现基于STC89C52单片机的指纹密码锁系统设计与实现一、引言指纹密码锁系统是一种使用纹理特征识别技术,实现安全门锁控制的现代化智能门禁系统。
本文以STC89C52单片机为核心,结合指纹识别算法和密码锁控制电路,设计并实现了一个基于STC89C52单片机的指纹密码锁系统。
二、系统设计1. 系统框架设计本系统采用分层结构设计,分为硬件层、算法层和用户层。
硬件层负责指纹采集模块、指纹识别模块、密码锁控制模块的连接和驱动;算法层负责指纹图像处理和指纹特征提取;用户层负责用户数据管理、指纹录入和门锁控制。
2. 硬件设计硬件设计主要包括指纹采集模块、指纹识别模块、密码锁控制模块和STC89C52单片机的连接和布局。
指纹采集模块采用光学传感器,可以实时采集用户的指纹图像;指纹识别模块采用指纹图像处理算法,可以识别指纹纹理特征;密码锁控制模块通过继电器控制门锁的开关。
STC89C52单片机作为整个系统的主控芯片,负责收发指令、数据处理和与其他模块的通信。
它与指纹采集模块、指纹识别模块和密码锁控制模块之间通过串口进行数据传输。
3. 算法设计算法设计主要包括指纹图像的预处理、特征提取和特征匹配三个步骤。
指纹图像的预处理包括图像增强、图像去噪、图像二值化等。
增强算法可以提升指纹图像的对比度,使纹理特征更加明显;去噪算法可以消除图像中的椒盐噪声,保留纹理细节;二值化算法可以将灰度图像转化为二值图像,便于特征提取。
特征提取算法是指通过对预处理后的指纹图像进行处理,提取出一组具有代表性的纹理特征。
常用的特征提取方法有细节增强、方向图提取和频域变换等。
特征匹配是将提取到的特征与数据库中的特征进行比对,确定两者之间的相似度。
常用的特征匹配方法有最小平方差匹配算法、相关匹配算法等。
4. 用户界面设计用户界面设计包括指纹录入、指纹识别和门锁控制三个功能。
指纹录入功能可以将用户的指纹信息存储到数据库中,并与UserId绑定,便于后续的指纹识别和门锁控制。
基于STC89C52单片机最小系统的设计
![基于STC89C52单片机最小系统的设计](https://img.taocdn.com/s3/m/07f932e548649b6648d7c1c708a1284ac85005e3.png)
基于STC89C52单片机最小系统的设计Design of STC89C52 Minimum System1.Design Content and RequirementsDesign XXX: Design and n of STC89C52 Minimum System based on Single-chip puter.Design Requirements: The input signal can be in the form of sensors。
voltage。
current。
switches。
etc。
The single-chip model can be chosen by yourself (51.128.430.etc.)。
The output control signal can be analog voltage or digital signal。
and the control object can be motor (DC motor。
XXX)。
switch。
display。
etc。
(Note: Single-chip puter。
sensor circuit module and integrated circuit chip can be used for n.)Equipment used: Photographic plate and common PCB n equipment。
common electronic assembly tools。
multimeter。
oscilloscope and electronic components (see appendix for details).2.STC89C52 Single-chip puter2.1 n to STC89C52 Single-chip puterA single-chip puter。
stc89c52自动喷灌程序代码
![stc89c52自动喷灌程序代码](https://img.taocdn.com/s3/m/ac2b54603d1ec5da50e2524de518964bcf84d206.png)
stc89c52自动喷灌程序代码一、前言STC89C52是一款基于8位单片机的微控制器,被广泛应用于各种自动化控制系统中。
本文将介绍如何使用STC89C52编写自动喷灌程序代码。
二、硬件准备1. STC89C52单片机开发板2. 液晶显示屏3. 电磁阀4. 温湿度传感器5. 水位传感器6. 12V电源适配器三、程序设计1. 引入头文件和定义变量#include <reg52.h>#include <stdio.h>#include <stdlib.h>#include "lcd1602.h"sbit DHT11 = P3^7; // 温湿度传感器引脚定义sbit WATER_LEVEL = P3^6; // 水位传感器引脚定义sbit SOLENOID_VALVE = P1^0; // 电磁阀引脚定义int temperature, humidity, water_level;2. 初始化函数void Init() {LCD_Init(); // 初始化液晶屏SOLENOID_VALVE = 0; // 初始关闭电磁阀}3. 温湿度读取函数void ReadDHT11() {unsigned char i, j, k;unsigned char data[5];DHT11 = 0;delay_ms(20);DHT11 = 1;delay_us(30);if (DHT11 == 0) {delay_us(80);if (DHT11 == 1) {delay_us(80);for (i = 0; i < 5; i++) {data[i] = 0;for (j = 0; j < 8; j++) {k = 0;while (!DHT11);delay_us(30);if (DHT11 == 0) k = 1;while (DHT11);data[i] <<= 1;data[i] |= k;}}if ((data[0] + data[1] + data[2] + data[3]) == data[4]) { humidity = data[0];temperature = data[2];}}}}4. 水位读取函数void ReadWaterLevel() {water_level = WATER_LEVEL;}5. 喷灌控制函数void IrrigationControl() {if (water_level == 1 && temperature > 25 && humidity <70) { // 当水位高于一定值且温度大于25度且湿度小于70%时开启喷灌 SOLENOID_VALVE = 1; // 打开电磁阀LCD_Write_String("Irrigation ON");} else { // 否则关闭喷灌SOLENOID_VALVE = 0; // 关闭电磁阀LCD_Write_String("Irrigation OFF");}}6. 主函数void main() {Init();while (1) {ReadDHT11();ReadWaterLevel();IrrigationControl();LCD_Set_Cursor(2, 1);LCD_Write_String("Temp:");LCD_Write_Char(temperature / 10 + '0'); LCD_Write_Char(temperature % 10 + '0'); LCD_Write_String("C ");LCD_Write_String("Humidity:");LCD_Write_Char(humidity / 10 + '0');LCD_Write_Char(humidity % 10 + '0');LCD_Write_String("%");}}四、总结本文介绍了如何使用STC89C52编写自动喷灌程序代码,包括硬件准备、程序设计和主函数等内容。
基于STC89C52单片机智能小车设计
![基于STC89C52单片机智能小车设计](https://img.taocdn.com/s3/m/52b51807366baf1ffc4ffe4733687e21af45ffe8.png)
五、分析与总结
通过本次设计,我们成功地基于STC89C52单片机实现了一款智能避障小车。 实验结果表明,小车具有较稳定的避障功能和较高的准确性。小车具有较快的反 应速度和响应能力,能够在短时间内对障碍物做出判断和反应。这些优点使得基 于STC89C52单片机的智能避障小车具有广泛的应用前景,例如在无人驾驶车辆、 智能机器人等领域中都具有潜在的应用价值。
二、智能避障小车设计
智能避障小车的设计主要包括以下几个方面:
1、传感器设计:传感器是实现避障功能的关键部件,主要包括红外线传感 器、超声波传感器等。本次设计采用红外线传感器,具有对色彩和材质不敏感、 反应速度快等优点。
2、电路设计:电路部分主要包括电源电路、驱动电路和传感器接口电路等。 其中,驱动电路采用L298N芯片,可以同时驱动两个电机,实现小车的前进、后 退和转向。
总之,本次设计不仅提高了我们对STC89C52单片机和智能避障技术的理解与 应用能力;而且拓宽了我们的知识视野,增强了对领域的认识和理解。希望通过 后续的研究和实践,能够使基于STC89C52单片机的智能避障小车更加完善,并得 到更广泛的应用。
感谢观看
输入输出处理程序:根据传感器的输入信号,控制小车的运动状态,同时将 小车的运动状态和障碍物距离等信息输出到LCD显示屏上。
三、智能控制
1、实现小车的智能控制,我们采用了模糊控制算法。该算法可以根据小车 的运动状态和障碍物距离等信息,自动调整小车的运动轨迹和速度,使其能够更 加灵活地避开障碍物。
3、程序设计:程序部分是实现避障功能的核心,主要包括传感器数据采集、 数据处理和电机控制等。
三、算法实现
智能避障小车的算法实现主要包括以下步骤:
1、传感器数据采集:通过红外线传感器采集小车前方的障碍物信息,并将 采集到的数据进行处理。
基于STC89C52单片机的温控风扇系统设计
![基于STC89C52单片机的温控风扇系统设计](https://img.taocdn.com/s3/m/2cd5908fdb38376baf1ffc4ffe4733687e21fca9.png)
基于STC89C52单片机的温控风扇系统设计1功能本设计为一种温控风扇系统,具有灵敏的温度感测和显示功能,系统选用STC89C52里左机作为控制平台对风扇转速进行控制。
可在测得温度值在高低温度之间时打开风扇弱风档,当温度升高超过所设定的温度时自动切换到大风档,当温度小于所设定的温度时自动关闭风扇,控制状态随外界温度而定。
2.硬件设计硬件电路主要由:1.单片机最小系统2.风扇驱动电路3.1CD1602显示屏电路4.DS18B20温度采集电路3.程序设计(1)1CDI602驱动程序^define1CD1602_DBPOsbit1CD1602RS=P2^0;sbit1CD1602RW=P2」;sbit1CD1602_E=P2^2;∕*等待液晶准备好*/void1cdWaitReady()(unsignedcharsta;1CD1602DB=OxFF;1CD1602RS=0;1CD1602RW=1;do{1CD1602_E=1;sta=1CD1602_DB;〃读取状态字1CD1602_E=0;}whi1e(sta&0x80);〃bit7等于1表示液晶正忙,重复检测直到其等于0为止}/*向1CDI602液晶写入一字节命令,Cmd-待写入命令值*/void1cdWriteCmd(unsignedcharcmd){1cdWaitReadyO;1CD1602_RS=0;1CD1602_RW=0;1CD1602_DB=cmd;1CD1602_E=1;1CD1602_E=O;∕*向1CDI602液晶写入一字节数据,dat-待写入数据值*/void1cdWriteDat(unsignedchardat)1cdWaitReadyO;1CD1602_RS=1;1CD1602_RW=0;1CD1602_DB=dat;1CD1602_E=1;1CD1602_E=0;∕*设置显示幽起始地址,亦即光标位置,(x,y)-对应屏幕上的字符坐标*/void1cdSetCursor(unsignedcharx,unsignedchary)unsignedCharaddr;if(y==O)//由输入的屏幕坐标计算显示RAM的地址addr=OxOO+x;〃第一行字符地址从OXOO起始e1seaddr=0x40+x;〃第二行字符地址从0x40起始1cdWriteCmd(addrI0x80);〃设置RAM地址}/*在液晶上显示字符串,(x,y)-对应屏幕上的起始坐标,St1字符串指针*/void1cdShowStr(unsignedcharx,unsignedchary,unsignedchar*str)1cc1SetCursor(x,y);〃设置起始地址whi1e(*str!='O')〃连续写入字符串数据,直到检测到结束符(1cdWriteDat(*str++);))/*初始化1602液晶*/voidInit1cd1602(){1cdWriteCmd(0x38);〃16*2显示,5*7点阵,8位数据接口1cdWriteCmd(OxOc);〃显示器开,光标关闭1cdWriteCmd(0x06);〃文字不动,地址自动+11cdWriteCmd(OxO1);〃清屏}(2)DS18B20驱动程序sbitI0-18B20=P3Λ2;I软件延时函数,延时时间C1O)us*/voidDe1ayX1Ous(unsignedchart){do{-∏θP-();-∏θP-();-∏θP-();∏0P-();-∏θP-();-∏θP-();-∏θP-();_nop_();}whi1e(一t);)/复位总线,获取存在脉冲,以启动一次读写操作/ bitGet18B20Ack()(bitack;EA=O;〃禁止总中断I0_18B20=0;〃产生500US复位脉冲De1ayX1Ous(50);I0_18B20=1;De1ayX1Ous(6);〃延时60USack=I0.18B20;〃读取存在脉冲WhiIe(!IOJ8B20);〃等待存在脉冲结束EA=I;〃重新使能总中断returnack;}/向DS18B2O写入一个字节,dat-待写入字节/voidWrite18B20(unsignedchardat)unsignedcharmask;EA=O;for(maSk=OXO1;mask!=0;mask〈〈=1)〃低位在先,依次移出8个bit {IO」8B20=0;〃产生2us低电平脉冲-∏0P-();nop_();if((mask&dat)==0)〃输出该bit值I0_18B20=0;e1seI0_18B20=1;De1ayX1Ous(6)〃/延时60usIO18B20=1”/拉高通信引脚}EA=I;}/从DS18B20读取一个字节,返回值-读到的字节/unsignedcharRead18B20()(unsignedchardat;unsignedcharmask;EA=O;for(mask=0x01imask!=CHmask<<=1)”低位在先,依次采集8个bit I0」8B20=0;〃产生2us低电平脉冲-∏0P-();-∏0P-();I0」8B20=1;〃结束低电平脉冲,等待18B20输出数据nop_();〃延时2us-∏θP-();if(!IO_18B20)//读取通信引脚上的值dat&=~mask;e1sedatI=mask;De1ayX1Ous(6);//再延时60us)EA=I;returndat;)/启动一次18B20温度转换,返回值-表示是否启动成功/bitStart18B20()(bitack;ack=Get18B20Ack();〃执行总线复位,并获取18B20应答if(ack==0)(Write18B20(Oxcc);Write18B20(0x44);return~ack;/读取DS18B20转换的温度值,返回值-表示是否读取成功/bitGet18B20Temp(int*temp)(bitack;unsignedchar1SB,MSB∕∕16bit温度值的低字节和高字节ack=Get18B20Ack();〃执行总线复位,并获取18B20应答if(ack==0)(Write18B20(OxCC);〃跳过R0M操作Write18B20(OxBE);〃发送读命令1SB=Read18B20();〃读温度值的低字节MSB=Read18B20();〃读温度值的高字节*temp=((int)MSB<<8)+1SB;〃合成为16bit整型数}return~ack;)(3)主程序sbitIN1=P27;sbitIN2=P2A6;sbitENA=P2";bitfIag1s=O;〃IS定时标志unsignedcharTORH=O;unsignedcharTOR1=O;i∏ttemp;〃读取到的当前温度值unsignedcharIen;intintT,decT;〃温度值的整数和小数部分unsignedcharstr[12];voidCompare();voidGetTempO;voidConfigTimerO(unsignedintms);unsignedcharIntToString(unsignedchar*str,intdat);externbitStart18B20();externbitGet18B20Temp(int*temp);externvoidInit1cd1602();externvoid1cdShowStr(unsignedcharx,unsignedchary,unsignedchar*str);voidmainO{bitres;EA=I;ConfigTimerO(IO);//T0定时IOmsStart18B20();〃启动DS18B20Init1cd1602();〃初始化液晶whi1e(1)if(f1ag1s)〃每秒更新一次温度fIag1s=O;res=Get18B2OTemp(&temp);〃读取当前温度if(res)〃读取成功时,刷新当前温度显示(GetTemp();1cdshowStr(θz o,''We1cometouse〃);〃显示字符及温度值1cc1ShowStr(0,1/'CurrentT:〃);1cdShowStr(10,1,str);Compare();}e1se〃读取失败时,提示错误信息(1cdShowStr(0,0,^error!〃);)Start18B20();〃重新启动下一次转换)}}/温度获取函数,获取当前环境温度值并保存在Str数组中/ voidGetTempO{intT=temp>>4;〃分离出温度值整数部分decT=tempMxOF;〃分离出温度值小数部分Ien=IntToString(str,intT);〃整数部分转换成字符串str[1en++]=,.,;CIeCT=(C1eCT*10)/16;〃二进制的小数部分转换为1位十进制位str[1en++]=decT+'0';〃十进制小数位再转换为ASCI1字符WhiIe(ICn<6)〃用空格补齐到6个字符长度(str[1en++]≈,,;)str[Ien++]=,❷';)/延时函数,用于PW/控制/voidde1ay(unsignedintz)(unsignedintx,y;for(x=z;x>0;x-)for(y=110;y>0;y--);)/比较函数,通过温度值的比较设置曳血的转速/voidCompareO(unsignedinti=0;unsignedcharj;if((intT>=24)&&(intT<26))〃以两度为一个温差范围,并设温度范围索引j=0;e1seif((intT>=26)M(intT<28)){J=I;)e1seif((intT>=28)&&(intT<30)){j=2;}e1seif(intT>=30){j=3;)switch(j)〃根据温度索引设置电机转速(case0:IN1=I;IN2=0;for(i=0;i<200;i++){ENA=I;de1ay(20);ENA=O;de1ay(30);break;1:IN1=I;IN2=0;for(i=0;i<200;i÷+)(ENA=I;de1ay(30);ENA=0;de1ay(30);)break;case2:IN1=1;IN2=0;for(i=0;i<200;i÷+){ENA=I;de1ay(55);ENA=O;de1ay(30);}break;case3:IN1=I;IN2=0;ENA=I;break;defau1t:break;/整型数转换为字符串,St1字符串指针,dat-待转换数,返回值-字符串长度/unsignedcharIntToString(unsignedchar*str,intdat)(signedchari=0;unsignedcharIen=O;unsignedcharbuf[6];if(dat<O”/如果为负数,首先取绝对值,并在指针上添加负号{dat=-dat;*str++≡,」;Ien++;}do{〃先转换为低位在前的十进制数组buf[i++]=dat%10;dat/=10;}whi1e(dat>O);Ien+=i;//i最后的值就是有效字符的个数\vhi1e(i—>0)〃将数组值转换为ASCI1码反向拷贝到接收指针上StΓ++=buf[i]÷,Q,;*str≡,❷';returnIen;}voidConfigTimerθ(unsignedintms){unsigned1ongtmp;tmp=11059200/12;tmp=(tmp*ms)∕1000;tmp=65536-tmp;tmp=tmp+12;TORH=(unsignedchar)(tmp>>8); TOR1=(unsignedchar)tmp;TMOD&=OxFO;TMOD∣=0x01;THO=TORH;T1O=TOR1;ETO=I;TRO=I;)voidInterrupt!imerθOinterrupt1static unsignedchartmr1s=0; THO=TORH;T1O=TOR1;tmr1s++;if(tmr1s>=100)(tmr1s=O;fIag1s=I; ))。
推荐-基于STC89C52单片机的实验平台开发设计课程设计
![推荐-基于STC89C52单片机的实验平台开发设计课程设计](https://img.taocdn.com/s3/m/4af069a0c5da50e2534d7f61.png)
课程设计报告课程名称单片机原理与应用设计题目基于STC89C52单片机的实验平台开发设计专业计算机科学与技术班级B110503学号B11050309姓名刘世冠完成日期20XX年6月20日基于STC89C52单片机的实验平台开发设计摘要由于单片机是一种集成度很高的微型计算机,在一块小芯片内就集成了一台计算机所具备的功能。
单片机应用领域不断扩大,除了在工业控制,智能仪表、通信、家用电器等领域应用外,在智能化,高档电子玩具产品中也大量采用单片机作为核心控制部件。
单片机正朝着高性能和多品种发展,但由于MCS-51系列8位单片机仍能满足绝大数应用领域需要,可以肯定,以MCS-51系列为主的8位单片机,在当前及以后的相当一段时间仍占据单片机应用的主导地位。
本次课程设计应用STC89C52单片机实验平台开发设计,课程设计过程中,应用到了软硬件的结合,通过Proteus进行软件设计出原理图,然后执照原理图进行电路焊接,将LED和串口通信,数字显示器,流水灯等接好。
关键词:STC单片机,实验平台,数码管,流水灯,串口通信ABSTRACTThe integration degree of SCM is a kind of microputer, in a small chip is integrated with a puter has the function of the single chip microputer application domain expands unceasingly, in addition to the industrial control, intelligent instrument munication system in the field of household appliances, etc, in intelligence, high-end electronic toys products has a large number of using single chip microputer as the core control unit MCU is developing towards high performance and many varieties, but because MCS - 51 series 8 bits single chip microputer can still meet the requirements of the vast number of applications, to be sure, give priority to with MCS - 51 series of 8 bits single chip microputer, in the current and future quite a period of time still dominate the microcontroller applicationsThis course design application STC89C52 SCM experiment platform development and design, curriculum design process, applied to the bination of hardware and software, through the Proteus software design principle diagram, and then license to circuit principle diagram welding, will be LED and serial port munication, digital display, running water light such as welding is goodKEYWORDS: STC microcontroller, prehensive experimental board, software and hardware bined with, and the program development design目录前言1976年,Intel公司推出MCS-48系列单片机,以体积小、功能全、低格低等优点,得到广泛的应用,成为单片机发展过程中的一片重要标志。
STC89C52单片机红外探测报警器设计电路图
![STC89C52单片机红外探测报警器设计电路图](https://img.taocdn.com/s3/m/694727fa0875f46527d3240c844769eae009a3b8.png)
---------------------------------------------------------------范文最新推荐------------------------------------------------------ STC89C52单片机红外探测报警器设计+电路图摘要:本系统采用了红外传感器以及GSM模块。
TC35型GSM模块自带JP串口,能够方便的与单片机和PC机相连,可实现报警信号的无线快速传递,同时能直接将报警信息传送到客户手机终端上,方便及时报警,通过GSM模块也能使该系统与PC终端相连,方便多系统的协调统一管理,本设计包括硬件和软件两部分。
硬件部分包括单片机控制电路、红外检测电路、报警电路、串口模块等部分组成。
处理器采用51系列单片机STC89C52,整个系统是在系统软件下控制工作的。
11541关键词:单片机;红外传感器;GSM模块;报警电路Design of the infrared detection alarm1 / 18Abstract: The system uses a infrared sensor and GSM module.. Type TC35 GSM module comes with JP port and can easily connected with the microcontroller and PC machines, enabling rapid transmission of the wireless alarm signal. At the same time alarm information can be transmitted directly to the client mobile terminal, to facilitate the timely warning. Through the GSM module also allows the system is connected with the PC terminal to facilitate the harmonization of multi-system management. The design includes both hardware and software parts. Hardware includes single chip control circuit, infrared detection circuits, alarm circuits, serial modules and other components. 52 series processor STC89C52, the whole system is under the control of eh system software to work.Keywords:MCU, Infrared sensor; GSM module; Alarm circuit目录摘要i---------------------------------------------------------------范文最新推荐------------------------------------------------------ Abstracti1绪论11.1报警器简介11.2红外探测报警器设计方案21.3红外探测报警器设计意义2我国工业化的快速发展,嵌入式系统技术的应用也越来越广泛,针对放到报警系统的嵌入式技术也需快速更新,而基于GSM模块的放到报警技术正是未来一段时间的主要发展趋势。
基于STC89C52单片机最小系统的设计
![基于STC89C52单片机最小系统的设计](https://img.taocdn.com/s3/m/2c5fe06ab80d6c85ec3a87c24028915f804d84fb.png)
基于STC89C52单片机最小系统的设计在现代电子技术领域,单片机的应用无处不在,从家用电器到工业自动化,从智能仪器仪表到航空航天设备,都能看到单片机的身影。
STC89C52 单片机作为一款经典的 8 位单片机,以其高性能、低功耗、易于开发等优点,被广泛应用于各种电子系统中。
而要让 STC89C52 单片机正常工作,就需要设计一个可靠的最小系统。
一、STC89C52 单片机简介STC89C52 单片机是由宏晶科技生产的一款增强型 8051 单片机,它具有 8K 字节的 Flash 程序存储器、512 字节的 RAM、4 个 8 位并行I/O 口(P0、P1、P2、P3)、3 个 16 位定时器/计数器、1 个全双工串行通信口等资源。
其工作电压为 5V,工作频率可达 35MHz,能够满足大多数应用场景的需求。
二、最小系统的组成一个完整的 STC89C52 单片机最小系统通常包括以下几个部分:1、电源电路电源是整个系统的动力源泉,STC89C52 单片机的工作电压为 5V,因此需要一个稳定的 5V 电源为其供电。
可以使用线性稳压器(如7805)将输入的电压(如 9V 或 12V)转换为 5V 输出,也可以使用USB 接口直接提供 5V 电源。
2、复位电路复位电路的作用是在系统上电或出现异常时,将单片机的内部状态恢复到初始状态,使其能够正常工作。
常见的复位电路有上电复位和手动复位两种。
上电复位电路通过电容充电实现,手动复位电路则通过按键实现。
3、时钟电路时钟电路为单片机提供工作所需的时钟信号,决定了单片机的运行速度。
STC89C52 单片机可以使用内部时钟,也可以使用外部时钟。
内部时钟通过在单片机的 XTAL1 和 XTAL2 引脚之间连接一个晶振和两个电容来实现,晶振的频率通常为 110592MHz 或 12MHz。
4、下载电路为了将编写好的程序下载到单片机中,需要设计一个下载电路。
STC89C52 单片机支持通过串口下载程序,可以使用 MAX232 芯片将单片机的 TTL 电平转换为 RS232 电平,然后通过串口线与计算机连接进行程序下载。
基于STC89C52的单片机实验开发板设计
![基于STC89C52的单片机实验开发板设计](https://img.taocdn.com/s3/m/407ed49427fff705cc1755270722192e453658f0.png)
基于STC89C52的单片机实验开发板设计单片机实验开发板是一种用于学习和实践单片机编程的工具。
它通常包括一个单片机主控芯片、适配器、外部扩展接口和其他常用电子元件。
基于STC89C52的单片机实验开发板设计,可以提供各种接口和功能,以满足不同的实验需求。
首先,该开发板应该具备良好的扩展性,能够适应不同的实验要求。
因此,设计时应考虑到可扩展的插槽和接口,允许用户根据需要添加各种模块和传感器。
开发板可以提供通用的数字输入输出引脚、模拟输入输出引脚、串口通信接口、I2C接口等,以满足不同的外部设备连接需求。
其次,开发板应该提供清晰易用的操作界面。
LCD显示屏可以用于显示实验结果、调试信息和菜单选项。
而按键可以用于菜单操作和用户输入。
通过简单的菜单,用户可以选择实验模式、切换不同的功能模块以及进行参数调整。
为了方便用户操作,可以设计一个舒适的外部机壳,安装按键和显示屏。
此外,为了提高实验的灵活性和可视化程度,可以在开发板上集成多个LED指示灯,用于实时显示实验状态和结果。
另外,蜂鸣器可以用于发出声音提示和报警信号。
开发板还可以集成一个电源管理电路,用于供电和电池充电。
可以设计一个电源开关和充电指示灯,方便用户操作和监控电池状态。
最后,为了保证开发板的稳定性和安全性,应对电路进行合理的布局和保护。
例如,可以使用过压保护电路、过流保护电路和反向保护电路,保护开发板不受异常电压和电流的影响。
另外,可以使用过温保护电路,保护开发板在高温环境下不受损坏。
总之,基于STC89C52的单片机实验开发板设计应该具备扩展性、易用性、多功能性和稳定性。
这样的设计能够满足不同的实验需求,并为用户提供方便的学习和实践环境。
基于STC89C52单片机毕业设计完整版附原理图pcb图源程序仿真图
![基于STC89C52单片机毕业设计完整版附原理图pcb图源程序仿真图](https://img.taocdn.com/s3/m/97143a2730126edb6f1aff00bed5b9f3f90f7260.png)
基于STC89C52单⽚机毕业设计完整版附原理图pcb图源程序仿真图基于STC89C52单⽚机的电⼦密码锁学⽣姓名: xx学⽣学号: xxxxx院(系):电⽓信息⼯程学院年级专业: 2010级电⼦信息⼯程2班指导教师:陶⽂英⼆〇⼀三年六⽉摘要随着⼈们⽣活⽔平的提⾼,如何实现家庭防盗这⼀问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事情屡见不鲜,电⼦密码锁具有安全性能⾼,成本低,功耗低,操作简单等优点使其作为防盗卫⼠的⾓⾊越来越重要。
从经济实⽤⾓度出发,采⽤51系列单⽚机,设计⼀款可更改密码,LCD1602显⽰,具有报警功能,该电⼦密码锁体积⼩,易于开发,成本较低,安全性⾼,能将其存储的现场历史数据及时上报给上位机系统,实现⽹络实时监控,⽅便管理⼈员及时分析和处理数据。
其性能和安全性已⼤⼤超过了机械锁,特点有保密性好,编码量多,远远⼤于弹⼦锁,随机开锁成功率⼏乎为零;密码可变,⽤户可以经常更改密码,防⽌密码被盗,同时也可以避免因⼈员的更替⽽使锁的密级下降;误码输⼊保护。
当输⼊密码多次错误时,报警系统⾃动启动;电⼦密码锁操作简单易⾏,受到⼴⼤⽤户的亲睐。
关键词单⽚机, 密码锁, 更改密码, LCD1602⽬录错误!未定义书签。
1 绪论1.1电⼦密码锁简介 (1)1.2 电⼦密码锁的发展趋势 (1)2 设计⽅案 (3)3 主要元器件 (4)3.1 主控芯⽚STC89C52 (4)3.2 晶体振荡器 (8)3.3 LCD显⽰密码模块的设计 (9)3.3.1 LCD1602简介 (9)3.3.2 LCD1602液晶显⽰模块与单⽚机连接电路 (11)4 硬件系统设计 (12)4.1 设计原理 (12)4.2 电源输⼊电路 (12)4.3 矩阵键盘 (13)4.4 复位电路 (14)4.5 晶振电路 (14)4.6 报警电路 (15)4.7 显⽰电路 (15)4.8 开锁电路 (16)4.9 电路总体构成 (16)5 软件程序设计 (18)5.1 主程序流程介绍 (18)5.2 键盘模块流程图 (19)5.3 显⽰模块流程图 (21)5.4 修改密码流程图 (22)5.5 开锁和报警模块流程图 (23)6 电⼦密码锁的系统调试及仿真 (25)6.1硬件电路调试及结果分析 (25)6.2软件调试及功能分析 (25)6.2.1调试过程 (25)6.2.2 仿真结果分 (26)7 结论 (29)参考⽂献 (30)附录: (31)1 绪论1.1电⼦密码锁简介电⼦密码锁是⼀种通过密码输⼊来控制电路或是芯⽚⼯作,从⽽控制机械开关的闭合,完成开锁、闭锁任务的电⼦产品。
STC89C52单片机开发板设计
![STC89C52单片机开发板设计](https://img.taocdn.com/s3/m/d9df32fb9e314332396893be.png)
STC89C52单片机开发板一、方案设计1.1 方案论证在科技广泛发展的今天,计算机的发展已经越来越快,他的应用已经越来越广泛。
二单片机的发展和应用是其中的重要一方面。
单片机在工业生产(机电、化工、轻纺、自控等)和民用家电方面有广泛的应用。
其中,单片机在工业生产中的应用尤其广泛。
单片机具有集成度高,处理能力强,可靠性高,系统结构简单,价格低廉的优点,因此被广泛应用。
目前,单片机在工业控制系统诸多领域得到了极为广泛的应用。
特别是C51系列的单片机稳定性好,运算精度高,推动了工业生产,影响着人们的工作和学习。
而本次设计就是要通过对C52系列单片机最小系统进行开发板的设计。
有助于当代大学生及涉及单片机领域的工作者们更深入的了解和学习单片机的开发机应用。
1.2 设计思路(1)本设计采用STC89C52单片机为主控制核心。
(2)选择PCF8951实现A/D、D/A转换装置,与单片机接口为P2.1口和P2.0口。
(3)此外,还选择了NRF905无线通信模块及4*4矩阵键盘等模块进行开发与学习设计。
二、硬件设计本设计由8部分组成:STC89C52单片机最小系统、PCF8951A/D转换电路、报警器模块、NRF905无线模块、矩阵键盘模块、温度传感器电路、红外接收模块、LED流水灯模块。
电路原理图见附录。
2.1 STC89C52单片机最小系统模块STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。
在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口。
另外STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STC89C52单片机开发板
一、方案设计
1.1 方案论证
在科技广泛发展的今天,计算机的发展已经越来越快,他的应用已经越来越广泛。
二单片机的发展和应用是其中的重要一方面。
单片机在工业生产(机电、化工、轻纺、自控等)和民用家电方面有广泛的应用。
其中,单片机在工业生产中的应用尤其广泛。
单片机具有集成度高,处理能力强,可靠性高,系统结构简单,价格低廉的优点,因此被广泛应用。
目前,单片机在工业控制系统诸多领域得到了极为广泛的应用。
特别是C51系列的单片机稳定性好,运算精度高,推动了工业生产,影响着人们的工作和学习。
而本次设计就是要通过对C52系列单片机最小系统进行开发板的设计。
有助于当代大学生及涉及单片机领域的工作者们更深入的了解和学习单片机的开发机应用。
1.2 设计思路
(1)本设计采用STC89C52单片机为主控制核心。
(2)选择PCF8951实现A/D、D/A转换装置,与单片机接口为P2.1口和P2.0口。
(3)此外,还选择了NRF905无线通信模块及4*4矩阵键盘等模块进行开发与学习设计。
二、硬件设计
本设计由8部分组成:STC89C52单片机最小系统、PCF8951A/D转换电路、报警器模块、NRF905无线模块、矩阵键盘模块、温度传感器电路、红外接收模块、LED流水灯模块。
电路原理图见附录。
2.1 STC89C52单片机最小系统模块
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。
在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口。
另外STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35Mhz,6T/12T可选。
复位电路
当振荡器运行时,只要有有两个机器周期即24个振荡周期以上的高电平在这个引脚出现时,那么就将会使单片机复位,如果将这个引脚保持高电平,那么51单片机芯片就会循环不断地进行复位。
复位后的P0口至P3口均置于高电平,这时程序计数器和特殊功能寄存器将全部清零。
单片机晶振
单片机系统里都有晶振,在单片机系统里晶振作用非常大,全程叫晶体振荡器,他结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。
在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。
高级的精度更高。
有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。
晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。
单片机晶振的作用是为系统提供基本的时钟信号。
通常一个系统共用一个晶振,便于各部分保持同步。
有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。
晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率。
如果不同子系统需要不同频率的时钟信号,可以用与同一个晶振相连的不同锁相环来提供。
晶振实物图:
单片机实物图如下:
2.2 PCF8951 AD/DA转换模块
PCF8591是一款单电源、低功耗8位COMS型A/D、D/A转换芯片,它具有4路模拟量输入通道、一路模拟量输出通道和1个I2C总线接口。
该器件I2C从地址的低三位由芯片的A0、A1和A2三个地址引脚决定,所以在不增加任何硬件的情况下同一条I2C总线最多可以连接8个同类型的器件。
该器件具有多路模拟量输入、片上跟踪保持、8位A/D转换和8位D/A转换等功能。
A/D与D/A 的最大转换速率由I2C总线的最大传输速率决定。
PCF8591具有以下特点:单电源供电;正常工作电源电压范围为2.5V~6V;通过I2C总线完成数据的输入/输出;器件地址由3个地址引脚决定;采样频率由I2C总线传输速率决定; 4路模拟量输入可编程为单端输入或差分输入;可配置转换通道号自动增加功能;模拟电压范围为VSS~VDD;片上跟踪保持功能;8位逐次逼近A/D转换;带有一路模拟量输出的乘法D/A转换。
PCF8951A/D、D/A转换模块:
PCF8951模块实物图:
2.3 Nrf905 无线通信装置
NRF905无线收发模块(PTR8000+),体积小,距离远,同时抗干扰性强,通信稳定,特别适用于工业控制领域,是目前最主流的无线收发方案。
基本特点:
(1) 433Mhz 开放ISM 频段免许可证使用
(2) 接收发送功能合一,收发完成中断标志
(3) 170个频道,满足多点通讯和跳频通讯需求,实现组网通讯,TDMA-CDMA-FDMA
(4) 内置硬件8/16位CRC校验,开发更简单,数据传输可靠稳定
(5) 工作电压1.9-3.6V,低功耗,待机模式仅2.5uA
(6) 接收灵敏度达-100dBm
(7) 收发模式切换时间< 650us
(8) 每次最多可发送接收32字节,并可软件设置发送/接收缓冲区大小2/4/8/16/32字节
(9) 模块可软件设地址,只有收到本机地址时才会输出数据(提供中断指示),可直接接各种单片机使用,软件编程非常方便
(10) 最大发射功率10毫瓦,发射模式:最大电流<30mA;接收模式:电流12.2mA
(11) 内置SPI接口,也可通过I/O口模拟SPI实现。
最高SPI时钟可达10M
(12) 尺寸小巧,不含天线32mm*19mm;标准DIP 间距接口,便于嵌入式应用
(13) 发射速率50 Kbps,外置433MHz天线,空旷通讯距离可达300米左右,室内通信3-6层可实现可靠通信,抗干扰性能强,很强的障碍穿透性能。
无线模块:
Nrf905无线模块实物图:
2.4 4*4矩阵键盘
矩阵键盘又称行列式键盘,它是用4条I/O线作为行线,4条I/O线做为列线组成的键盘。
在行线和列线的每一个交叉点上,设置一个按键。
这样键盘中按键的个数是4*4个。
这种行列式键盘结构能够有效的提高单片机系统中I/O口的利用率。
矩阵键盘:
4*4矩阵键盘实物图:
2.5 IIC内存模块
即I2C,一种总线结构。
IIC 是作为英特尔IC 的互补,这种总线类型是由菲利浦半导体公司在八十年代初设计出来的,主要是用来连接整体电路(ICS) ,IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实施数据传输的控制源。
这种方式简化了信号传输总线。
2.6 LED流水灯:
LED流水灯实物图:2.7 温度传感器:
18B20实物图:2.8 报警模块:
2.9 红外接收模块:
IR1838红外接收模块:
三、总结
通过这次设计,更加深入的了解和掌握了对工程设计软件protel99se的理解和运用,并且在对这次单片机课题设计过程中进一步了解了单片机的引脚功能及其组成各部分的工作原理和运用,加深了对以单片机为核心的控制系统的功能扩展的认识,为以后在对单片机系列进行实际运用做良好的铺垫,帮助我们在以后的工作和学习中对任务的设计上更加得心应手。