重邮51单片机课程设计报告

2024-10-05

重邮51单片机课程设计报告(共7篇)

重邮51单片机课程设计报告 篇1

重邮专用

51单片机课程设计报告

学院:

专业班级:姓名:

指导教师:

设计时间:

51单片机课程设计

一、设计任务与要求

1.任务:制作并调试51单片机学习板 2.要求:

(1)了解并能识别学习板上的各种元器件,会读元器件标示;(2)会看电路原理图;

(3)制作51单片机学习板;

(4)学会使用Keil C软件下载调试程序;

用调试程序将51单片机学习板调试成功。

二、总原理图及元器件清单

1.总原理图

要求:用铅笔在A4纸整页绘制

2.元件清单

三、模块电路分析

1.最小系统:

单片机最小系统电路分为振荡电路和复位电路,振荡电路选用 12MHz 高精度晶振, 振荡电容选用 22p和30p 独石电容;

晶振为单片机提供时钟激励,保证单片机内部和外部电路的时序逻辑电路协调动作,课程中使用的是12M的晶振,可以产生每秒12M频率的激

励。而构成振荡回路的俩个电容为负载电容,可以影响晶振的谐振频率和振荡幅度。

图 1图

2复位电路使用 RC 电路,使用普通的电解电容与金属膜电阻即可;

3当单片机上电瞬间由于电容电压不能突变会使电容两边的电位相同,此时RST为高电平,之后随着时间推移电源负极通过电阻对电容放电,放完电时RST为低电平。正常工作为低电平,高电平复位。(分析振荡电路:测振荡频率; 分析复位电路:高或低电平复位?)

2.显示模块:

发光二极管显示电路:

Usb的为系统加电时,power的发光二极管处于高电位,发光。当程序控制其余四个脚的电位为低电位,输出端口为高电位,剩下的四个发光二极管发光

4数码管显示电路

本课程使用数码管显示状态为静态显示。静态显示就是显示驱动电路具有

输出锁存功能。单片机将所要显示的数据输出后,数码管显示数据不变。Cpu不再控制led。静态显示的接口电路采用一个并行口接一个数码管。数码管的公共端按共阴极或共阳极分别接地或

VCC

5四、硬件调试

1、是否短路

用万用表检查P2两端是短路。电阻为0,则短路,电阻为一适值,电路正常。

2、焊接顺序

焊接的顺序很重要,按功能划分的器件进行焊接,顺序是功能部件的焊接--调试--另一功能部件的焊接,这样容易找到问题的所在。

3、器件功能

1)检查原理图连接是否正确

2)检查原理图与PCB图是否一致

3)检查原理图与器件的DATASHEET上引脚是否一致 4)用万用表检查是否有虚焊,引脚短路现象

5)查询器件的DATASHEET,分析一下时序是否一致,同时分析一下命令字是否正确

6)通过示波器对芯片各个引脚进行检查,检查地址线是否有信号的7)飞线。用别的的口线进行控制,看看能不能对其进行正常操作,多试验,才能找到问题出现在什么地方。

六、软件调试

1、设置硬件仿真环境

单片机应用系统程序的编译和仿真在KeilμVision环境下进行,在调试程序之前,需要对工程进行Debug设置,选择软件仿真或硬件仿真。软件仿真使用计算机来模拟程序的运行,不需要建立硬件平台就可以快速得到某些运行结果;硬件仿真是最准确的仿真方法,必须建立硬件平台,通过PC机→硬件仿真器→用户目标系统进行系统调试。采用硬件仿真的方法,硬件平台即为带有图1所示接口电路的单片机应用系统,设置硬件仿真环境的具体操作步骤如下:

首先,点击所建工程:Project菜单中的Options for Target„Targer 1‟,出现工程的配置窗口,点击Debug设置,选择KeilMcmitor-51 Driver,具体参数设置如图6所示。

图 6

然后,设置仿真器参数。建议波特率设置范围300~38 400。为避免程序中的中断和Keil硬件仿真环境中的中断互相冲突,不选择“Stop ProgramExecution with SerialInterrupt”。仿真器参数的设置如图7所示。

图7

完成51单片机在Keil μVision环境中的硬件仿真环境设置后,可以进行程序的调试仿真。

2、调试仿真

1)导入测试代码:文件→打开→key and display.Uv2 2)重建全部工程:工程→重建全部目标文件

重建结果为,“DA_5615” – 0 Error(s), 0 Warning(s).3)调试:调试→Start/Stop Debug session(Ctrl + F5)

调试结果为:Connected to Monitor_51 V3.4Load “C:......DA_56511、详细描述软件调试步骤。及各模块调试结果。

2、详细描述调试过程中出现的故障现象,并作故障分析,及解决方法

七、心得

自己写啦~~

重邮51单片机课程设计报告 篇2

课程设计

资料袋

电气与信息工程学院学年第学期

课程名称单片机系统课程设计指导教师凌云职称教授学生姓名专业班级测控101学号题目数字钟(C51版)成绩起止日期 2012年12 月 10日~ 2012年 12 月 28 日

目录清单

湖南工业大学

课程设计任务书

2012 —2013 学年第1 学期

