基于单片机实验系统开发与应用.doc_第1页
基于单片机实验系统开发与应用.doc_第2页
基于单片机实验系统开发与应用.doc_第3页
基于单片机实验系统开发与应用.doc_第4页
基于单片机实验系统开发与应用.doc_第5页
免费预览已结束,剩余29页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计论文河北北方学院教务处制基于单片机实验系统开发与应用目录摘 要1Abstract1第一章 绪论11.1开发单片机实验板的意义11.2开发板特性简介1第二章 开发方案22.1需求分析32.2具体分析32.3详细分析4第三章 程序实例43.1 跑马灯实验41.实验任务42.硬件连接图43.程序流程图44.C语言源程序55.实验总结53.2 一键多功能识别实验51.实验任务52.硬件连接图63.程序流程图64.C语言源程序65. 实验总结83.3 定时器对蜂鸣器控制81.实验任务82.硬件连接图83.程序流程图84. C语言源程序95.实验总结103.4 8位数码管显示实验101.实验任务102.硬件连接图103.程序流程图114.C语言源程序115.实验总结123.5 键盘输入实验121.实验任务122.硬件连接图123.程序流程图134.C语言源程序145.实验总结173.6 串行通信实验171.实验任务172.硬件连接图173.程序流程图184.C语言源程序185.实验总结193.7 LCD液晶显示实验191.实验任务192.硬件连接图193.程序流程图194.C语言源程序205.实验总结233.8 DS18B20 温度采集实验241.实验任务242.硬件连接图243.程序流程图244.C语言源程序245.实验总结27第四章 开发板调试.271.硬件调试. 282.软件调试.28第五章 结束语28致谢30参考文献30摘 要当今社会,单片机技术已经普及到我们生活、工作、科研等各个领域,已经成为一种比较成熟的技术。 本设计是一个基于89C52芯片的单片机开发板,其中详尽讲解了利用89C52芯片进行单片机开发的过程,该系统结构简单,易学易懂,有利于单片机初学者快速掌握单片机的基础知识。关键字:单片机,单片机学习, 单片机程序AbstractNow in the society, the Singal Chip Microcomputer technology has already popularized in our lives, our work, the scientific research field and other domain, and became one kind of quite mature technology. This design is one development board based on the 89C52 chip Singal Chip Microcomputer, it explains the process of developmenting the Singal Chip Microcomputer in detail using the 89C52 chip ,the structure of this system was simple, it is easy to study and understand, was advantageous for the beginning learner to learn the elementary knowledge of the Singal Chip Microcomputer fast. Keywords: Singal Chip Microcomputer , study of Singal Chip Microcomputer , Singal Chip Microcomputer Program第一章 绪论1.1 开发单片机实验板的意义在电子技术应用领域中,单片机被越来越多的应用到各行各业。如:工业控制、仪器仪表、电讯技术、办公自动化和计算机外部设备、汽车与节能、商用产品、家用电器等。目前,单片机正朝着大容量片上存储器、多功能I/O接口、宽范围工作电源和低功耗方向发展。要开发单片机的应用,不但要掌握单片机硬件和软件方面的知识,而且还要深入了解各应用系统的专业知识,只有将这两方面的知识融会贯通和有机结合,才能设计出优良的应用系统。一个好的工程设计师不仅要掌握单片机的工作原理,而且还要不断了解各公司最新芯片的结构和应用,在实际应用中找到最好的性能价格比。所以要注意培养学生接受新知识的自学能力,以掌握芯片发展动态。单片机在电子产品中的应用已经越来越广泛,其应用正在不断的走向深入。并且在很多学校也开设了相关的课程。目前社会中很多人开始自学单片机技术。因此设计出一款易于学习的单片机开发板顺应时代的要求。虽然目前出现了许多更高级的控制芯片或技术,但是以单片机为主体的控制是最基础,也最广泛的。单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合。本实验板是基于SCT89C52的单片机开发系统。其中详列了单片机开发的基础知识以及一部分巩固提高的知识,希望我们设计的这个开发板能够成为单片机学习者的良师益友。1.2 开发板特性简介我们开发此套开发板的目的有两个发面:第一,借此开发板的研制来提高自己的能力;第二,将此套容易操作,方便易用的开发板作为以后单片机初学者的入门实验板。鉴于以上两点我们在开发过程中本着易用易学的思想设计了此套开发板。此开发板有以下特点:l 价格低廉,方便操作。本实验中,我们选用了常用的电子元件,方便买到,市场上很常见,对这方面元件的介绍资料也很多,因此使用于初学者学习。l 开发板的供电电源简便易用。本实验中,选用了两种电源方案,一种是通过电压转换元件7805供电,另一种是通过USB供电。通过两种电源方案,我们可以任选一种方案为开发板提供电源。l 程序模块简单易懂。鉴于实验板的开发目的以及预期使用此套开发板的人员,我们对程序的开发本着初学者易于接受,容易理解而编写。所以程序简单易读,并且在关键语句的后面加上了必要的注释,以方便理解。第二章 开发方案2.1需求分析 通过对在校学生的调查,以及网络上收集到资料的综合分析,得出以下结论:目前无论是社会上还是在校学生,学习单片机的人数呈成不断增加之势,对于单片机开发板的需求也不断增加。但是由于目前大多数的开发板价钱偏高,大多数在校学生还是无能力购买,但是他们对单片机开发板有较大的需求。鉴于以上分析,开发出一套价格低廉,易学易用的单片机开发板顺应市场潮流,也可以为以后同学学习单片机技术提供一个好的实验平台。2.2具体分析开发此套开发板一方面要价格低廉,另一方面要易学易用。首先,成本方面电子元件占的比重最大,因此如何减少这方面的开销成为减少开支的重点。其次,还有电路板的花费,以及其它原材料的开销,这些花费相对较少。对于开发板的易用性,我们应借鉴现在已有的开发板方面的资料,从中吸取经验教训,总结这些开发板的优缺点,取其精华,去其糟粕。而且要积极发挥我们的团队精神,创新精神,和进取精神,做出更加实用的单片机开发板。2.3详细分析首先,对于开发成本方面,我们购买的电子元器件都是市场上常见产品。这样的产品不但容易购买,而且价格方面也相对低廉。但这并不是说它们的性能方面有缺陷,因为这些元件的普遍性和常用性,他们的性能是绝对有保证的。主要实验元件如下:1. 单片机系统:STC89C52,11.0598MHz晶振,复位电路。2. 键盘系统:5*4矩阵键盘。3. 跑马灯系统:八个发光二极管。4. 8位数码管系统:MC74HC573N,七段数码管。5. 扬声器实验:蜂鸣器。6. LCD液晶显示实验:LCD12864。7. 串行通信实验:D9头,MAX232。8. 温度传感器:DS18B20其次,对于开发板的易学易用方面。我们选用了目前开发单片机开发板中最常用的开发工具和开发语言。具体介绍如下:u 电路板开发工具Protel Dxp本实验板的电路图开发工具选取了Protel Dxp2004软件,这款软件无论是在绘制电路原理图方面,还是在pcb图的生成,以及材料报表生成,网络表生成方面均有出色的表现。u 编译软件Keil C51本实验板中选用了 u Vision2 的集成开发环境,在keil C51中C51已被完全集成到了u Vision2 的集成开发环境中,这个集成开发环境包括编译器,汇编器,实时操作系统,项目管理器,调试器。u Vision2 可为它们提供统一而灵活的开发环境。u 开发语言C语言 当前,单片机的开发语言主要有C语言和汇编语言。汇编语言的执行速度较快,但比较难理解,而且使用者较少。相对而言,C语言是目前最常用的开发语言,更加人性化,更容易理解,而且C语言简洁、高效、又贴近硬件。因此开发中选用了C语言进行程序的编写。第三章 程序实例303.1跑马灯实验1.实验任务利用程序控制来实现发光二极管的轮流点亮发光。本实验用到P0的全部8个端口,以及P1的P1.4端口。2硬件连接图 图3.13.程序流程图图3.24.C语言源程序#includereg52.h #define uint unsigned int #define uchar unsigned charsbit WEI=P14; /LED的使能端void delay(uint z) /延迟函数 uint x,y; for(x=z;x0;x-)for(y=110;y0;y-);main()uchar temp=0xfe;uchar cs=0; /给temp恢复初始值WEI=1;P0=0xff; WEI=0; /开LED总使能 while(1) cs+;P0=temp;temp=temp1; /向左移位 if(cs=8) / 为p0端口重新赋值temp=0xfe;delay(200);5.实验总结本实验是本实验板的第一个实验,我们要做的就是对单片机的熟悉,对I/O口的一些操作,也是对实验板的性能的一个简单测试。这个实验中要注意的地方有以下几点:l 发光二极管的使能端要开启,即P14=1l 按位左移八次后要重新给temp变量付出值l 我们要理解和运用按位左移的作用3.2 一键多功能识别实验1实验任务 开关K6按键接在P3.7/RD管脚上,在AT89C52单片机的P1端口的四个发光二极管,上电的时候,L1接在P1.0管脚上的发光二极管在闪烁,当每一次按下开关SP1的时候,L2接在P1.1管脚上的发光二极管在闪烁,再按下开关SP1的时候,L3接在P1.2管脚上的发光二极管在闪烁,再按下开关SP1的时候,L4接在P1.3管脚上的发光二极管在闪烁,再按下开关SP1的时候,又轮到L1在闪烁了,如此轮流下去。2硬件连接图见图3.13. 程序流程图图 3.34C语言源程序#include #define uchar unsigned charunsigned char ID=0;sbit P3_7=P37;sbit P1_0=P10;sbit P1_1=P11; sbit P1_2=P12; sbit P1_3=P13;void delay10ms(void) /短延时函数unsigned char i,j;for(i=20;i0;i-)for(j=248;j0;j-);void delay02s(void) /长延时函数unsigned char i;for(i=20;i0;i-)delay10ms();void main(void) /主函数 while(1) if(P3_7=0) / P3_7检测到低电平delay10ms(); /短延迟,实现对抖动的处理if(P3_7=0) ID+;if(ID=4)ID=0;while(P3_7=0); /设置循环,直到P3_7变为高电平 switch(ID) case 0:P1_0=P1_0;delay02s();break;case 1:P1_1=P1_1;delay02s();break;case 2:P1_2=P1_2;delay02s();break;case 3:P1_3=P1_3;delay02s();break; 5.实验总结本实验是对键盘和显示系统的一个起步介绍试验,希望通过这个实验,能够实现一个按键控制显示不同的结果。试验结束后,我们对按键和显示的配合使用有了更深入的了解。这个实验既是对上个试验的巩固,又为以后的试验提前做了准备。其中对按键的去除抖动处理,我们应该格外关注。3.3定时器对蜂鸣器控制1实验任务改变定时器的初值来改变频率使蜂鸣器发出不同的声音。2硬件连接图图 3.43. 程序流程图图3.54. C语言源程序#includereg52.h#define uint unsigned int#define uchar unsigned charsbit suin=P24; /扬声器的控制位bit flag; /定义位变量flaguint x,y;void init() /初始化,开定时器0 TMOD=0x01; /T0 计数器的16位计数器 TH0=0xfa; /TH0 ,TL0赋予初值 TL0=0xad; IE=0x82; /开中断EA与ET01 TCON=0x10; /T0计数器开始计数 即TR0=1 void main() x=100; y=100; init(); while(1) while(flag); flag=1; if(x0;x-) for(y=110;y0;y-);main()uchar i;uchar temp=0xfe;while(1) for(i=0;i8;i+) DUAN=1; P0=Tempi; DUAN=0; WEI=1; P0=temp; temp= temp0;x-) for(y=110;y0;y-);void wei_1(uchar wei) WEI=1; P0=wei; WEI=0;void duan_1(uchar duan) DUAN=1; P0=Temp_1duan; DUAN=0; delay(5);uchar Keyboard() P3=0xef; /给P3口赋值 temp=P3; temp=temp&0x0f; /检测第一行有没有按键被按下 if(temp!=0x0f) /说明第一行有按键被按下 delay(5); /延迟去抖动temp=P3; /在此判断是否有按键被按下temp=temp&0x0f;if(temp!=0x0f)temp=P3;switch(temp)case 0xee:num=0;break;case 0xed:num=1;break;case 0xeb:num=2;break;case 0xe7:num=3;break;while(temp!=0x0f) /松手检测temp=P3;temp=temp&0x0f; P3=0xdf; temp=P3; temp=temp&0x0f; if(temp!=0x0f) delay(5); temp=P3; temp=temp&0x0f; if(temp!=0x0f) temp=P3; switch(temp) case 0xde:num=4;break;case 0xdd:num=5;break;case 0xdb:num=6;break;case 0xd7:num=7;break;while(temp!=0x0f) /松手检测temp=P3;temp=temp&0x0f; P3=0xbf; temp=P3; temp=temp&0x0f; if(temp!=0x0f) delay(5); temp=P3; temp=temp&0x0f; if(temp!=0x0f) temp=P3; switch(temp)case 0xbe:num=8;break;case 0xbd:num=9;break;case 0xbb:num=10;break;case 0xb7:num=11;break;while(temp!=0x0f) /松手检测temp=P3;temp=temp&0x0f; P3=0x7f;temp=P3; temp=temp&0x0f; if(temp!=0x0f) delay(5); temp=P3; temp=temp&0x0f; if(temp!=0x0f) temp=P3; switch(temp) case 0x7e:num=12;break;case 0x7d:num=13;break;case 0x7b:num=14;break;case 0x77:num=15;break; while(temp!=0x0f) /松手检测temp=P3;temp=temp&0x0f; return num;void main(void) wei_1(0); while(1) duan_1(Keyboard(); 5.实验总结本实验主要是对键盘和显示的综合应用,我们在前面的试验中对数码管做过分析了,因此我们的重点放在了键盘的实现上。本实验我们用的是矩阵键盘,矩阵键盘通常有两种实现方法:扫描方式和中断方式,我们用的是扫描的方式。其中难点和重点有以下几点:l 矩阵键盘的编码方式l 按键时和按键释放后要考虑消除抖动l 矩阵键盘和显示工具的配合方式3.6 串行通信实验1. 实验任务由上位机发送命令控制放光二极管的亮灭。2硬件连接图图 3.113. 程序流程图图3.124.C语言源程序#include unsigned char temp; sbit WEI=P14; /LED的使能端void main() EA=0;SCON=0x50; /设定串行口工作方式1TMOD=0x20;TH1=0xfd; /数据传输率位9600TR1=1;WEI=0;while(1)while(!RI); /等待数据接收RI=0; /清除数据传送标志temp=SBUF;P0=temp&0x0f; /数据送到P0口 /控制二极管的亮灭 5.实验总结本实验的代码很简单,而且没有用到串行口中断,通过EA=0关闭了所有中断,通过这个实验我们体会到了上位机与单片机通信的原理和规则,以及使用方法,现今上位机和单片机的通信系统广泛应用,希望通过这个小实验我们能共同掌握,应用这一技术。3.7 LCD液晶显示实验1.实验任务128x64液晶显示器显示文字,128x64液晶显示器以串行方式51单片机连接 。2硬件连接图图 3.133.程序流程图图 3.144.C语言源程序(1)LCD_H 头文件#ifndef LCD_H #define LCD_H #include reg52.h #define uchar unsigned char #define uint unsigned int #define ulong unsigned long int /*LCD控制引脚定义* sbit LCD_RST = P25; /LCD复位 sbit LCD_CLK = P24; /LCD串行时钟 sbit LCD_SID = P23; /LCD串行数据 sbit LCD_CS = P22; / LCD片选 /*LCD.C中公用函数声明*void ClearScreen(void); void DisplayOn(void); void Disp_Str(uchar x, uchar y, char *str); void LCD_Init(void); #endif (2)main主文件#include LCD.h#include REG52.h#define uchar unsigned char#define uint unsigned int / LCD驱动程序/*/ LCD复位函数:LCD_Reset(void) /*void LCD_Reset(void) uint ns=1000; LCD_CS = 1; LCD_CLK = 1; LCD_RST = 0; while(ns-); LCD_RST = 1; LCD_CS = 1; /*/ LCD写字节函数:LCD_Write(char inst, uchar x) / 入口参数 inst=1/0: 命令/数据标志 / x : 命令/数据字节 /*void LCD_Write(char inst, uchar x) uchar i, j; uchar p = 0xfa, q = x & 0xf0, r = x 4; if(inst) p = 0xf8; for(i=0;i24;i+) /串行传送24个二进制位 /从最高位开始传送 if(i=8) p = q; else if(i=16) p = r; if(p & 0x80) LCD_SID = 1; /最高位为1时 else LCD_SID = 0; /最高位为0时 LCD_CLK = 0; LCD_CLK = 1; j=1; while(j-); p 7) x = 7; if(y3) y = 3; switch(y) /根据x,y坐标确定显示缓冲区地址 case 0: addr = 0x80 + x; break; case 1: addr = 0x90 + x; break; case 2: addr = 0x88 + x; break; case 3: addr = 0x98 + x; break; LCD_Write(1, addr); /设置DDRAM地址 while(*str) LCD_Write(0, *str+); i+; if(i=2) i = 0; addr+; if( (addr&0x07) = 0 ) switch(addr) case 0x88: addr = 0x90; break; case 0x98: addr = 0x88; break; case 0x90: addr = 0x98; break; case 0xa0: addr = 0x80; break; LCD_Write(1, addr); /设置被重新指定了的DDRAM地址 /* / LCD初始化函数:LCD_Init() /*void LCD_Init() LCD_Reset(); /LCD显示器复位 DisplayOn(); /*/ 主函数void main()/ 入口参数:无/*void main() LCD_Init();DisplayOn(); ClearScreen(); while(1) Disp_Str(0,0,显示器亮了!); 5.实验总结首先,我对LCD字符串显示函数即Disp_Str(uchar x, uchar y, char *str)做一些必要的说明。 入口参数: x:字符串起始显示位置的x坐标 ,y:字符串起始显示位置的y坐标,str:指向待显示字符串的字符指针,字符串以0结尾. 关于行定义的特别说明: 按照数据手册介绍,本LCD模块的行由上到下依次为0,1,2,3行,但对应的行显示缓冲区地址不是按行序排列的,其中 0行的显示缓冲区为:80H87H 2行的显示缓冲区为:88H8FH 1行的显示缓冲区为:90H87H 3行的显示缓冲区为:98H9FH 从视觉观看的角度说,自上而下的行顺序依次为0,1,2,3行,从显示缓冲区地址连续的角度说,自上而下的行顺序依次为0,2,1,3行,考虑到显示字符串的长度是不定的,可能出现换行,程序中对此必须加以考虑调整.关于显示起始位置的说明:汉字显示时, 显示位置x坐标为07,显示西文字符时显示位置x坐标也是07,但每个显示位置可以显示两个西文字符,当中西文混合显示时, 注意西文子串应包含偶数个西文字符.其次,本实验用到的液晶显示的最大优点是能够实现友好的人机界面。现今,液晶显示器已经广泛应用于现代工业控制和智能仪表的领域,它已经成为单片机应用领域的典型模块之一。本实例选用的液晶模块GXM12864内部含有控制驱动器,使得它和单片机的接口简单。液晶模块GXM12864和单片机有两种连接方式:并行连接和串行连接。本实验采用的是串联连接的方式与单片机连接的。本实验的重点和难点是对控制驱动器指令集的使用,对此应有侧重。本实验的设计方法和思想有一定得代表性,它对具有液晶显示的所有单片机应用系统都是可以借鉴的。 3.8 DS18B20 温度采集实验1.实验任务通过电子元件DS18B20,进行温度采集。2硬件连接图图 3.153.程序流程图图 3.164.C语言源程序/DS18B20驱动程序/*/DS18B20复位和初始化

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论