单片机课程设计实验资料报告材料
51单片机课程设计报告
51单片机课程设计报告.成绩:单片机原理及应用课程设计课程名<单片机原理及应用> </单片机原理及应用>学部机械与电子信息工程学部专业移动通信技术学号姓名指导教师日期 .一、设计任务与要求1. 任务:制作并调试51单片机学习板2. 要求:(1)了解并能识别学习板上的各种元器件,会读元器件标示;(2)会看电路原理图;(3)制作51单片机学习板;(4)学会使用Keil C软件下载调试程序;用调试程序将51单片机学习板调试成功。
二、实验内容(5)(6)(7)(8)(9)*****芯片工作电路,利用晶振提供控制信号。
10引脚下载口与*****芯片相关引脚相连完成下载电路。
8个10K电阻与*****芯片P0口相连,利用上拉电阻组成上拉电路。
使用开关与5.1K电阻连成外部中断0、1电路和复位电路。
利用16个开关做成键盘,实现输入号对已编程的*****芯片的控制并通过数码管显示0--F。
(10)用2片74HC573N具有锁存功能芯片与8个数码管相连,通过编程的*****位选和段选实现输出信号的显示功能。
(11)使用74HC573N锁存功能结合*****AG芯片8非门芯片和74HC04N6非门芯片与4个2N5551三极管实现对步进电机的控制,和控制步进电机的信号结合LED输出显示的功能。
(12)6、利用1片74HC573N芯片与8个共阴极LED实现跑马灯功能。
三、总原理图1.总原理图.四、硬件调试1、是否短路用万用表检查P2两端是短路。
电阻为0,则短路,电阻为一适值,电路正常。
2、焊接顺序焊接的顺序很重要,按功能划分的器件进行焊接,顺序是功能部件的焊接--调试--另一功能部件的焊接,这样容易找到问题的所在。
3、器件功能1)检查原理图连接是否正确2)检查原理图与PCB图是否一致3)检查原理图与器件的*****ET上引脚是否一致4)用万用表检查是否有虚焊,引脚短路现象5)查询器件的*****ET,分析一下时序是否一致,同时分析一下命令字是否正确6)通过示波器对芯片各个引脚进行检查,检查地址线是否有信号的7)飞线。
单片机课程设计实验报告
成都理工大学学院:核技术与自动化工程学院专业:电气工程及其自动化班级:2011级电气二班学号:201106050228姓名:薛成成指导教师:任家富目录一、引言—本课程设计的目的 (1)二、Led流水灯 (2)2.1上机程序 (3)三、数码管循环显示实验 (4)3.1上机程序 (5)四、键盘的操作实验 (6)4.1上机程序 (7)五、实验总结 (9)六、参考文献 (10)摘要:由于单片机体积小、成本低、使用方便,所以被广泛地应用于仪器仪表、现场数据的采集和控制。
通过本次课程设计掌握单片机硬件和软件方面的知识,更深入的了解单片机的实际应用。
关键词:单片机,程序,流水灯,数码管,温度计,键盘扫描,定时器等。
一、引言—本课程设计的目的以本学期对单片机的学习和认识,并通过本次课程设计加以应用,从而达到一个对所学知识的巩固、更深一步的理解,面对一个电子设计,应对出系统的方案,分析出各个板块来,再对各个板块进一步的具体的设计,先进行硬件电路设计,此时一定要考虑好要用什么元件、各个元件的具体参数、是否能实现应有功能,从而得到一个完整的硬件电路。
在根据该电路设计出软件的功能模块、从而完成程序流程图,在根据流程图完成程序的设计,并通过反复的调试、运行、更正,直至完成既定功能为止,最后将软件、硬件结合进行调试、运行,对其功能进行最终测试,并反复思考其测试中遇到相应问题的原因,并将其一一处理,从而完成本次设计的实验要求,以及本次课程设计的最终目的。
实验一实验要求:本次实验实现的是小灯的闪烁,流水灯可以按照程序规定的要求进行闪烁。
实验程序设计#include<reg52.h> //52单片机头文件#include <intrins.h> //包含有左右循环移位子函数的库#define uint unsigned int //宏定义#define uchar unsigned char //宏定义uint flag=0;void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.{ //delay(500);大约延时500ms.uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void init(){TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;ET0=1;EA=1;}void main() //主函数{init();while(1){uchar a,i,j;if(flag==1){for(j=0;j<3;j++) //寄偶交替{P1=0x55; //点亮小灯delay(300); //延时300毫秒P1=0xaa;delay(300); //延时300毫秒}for(j=0;j<3;j++) //流水灯{a=0xfe;for(i=0;i<8;i++){P1=a; //点亮小灯delay(300); //延时300毫秒 a=_crol_(a,1);}}P1=0xff;for(j=0;j<3;j++) //从两边往中间流 {P1=0x7e; //点亮小灯delay(300); //延时300毫秒P1=0xbd;delay(300); //延时300毫秒P1=0xdb; //点亮小灯delay(300); //延时300毫秒P1=0xe7;delay(300); //延时300毫秒}P1=0xff;for(j=0;j<3;j++) //从中间往两边流 {P1=0xe7; //点亮小灯delay(300); //延时300毫秒P1=0xdb;delay(300); //延时300毫秒P1=0xbd; //点亮小灯delay(300); //延时300毫秒P1=0x7e;delay(300); //延时300毫秒}P1=0xff;for(j=0;j<6;j++) //全部闪烁{P1=~P1; //点亮小灯delay(300); //延时300毫秒}P1=0xff;flag=0;}}}void timer() interrupt 1{flag=1;}实验心得体会:通过本次实验一步一步的进行实验,设计程序,写入中断来实现流水灯的全部实验要求。
单片机课程设计实验报告
单片机课程设计实验报告实验名称:频率计 指导教师:徐建军 学生信息:鄢立夏(电气 0903,09271061) 闫琛 (电气 0904,09271121)一、 实验题目 6 位数码管显示频率,测量频率的范围为 50HZ—50KHZ 用外 部中断或计数器,可使用 555 波形发生器。
二、 实验电路频率测量电路鄢立本电路图根据实验板的绘制。
三、 实验原理 本实验中采用了测频的方法,使用了 T0、T1 定时计数器,其中 通过控制 T1 作为定时器设定 1S 延时,T1 作为计数器接受脉冲输入。
1S 延时到,关闭 T0、T1 读取 TH0、TL0 并将此两个 8 位数据转化为 6 位十进制数存储进 30H-35H 的位寻址空间内, 然后调用数码管显示函 数,显示 30H-35H 中的数值。
然后对 T0、T1 做下一次计数的初始化 设置,并清零 TH0、TL0。
再进入下一次测频阶段,如此循环,即可夏实现动态测量输入信号的频率并在数码管上进行显示。
四、 程序控制流程图START 关闭T0、T1 停止计数单片机读取 TH0、TL0T0->十六位计数器 初始化 T1->十六位20ms定 时初始化初始化数据存储空 间初始化数据处理 函数开启T0、T1, 开始计数 数据处理完毕并送至 30H~35H?N YP3.4管脚脉冲NT1,50次中断, 定时1秒到?数码管显示 30H~35H内容N显示完 毕?频 率 计 控 制 流 程 图Y设计:鄢立夏、闫琛五、 实测代码 由于我们采用了自己焊接的 51 单片机最小系统为新片烧写程序,然后将新 片安放至实验板上进行调试的,编写软件为 Keil,所以一下包括注释等某些格式 可能和伟福软件有些不同。
望谅解。
Org 0000H Sjmp Main; Org 000BH; Sjmp Timer0_Serv; 判断 100Khz 时溢出时使用 Org 001BH Sjmp Timer1_Serv; Main: Lcall Sys_Init; LCALL Start; Sys_Loop: Ajmp Sys_Loop; while(1);//开始函数 Start: Setb TR0; Setb TR1; Setb ET1; Setb ET0 Setb EA; Ret; //系统初始化函数 Sys_Init: Lcall Timer_Init; //设置定时时间 50*20ms=1s MOV 20H,#50; //保存 T0 的计数值 Mov 21H,#0; Mov 22h,#0; Mov 23H,#0;//100Khz 位 //设置六位数据存储空间; MOV 31H,#0; MOV 32H,#0; MOV 33H,#0; MOV 34H,#0; MOV 35H,#0; MOV 36H,#0; Ret; //定时器/计数器 0、1 初始化函数,T0 作为计数器,T1 作为定时器 Timer_Init: Mov TMOD,#15H; Mov TH0,#00H; Mov TL0,#00H; Mov TH1,#0ECH;定时 10ms Mov TL1,#078H; Ret; //T0 中断服务函数 Timer0_Serv: INC 23H; 十万位处理; Reti; //T1 中断服务函数 Timer1_Serv: MOV R1,#31H;数据起始位 MOV R2,#6; MOV R4,#0FEH; Single_Spark:;单个数码管亮,循环起来MOV A,R4; MOV P0,A; RL A; MOV R4,A; MOV A,@R1; MOV DPTR,#Led_Data; MOVC A,@A+DPTR; MOV P2,A; INC R1; LCALL Delay; DJNZ R2,Single_Spark; //判断 1S 定时是否已到 Djnz 20H,Timer_Go_On; Clr TR0; Clr TR1; Mov 21H,TL0; Mov 22H,TH0; Mov 20H,#100; LCALL Frequence_Show; Mov TH0,#00H; Mov TL0,#00H; Timer_Go_On: Mov TH1,#0B1H;定时 10ms Mov TL1,#0DFH; SETB TR0; SETB TR1; EXIT: Reti; Frequence_Show: MOV R0,#31H MOV R1,#06H ;对上次的内容清零 Clear_Data: MOV @R0,#0 INC R0 DJNZ R1,Clear_Data; //计数器处理函数,封装. Data_Handle: MOV A,23H; MOV B,#0AH; DIV AB; MOV 24H,A ;存储第一位商 MOV A,B;MOV 30H,22H; ANL 30H,#0F0H; ADD A,30H; SWAP A; MOV B,#0AH; DIV AB; MOV 25H,A MOV A,B; SWAP A; ANL 22H,#0FH; ADD A,22H; MOV B,#0AH; DIV AB; MOV 26H,A MOV A,B; MOV 30H,21H; ANL 30H,#0F0H; ADD A,30H; SWAP A; MOV B,#0AH; DIV AB; MOV 27H,A; MOV A,B; SWAP A; ANL 21H,#0FH; ADD A,21H; MOV B,#0AH; DIV AB; MOV 28H,A; MOV 31H,B MOV A,24H; SWAP A; ADD A,25H; MOV B,#0AH; DIV AB; MOV 24H,A MOV A,B; SWAP A; ADD A,26H;;存储第二位商;存储第三位商;存储第四位商;存储第五位商 ;存储十进制数个位;存储第一位商MOV B,#0AH; DIV AB; MOV 25H,A; MOV A,B; SWAP A; ADD A,27H; MOV B,#0AH ; DIV AB ; MOV 26H,A; MOV A,B; SWAP A; ADD A,28H; MOV B,#0AH; DIV AB; MOV 27H,A; MOV 32H,B; MOV A,24H; SWAP A; ADD A,25H; MOV B,#0AH; DIV AB ; MOV 24H,A ; MOV A,B ; SWAP A; ADD A,26H; MOV B,#0AH; DIV AB ; MOV 25H,A; MOV A,B; SWAP A ; ADD A,27H; MOV B,#0AH; DIV AB; MOV 26H,A; MOV 33H,B; MOV A,24H; SWAP A; ADD A,25H;;存储第二位商;存储第三位商;存储第四位商 ;存储十进制数十位;存储第一位商;存储第二位商;存储第三位商 ;存储十进制数百位MOV B,#0AH; DIV AB; MOV 24H,A ; MOV A,B; SWAP A; ADD A,26H; MOV B,#0AH; DIV AB; MOV 25H,A MOV 34H,B MOV A,24H; SWAP A; ADD A,25H; MOV B,#0AH; DIV AB; MOV 35H,B; MOV 36H,A;;存储第一位商;存储第二位商 ;存储十进制数千位;存储十进制数万位 ;存储十进制数十万位MOV R0,#6; MOV R1,#31H; MOV R2,#0EFH MOV DPTR,#Led_Data;RET; Delay: MOV 40H,#0F0H; Delay_Loop: NOP; DJNZ 40H,Delay_Loop; RET; Led_Data: DB 3FH,06H,5BH,4FH,66H,6DH,0FDH,07H,0FFH,0EFH; END六、 实验问题总结及解决方法 1、 在调试数码管显示子程序时,数码管显示太暗。
51单片机课程设计报告
51单片机课程设计报告一、课程目标知识目标:1. 理解51单片机的硬件结构、工作原理及其功能特点;2. 学会使用51单片机的指令系统进行程序设计;3. 掌握51单片机与外围电路的接口技术,能实现简单的硬件控制功能;4. 了解51单片机在嵌入式系统中的应用及发展趋势。
技能目标:1. 能够运用C语言编写51单片机的程序,实现基础控制功能;2. 能够运用仿真软件对51单片机程序进行调试,分析并解决简单问题;3. 能够设计简单的51单片机硬件系统,进行电路连接和功能测试;4. 培养学生的动手能力、创新能力和团队协作能力。
情感态度价值观目标:1. 培养学生对电子技术的兴趣,激发学习热情;2. 培养学生严谨、务实的科学态度,提高自主学习能力;3. 培养学生关注社会发展,了解科技在生活中的应用,增强社会责任感;4. 培养学生团队合作精神,尊重他人意见,善于沟通交流。
课程性质:本课程为实践性较强的电子技术课程,以51单片机为核心,结合硬件和软件,培养学生的实际操作能力和创新能力。
学生特点:学生具备一定的电子技术基础知识,对单片机有一定了解,但实践经验不足。
教学要求:结合学生特点,注重理论与实践相结合,强调动手实践,提高学生的实际操作能力和解决问题的能力。
通过课程学习,使学生能够独立完成简单的51单片机控制系统设计。
二、教学内容根据课程目标,教学内容分为以下几个部分:1. 51单片机硬件结构及原理- 熟悉51单片机的内部结构、引脚功能;- 掌握51单片机的工作原理及性能特点。
2. 51单片机指令系统与编程- 学习51单片机的指令集,理解各指令的功能和使用方法;- 掌握C语言在51单片机编程中的应用。
3. 51单片机外围接口技术- 学习51单片机与常见外围电路(如LED、LCD、键盘等)的接口技术;- 掌握外围设备的控制原理及编程方法。
4. 仿真软件的使用- 学习使用Keil、Proteus等仿真软件进行51单片机程序设计和调试;- 掌握仿真软件的操作方法,提高程序调试效率。
北京工商大学单片机课设实验报告
单片机原理课程设计报告题目:带电子表的直流电动机控制器班级:学号:姓名:成绩:指导教师:北京工商大学计算机与信息工程学院a.利用8051单片机设计出具有时、分、秒显示的电子表。
b.可以通过键盘设定电机的启动时间和停止时间。
c.可以在设定时间起动直流电动机,并在规定时间停止。
d.测电机转速。
【实验方案】a.键盘扫描:此部分是利用实验仪器提供的键盘扫描电路,把按键输入的键码作为一组数值存入程序已设定的数组中,当键盘上的显示时钟走到某一时刻,来开启所要求实现的功能。
实验仪上提供了一个6×4的小键盘,向列扫描码地址(0X002H)逐列输出低电平,然后从行码地址(0X001H)读回。
如果有键按下,则相应行的值应为低,如果无键按下,行码为高。
这样就可以通过输出的列码和读取的行码来判断按下的是什么键。
在判断有键按下后,要有一定的延时,防止键盘抖动。
在键盘扫描实验过程中,需将KEY/LED_CS 接到相应的地址译码上,以便用相应的地址来访问。
本部分中我们将KEY/LED CS信号接片选端CS0上。
b.电子表:此部分是利用CPU的定时器和实验仪上提供的数码显示电路,设计了一个由左向右显示分别为:时、分、秒显示的电子表。
定时器每100us中断一次,在中断服务程序中,对中断次数进行计数,100us计数10000次就是1秒,然后再对秒计数得到分和小时的值,并送入显示缓冲区。
由于此部分需要用定时器计数,随后的测量电动机转速部分也需要用定时器来计数,为避免发生冲突,所以电子表部分我们选用定时器0来计数。
c.直流电动机的开启和停止及转速测量此部分是利用实验仪上的D/A转换电路,输入由片选端CS1进行选通,输出-8V至+8V电压,控制直流电机。
在电压允许范围内,直流电机的转速随着电压的升高而加快,若加上的电压为负电压,则电机会反向旋转。
在电机转盘上安装一个小磁芯,用霍尔元件感应电机转速,用8255的PB.0读回脉冲计数,计算电机转速。
单片机课程设计实验报告
课程设计报告学号: 1328403028姓名:张帅华班级: 13电子信息工程指导老师:邓晶苏州大学电子信息学院2016年4月摘要随着时代的进步和发展,单片机技术已经成为一种比较成熟的技术,普及到我们生活、工作、科研等各个领域。
本次课程设计包含四个基于STC89C52单片机的设计,分别是:基于单总线数字式温度传感器DS18b20的数字温度计的设计;基于2K位串行CMOS 的EEPROM AT24C02的数字密码锁的设计;基于SPI 接口实时时钟芯片DS1302的电子日历的设计以及基于无线收发芯片nrf24L01的简单无线通讯系统的设计。
关键词:单片机 DS18B20 AT24C02 DS1302 NRF24L01目录摘要 (1)目录 (2)第1章基于DS18B20的数字温度计设计 (3)1.1 设计要求 (3)1.2 系统组成 (3)1.3 系统设计 (3)1.3.1 硬件设计 (3)1.3.2软件设计 (4)1.4 设计结果 (6)第2章基于AT24C02的电子密码锁设计 (7)2.1 设计要求 (7)2.2 系统组成 (7)2.3 系统设计 (8)2.3.1 硬件设计 (8)2.3.2 软件设计 (9)2.4 设计结果 (9)第3章基于DS1302的电子日历的设计 (11)3.1 系统功能 (11)3.2 系统组成 (11)3.3 系统设计 (11)3.3.1 硬件设计 (11)3.3.2 软件设计 (13)3.4 设计结果 (14)第4章基于NRF24L01的无线通信系统的设计 (15)4.1 系统功能 (15)4.2 系统组成 (15)4.3 系统设计 (15)4.3.1 硬件设计 (15)4.3.2 软件设计 (16)4.4 设计结果 (16)总结 (17)第1章基于DS18b20的数字温度计设计1.1 设计要求(1)采用DS18b20与单片机STC89C52相结合设计数字温度计,实现液晶屏实时显示当前温度;(2)读取并显示DS18B20的序列码。
单片机课程设计报告
单片机课程设计实验报告设计题目:基于单片机的多功能综合应用系统的设计专业:电子信息工程班级:姓名:指导老师:目录第一章设计说明1.1 设计目的 (3)1.2 设计内容及要求 (3)第二章硬件电路仿真实现2.1 硬件结构分析 (5)2.2基本功能仿真电图 (6)2.3扩展功能仿真电路图 (10)2.4 实物电路图 (15)第三章软件设计实现3.1软件程序内容 (16)3.2模块分析 (16)3.3 程序流程图 (17)第四章系统测试4.1 软件调试 (19)4.2硬件调试 (19)第五章心得体会 (20)第六章参考文献 (21)附录 (21)第一章设计说明1.1 设计目的单片机在许多领域使用十分广泛,如智能仪器仪表、实时工控、通讯设备、导航系统、家用电器等。
各科任老师们经常说“学好单片机,工作就不成问题了。
”可见学好单片意义之重大。
单片机作为一门基础学科,既是对前期学习C语言的综合运用,也是理论与实践相结合的一大体现。
本次课程设计通过基础部分,拓展功能以及整体电路的实现能很好地锻炼我们的动手及编程能力。
1.2 设计内容及要求内容:1.设计并实现具有复位功能的单片机小系统。
2.利用单片机进行灯光的场景开关控制、循环点亮控制、花样变化控制及速度变化控制(如:左右循环、扩散收缩式移动、流星雨、舞台灯光综合效果、名曲名句跟随显示等。
至少应做两项:前两项选一并有速度变化控制功能,后三项选一或自创特色花样)。
3. 炫彩音乐显示(依据3秒以上某名曲名句,模拟高、中、低音三分频,彩色LED随音频变化而起伏显示的效果,进一步地,LED 亮度跟随音乐响度闪烁)。
4.利用单片机进行灯光的色彩连续变化效果控制。
5.利用单片机进行灯光的三色联动定时控制(以交通灯为例)。
(说明:3、4中二选一,1、2、5必选)6. 配合2至5项中功能,实现液晶屏输出功能或状态信息。
7. 以调节5或4项中的时间为例实现基于4X4键盘的输入功能。
单片机课程实验报告
《单片机原理及应用》课程设计报告课题:单片机多功能系统设计班级电子1071班学号 1071205236学生姓名张亮亮专业电子信息工程系别电子与电气工程学院指导教师朱霞,付丽辉淮阴工学院电子信息工程系20010年9月目录一. 设计目的及意义。
(2) 二.设计过程。
(2) 三.硬件电路总体设计。
(3) 3.1 系统硬件总框图。
(3)3.2 系统设计原理3、2、1 系统处理器。
(3)3、2、2 LED流水灯。
(4)3、2、3 扬声器模块。
(5)3、2、4数码管。
(6) 四.硬件Proteus仿真图。
(7) 五.软件流程框图。
(8) 六.程序清单及注释。
(9) 七.软件调试。
(13) 八.心得体会。
(14) 九.参考文献。
(15)一、设计目的及的意义《单片机原理及应用》课程设计是一项重要的实践性教育环节,是学生在校期间必须接受的一项工程训练。
在课程设计过程中,在教师指导和同学帮助下,应用工程的方法,通过一个简单课题的设计练习,可使学生初步体验单片机应用系统的设计过程、设计要求、完成的工作内容和具体的设计方法,了解必须提交的各项工程文件,也达到巩固、充实和综合运用所学知识解决实际问题的目的。
通过课程设计,能加强我们多项能力的培养:(1)独立工作能力和创造力;(2)综合运用专业及基础知识,解决实际工程技术问题的能力;(3)查阅图书资料、产品手册和各种工具书的能力;(4)工程绘图的能力;(5)编写技术报告和编写技术资料的能力。
二、设计过程(1)认真研究设计任务书,明确设计要求、条件、内容和步骤;复习课程有关内容,熟悉有关单元电路的设计方法和步骤;搜集、分析、消化相关资料、软件等;掌握微型计算机应用系统软件设计方法;准备好设计需要的图书、资料和工具;拟定设计计划等;(2)系统总体及功能设计,制定总体方案及元器件的选择;(3)硬件设计,完成硬件结构图设计、系统电路图设计和绘制及电路模块的连接;(4)软件设计,完成软件流程图的设计、程序设计与调试;(5)系统程序调试;(6)设计工作总结;(7)写出设计报告。
单片机原理及应用课程设计报告
课程设计为学生提供了一个实践平台,学生可以在实践中锻炼动手能力,培养解决实际问题的能力,同时通过创新思 维,设计出具有特色的单片机应用系统。
促进理论与实践相结合
单片机原理及应用课程设计将理论知识与实践操作相结合,使学生能够更好地理解单片机的实际应用场 景,加深对理论知识的理解。
时间安排
共计8周,每周5天, 每天8小时。
04
单片机应用实践
单片机外围电路设计
电源电路
为单片机提供稳定的电源,确 保单片机正常工作。
时钟电路
为单片机提供稳定的时钟信号 ,保证程序正常运行。
复位电路
在单片机出现异常时,能够实 现自动复位或手动复位。
输入输出接口
实现单片机与外部设备的通信 和控制。
单片机程序编写与调试
单片机的编程语言和开发环境
单片机的编程语言主要有汇编语言和C语言。汇编语言是一种低级语言,直接控制硬件操作,但编程 难度较大;C语言是一种高级语言,具有可读性强、易于编程和维护等优点。
单片机的开发环境是指用于编写、编译、调试和烧录程序的软件环境。常用的单片机开发环境有Keil 、IAR、SDCC等。这些开发环境都支持汇编语言和C语言编程,提供了丰富的库函数和调试工具,方 便开发者进行单片机应用开发。
• 解决方案
检查数码管的位选信号和段选信号是否正确连接。
对未来学习和实践的建议与展望
深入学习
进一步研究单片机的内部结构和工作原理,掌握 更多高级功能和应用。
实践应用
将所学知识应用到实际项目中,提高解决实际问 题的能力。
持续学习
关注单片机技术的最新发展动态,保持学习的持 续性。
THANKS
感谢观看
单片机课程设计-武汉理工大学单片机实训报告
单⽚机课程设计-武汉理⼯⼤学单⽚机实训报告第⼀章绪论 (2)1.1概述 (2)1.2课程设计任务 (2)第⼆章硬件系统设计 (3)2.1单⽚机最⼩系统 (3)2.1.1 STC89C52的介绍 (3)2.1.2 stc89c52系列单⽚机最⼩系统的介绍 (4)2.2矩阵键盘模块 (5)2.3数码管显⽰单元 (5)2.4 LCD1602液晶显⽰电路 (6)2.5蜂鸣器单元 (7)第三章软件设计 (8)3.1数码管实验 (8)3.1.1循环数码管显⽰0—F程序设计结构图: (8)3.1.2 59秒倒计数流程图 (9)3.2 矩阵键盘流程图 (10)3.3 LCD1602滚动显⽰年⽉⽇时分秒 (11)3.4 AD转换, (12)3.5家电遥控器 (13)第四章调试结果分析 (14)4.1数码管调试及分析 (14)4.1.1循环数码管显⽰0—F (14)4.1.2数码管59秒倒计数 (15)4.2矩阵键盘 (15)4.3 LCD1602滚动显⽰年⽉⽇时分秒 (16)4.4 AD转换 (16)4.5家电遥控器 (17)第五章⼩结 (17)参考⽂献: (18)第⼀章绪论1.1概述随着我国⼯业技术和电⼦技术的发展和进步,⾃动控制技术也已经得到了极⼤的普及和应⽤,⽽这些⾃动控制技术的核⼼技术就是单⽚微型计算机,简称单⽚机。
它以其⾼可靠性、⾼性价⽐、低电压、低功耗等⼀系列优点,被⼴泛应⽤于控制系统、数据采集等领域。
⽽51单⽚机系列以其超⾼的性价⽐深受⼴⼤电⼦爱好者和开发者以及⼤学⽣群体的欢迎。
故⽽本次课程设计采⽤STC89C52单⽚机。
1.2课程设计任务必做项⽬(这是每个学⽣必做的任务):1.基本系统:在51单⽚机开发系统PCB电路板上完成电⼦元器件的焊接、调试、程序下载,并实现数码管显⽰、矩阵键盘扫描、中断程序、定时器程序、串⼝通讯等基本功能;2.显⽰功能:焊接电路并实现对1602液晶屏的显⽰功能,要求能滚动显⽰字符;3.输出控制:焊接电路并实现对继电器的控制功能;4.数据采集:焊接电路并实现对AD0832的数据采集功能;选做项⽬(以下任选⼀):1.家电遥控器:实现对红外接收管和发射管的控制功能,要求能够学习遥控器的红外码,并能发射相应的编码,实现红外遥控器的功能。
单片机课程设计实验报告
单片机课程设计实验报告单片机课程设计实验报告引言单片机是嵌入式系统中常见的一种计算机芯片,具有体积小、功耗低、成本低等优势。
本次实验旨在通过单片机的应用设计,加深对单片机原理和应用的理解,并提升解决问题的能力。
实验目的本次实验的目的是设计一个简单的温度监测系统,通过单片机采集温度传感器的数据,并将数据显示在液晶显示屏上。
通过这个实验,我们可以掌握单片机的基本编程和电路连接方法,同时加深对温度传感器的原理和应用的理解。
实验原理1. 单片机基本原理单片机是一种集成电路,内部包含了CPU、内存、输入输出端口等功能模块。
通过编程,可以控制这些功能模块的工作,实现各种应用。
2. 温度传感器原理温度传感器是一种能够感知环境温度变化的器件,常见的有热敏电阻、热电偶等。
本次实验使用的是热敏电阻,其电阻值随温度的变化而变化。
实验材料1. 单片机开发板2. 温度传感器3. 液晶显示屏4. 连接线等实验步骤1. 连接电路将单片机开发板与温度传感器、液晶显示屏连接起来,确保电路连接正确无误。
2. 编写程序使用C语言编写单片机的程序,实现温度传感器数据的采集和液晶显示屏的显示。
程序的基本思路是通过单片机的模拟输入端口读取温度传感器的电阻值,然后将电阻值转换为温度值,并将温度值显示在液晶显示屏上。
3. 烧录程序将编写好的程序烧录到单片机开发板上,确保程序能够正常运行。
4. 实验测试将温度传感器放置在不同的环境中,观察液晶显示屏上的温度数值是否能够准确显示,并记录实验结果。
实验结果与分析经过实验测试,我们发现温度传感器能够准确地采集环境温度,并将温度数值显示在液晶显示屏上。
通过对比实际温度和显示温度的差异,我们可以评估温度传感器的准确性和精度。
实验总结通过本次实验,我们深入了解了单片机的基本原理和应用,掌握了单片机的编程方法和电路连接方法。
同时,我们也加深了对温度传感器的原理和应用的理解。
这些知识和技能对于今后的学习和工作都具有重要意义。
单片机课程设计报告-数字温度计
单片机课程设计报告-数字温度计单片机是一种集成了微处理器核心、存储器、外围接口和定时器等功能模块的微型计算机。
在现代电子科技领域中,单片机被广泛应用于各种嵌入式系统中。
本课程设计主要针对单片机的应用实践,通过设计一个数字温度计来锻炼学生的单片机编程能力,同时加深对数字温度计的原理及应用的理解。
二、设计目标本课程设计旨在使学生掌握以下内容:1. 掌握单片机的基本原理和编程方法;2. 了解数字温度计的原理和应用;3. 熟悉温度传感器的使用和数据处理方法;4. 能够利用单片机开发出一个简单的数字温度计。
三、设计内容本课程设计主要包括以下内容:1. 单片机原理和编程基础;2. 数字温度计的原理和应用介绍;3. 温度传感器的选型及使用方法;4. 单片机数字温度计的设计和实现。
四、设计步骤1. 单片机原理和编程基础学生首先将学习单片机的基本原理和编程方法,包括单片机的体系结构、存储器组成、I/O口的使用、定时器的应用等内容。
2. 数字温度计的原理和应用介绍学生将了解数字温度计的基本原理和应用场景,包括数字温度计的工作原理、常见的数字温度计种类、数字温度计的应用领域等。
3. 温度传感器的选型及使用方法学生将学习温度传感器的选型原则,了解各种温度传感器的特点及使用方法,包括模拟温度传感器和数字温度传感器。
4. 单片机数字温度计的设计和实现学生将利用所学的单片机编程知识和温度传感器的使用方法,设计并实现一个简单的数字温度计。
学生需要考虑温度测量精度、显示方式、数据处理方法等问题。
五、教学方法本课程设计采用理论教学与实践相结合的教学方式,通过理论课堂讲解和实际操作演示相结合,加深学生对单片机和数字温度计知识的理解和掌握。
同时,鼓励学生合作学习,共同解决实际问题,提高实战能力。
六、教学评估学生将根据设计的数字温度计的实际测量情况、数据处理方法以及最终的效果进行评估,教师将根据学生的设计方案和实际操作情况进行评分。
同时,学生对单片机编程的理解和掌握水平也将作为评估的重要内容。
单片机课程设计实习报告2篇
单片机课程设计实习报告 (2)单片机课程设计实习报告 (2)精选2篇(一)实习报告1. 实习概述在本次实习中,我参与了单片机课程设计项目的开发工作。
该项目的目标是设计并实现一个功能完善的单片机系统,能完成一些常见的任务,如控制LED灯的闪烁、采集温湿度数据等。
2. 实习过程在实习的第一天,我与项目组的其他成员一起讨论了系统的设计方案。
我们决定采用STM32单片机作为硬件平台,并选择了Keil作为开发环境。
然后,我们开始了系统的搭建工作。
在搭建系统的过程中,我主要负责编写程序代码。
我首先学习了STM32单片机的相关知识,并了解了它的编程方式。
然后,我根据系统的需求,编写了一些基本的程序代码,如控制LED灯的闪烁、读取温湿度传感器的数据等。
在编写代码的过程中,我遇到了一些问题。
例如,我发现LED灯无法正常闪烁,经过调试后发现是我在代码中写错了引脚的定义。
我还遇到了一些编译错误和逻辑错误,通过查阅资料和与同事的讨论,我逐渐解决了这些问题。
在实习的最后几天,我与项目组的其他成员一起测试了系统的功能,并进行了修复和优化。
我们使用示波器和逻辑分析仪对系统进行了验证,确保系统的稳定性和可靠性。
3. 实习总结通过参与单片机课程设计实习项目,我对单片机的硬件和软件实现有了更深入的了解。
我学会了如何使用Keil编写程序代码,并通过实践掌握了调试和排除故障的技巧。
同时,我也学会了如何与团队成员合作,共同完成一个项目。
通过实习,我不仅提高了自己的技术能力,还培养了解决问题的能力和团队合作能力。
我相信这些经验和技能对我的未来发展将非常有帮助。
4. 改进建议在实习过程中,我发现有些文档和资料的描述不够清晰和详细,对我理解项目的要求和实现方式造成了一些困扰。
因此,我建议在今后的实习项目中,关注文档和资料的编写,确保其准确性和完整性。
另外,我还建议在项目开始之前进行一些充分的准备工作,包括学习相关知识和技术,以及对项目的需求和实现方式进行详细的讨论和规划。
单片机课程设计报告
(此文档为word格式,下载后您可任意编辑修改!)目录一、课程设计的目的………………………………………………二、课程设计用的仪器和器件……………………………………………三、课程设计的具体内容…………………………………………………1、总体报告…………………………………………………………………2、硬件设计…………………………………………………………………3、软件流程和程序…………………………………………………………4、调试结果…………………………………………………………………四、课程设计的体会和发生的问题……………………………………参考文献………………………………………………………………………一、课程设计的目的单片机系统课程设计是《单片机原理与接口技术》课程与实验结束后的一门综合性实践课。
所选题目《交通灯控制系统》紧密结合所学的主要内容,加深巩固所学知识,同时对所学内容进行扩展,有一定的深度和广度,能充分发挥学生的能动性和想象力。
通过电路设计、安装、调试等一系列环节的实施,提高学生的单片机应用系统的设计能力。
二、课程设计用的仪器和器件实验设备:试验台、电烙铁、焊锡丝、支架、吸枪、剪刀、PC机一台、仿真仪一台实验材料:电路板(12*8 cm 1块)、发光二级管(红、黄、绿各4只)、发光二级管插座(4只)、接线排座(7针)、电阻(300Ω 12只)、导线(红、黄、绿各0.5米)三、课程设计的具体内容1、总体报告本次单片机课程设计的任务是以单片机为核心设计一个完整的交通灯模拟系统,用P1.0、P1.1、P1.2控制南北通道的红、黄、绿灯;用P1.3、P1.4、P1.5控制东西通道的红、黄、绿灯。
开始时,南北红灯亮并保持25秒,同时东西绿灯亮,保持20秒,20秒钟到了之后,东西绿灯闪亮3次(每周期1秒)后熄灭。
继而东西黄灯亮并保持2秒,到2秒后,东西黄灯灭,东西红灯亮并保持25秒,同时南北红灯灭,南北绿灯亮20秒,20秒到了之后,南北绿灯闪亮3次(频率为0.5秒)后熄灭。
单片机课程设计报告
单片机课程设计 报告一、课程目标知识目标:1. 学生能理解单片机的基本概念,掌握其工作原理及结构组成。
2. 学生能掌握单片机编程的基本语法,如指令系统、寄存器等。
3. 学生能了解并运用单片机在现实生活中的应用,如智能家居、机器人控制等。
技能目标:1. 学生具备使用开发板进行单片机程序编写、调试的能力。
2. 学生能通过小组合作,设计并实现简单的单片机控制系统,培养动手实践能力。
3. 学生能运用所学知识解决实际问题,具备一定的创新能力和问题解决能力。
情感态度价值观目标:1. 学生通过单片机课程学习,培养对电子技术的兴趣和热情,增强学习动力。
2. 学生在学习过程中,养成团队协作、沟通交流的良好习惯,增强集体荣誉感。
3. 学生了解单片机在我国科技发展中的重要性,培养国家使命感和社会责任感。
课程性质分析:本课程为单片机课程设计,旨在让学生通过实践操作,掌握单片机的基本原理和编程技术,提高解决实际问题的能力。
学生特点分析:本年级学生具备一定的电子技术基础知识,对单片机有一定了解,但编程能力和实践操作经验有限。
教学要求:1. 注重理论与实践相结合,强化学生的动手实践能力。
2. 采用项目驱动教学法,引导学生主动探究、解决问题。
3. 培养学生的团队协作能力,提高沟通表达水平。
4. 结合生活实际,激发学生学习兴趣,培养创新思维。
二、教学内容根据课程目标,本章节教学内容分为以下三个部分:1. 单片机基础理论- 理解单片机的概念、发展历程及应用领域。
- 掌握单片机的硬件结构、工作原理及性能指标。
- 学习单片机的指令系统、寄存器、I/O口编程等基本知识。
教学内容对应教材章节:第一章 单片机概述、第二章 单片机硬件结构及工作原理。
2. 单片机编程与调试- 学习单片机编程语言(如C语言、汇编语言)及开发环境。
- 掌握单片机程序编写、调试方法,了解程序下载、运行过程。
- 学习中断、定时器、串行通信等单片机功能模块的使用。
教学内容对应教材章节:第三章 单片机编程语言、第四章 单片机编程与调试。
单片机课程设计实验报告
单片机课程设计实验报告一、课程目标知识目标:1. 让学生理解单片机的基本原理和功能,掌握其内部结构及工作流程。
2. 使学生掌握单片机编程的基本语法和编程技巧,能独立完成简单的程序编写。
3. 帮助学生了解单片机在现实生活中的应用,提高对新技术、新领域的认识。
技能目标:1. 培养学生运用单片机进行实验设计和实践操作的能力。
2. 培养学生分析问题、解决问题的能力,提高创新思维和动手实践能力。
3. 提高学生的团队协作和沟通能力,学会在实验过程中相互交流、共同进步。
情感态度价值观目标:1. 激发学生对单片机及电子技术的兴趣,培养主动学习的习惯。
2. 培养学生严谨、细致的实验态度,养成良好的实验操作习惯。
3. 增强学生的自信心和责任感,使他们认识到学习单片机对国家科技发展的意义。
课程性质分析:本课程为单片机课程设计实验,侧重于实践操作和实际应用。
课程要求学生具备一定的电子技术基础和编程能力,通过实验深入了解单片机的工作原理和应用领域。
学生特点分析:本课程面向高年级学生,他们在之前的学习中已掌握了基本的电子技术和编程知识,具备一定的自学能力和动手实践能力。
但学生在单片机应用方面的实践经验不足,需要通过本课程加强实践锻炼。
教学要求:1. 结合课本内容,注重理论与实践相结合,提高学生的实际操作能力。
2. 注重启发式教学,引导学生主动思考、探索,培养学生的创新精神和实践能力。
3. 关注学生的个体差异,给予个别辅导,确保每位学生都能达到课程目标。
二、教学内容1. 单片机基础知识:- 单片机原理与结构- 单片机内部资源及功能- 单片机编程语言(汇编语言、C语言)2. 单片机编程与实验:- 基本输入输出编程- 定时器、中断编程- 模数转换、串行通信编程3. 单片机应用案例:- 实例分析:温度控制器、智能小车等- 创新设计:学生自主选题,设计单片机应用项目4. 实验操作与调试:- 实验步骤与方法- 常用工具与仪器的使用- 故障分析与调试技巧教学大纲安排:第一周:单片机基础知识学习,包括原理、结构、编程语言等第二周:基本输入输出编程,实验一:LED灯控制第三周:定时器、中断编程,实验二:简易电子时钟第四周:模数转换、串行通信编程,实验三:温度传感器数据采集第五周:单片机应用案例分析,学生自主选题,设计单片机应用项目第六周:实验操作与调试,完成设计项目,撰写实验报告教材章节关联:教学内容与教材《单片机原理与应用》相关章节紧密关联,具体包括:- 第一章:单片机概述- 第二章:单片机的结构与原理- 第三章:单片机编程语言- 第四章:单片机内部资源及应用- 第五章:单片机实验与调试教学内容确保科学性和系统性,以培养学生的实际操作能力为目标,注重理论与实践相结合,提高学生的创新能力和实践技能。
51单片机课程设计报告
51单片机实做课课程设计报告学院:专业班级:学号:姓名:指导教师:设计时间:目录一、设计任务与要求 (3)1.1、概述 (3)1.2、 STC89C52介绍 (3)1.3、引脚功能说明 (4)二、总原理图及元器件清单 (5)2.1、总原理图: (5)2.2、显示部分 (5)2.3、声音部分 (6)2.4、按键部分 (6)2.5、继电器 (7)三、模块电路分析 (7)3.1、硬件模块 (7)3.2、单片机控制系统及基本电路 (8)3.3、按键控制模块 (9)3.4、LED显示模块 (10)3.5、交通灯显示模块 (10)3.6、串口通信模块 (11)3.7、继电器 (11)四、调试及结论 (12)4.1 单元调试 (12)4.2 整体调试 (13)五、实验结果 (14)5.1、PCB图 (14)5.2、布线图 (14)5.3、封装结果图 (15)六、心得体会 (15)七、参考文献 (16)一、设计任务与要求1.1、概述通过交通灯的课程设计,将理论知识和实际操作结合起来,熟悉STC89C52的工作原理,设计出符合要求的交通灯。
利用按键控制数码管时间的显示,实现计时和倒数、显示、调节的基本功能。
利用汇编语言编写程序,熟悉掌握汇编语言的编写,提高动手和思维能力,知道交通灯是怎样运行的,与现实生活相贴切。
1.2、 STC89C52介绍·与MCS-51 兼容·8K字节可编程闪烁存储器·寿命:1000写/擦循环·数据保留时间:10年·全静态工作:0Hz-24Hz·三级程序存储器锁定·256*8位内部RAM·32可编程I/O线·三个定时器/计数器·6个中断源·可编程串行通道·低功耗的闲置和掉电模式·片内振荡器和时钟电路1.3、引脚功能说明(1).电源引脚Vcc(40脚):典型值+5V。
单片机原理与应用课程设计报告
单片机原理与应用课程设计报告一、设计题目基于单片机的智能温度控制系统二、设计目的通过本次课程设计,旨在加深对单片机原理与应用的理解,掌握单片机的基本应用,提高实际操作能力和解决问题的能力。
同时,通过设计一个智能温度控制系统,实现对温度的实时监测和控制,提高系统的自动化和智能化水平。
三、设计原理本设计采用单片机作为主控制器,通过温度传感器采集环境温度信息,经过A/D转换器将模拟信号转换为数字信号,再由单片机进行处理。
根据设定的温度阈值,单片机输出相应的控制信号,驱动加热元件或风扇等执行机构,实现对温度的调节和控制。
同时,通过LED显示屏实时显示当前温度值。
四、硬件电路设计1. 单片机选择:采用常用的51单片机作为主控制器。
2. 温度传感器:采用DS18B20数字温度传感器,具有测量精度高、抗干扰能力强等优点。
3. A/D转换器:采用ADC0809芯片,将温度传感器输出的模拟信号转换为数字信号。
4. 执行机构:采用继电器控制加热元件和风扇等设备。
5. LED显示屏:采用1602液晶显示屏,用于实时显示当前温度值。
五、软件程序设计1. 主程序:初始化单片机和相关硬件,启动温度传感器采集温度数据,循环检测温度值,根据设定阈值控制执行机构。
2. 温度采集程序:启动温度传感器采集环境温度数据,经过A/D转换器转换为数字信号后传送给单片机。
3. 显示程序:将当前温度值实时显示在LED显示屏上。
4. 控制程序:根据设定的温度阈值,输出相应的控制信号驱动执行机构进行温度调节。
六、实验与测试1. 硬件电路搭建:按照设计原理图搭建硬件电路,确保连接正确无误。
2. 程序编写与调试:编写软件程序并进行调试,确保程序运行正常。
3. 系统测试:通过实际测试验证系统的功能和性能,包括温度采集、控制、显示等功能。
4. 结果分析:对测试结果进行分析和总结,找出存在的问题和改进的方向。
七、结论与展望通过本次课程设计,我们成功地设计并实现了一个基于单片机的智能温度控制系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中国民航大学单片机课程设计报告数字温度计姓名:白学号:111141101专业班级:自动化A指导老师:常美华/淑舫所在学院:航空自动化学院2013年12月18日1 概述1.1 课程设计的意义本次课程设计是在我们学过单片机后的一次实习,可增加我们的动手能力。
特别是对单片机的系统设计有很大帮助。
1.2 设计的任务和要求1、基本围-55℃-125℃2、精度0.1℃3、LED数码直读显示4、LCD数码直读显示(扩展)2系统总体方案及硬件设计2.1数字温度计设计方案论证2.1.1方案一由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,其中还涉及到电阻与温度的对应值的计算,感温电路比较麻烦。
而且在对采集的信号进行放大时容易受温度的影响出现较大的偏差。
2.1.2 方案二进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,电路简单,精度高,软硬件都以实现,而且使用单片机的接口便于系统的再扩展,满足设计要求。
从以上两种方案,很容易看出,采用方案二,电路比较简单,费用较低,可靠性高,软件设计也比较简单,故采用了方案二。
2.2系统总体设计温度计电路设计总体设计方框图如图1所示,控制器采用单片机AT89C51,温度传感器采用DS18B20,用4位LED数码管及液晶以串口传送数据实现温度显示。
LED/LCD显示AT89S51DS18B20温度传感器图2.2—1总体设计方框图2.2—2系统仿真图2.3系统模块系统由单片机最小系统、显示电路、温度传感器等组成。
2.3.1 主控制器单片机AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。
晶振采用12MHZ。
图2.3.1晶振电路2.3.2 显示电路显示电路采用4位共阴极LED数码管及LCD1602,P0口由上拉电阻提高驱动能力,作为段码输出并作为数码管的驱动。
P0口的低四位作为数码管的位选端(两片锁存器)。
采用动态扫描的方式显示图2.3.2 数码管液晶显示电路2.3.3温度传感器DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
DS18B20的性能特点如下:1、独特的单线接口仅需要一个端口引脚进行通信;2、多个DS18B20可以并联在惟一的三线上,实现多点组网功能3、无须外部器件;4、可通过数据线供电,电压围为3.0~5.5V;5、零待机功耗;6、温度以9或12位数字;7、用户可定义报警设置;8、报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;9、负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;DS18B02可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。
另一种是寄生电源供电方式,如图4 所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期提供足够的电流,可用一个MOSFET管来完成对总线的上拉。
当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。
采用寄生电源供电方式时VDD端接地。
由于单线制只有一根线,因此发送接口必须是三态的。
图2.3.3 温度传感器与单片机的连接3系统软件算法分析系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序,按键扫描处理子程序等。
3.1主程序流程图主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。
这样可以在一秒之测量一次被测温度,其程序流程见图3.1所示。
图3.1 主程序流程图3.2读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
其程序流程图如图 3.2示温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms ,在本程序设计中采用1s 显示程序延时法等待转换的完成。
温度转换命令子程序流程图如上图,图3.3所示图3.3 温度转换流程图图3.2 读温度流程图3.4 计算温度子程序计算温度子程序将RAM 中读取值进行BCD 码的转换运算,并进行温度值正负的判定,其程序流程图如图3.4所示。
3.5 显示数据刷新子程序显示数据刷新子程序主要是对分离后的温度显示数据进行刷新操作,当标志位位为1时将符号显示位移入第一位。
程序流程图如图3.5。
图3.4 计算温度流程图 图3.5 显示数据刷新流程图4 实验仿真进入protuse 后,连接好电路,并将程序下载进去。
将DS18B20的改为0.1,数码管及LCD 液晶显示温度与传感器的温度相同。
标志位为1?最高位显示“—”最高为显示分理出的数据结束NYY分离显示温度图4—1 数码温度显示仿真图4—2 液晶温度显示仿真5 总结与体会通过这次对数字温度计的设计与制作,让我了解了设计电路的程序,也让我了解了关于数字温度计的原理与设计理念,要设计一个电路总要先用仿真仿真成功之后才实际接线的。
但是最后的成品却不一定与仿真时完全一样,因为,再实际接线中有着各种各样的条件制约着。
而且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。
所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。
通过这次学习,让我对各种电路都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。
在调试过程中我曾将温度传感器的电源、地接反啦,导致温度传感器急剧发热,后经观察和查询资料才得以改正。
从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。
查考文献【1】朝清单片机的C语言应用程序设计(第三版) 航空航天大学【2】建岭弓雷51系列单片机开发宝典电子工业【3】平杜涛罗和平单片机应用开发与实践机械工业附源程序代码数码管程序//DS18B20的读写程序,数据脚P3.1 ////温度传感器18B20汇编程序,采用器件默认的12位转化////最大转化时间750微秒,显示温度-55到+125度,显示精度////为0.1度,显示采用4位LED共阴显示测温值////P0口为位码、段码输入,P2.6为位选,P2.7为段选///***************************************************/#include<reg51.h>#include<absacc.H>#include <intrins.h>#include<stdio.h>#define uchar unsigned char#define uint unsigned intsbit ds=P3^1;//定义DS18B20数据线sbit wela=P2^6;sbit dula=P2^7;bit list_flag=0;//初始化正确与否标志位uchar flag;//正负号标志位uchar aa,bb,cc;uchar temp_value;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40,0x63,0x39}; uchar code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};void delay(uint ms) //延时程序{while(ms--);}uchar Init(void )//DS18B20初始化{uchar status;ds=1;delay(8);ds=0;delay(90);//延时ds=1;delay(8);//延时status=ds; //如果为0,则初始化成功,如果为1,则初始化失败delay(100);//延时return(status);}uchar tempread(void)//从DS18B20读取一个字节数据{uchar i=0;uchar dat=0;for(i=8;i>0;i--){ds=0;//给脉冲信号dat>>=1;ds=1;_nop_();_nop_();if(ds) dat|=0x80;delay(4);ds=1;}return(dat);}void tempwritebyte(uchar dat)// 向DS18B20写一个字节数据{uchar j;for(j=1;j<=8;j++){ds=0;ds=dat&0x01;delay(5);ds=1;dat>>=1;}}uchar get_temp(void)//DS18B20开始获取温度并转换{uchar a,b,t;if(Init()==1){list_flag=1;}else{list_flag=0;Init();tempwritebyte(0xcc);tempwritebyte(0x44);Init();tempwritebyte(0xcc);tempwritebyte(0xbe);a=tempread();//读低8位b=tempread();//读高8位temp_value=(a&0x0f);//小数部分if((b&0x80)==0x80){b=~b;a=~a+1;t=((b<<4)|(a>>4));flag=0;}else{t=((b<<4)|(a>>4));flag=1;}}return (t);}void dis_temp(){aa=get_temp()/10;bb=get_temp()%10;cc=temp_value*625/1000%10;if(flag==0){wela=1;P0=0xfe;wela=0;dula=1;P0=0x40;//送-号dula=0;delay(10);delay(10);}else if(flag==1){wela=1;P0=0xfe;wela=0;dula=1;P0=0x00;dula=0;delay(10);delay(10);wela=1;P0=0xf7;wela=0;dula=1;P0=table[cc];dula=0;delay(300);delay(300);}wela=1;P0=0xfd;wela=0;dula=1;P0=table[aa];dula=0;delay(300);delay(300);wela=1;P0=0xfb;wela=0;dula=1;P0=table1[bb];dula=0;delay(300);delay(300);wela=1;P0=0xf7;wela=0;dula=1;P0=table[cc];dula=0;delay(300);delay(300);}void main(void){while(1){get_temp();dis_temp();}}液晶显示程序#include<reg51.h>#include<absacc.H>#include <intrins.h>#include<stdio.h>#define uchar unsigned char#define uint unsigned intsbit ds=P3^1;//定义DS18B20数据线sbit wela=P2^6;sbit dula=P2^7;sbit EN=P2^5;bit list_flag=0;//初始化正确与否标志位uchar flag;//正负号标志位uchar aa,bb,cc;uchar temp_value;unsigned char code str1[]={"temperature: "};unsigned char code str2[]={" "};/*************************lcd1602程序**************************/ void delay1ms(unsigned int ms)//延时1毫秒(不够精确的){unsigned int i,j;for(i=0;i<ms;i++)for(j=0;j<100;j++);}void wr_(unsigned char )//写指令//{ delay1ms(1);wela=0x00;dula=0x00;RS=0;EN=0;P0=;delay1ms(1);EN=1;delay1ms(1);EN=0;}void wr_dat(unsigned char dat)//写数据//{ delay1ms(1);;RS=1;EN=0;P0=dat;delay1ms(1);EN=1;delay1ms(1);EN=0;}void lcd_init()//初始化设置//wr_(0x38);delay1ms(5);wr_(0x08);delay1ms(5);wr_(0x01);delay1ms(5);wr_(0x06);delay1ms(5);wr_(0x0c);delay1ms(5);}void display(unsigned char *p)//显示// {while(*p!='\0'){wr_dat(*p);p++;delay1ms(1);}}init_play()//初始化显示{ lcd_init();wr_(0x80);display(str1);wr_(0xc0);display(str2);}void delay(uint ms) //延时程序{while(ms--);}uchar Init(void )//DS18B20初始化{uchar status;ds=1;delay(8);ds=0;delay(90);//延时ds=1;delay(8);//延时status=ds; //如果为0,则初始化成功,如果为1,则初始化失败delay(100);//延时return(status);}uchar tempread(void)//从DS18B20读取一个字节数据{uchar i=0;uchar dat=0;for(i=8;i>0;i--){ds=0;//给脉冲信号dat>>=1;ds=1;_nop_();_nop_();if(ds) dat|=0x80;delay(4);ds=1;}return(dat);}void tempwritebyte(uchar dat)// 向DS18B20写一个字节数据{uchar j;for(j=1;j<=8;j++){ds=0;ds=dat&0x01;delay(5);ds=1;dat>>=1;}}uchar get_temp(void)//DS18B20开始获取温度并转换{uchar a,b,t;if(Init()==1){list_flag=1;}else{list_flag=0;Init();tempwritebyte(0xcc);tempwritebyte(0x44);Init();tempwritebyte(0xcc);tempwritebyte(0xbe);a=tempread();//读低8位b=tempread();//读高8位temp_value=(a&0x0f);//小数部分if((b&0x80)==0x80){b=~b;a=~a+1;t=((b<<4)|(a>>4));flag=0;}else{t=((b<<4)|(a>>4));flag=1;}}return (t);}void dis_temp(){aa=get_temp()/10+0X30;bb=get_temp()%10+0X30;cc=temp_value*625/1000%10+0X30;if(flag==0){ wela=0;dula=0;wr_(0xc0);wr_dat(0x2d);//显示符号位}else if(flag==1){ wela=0x00;dula=0x00;wr_(0xc0);wr_dat(0x00);//显示符号位}wela=0x00;dula=0x00;wr_(0xc1);wr_dat(aa);//显示十位delay1ms(50);dula=0x00;wela=0x00;wr_(0xc2);wr_dat(bb);//显示个位wela=0x00;dula=0x00;wr_(0xc3);wr_dat(0x2e);//显示小数点wela=0x00;dula=0x00;wr_(0xc4);wr_dat(cc);//显示小数位}void main(void){init_play();//初始化显示while(1){get_temp();dis_temp();}}。