电气与信息工程学院测控技术与仪器专业101班 课程名称:单片机系统课程设计设计题目:数字钟(C51版)完成期限:自2012年12 月 17日至2012年12 月28日共2周单片机系统课程设计说明书 起止日期:

“51”单片机实习报告 篇3

学院:电气与控制工程学院

专业:

班 :

班 级 :

姓名:

学号:

目录 一. 前言 二. 实训的目的及要求 三.实训原理

四.硬件的安装与调试

五.软件部分 六.系统测试 七.元器件清单 八.心得体会 九.参考文献

前言

精简开发板是一款以 8051 系列单片机为核心的精简开发板。8051 系列单片机是一款应用非常广泛的 8 位微处理芯片,由于其功能齐全,产品技术成熟,资料广泛,又是学习其他很多单片机的基础。

单片机具有成本低、体积小、可靠性高、具有高附加值、通过更改软件就可以改变控制对象等优点,单片机越来越成为电子工程师设计产品时的首选器件之一。因此拥有一块单片机开发板对单片机学习具有着极其重要的意义。

本课题设计的单片机开发板,具有一般开发板通用结构,并基于硬件进行相关软件设计。利用程序开发语言开发程序并实现 ISP 在线下载到单片机,无需配置单独的下载器。单片机使用 ISP 在线下载程序,加快了程序设计者调试的进度,使设计者所设计的程序尽快得到验证。通过对开发板上的模块进行实验,可以提高针对不同硬件进行编程的能力,同时通过实验现象对所用的硬件也有了更深一步的认识,因此该开发板具有一定的实用价值和现实意义。

实训的目的及要求 1.了解“51”精简开发板的工作原理及其结构; 2.了解复杂电子产品生产制造的全过程; 3.熟练掌握电子元器件的焊接方法与技巧,训练动手能力,培养工程实践观念。

实训原理 1.主要性能指标

输入电压:DC 4.5V~5V;典型值:5V

2.功能分区与模块简介

[1] 单片机 单片机也称单片微控制器(Single Chip Microcontroller),它集成度高、运算快、体积小、运行可靠、价格低廉,在过程控制、数据采集、机电一体化、智能仪器仪表、家用电器以及网络技术等方面得到广泛应用。

[2] 电源部分 电源部分由开关、稳压集成、电源指示灯几部分组成,本款 51 板输入电压4.5V~5V,典型输入电压为 5V,也可通过板上的稳压集成芯片 78M05 给单片机提供 5V 电压,可使单片机正常工作。

[3] 串行下载部分 这一部分由串口、下载缓冲器 MAX232 组成,通过 MAX232 芯片把 TTL 电平转换成 RS-232 电平格式,可以用于单片机与微机通信。再通过 DB9 接口由一条串口线与电脑串口相连,可以利用程序下载软件(下载方法书后将做介绍)向单片机下载程序,也可通过一些串口调试软件与电脑进行串口通信。但是,只有STC89S 系列单片机支持串口下载,而 AT89S 系列单片机不支持串口下载。

[4] ISP 下载 ISP 下载是 AT89S 系列单片机的下载方式,不能用于 STC89S 系列单片机,它由一条并口线与电脑并口相连,通过 Easy 下载软件向单片机下载程序,但下载器需另行购买。

[5] 输入/输出接口 51 板将 32 个 I/O 口全部引出:其中 P0 口、P1 口、P2 口、P3 口各有 8 个I/O 口用排针引出,排针两端为与单片机共地的 5V 电源,方便进行外接扩展,而单片机的 EA、ALE、PSEN 端口也在靠近排阻下方引出,以方便日后进行一些高级扩展。P1 口接有 8 个发光 LED,以供测试之用,P0 口外接 10K 的上拉电阻。这些 I/O 口即可做输出,又可做输入口,51 单片机内部可自行识别,不必要设置。

[6] 外部复位 复位是对单片机硬件的初始化,51 单片机具有外部复位功能,高电平有效,即在单片机 9 脚加上高电平单片机就被复位。此产品的复位电路由按键 S2,电 容 C3 和电阻 R9 组成。

系统原理图

硬件的安装与调试 1.拿到 51 单片机套件后,首先应按照附录的元器件清单表逐一检查元件数目和规格,确保产品完整。

2.详细阅读硬件说明部分,并将元件对号入座,确保一次性焊接成功。

3.先对较矮小的元件进行焊接,比如电阻、稳压集成,再对高一些的元件进行焊接,比如芯片座、排阻等,依此类推,最后焊接高大的元件,比如串口、ISP下载口等。焊接时应注意一些元件的正负极和方向。

11223344D DC CB BA AP1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78RST9P3.0/RxD10P3.1/TxD11P3.2/INT012P3.3/INT113P3.4/T014P3.5/T115P3.6/WR16P3.7/RD17XTAL218XTAL119VSS20P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P2.7/A1528PSEN29ALE30EA/VPP31P0.7/AD732P0.6/AD633P0.5/AD534P0.4/AD435P0.3/AD336P0.2/AD237P0.1/AD138P0.0/AD039VCC40STC89C52U11234567891110D Connector 9J1DS2DS3DS4DS5DS6DS7DS8DS9DS18.2KR9SW-PBS21 2crystal oscillatorY130pFC230pFC1104C410uFC3123P5Vcc16V+2V-6TO27RI28GND15C1+1C1_3C2+4C2-5TI210RO29MAX232 U2104C6104C5104C7470R1POWER470R2470R3470R4470R5470R6470R7470R8470R10Vin VoutGND78M05VR1Vcc1 23 45 67 89 10JP1RSTP1.6 P1.5P1.7VccRSTVCCP3.0 RXDP3.1 TXDP3.1 TXDP3.0 RXDVCCXTAL1XTAL2XTAL1XTAL21 21 32S12 3Vcc123P6EAPSENALERSTVccEA12345678910P012345678910P112345678910P212345678910P312P7PSENALEVCC VCC VCC VCCP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7P3.0 RXDP3.1 TXDP3.2P3.3P3.4P3.5P3.6P3.7电源部分复位电路 ISP 下载接口串行接口电路 晶振电路 I/O 扩展接口51 单片机系统及仿真电路

4.由于此套件标准配置不包含稳压集成 VR1(78M05),所以焊接完成后要用导线将 VR1 的 1、3 焊盘短接,芯片才能正常供电,此时只能使用 4.5-5V 的直流稳压电源供电;如果将自购 VR1(78M05)焊接在板子上,那么就可以使用 7.2V-15V 的宽电源供电。

5.焊接并检查无误后先不要急于插入芯片,应该先对芯片供电电压进行测量。插上电源,用万用表检查单片机的 20、40 脚及 MAX232 的 15、16 脚间电压,看是否为+5V(±0.5V),然后用跳线帽接通 P6 的中间一针和上面一针,使单片机 EA 端(31 脚)与电源正极相接,之后再插上芯片,进行系统测试。

软件部分 系统测试 1.串口测试 接上单片机电源和串口线,打开电源开关,电源指示灯 DS0 亮,使用 STC89C系列单片机,其本身自带了一个测试程序,上电之后 DS1-DS7 便会两个两个的闪烁。或者自己下载一个程序,如果下载成功,说明串口正常,如不成功,请仔细检查焊点及串口线。

2.I/O 口测试 下载程序一,将跳线 P5 接 ON 一端,如发现上排 LED 逐个亮或有规律的亮,说明 P1 检测正常; 根据程序一的特点,仔细分析程序二各语句功能,并猜测其结果,接着将程序二下载到单片机上,仍将跳线 P5 接 ON 一端,自己观察小灯跳变规律,看与自己分析结果是否一致。

元器件清单

元件

器件标号

元件规格

电容 C1 30pF(瓷片)

电容 C2 30pF(瓷片)

电解电容 C3 10uF(电解)

电容 C4 104(瓷片)

电容 C5 104(瓷片)

电容 C6 104(瓷片)

电容 C7 104(瓷片)

LED DS1-DS9 发光二极管(红色,¢3)

10×1 排针 P0-P3 I/O 端口 3×1 排针 2×1 排针 P5、P6 P7 LED/EA 选通开关 ALE/PSEN 功能引脚 电阻 R1-R8、R10 470Ω/330Ω(金属膜 1/4W)

电阻 R9 8.2kΩ(金属膜 1/4W)针排阻 RES 103Ω 双路自锁开关 S1 8×8 自锁开关 复位按键 S2 6×6 复位开关 8051 系列单片机 U1 STC89C52(DIP40 封装)

串口电平转换芯片 U2 MAX232(DIP16 封装)

接插件 DB9 串口(母头)

晶振 Y1 11.0592MHz

其他配件

器件标号

元件规格

DIP40芯片座 标准 DIP40 DIP16芯片座

标准 DIP16

串口下载线 标准 1.5m 4.5V 电池盒 说明书一册 标准 标准

选配元件

器件标号

元件规格

5×2 排针 ISP ISP 下载口 稳压芯片

VR1 78M05(贴片)

心得体会

我们认真学习和熟练掌握了电子器件的理论知识和使用方法,特别留意焊接过程中的焊锡使用的技术要点,以及对电路正确的验证(以防短路,烧毁器件)。

焊接完毕之后,编写程序测试硬件。我们将平时上课学到的汇编语言,根据电子器件的使用方法和特性,编写相适应的汇编程序调试。由于调试是一个比较漫长需要耐心的工作,我们从中学到许多测试经验和编程技巧,培养了坚持不懈的耐力。

通过对单片机实验开发板的硬件认识,编写测试程序对单片机开发板系统进行了完整的硬件测试,实验的测试现象达到预期要求。最终证实了此次焊接相当成功,表明这次生产实习非常圆满成功!

虽然这次的实习算起来在实验室的时间只有几天,不过因为我们都有自己的实验板,硬件的设计跟焊接都要我们自己动手去焊,软件的编程也要我们不断的调试,最终一个能完成课程设计的劳动成果出来了。

通过这次单片机实习,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。

单片机课程设计报告 篇4

课 程 设 计

课程名称 单片机基础课程设计 题目名称 18B20测温及按键控制 学生学院 **** 专业班级 **** 班号 **** 学生组员 ****** 指导教师 *****

DS18B20测温及按键控制

第一章系统的概述及设计任务书

摘要和关键词【摘要】:

本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机STC89C52,测温传感器使用DS18B20,用4位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。

【关键词】:单片机,数字控制,温度计,DS18B20,STC89C52 设计任务与技术指标

要求:1.基本范围-50℃-125℃

2.精度误差小于0.5℃ 3.LED数码直读显示

总体设计方案

数字温度计设计方案论证

方案一

由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。方案二

进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。

从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。

方案二的总体设计框图

温度计电路设计总体设计方框图如图1所示,控制器采用单片机AT89S51,温度传感器采用DS18B20,用3位LED数码管以串口传送数据实现温度显示。

第二章 单元模块的设计与分析

主控制器:

单片机STC89C52,具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用。

DS18B20测温及按键控制

个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图3所示。低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。

系统软件算法分析

系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。

主程序

主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图7所示。3.2读出温度子程序

读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图8示

3.3温度转换命令子程序

温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图9所示

3.4 计算温度子程序

计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图10所示。

DS18B20测温及按键控制

第三章 实验程序

else

{ b=0-b;

if(b%10==1)f-=1;b=10-(b%10);/*zhwy.c*/ if(b==10)b=0;

for(i=16;i>0;i--)#include

led(a,b,c,d);} #include“DS18B20.h” return f;unsigned char table[]= } {0xC0,0xF9,0xA4,0xB0, void main(void)

0x99,0x92,0x82,0xF8, { unsigned int Sum,k;0x80,0x90,};//不带小数点的编码

signed int h,j;extern unsigned int temp;LED_init();extern float f_temp;h=0;j=0;unsigned int i;while(1)void LED_init(void){tempchange();{ P2=0x0f;Sum=get_temp();P0=0x00;P2=0xff;} for(k=0;k<100;k++)void led(signed int m,signed int { n,signed int p,signed int q)if(P2==0xf7){ P2=0xef;

{delay(10);

P0=table[q];

if(P2==0xf7)

delay(5);

h+=1;

P2=0xdf;h=display(Sum,h,j);

P0=table[p];

}

delay(5);if(P2==0xfb)

P2=0xbf;

{delay(10);

P0=table[n]+0x80;

if(P2==0xfb)

delay(5);

h-=1;

P2=0x7f;

h=display(Sum,h,j);

P0=table[m];

}

delay(5);if(P2==0xfd)}

{delay(10);unsigned int display(unsigned int

if(P2==0xfd)y,signed int f,signed int g)

j+=1;{ signed int a,b,c,d;

h=display(Sum,h,j);

a=y/1000;

} b=(y%1000)/100+f;if(P2==0xfe)c=(y%100)/10+g;

{delay(10);d=(y%10)/1;

if(P2==0xfe)if(b<=9&&b>=0)

j-=1;for(i=16;i>0;i--)

h=display(Sum,h,j);

led(a,b,c,d);

} else if(b>9)

} {a+=b/10;b=b%10;

display(Sum,h,j);for(i=16;i>0;i--)} }

led(a,b,c,d);} void delay(unsigned int z)//延 时函数

/*DS18B20.h */ {unsigned int x,y;sbit ds=P3^5;//温度传感器信号线 for(x=z;x>0;x--)unsigned int temp;for(y=110;y>0;y--);float f_temp;} unsigned int warn_l1=260;void dsreset(void)//18B20复位,unsigned int warn_l2=250;初始化函数 unsigned int warn_h1=300;{unsigned int i;unsigned int warn_h2=320;ds=0;

i=103;

DS18B20测温及按键控制

总电路图结构图

4总结与体会

重邮51单片机课程设计报告 篇5

关键词:单片机AT89S52、DAC0832、液晶1602 Abstract: this system capitalize on AT89s52,it makes use of central processor to generate three kinds of waves, they are triangle wave, and use D/A conversion module, wave generate module and liquid crystal display of 1602, it can have the 1Hz-3KHz profile.In this system it can control wave form choosing, frequency, range,can have the sine wave, the square-wave, the triangular wave.Simultaneously may also take the frequency measurement frequency,and displays them through liquid crystal display of 1602.this design includes three modules.They are D/A conversion module, wave generate module and liquid crystal display of LED module.In this design, the wave generator into wave form module and D/A conversion module are discussed in detail.key word: AT89S52, DAC0832, liquid crystal 1602.目录

1.系统设计

1.1 设计要求

1.2方案设计与论证

1.2.1 信号发生电路方案论证 1.2.2 单片机的选择论证 1.2.3 显示方案论证 1.2.4 键盘方案论证 1.3 总体系统设计 1.4 硬件实现及单元电路设计 1.4.1 单片机最小系统的设计

1.4.2 波形产生模块设计 1.4.3 显示模块的设计 1.4.4 键盘模块的设计

1.5 软件设计流程 1.6 源程序

2.输出波形的种类与频率的测试

2.1 测试仪器及测试说明

2.2 测试结果 3.设计心的及体会 4.附录 4.1 参考文献 4.2 附图

1、系统设计

经过考虑,我们确定方案如下:利用AT89S52单片机采用程序设计方法产生锯齿波、正弦波、矩形波三种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,通过键盘来控制三种波形的类型选择、频率变化,最终输出显示其各自的类型以及数值。

1.1、设计要求

1、利用单片机采用软件设计方法产生三种波形 2)、三种波形可通过键盘选择 3)、波形频率可调

4)、需显示波形的种类及其平率

1.2方案设计与论证

1.2.1 信号发生电路方案论证

方案一:通过单片机控制D/A,输出三种波形。此方案输出的波形不够稳定,抗干扰能力弱,不易调节。但此方案电路简单、成本低。

方案二:使用传统的锁相频率合成方法。通过芯片IC145152,压控振荡器搭接的锁相环电路输出稳定性极好的正弦波,再利用过零比较器转换成方波,积分电路转换成三角波。此方案,电路复杂,干扰因素多,不易实现。

方案三:利用MAX038芯片组成的电路输出波形。MAX038是精密高频波形产生电路,能够产生准确的三角波、方波和正弦波三种周期性波形。但此方案成本高,程序复杂度高。

以上三种方案综合考虑,选择方案一。

1.2.2 单片机的选择论证

方案一:AT89S52单片机是一种高性能8位单片微型计算机。它把构成计算机的中央处理器CPU、存储器、寄存器、I/O接口制作在一块集成电路芯片中,从而构成较为完整的计算机、而且其价格便宜。

方案二:C8051F005单片机是完全集成的混合信号系统级芯片,具有与8051兼容的微控制器内核,与MCS-51指令集完全兼容。除了具有标准8052的数字外设部件,片内还集成了数据采集和控制系统中常用的模拟部件和其他数字外设及功能部件,而且执行速度快。但其价格较贵

以上两种方案综合考虑,选择方案一

1.2.3 显示方案论证

方案一:采用LED数码管。LED数码管由8个发光二极管组成,每只数码管轮流显示各自的字符。由于人眼具有视觉暂留特性,当每只数码管显示的时间间隔小于1/16s时人眼感觉不到闪动,看到的是每只数码管常亮。使用数码管显示编程较易,但要显示内容多,而且数码管不能显示字母。

方案二:采用LCD液晶显示器1602。其功率小,效果明显,显示编程容易控制,可以显示字母。

以上两种方案综合考虑,选择方案二。

1.2.4 键盘方案论证

方案一:矩阵式键盘。矩阵式键盘的按键触点接于由行、列母线构成的矩阵电路的交叉处。当键盘上没有键闭合时,所有的行和列线都断开,行线都呈高电平。当某一个键闭合时,该键所对应的行线和列线被短路。

方案二:编码式键盘。编码式键盘的按键触点接于74LS148芯片。当键盘上没有闭合时,所有键都断开,当某一键闭合时,该键对应的编码由74LS148输出。

以上两种方案综合考虑,选择方案一。

1.3总体系统设计

该系统采用单片机作为数据处理及控制核心,由单片机完成人机界面、系统控制、信号的采集分析以及信号的处理和变换,采用按键输入,利用液晶显示电路输出数字显示的方案。将设计任务分解为按键电路、液晶显示电路等模块。图(1)为系统的总体框图

图(1)总体方框图

1.4硬件实现及单元电路设计

1.4.1单片机最小系统的设计

89C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单﹑可靠。用80C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图(2)89C51单片机最小系统所示。由于集成度的限制,最小应用系统只能用作一些小型的控制单元。其应用特点:

(1 有可供用户使用的大量I/O口线。(2 内部存储器容量有限。(3 应用系统开发具有特殊性。

图(2)89C51单片机最小系统

1.4.2 波形产生模块设计

由单片机采用编程方法产生三种波形、通过DA转换模块DAC0832在进过滤波放大之后输出。其电路图如下:

图(3)波形产生电路

如上图所示,单片机的P0口连接DAC0832的八位数据输入端,DAC0832的输出端接放大器,经过放大后输出所要的波形。DAC0832的为八位数据并行输入的,其结构图如下:

图(4)DAC0832的内部结构

1.4.3 显示模块的设计

通过液晶1602显示输出的波形、频率,其电路图如下:

图(5)液晶显示

如上图所示,1602的八位数据端接单片机的P1口,其三个使能端RS、RW、E分别接单片机的P3.2—P3.4。通过软件控制液晶屏可以显示波形的种类以及波形的频率。

1.4.4 键盘显示模块的设计

本系统采用独立键盘,其连接电路图如下:

图(6)键盘

图中键盘独立键盘引出的八跟线分别接单片机的P2口,只用其第四列,因此在程序初始化时P2.7脚给低电平。如图开关3用来切换输出波形、开关7和8用

来调节频率的加减。当按开关7时输出波形的频率增加,按开关8时输出波形的频率减小。

1.5 软件设计流程

本系统采用AT89S52单片机,用编程的方法来产生三种波形,并通过编程 来切换三种波形以及波形频率的改变。

具体功能有:(1)各个波形的切换;(2)各种参数的设定;(3)频率增减等。

软件调通后,通过编程器下载到AT89S52芯片中,然后插到系统中即可独立完成所有的控制。

软件的流程图如下:

图(7)程序流程图

1.6源程序

#include #define uchar unsigned char #define uint unsigned int

sbit lcdrw=P3^3;sbit lcdrs=P3^2;sbit lcde=P3^4;sbit d=P2^7;sbit s1=P2^0;sbit s2=P2^1;sbit s3=P2^2;sbit cs=P3^5;sbit wr=P3^6;uchar s1num,a,ys,j;uint fre;uchar code tosin[256]={ 0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2, 0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5, 0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1, 0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5, 0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd, 0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1, 0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda, 0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc, 0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99, 0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51, 0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30, 0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16, 0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06, 0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05, 0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15, 0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e, 0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e, 0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72, 0x76,0x79,0x7c,0x80 };/*正弦波码 */ void delay(uint z //延时子程序 { uchar i,j;for(i=z;i>0;i--for(j=110;j>0;j--;} void delay1(uint y { uint i;for(i=y;i>0;i--;} void write_com(uchar com //1602写指令

{ lcdrs=0;P1=com;delay(5;lcde=1;delay(5;lcde=0;} void write_data(uchar date //1602数据 { lcdrs=1;P1=date;delay(5;lcde=1;delay(5;lcde=0;} void init(//初始化 { lcdrw=0;lcde=0;wr=0;cs=0;

write_com(0x38;write_com(0x0c;write_com(0x06;write_com(0x01;write_com(0x80+0x00;write_data(0x77;//写wave: write_data(0x61;write_data(0x76;write_data(0x65;write_data(0x3a;write_com(0x80+0x40;//写 f: write_data(0x66;write_data(0x3a;} void write_f(uint date //写频率 { uchar qian,bai,shi,ge;qian=date/1000;bai=date/100%10;shi=date/10%10;ge=date%10;write_com(0x80+0x42;write_data(0x30+qian;

write_data(0x30+bai;write_data(0x30+shi;write_data(0x30+ge;write_data(0x48;write_data(0x5a;} void xsf(//显示频率 { if(s1num==1 { fre=(1000/(9+3*ys;write_f(fre;} if(s1num==2 { fre=(100000/(3*ys;write_f(fre;} if(s1num==3 { fre=(1000/(15+3*ys;write_f(fre;}

} void keyscanf({ d=0;if(s1==0 { delay(5;if(s1==0 { while(!s1;s1num++;if(s1num==1 { ys=0;write_com(0x80+0x05;write_data(0x73;//写sine: write_data(0x69;write_data(0x6e;write_data(0x65;write_data(0x20;write_data(0x20;} if(s1num==2

{ ys=10;write_com(0x80+0x05;write_data(0x73;//写squrae write_data(0x71;write_data(0x75;write_data(0x61;write_data(0x72;write_data(0x65;} if(s1num==3 { ys=0;write_com(0x80+0x05;//train write_data(0x74;write_data(0x72;write_data(0x61;write_data(0x69;write_data(0x6e;write_data(0x20;} if(s1num==4 {

s1num=0;P1=0;write_com(0x80+0x05;write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20;write_com(0x80+0x42;write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20;} } } if(s2==0 { delay(5;if(s2==0

{ while(!s2;ys++;} } if(s3==0 { delay(5;if(s3==0 { while(!s3;ys--;} } } void main({ init(;while(1 { keyscanf(;if(s1num==1 //正弦波// {

for(j=0;j<255;j++ { P0=tosin[j];delay1(ys;} } if(s1num==2 //方波// { P0=0xff;delay1(ys;P0=0;delay1(ys;} if(s1num==3 //三角波// { if(a<128 { P0=a;delay1(ys;} else { P0=255-a;

delay1(ys;} a++;}

if(!(s1&s2&s3 { xsf(;} } }

2、输出波形的种类与频率的测试

2.1、测量仪器及测试说明

测量仪器:稳压电源、示波器、数字万用表。

测量说明:正弦波、矩形波、三角波信号的输出,通过对独立键盘来实现其的不同波形的输出以及其频率的改变。

2.2测试过程

当程序下进去时经过初始化,液晶屏的上只显示“wave:”和“f:“,当开关三按一下是此时输出波形为正弦波,按两下时输出为方波,按三下时输出为三角波。另外两个开关可以调节频率,三种波形的频率可调范围不同,分别如下: 正弦波:1—180HZ 方 波:1——3.3KHZ 三角波:1——180HZ

根据示波器的波形频率的显示计算出三种波形的频率计算公式如下: 正弦波:f=(1000/(9+3*ys 方 波:f=(100000/(3*ys 三角波:f=(1000/(15+3*ys 其中ys为延时的变量。三种波形的仿真波形图如下:

图(8)正弦波图形

图(9)方波图形

图(10)三角波图行

2.3、测试结果

各项指标均达到要求。

测试数据如下:

1)、产生正弦波、方波、三角波基本实现

2)、三种波形的频率都可调,但不能步进的调节,其中方波的可调范围最广为1—3.3KHZ,其他两种波形的频率范围不大1—180HZ 3)、显示部分基本实现 4)、键盘功能实现

3、设计心的及体会

通过这次毕业设计,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了大学三年的学习成果,进一步加深了我对专业知识的了解和认识以及动手的能力。虽然在这次设计中对于所学知识的运用和衔接还不够熟练,作品完成的还不是很出色。但是我将在以后的工作和学习中继续努力、不断完善。这个设计是对我们过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。

4、附录

4.1 参考文献

[1] 戴仙金主编 51单片机及其C语言汇编程序开发实例 清华大学出版社,2008 [2] 高吉祥主编 全国大学生电子设计竞赛培训系列教程 电子工业出版社,2007 [3] 杨素行主编 模拟电子技术基础简明教程 高等教育出版社,2007 [4] 蒋辉平主编 单片机原理与应用设计 北京航空航天大学出版社 2007 4.2 附图

重邮51单片机课程设计报告 篇6

目 录

一、设计目的二、程设计具体要求

三、单片机发展简史

四、8051单片机系统简介

五、8051单片机内部定时器/计数器简介

六、程序电路

七、程序流程

八、程序代码

九 实验总结-要求写出完整的论文以及心得体会

十 参考资料及小结

原 文 :一.目的1. 进一步熟悉和掌握8051单片机的结构及工作原理。

2. 掌握单片机的接口技术及相关外围芯片的外特性,控制方法。

3. 通过课程设计,掌握以单片机核心的电路设计的基本方法和技术,了解表关电路参数的计算方法。

4. 通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。

5. 通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应打下基础。

二.课程设计的体要求

a)原理图设计。

1. 原理图设计要符合项目的工作原理,连线要正确,端了要不得有标号。

2. 图中所使用的元器件要合理选用,电阻,电容等器件的参数要正确标明。

3. 原理图要完整,CPU,外围器件,扩器接口,输入/输出装置要一应俱全。

b)程序调计

1. 根据要求,将总体项能分解成若干个子功能模块,每个功能模块完成一个特定的功能。

2. 根据总体要求及分解的功能模块,确定各功能模块之间的关系,设直出完整的程序流程图。c)程序调试将设计完的程序输入,汇编,排除语法错误,生成*OBJ文件。

1. 按所设计的原理图,在实验平台上连线,检查无误。

2. 将汇编后生成的*OBJ文件传送到实验装置的,执行该程序,检查该程序、是否达到设计要求,若未达

到,修改程序,直到达到要求为止,d)说明书

1. 原理图设计说明

简要说明设计目的,原理图中所使用的元器件功能及在图中的作用,各器件的工作过程及顺序。

2. 程序设计说明

对程序设计总体功能及结构进行说明,对各子模块的功能以及各子模块之间的关系作较详细的描述。

3. 画出工作原理图,程序流程图并给出程序清单。

目前,单片机已广泛应用到图民经济建设和日常生活的许多领域,成为测控技术现代化必不可少的重要工具。

单片机电子时钟

作者:佚名来源:本站原创点击数:

491更新时间:2007年06月27日

DS1302是Dallas公司生产的一种实时时钟芯片。它通过串行方式与单片机进 行数据传送,能够向单片机提供包括秒、分、时、日、月、年等在内的实时时间

信息,并可对月末日期、闰年天数自动进行调整;它还拥有用于主电源和备份电源的双电源引脚,在主电源关闭的情况下,也能保持时钟的连续运行。另外,它还能提供31字节的用于高速数据暂存的RAM。鉴于上述特点,DS1302已在许多单片机系统中得到应用,为系统提供所需的实时时钟信息。

一、DS1302的主要特性

1.引脚排列

500)this.width=500 border=0>

图1DS1302引脚排列图

DS1302的引脚排列如图1所示,各引脚的功能如下:

X1,X2——32768Hz晶振引脚端;

RST——复位端;

I/O——数据输入/输出端;

SCLK——串行时钟端;

GND——地;

VCC2,VCC1——主电源与后备电源引脚端。

2.主要功能

DS1302时钟芯片内主要包括移位寄存器、控制逻辑电路、振荡器、实时时钟电路以及用于高速暂存的31字节RAM。DS1302与单片机系统的数据传送依靠RST,I/O,SCLK三根端线即可完成。其工作过程可概括为:首先系统RST引脚驱动至高电平,然后在作用于SCLK时钟脉冲的作用下,通过I/O引脚向DS1302输入地址/命令字节,随后再在SCLK

时钟脉冲的配合下,从I/O引脚写入或读出相应的数据字节。因此,其与单片机之间的数据传送是十分容易实现的。

二、时钟的产生及存在的问题

(1)在实际使用中,我们发现DS1302的工作情况不够稳定,主要表现在实时时间的传送有时会出现误差,有时甚至整个芯片停止工作。我们对DS1302的工作电路进行了分析,其与单片机系统的连接如图2所示。从图中可以看出,DS1302的外部电路十分简单,惟一外接的元件是32768Hz的晶振。通过实验我们发现:当外接晶振电路振荡时,DS1302计时正确;当外接晶振电路停振时,DS1302计时停止。因此,我们认为32768Hz晶振是造成 DS1302工作不稳定的主要原因。

500)this.width=500 border=0>

图2DS1302与单片机系统的连接图

(2)DS1302时钟的产生基于外接的晶体振荡器,振荡器的频率为32768Hz。该晶振通过引脚X1、X2直接连接至DS1302,即DS1302是依靠外部晶振与其内部的电容配合来产生时钟脉冲的。由于DS1302在芯片本身已经集成了6pF的电容,所以,为了获得稳定可靠的时钟,必须选用具有6pF负载电容的晶振。

然而,许多人在选用晶振时仅仅注意了晶振的额定频率值,而忽视了晶振的负载电容大小,甚至连许多经销商也不能提供所售晶振的负载电容。所以即使在使用中选用了符合32768Hz的晶振,但如果该晶振的负载电容与DS1302提供的6pF不一致时,就会影响晶振的起振或导致振荡频率的偏移,出现上述在应用中的问题。

三、利用辅助电容实现负载匹配

(1)当所选的晶振负载电容不是6pF时,可以采用增加辅助电容的方法提高或降低DS1302振荡器的电容性负载,使之与晶体所需的电容值匹配。如果已知晶体的负载电容为CI,若CI<6pF,则可以增加一个并联电容CS以产生所需的总负载电容CI,即CI=6pF+CS;若CI>6pF,则可以在晶体的一端增加一个串联电容CS,以产生所需的负载电容CI,即1/CI=1/6pF+1/CS,通过计算即可得出应增加的辅助电容大小。辅助电容的接法如图3所示。

图3CS连接电路图

(2)在使用前对晶体的负载电容并不知道的情况下,通过测定晶体振荡频率的方法可以确定该晶体的负载电容。

对于晶体振荡器来说,其振荡频率与负载电容之间的关系是确定的。以本文讨论的DS1302使用的32768Hz晶振为例:当它工作于所要求的负载电容时,能较准确地产生 32768Hz的频率;当它的负载电容小于6pF时,其振荡频率会正向偏移;当它的负载电容大于6pF时,其振荡频率就会负向偏移。因此,对于未知负载电容的晶体应首先采用实验的方法,在其两端加入辅助电容使晶体起振,然后用频率计测出振荡频率。若测得频率大于32768Hz,说明负载电容偏小;若测得频率小于32768Hz,说明负载电容偏大。对辅助电容逐步调整,最终使振荡频率尽可能接近32768Hz,则此时晶体端所接负载电容的总和就是适合该晶体的负载电容。

结论

以上方法经我们在实际工作中多次使用,证明确实有效。它放宽了DS1302在使用中对晶振的条件要求,增强了DS1302在工作中的稳定性,对DS1302更广泛地应用具有积极的意义。

华东交大理工学院_2007-2008 _学年第_ 一 学期

课程设计安排计划

班级:_05应电__课程:_单片机原理及接口技术_

一、课程设计题目:数码管时钟电路的设计

二、设计内容及要求:

LED数码管时钟电路24小时计时方式,时、分、秒用6位数码管显示。选用AT89C2051单片机,12MHZ晶振,6位共阳数码管,要求有调时功能,其他功能学生可自由发挥。

三、设计方法与步骤:

1.设计硬件原理电路,选择元器件、确定其参数。

2.设计印刷电路板电路(用面包板做)、焊接硬件电路。

3.设计汇编语言程序,调试硬件电路和程序。

4.编写课程设计报告。

四、设计时间安排:

1.第十九周:周一、二,设计硬件原理电路,选择元器件、确定其参数。

周三、四、五,设计印刷电路板电路(用面包板做)、焊接硬件电路。

2.第二十周:周一、二,设计汇编语言程序。

周三、四,烧录程序,调试硬件电路和程序。

周五,编写课程设计报告。

指导老师: 杨威

重邮51单片机课程设计报告 篇7

typedef unsigned char UINT8;typedef unsigned int UINT16;code UINT8 SEGMENT[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};code UINT8 SELECT[8] ={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};#define S1 0x0e #define S2 0x0d #define S3 0x0b #define S4 0x07 sbit SPEAK=P3^5;sbit P3_3=P3^3;UINT8 Second;

void timer_10ms(void)//定时器T0定时10ms {

TMOD=0x01;TH0=0xdc;TL0=0x32;TR0=1;//启动T0 } void Delay(UINT16 t){

UINT16 i,j;

for(i=0;i

for(j=0;j<114;j++);}

void Display(void){ static UINT8 num=0;P2=0xff;switch(num){

case 0:

P0=0xff;

break;

case 1:

P0=0xff;

break;

case 2:

P0=0xff;

break;

case 3:

P0=0xff;

break;

case 4:

P0=0xff;

break;

case 5:

P0=0xff;

break;

case 6:

P0=SEGMENT[Second%100/10];

break;

case 7:

P0=SEGMENT[Second%10];

break;} P2=SELECT[num];num++;num%=8;//if(num==8)num=0;} UINT8 Scankey(void){ UINT8 key;if((P3&0x0f)==0x0f)

return(0xff);Delay(10);

if((P3&0x0f)==0x0f)

return(0xff);key=P3&0x0f;while((P3&0x0f)!=0x0f);return(key);}

void main(){

UINT8 i;

EA=1;

//打开总中断

EX1=0;//打开外部中断1 IT1=1;TH0=0xdc;TL0=0x32;TR0=1;//启动T0

ET0=1;

Second=60;while(1)

{

Display();

Delay(2);

i = Scankey();

if(i==S1)//启动

{

EA=1;

}

else if(i == S2)//暂停

{

EA=0;

}

}

} } void int_0()interrupt 1 {

unsigned char z,aa;

for(aa=59;aa>0;aa--){

for(z=0;z<50;z++)

{

P0=SEGMENT[aa/10];

P2=SELECT[3];

delay(5);

//10ms

P0=SEGMENT[aa%10];

P2=SELECT[4];

delay(5);

//10ms

上一篇:2016秋学期小学安全兼职工作总结下一篇:生产车间3月工作总结