搜档网
当前位置:搜档网 › 51单片机嵌入式系统设计课程设计

51单片机嵌入式系统设计课程设计

51单片机嵌入式系统设计课程设计
51单片机嵌入式系统设计课程设计

一、绪论

1.1、课题研究目的及意义

嵌入式系统是当前最热门、最具发展前途的IT应用领域之一。包括手机、电子字典、可视电话、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等都是典型的嵌入式系统。作为高校电子信息工程工程专业学生,完全有理由来学习嵌入式系统,首先这是专业最热门的应用,我们要与时俱进,其次也是对我们所学专业知识的一次综合应用与考察,还有就是为我们将来研究或将来从事嵌入式打下一个基础。本次课程设计为我们提供了一个良好的平台,从相对简单的μC/OS-II嵌入式操作系统入手,自主设计,对于我们自身具有重要的意义。

1.2、研究现状

在通信领域,数字技术正在全面取代模拟技术。在广播电视领域,美国已开始由模拟电视向数字电视转变,欧洲的DVB(数字电视广播)技术已在全球大多数国家推广。数字音频广播(DAB)也进入商品化试播阶段。而软件、集成电路和新型元器件在产业发展中的作用日益重要。所有上述产品中,都离不开嵌入式系统技术。

对于企业专用解决方案,如物流管理、条码扫描、移动信息采集等,小型手持嵌入式系统将发挥巨大作用。自动控制领域,不仅可以用于ATM 机,自动售货机,工业控制等专用设备,和移动通讯设备结合、GPS、娱乐相结合,嵌入式系统同样可以发挥巨大的作用。

在个人领域中,嵌入式产品将主要是个人商用,作为个人移动的数据处理和通讯软件。由于嵌入式设备具有自然的人机交互界面,GUI屏幕为中心的多媒体界面给人很大的亲和力。手写文字输入、语音拨号上网、收发电子邮件以及绚丽的图像效果已日益成熟

二、uC/OS-II在51单片机上的移植

1、uC/OS-II简介

uC/OS-II并非一个完备的实时操作体系,它只是一个实时内核。uC/OS-II 不像其它实时操作体系一样,提提供用户的是一个尺度的API函数,步伐开发职

员使用操作体系提供的API函数举行应用步伐的开发。要想在uC/OS-II内核上举行应用步伐的开发,就需要步伐开发职员在实时内核的基础上创建自己的实时操作体系。首先,把uC/OS-II移植到自己的硬件目的板上,写出相应的驱动步伐以及用户图形界面等等;在这些接口函数之上,加上用户自己的应用步伐,就组成了嵌入式软件。

2、uC\os-II在MCS-51上的移植

虽然μC/OS-II大部分源代码是用C语言写的,但是完成和处理器一些有关的代码时,照旧必须要用汇编语言来实现的。

要使uC\OS-II正常运行,必须满足一下要求:

(1)处理器的C编译器能产生可重入型代码。

(2)用C语言就可以打开和关闭中断。

(3)处理器支持中断,并且能产生定时中断(通常频率在10至100Hz之间)。

(4)处理器能支持容纳一定量的数据存储硬件堆栈(可能是几千字节)。

(5)处理器有将堆栈指针和其他CPU寄存器的内容读出并存储到堆栈或内存中的指令。

MCS-51与KeilCx51编译器可以满足以上条件,可以将uC\OS-II移植到MCS-51系列处理器。需要说明一点,目前uC\OS-II的版本较多,但基本都一致,兼容性也很好,本例采用的是uC\OS-II V2.52版。

μC/OS-II的移植包括以下几个部分。

(1)设置与编译器有关的代码[OS_CPU.H]

在差异的处理器中有差异的字长,所以必须界说一系列数据范例以确保移植的准确性。另外,在uC/OS-II中,不使用C的short、int和long等数据范例,这些都是和编译器相干的。下面即是uC/OS-II界说的一部分数据范例。

typedef unsigned char BOOLEAN;

typedef unsigned char INT8U; /*无标志8位整数*/

typedef signed char INT8S; /*有标志8位整数*/

typedef unsigned int INT16U; /*无标志16位整数*/

typedef signed int INT16S; /*有标志16位整数*/

typedef unsigned long INT32U; /*无标志32位整数*/

typedef signed long INT32S; /*有标志32位整数*/

typedef float FP32; /*单精度浮点数*/

typedef double FP64; /*双精度浮点数*/

首先来看对临界段的处理,就是关中断,处理完毕后在开中断。uC\OS-II 提供了3种方法来处理,针对MCS-51单片机,可以使用方法1来处理临界段。在MCS-51系列单片机中,中断允许寄存器IE的第7位EA为中断允许控制为,EA=0屏蔽所有中断、EA=1允许所有中断。

MCS-51堆栈从低地址往高地址增长(1=向下,0=向上),因此将OS_STK_GROWTH定义为0。

OS_TASK_SW()是一个宏,在uC\OS-II从低优先级任务切换到高优先级任务是被调用。uC\OS-II假定任务切换时靠中断级代码完成的,或者说uC\OS-II的任务切换时靠模仿中断动作来完成的。uC\OS-II需要一条处理器指令,使其行为就像是硬件中断。MCS-51没有软中断指令,在这种情况下,需要将堆栈结构设置成与中断堆栈结构一样,在用函数调用的方式来实现任务切换,也就是说,通过函数来模仿软中断指令。

(2)用C语言编写6个与操作体系有关的函数[OS_CPU_C.C]这10个函数是:OSTaskStkInit()、OSTaskCreatHook()、OSTaskDelHook()、OSTaskSwHook ()、OSTaskStatHook()、OSTaskIdleHook()、OSTimeTickHook()、OSInitHookBegin()、OSInitHookEnd()和OSTCBInitHook()。

这10个函数只对OSTaskStkInit()编写代码,后9个函数必须声明,但是内部并没有代码。

在对堆栈设计时需要考虑一下因素:

<1>传统的8051处理器在中断来临时只将程序计数器PC的值压入堆栈。

<2>按照uC\OS-II的要求,保存全部寄存器,MCS-51的寄存器有PSW、ACC、

B、DPL、DPH、R0-R7和SP。

<3>Cx51编译器允许用CPU寄存器传递3个参数。

<4>堆栈从低地址向高地址增长。

<5>堆栈指针指向上次入栈地址。

<6>MCS-51存在系统栈。

<7>系统栈深度为256字节。

因为需要进行任务栈与系统栈的复制,获得系统栈的起始地址,所以需要对系统进行一些定义。首先,堆栈起点由Keil决定,只关心大小,然后通过SOStack 获得keil分配的SP起点。下面的代码就是相关的汇编代码,可以放在启动代码

中,也可以放在相关的文件中。

为了函数重入,形参和局部变量必须保存在堆栈里。MCS-51硬件堆栈太小,Keil将根据内存模式在相应内存空间仿真堆栈,增长方向由上向下,与硬件栈相反。对于大模式编译,函数返回地址保存在硬件堆栈里,形参和局部变量放在仿真堆栈中,对MCS-51咬使用大模式编译。

3、编写4个汇编语言函数[OS_CPU_A.S]

uC/OS-II的移植实例要求用户编写4个简略的汇编语言函数:OSStartHighRdy()、OSCtxSw()、OSIntCtxSw()、OSTickISR()。

移植所需要的具体材料及移植的参数

4、测试、编写驱动和应用步伐

做完以上事情以后,就要测试移植的是否准确。测试一个μC/OS-II实时内核并不庞大,即是让这个实时内核在自己的目的板上跑起来。开始时,可以运行一些简略的使命和时钟节奏停止使命,如果调试乐成就可以在上面添加应用步伐。

uC/OS-II移植完成以后,就要在这个实时内核之上编写接口驱动步伐。由于嵌入式操作体系体积更小,功效更强,且快速、稳固,更具有针对性,因此不像其它操作体系那样,对体系的全部接口配置都需要驱动、管理、调治和监视。由于嵌入式产品是针对特别的用途而计划的,有很强的埋头性,因此,在编写驱动步伐时内容更精简,更具有稳固性,编写出的驱动模块更小。编写驱动步伐应完成以下基本功效:①对配置初始化和开释;②把数据从内核传送到硬件和从硬件读取数据;③读取应用步伐传送给配置文件的数据和回送应用步伐恳求的数据;④检测和处理配置出现的错误。实现了以上功效以后,一个嵌入式操作体系就基本组成了。

三、设计方案

3.1、方案的设计与比较

方案一

图4.1.1硬件电路设计含有三种功能:电子琴、闪烁灯、1602液晶显示

方案二

图4.1.2硬件电路设计设计含有三种功能:流水灯、闪烁灯和蜂鸣器

方案一:采用xdata扩展的国产cpu芯片。例如国内STC公司生的STC89C54RD+和STC89C58RD+。这两款芯片都有256字节的内部 RAM,并已经扩展好有1K的XRAM。另外这两款芯片都自带有复位芯片,在外部晶振小于20Mhz 时可以省去外部复位电路。更重要的是这款芯片价格较低很适合做ucos的移植。在考虑到可能要移植多功能的情况下,这里选用较大Flash的STC89C58RD+,有32K Flash。

方案二:仍采用AT89C52作主控芯片,另外增加外部RAM芯片,实现xdata 的扩展。由于裁剪后的xdata>600字节。所以这里最好采用RAM为1k左右的芯片。但需要外部扩展电路,有些芯片还得有驱动电流。这增加了硬件电路的复杂性,故不采用此方案。

因此本课程设计采用方案一。

四、系统的软件设计

软件的设计主要包括:C文件及H文件。

一、C文件分三部分:系统文件、流水灯和LCD液晶显示。

1、系统文件:

具体程序如下:

#include "..\uc_os_II\includes.h"

#include "..\driver\lcd1602.h"

#include "..\driver\article.h"

OS_STK xdata Task1Stack[CPU_MAX_STK_SIZE];

OS_STK xdata Task2Stack[CPU_MAX_STK_SIZE];

OS_STK xdata Task3Stack[CPU_MAX_STK_SIZE];

void Task1(void xdata * ppdata) reentrant

{

}

void Task2(void xdata * ppdata) reentrant

{

}

void Task3(void xdata * ppdata) reentrant

{

}

void SerialInitial()

{

/* set TI to 1, set TR1 to 1 */

SCON = 0x52;/* SM0 SM1 =1 SM2 REN TB8 RB8 TI RI */

TMOD = 0x20;/* GATE=0 C/T-=0 M1 M0=2 GA TE C/T- M1 M0 */

TH1 = 0xE6; /* TH1=E6 4800bit/s when at 24MHz,TH1=F3,9600bit/s,24MHz */

PCON = 0x80;

TCON = 0x40;/* 01101001 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT */

}

void InterruptInitial()

{

/* set timer. 50ms, THTL = 3caf when cpu at 12MHz */

TMOD |= 0x01;

TH0 = 0x70;

TL0 = 0x00;

/* TR0 is set in OSStart() */

ET0 = 1;

}

main()

{

InterruptInitial();

OSInit(); //系统初始化

OSTaskCreate(Task3, (void xdata *)0, &Task1Stack[0],3); //给系统加载任务 OSTaskCreate(Task2, (void xdata *)0, &Task2Stack[0],2); //给系统加载任务

OSTaskCreate(Task1, (void xdata *)0, &Task1Stack[0],1); //给系统加载任务

OSStart();

}

总体思路如下:

完成一些头文件的包含,对相关的函数进行定义,设置任务堆栈,写任务体,

在主函数中添加初始化系统并添加任务和启动任务。

流水灯任务:

总体思路如下:

此任务为循环执行,接着显示流水灯的某种状态并延时一定时间。具体的是先让输出流水灯的状态1,调用系统延时函数,延时时100ms,再输出流水灯的下一种状态。如此进行,让流水灯实现多种变化。所有变化都实现后又回到第一

种变化。

具体程序见附录。

LCD液晶显示:

总体思路如下:

LCD液晶显示C文件中包括两个任务,通过系统C文件不同调用方式实现两个任务。

具体程序见附录。

二、H文件:这里只有LCD液晶显示需要编写H文件。LCD液晶显示H文件:

#ifndef __LCD1602_H__

#define __LCD1602_H__ void lcdinit(void);

void write_date(INT8U date); void display1(void);

void display2(void);

void display3(void);

void display4(void);

void display5(void);

void display6(void);

#endif

编好LCD液晶显示H文件后还需要把它包含进系统includes.h文件中。只要在includes.h文件中加入#include "..\driver\lcd1602.h"语句就可以了。

五、系统调试

硬件测试

在印刷电路板制作以后,先不要急着家电源,首先进行静态测试。检查线路:通过目测和使用万用表,检查线路连接的正确性,有无短路和短路,无虚汗的存在等。核对元件:检查元件是否安装正确,有无损坏等。检查电源系统:在加入集成电路之前,应检查加入电源的品质,包括电源的电压以及负载能力等。只有当电源满足要求后,才能加上所有的元件进行加电源调试。虽然经过静态测试,但仍有不少的硬件故障要在软硬件联机调试中才能发现。测试晶振电路和复位电路:这是单片机应用系统工作的最基本的条件,可用示波器或逻辑笔进行检查。

软件测试

首先要对程序中的每个子函数进行功能测试,在得到我们想要的功能后还要对子函数与子函数之间的调用进行测试,在所有子函数测试都通过后才在能镶嵌到主函数中进行测试。

六、课程设计心得

经过这次课程设计,我觉得自己学到了不少东西。对于嵌入式系统的应用有了点基本的了解,一下是在这次课程中学到的一些总结。

以前的关于单片机的课程设计中的任务基本都是单任务模式,编程序都是编个主函数和功能函数就可以了,从没去了解过单片机还可以嵌入系统。

回想一下微机原理课程上学过的知识,当发生中断的时候,CPU保存当前的PC和状态寄存器的值到堆栈里,然后将PC设置为中断服务程序的入口地址,再下来一个机器周期,就可以去执行中断服务程序了。执行完毕之后,一般都是执行一条RETI指令,这条指令会把当前堆栈里的值弹出恢复到状态寄存器和PC里。这样,系统就会回到中断以前的地方继续执行了。那么设想一下?如果再中断的时候,人为的更改了堆栈里的值,那会发生什么?或者通过更改当前堆栈指针的值,

又会发生什么呢?如果更改是随意的,那么结果是无法预料的错误。因为我们无法确定机器下一条会执行些什么指令,但是如果更改是计划好的,按照一定规则的话,那么我们就可以实现多任务机制。

在uC/OS-II里,每个任务都有一个任务控制块(Task Control Block),这是一个比较复杂的数据结构。在任务控制快的偏移为0的地方,存储着一个指针,它记录了所属任务的专用堆栈地址。事实上,在uC/OS-II内,每个任务都有自己的专用堆栈,彼此之间不能侵犯。这点要求程序员再他们的程序中保证。一般的做法是把他们申明成静态数组。而且要申明成OS_STK类型。当任务有了自己的堆栈,那么就可以将每一个任务堆栈再那里记录到前面谈到的任务控制快偏移为0的地方。以后每当发生任务切换,系统必然会先进入一个中断,这一般是通过软中断或者时钟中断实现。然后系统会先把当前任务的堆栈地址保存起来,仅接着恢复要切换的任务的堆栈地址。由于哪个任务的堆栈里一定也存的是地址(还记得我们前面说过的,每当发生任务切换,系统必然会先进入一个中断,而一旦中断CPU就会把地址压入堆栈),这样,就达到了修改PC为下一个任务的地址的目的。以上就是uC/OS-II的多任务实现机制。

在设计过程中,我碰到了一些暂时无法解决的问题,于是我通过上网查阅和图书馆借阅资料,或是通过与老师同学交流一步步地解决了。从中我懂得了我们这个专业的知识面相当广泛,我们需要不断通过各种途径更新自己的知识,不断充实自己,同时要懂得与他人交流意见,积极听取别人的建议,懂得团队合作的重要性。

七、参考文献

[1] 王新颖单片机原理及应用.北京大学出版社2008

[2] 陈忠平单片机基础与最小系统实践.北京航空航天大学出版社

[3] 窦振中单片机外围器件实用手册存储器分册.北京航空航天大学出版

[4] 沈庆阳,郭庭吉 8051单片机实践与应用.清华大学出版社

[5] 侯玉宝,李成群基于Proteus的51系列单片机设计与仿真电子工业出版社

[6]陈明荧. 8051单片机课程设计实训教程[M].北京:清华大学出版

[7] 郁慧娣.微机系统及其接口技术[M].南京:东南大学出版社,1999年.

[8]何立民.单片机高级教程[M].北京:北京航空航天大学出版社,2003年.

[9]王毓银.数字电路逻辑设计[M].北京:高等教育出版社.

[10]李广弟. 单片机原理及应用[M] 北京航空航天大学出版社,2004年.

[11]谢嘉奎.电子线路[M].高等教育出版社,1999年.

[12] 张鑫.单片微机原理及应用.电子工业出版社 2005.8

[13] 张毅刚. 单片微机原理及应用高等教育出版社 2003.12

[14] 薛晓书.单片微机原理及接口技术.西安石油大学 2002.3

[15] 黄智伟朱卫华.单片机与嵌入式系统应用.南华大学 2005.3

附录:

实物正面

实物反面元件清单:

系统程序及流水灯清单:

#include "..\uc_os_II\includes.h"

#include "..\driver\lcd1602.h"

#include "..\driver\article.h"

OS_STK xdata Task1Stack[CPU_MAX_STK_SIZE];

OS_STK xdata Task2Stack[CPU_MAX_STK_SIZE];

OS_STK xdata Task3Stack[CPU_MAX_STK_SIZE];

void Task1(void xdata * ppdata) reentrant {

ppdata = ppdata;

while(1)

{ L ED=0x7f;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xbf;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xdf;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xef;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xf7;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xfb;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xfd;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xfe;

OSTimeDlyHMSM(0, 0, 0,100); LED=0x00;

LED=0xff;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0x00;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xff;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0x7e;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xbd;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xdb;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xe7;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xdb;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xbd;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0x7e;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0x00;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xff;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0x00;

OSTimeDlyHMSM(0, 0, 0,100);

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xff;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xfe;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xfd;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xfb;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xf7;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xef;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xdf;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xbf;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0x7f;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0x00;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xff;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0x00;

OSTimeDlyHMSM(0, 0, 0,100); LED=0xff;

LED=0xff;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0x00;

OSTimeDlyHMSM(0, 0, 0,100);

LED=0xff;

OSTimeDlyHMSM(0, 0, 0,100);

}

}

void Task2(void xdata * ppdata) reentrant {

ppdata = ppdata;

while(1)

{

write_com(0x80+0x0f);

write_date('0');

OSTimeDlyHMSM(0, 0,0,200);

write_com(0x80+0x0f);

write_date('1');

OSTimeDlyHMSM(0, 0,0,200);

write_com(0x80+0x0f);

write_date('2');

OSTimeDlyHMSM(0, 0,0,200);

write_com(0x80+0x0f);

write_date('3');

OSTimeDlyHMSM(0, 0,0,200);

write_com(0x80+0x0f);

write_date('4');

OSTimeDlyHMSM(0, 0,0,200);

write_com(0x80+0x0f);

write_date('5');

OSTimeDlyHMSM(0, 0,0,200);

}

void Task3(void xdata * ppdata) reentrant {

ppdata = ppdata;

while(1)

{

display1();

OSTimeDlyHMSM(0, 0,0,700);

display2();

OSTimeDlyHMSM(0, 0,0,700);

}

}

void SerialInitial()

{

/* set TI to 1, set TR1 to 1 */

SCON = 0x52;/* SM0 SM1 =1 SM2 REN TB8 RB8 TI RI */

TMOD = 0x20;/* GATE=0 C/T-=0 M1 M0=2 GATE C/T- M1 M0 */

TH1 = 0xE6; /* TH1=E6 4800bit/s when at 24MHz,TH1=F3,9600bit/s,24MHz */ PCON = 0x80;

TCON = 0x40;/* 01101001 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT */

}

void InterruptInitial()

{

/* set timer. 50ms, THTL = 3caf when cpu at 12MHz */

TMOD |= 0x01;

TH0 = 0x70;

TL0 = 0x00;

/* TR0 is set in OSStart() */

ET0 = 1;

}

main()

{

InterruptInitial();

OSInit();

lcdinit();

display3();

OSTaskCreate(Task1, (void xdata *)0, &Task1Stack[0],2);

OSTaskCreate(Task2, (void xdata *)0, &Task2Stack[0],3);

OSTaskCreate(Task3, (void xdata *)0, &Task3Stack[0],4);

// OSTaskCreate(Task4, (void xdata *)0, &Task4Stack[0],5);

OSStart();

}

LCD液晶显示C程序清单:

#include "..\uc_os_II\includes.h"

//定义端口,数据口为P1口,P3^4接输入测试信号,rw直接接地

sbit rs=P3^1;

sbit lcden=P3^3;

INT8U code table1[]="abcdef";

INT8U code table2[]="ghijkl";

INT8U code table3[]="It designed by9";

//--------延时

void delay(INT16U z)

{

INT16U x,y;

for(x=z;x>0;x--)

for(y=400;y>0;y--);

}

//--------1602写数据

void write_date(INT8U date)

{

P1=0xFF;

delay(5);

rs=1;

lcden=0;

P1=date;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

//--------1602写指令

void write_com(INT8U com)

{

P1=0xFF;

delay(5);

rs=0;

lcden=0;

P1=com;

delay(5);

lcden=1;

delay(5);

lcden=0;

} //--------1602初始化

void lcdinit()

{

lcden=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

write_com(0x80);

}

//-------显示内容

void display1()

{

INT8U num1;

write_com(0x80);

for(num1=0;num1<8;num1++) {

write_date(table1[num1]);

}

}

void display2()

{

INT8U num1;

write_com(0x80);

for(num1=0;num1<8;num1++) {

write_date(table2[num1]);

}

}

void display3()

{

INT8U num1;

write_com(0x80+0x40);

for(num1=0;num1<15;num1++) {

write_date(table3[num1]);

}

}

基于-89C51单片机的秒表课程设计汇本

《单片机技术》 课程设计报告 题目:基于MCU-51单片机的秒表设计班级: 学号: 姓名: 同组人员: 指导教师:王瑞瑛、汪淳 2014年6月17日

目录 1课程设计的目的 (3) 2 课程设计题目描述和要求 (3) 2.1实验题目 (4) 2.2设计指标 (4) 2.3设计要求 (4) 2.4增加功能 (4) 2.5课程设计的难点 (4) 2.6课程设计容提要 (4) 3 课程设计报告容 (5) 3.1设计思路 (5) 3.2设计过程 (6) 3.3 程序流程及实验效果 (7) 3.4 实验效果 (16) 4 心得体会 (17)

基于MCS-51单片机的秒表设计 摘要:单片机控制秒表是集于单片机技术、模拟电子技术、数字技术为一体的机电一体化高科技产品,具有功耗低,安全性高,使用方便等优点。本次设计容为以8051 单片机为核心的秒表,它采用键盘输入,单片机技术控制。设计容以硬件电路设计,软件设计和PCB 板制作三部分来设计。利用单片机的定时器/计数器定时和计数的原理,用集成电路芯片、LED 数码管以及按键来设计计时器。将软、硬件有机地结合起来,使他拥有正确的计时、暂停、清零、并同时可以用数码管显示,在现实生中应用广泛。 关键词:秒表;8051;定时器;计数器 1 课程设计的目的 《单片机应用基础》课程设计是学好本门课程的又一重要实践性教学环节,课程设计的目的就是配合本课程的教学和平时实验,以达到巩固消化课程的容,进一步加强综合应用能力及单片机应用系统开发和设计能力的训练,启发创新思维,使之具有独立单片机产品和科研的基本技能,是以培养学生综合运用所学知识的过程,是知识转化为能力和能力转化为工程素质的重要阶段。 2 课程设计题目描述和要求

基于51单片机课程设计

基于51单片机课程设计报告 院系:电子通信工程 团组:电子设计大赛1组 姓名: 指导老师:

目录 一、摘要 (3) 二、系统方案的设计 (3) 三、硬件资源 (5) 四、硬件总体电路搭建 (13) 五、程序流程图 (14) 六、设计感想 (14) 七、参考文献 (16) 附录 (17) 附录 1 程序代码 (17)

一、摘要 本设计以STC89C51单片机为核心的温度控制系统的工作原理和设计方法。温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机。文中介绍了该控制系统的硬件部分,包括:温度检测电路、温度控制电路。单片机通过对信号进行相应处理,从而实现温度控制的目的。文中还着重介绍了软件设计部分,在这里采用模块化结构,主要模块有:数码管显示程序、键盘扫描及按键处理程序、温度信号处理程序、led控制程序、超温报警程序。 关键词:STC89C51单片机 DS18B20温度芯片温度控制 ,LED报警提示. 二、系统方案的设计 1、设计要求 基本功能: 不加热时实时显示时间,并可手动设置时间; 设定加热水温功能。人工设定热水器烧水的温度,范围在20~70度之间,打开开关后,根据设定温度与水温确定是否加热,及何时停止加热,可实时显示温度; 设定加热时间功能。限定烧水时间,加热时间内超过温度上限或低于温度下限报警,并可实时显示温度。 2、系统设计的框架

本课题设计的是一种以STC89C51单片机为主控制单元,以DS18B20为温度传感器的温度控制系统。该控制系统可以实时存储相关的温度数据并记录当前的时间。其主要包括:电源模块、温度测量及调理电路、键盘、数码管显示、指示灯、报警、继电器及单片机最小系统。 图1 系统设计框架 3 工作原理 温度传感器 DS18B20 从设备环境的不同位置采集温度,单片机STC8951获取采集的温度值,经处理后得到当前环境中一个比较稳定的温度值,再根据当前设定的温度上下限值,通过加热和降温对当前温度进行调整。当采集的温度经处理后超过设定温度的上限时,单片机通过三极管驱动继电器开启降温设备(压缩制冷器) ,当采集的温度经处理后低于设定温度的下时 , 单片机通过三极管驱动继电器开启升温设备 (加热器) ,这里采用通过LED1和LED2取代!!! 当由于环境温度变化太剧烈或由于加热或降温设备出现故障,或者温度传感头出现故障导致在一段时间内不能将环境温度调整到规定的温度限内的时候,单片机通过三极管驱动扬声器发出警笛声,这里采用HLLED提示。

80c51单片机交通灯课程设计报告1.pdf

80C51单片机交通灯课程设计报告 目录 第一章引言 (3) 第二章单片机概述 (4) 第三章芯片介绍 (6) 3.1AT89S51单片机介绍 (6) 3.1.1简介 (6) 3.1.2主要管脚介绍 (6) 3.274LS164介绍 (8) 3.3共阳数码管介绍 (8) 3.3.1分类简介 (8) 图3.3LED数码管引脚定义 (9) 3.3.2驱动方式 (9) 3.3.3主要参数 (10) 3.3.4应用范围 (10) 第四章系统硬件设计 (11) 4.1硬件设计要求 (11) 4.2硬件设计所用元器件 (11) 4.3硬件设计图 (11) 4.4设计流程图 (12) 第五章系统软件设计 (13) 5.1流程图 (13)

5.2程序设计 (14) 第六章结论 (16) 参考文献 (18)

第一章引言 在今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已出现了。 1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。 1914年,电气启动的红绿灯出现在美国。这种红绿灯由红绿黄三色圆形的投光器组成,安装在纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。 智能的交通信号灯指挥着人和各种车辆的安全运行,实现红、黄、绿灯的自动指挥是城乡交通管理现代化的重要课题.在城乡街道的十字交叉路口,为了保证交通秩序和行人安全,一般在每条道路上各有一组红、黄、绿交通信号灯,其中红灯亮,表示该条道路禁止通行;黄灯亮,表示该条道路上未过停车线的车辆停止通行,已过停车线的车辆继续通行;绿灯亮,表示该条道路允许通行.交通灯控制电路自动控制十字路口两组红、黄、绿交通灯的状态转换,指挥各种车辆和行人安全通行,实现十字路口城乡交通管理自动化。 本文为了实现交通道路的管理,力求交通管理先进性、科学化.分析应用了单片机实现智能交通灯管制的控制系统,以及该系统软、硬件设计方法,实验证明该系统实现简单、经济,能够有效地疏导交通,提高交通路口的通行能力。

基于51单片机简易电子琴的课程设计

基于51单片机简易电子琴 1 课题背景 单片微型计算机室大规模集成电路技术发展的产物,属于第四代电子计算机它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。他的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。 电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用AT89S52单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘扬声器等模块组成核心主控制模块,在主控模块上设有8个按键,和一个复位按键。 主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴硬件的组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏要表达的音符。并且分别从原理图,主要芯片,个模块原理及各莫奎的程序的调试来详细阐述。 一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,构成我们想演奏的那首曲目。当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样的方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系编写正确就可以达到我们想要的曲目。 2 任务要求与总体设计方案 2.1 设计任务与要求 利用所给键盘的1,2,3,4,5,6,7,8八个键,能够发出7个不同的音调,而且有一个按键可以自动播放歌曲,要求按键按下时发声,松开延时一小段时间,中间再按别的键则发另外一音调的声音,当系统扫描到键盘按下,则快速检测出是哪一个按键被按下,然后单片机的定时器启动,发出一定频率的脉冲,该频率的脉冲经喇叭驱动电路放大滤波后,就会发出相应的音调。如果在前一个按下的键发声的同时有另一个按键被按下,则启动中断系统。前面的发音停止,转到后按的键的发音程序。发出后按的键的音调。 2.2 设计方案 2.2.1 播放模块 播放模块是由喇叭构成,它几乎不存在噪声,音响效果较好,而且由于所需驱动功率较小,且价格低廉,所以,被广泛应用。 2.2.2 按键控制模块

(完整)基于89C51单片机交通灯课程设计要点

(完整)基于89C51单片机交通灯课程设计要点 编辑整理: 尊敬的读者朋友们: 这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)基于89C51单片机交通灯课程设计要点)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。 本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整)基于89C51单片机交通灯课程设计要点的全部内容。

华北水利水电学院 基于C51单片机 交通灯课程设计实验报告 姓名:田坤 班级:125 专业:电子信息科学与技术 指导老师:辛艳辉刘明堂 2013年1月16日 摘要 近年来,随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,正在不断的应用到实际生活中,并且根据具体硬件结构软硬件结合,加以完善。 十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊.那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用MCS-51系列单片机STC89C51为中心器件来设计交通灯控制器,实现了通过信号灯对路面状况的智能控制。从一定程度上解决了交通路口堵塞、车辆停车等待时间不合理、急车强通等问题.系统具

有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。 关键词:交通灯 单片机 数码管 一 。总体设计思路 1.1设计目的及思路 设计目的 了解交通灯管理的基本工作原理,熟练掌握STC89C51的工作原理和应用编程,熟悉STC89C51单片机并行接口的各种工作方式和应用,并了解计数器/定时器的工作方式和应用编程外部中断的方法,掌握多位LED 显示问题的解决。 设计思路 (1)分析目前交通路口的基本控制技术,提出自己的交通控制的初步方案。 (2)确定系统交通控制的总体设计,增加了倒计时显示提示。 (3)进行显示电路。 (4)进行软件系统的设计。 1。2 实际交通灯显示时序及状态转换的理论分析 图1所示为红绿灯转换的状态图。 图1 红绿灯状态转换图 表1 十字路口指示灯燃 亮方 S1 S4 S3 S2

基于51单片机课程设计报告

单片机课程设计 课题:基于51单片机的交通灯设计 专业:机械设计制造及其自动化 学号: 指导教师:邵添 设计日期:2017/12/18 成绩: 大学城市科技学院电气学院 基于51单片机数字温度计设计报告

一、设计目的作用 本设计是一款简单实用的小型数字温度计,所采用的主要元件有传感器DS18B20,单片机AT89C52,,四位共阴极数码管一个,电容电阻若干。DS18B20支持“一线总线”接口,测量温度围-55°C~+125°C。在-10~+85°C围,精度为±0.5°C。18B20的精度较差,为±2°C 。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。 本次数字温度计的设计共分为五部分,主控制器,LED显示部分,传感器部分,复位部分,按键设置部分,时钟电路。主控制器即单片机部分,用于存储程序和控制电路;LED显示部分是指四位共阴极数码管,用来显示温度;传感器部分,即温度传感器,用来采集温度,进行温度转换;复位部分,即复位电路,按键部分用来设置上下限报警温度。测量的总过程是,传感器采集到外部环境的温度,并进行转换后传到单片机,经过单片机处理判断后将温度传递到数码管显示。 二、设计要求 (1).利用DS18B20传感器实时检测温度并显示。 (2).利用数码管实时显示温度。 (3).当温度超过或者低于设定值时蜂鸣器报警,LED闪烁指示。 (4).能够手动设置上限和下限报警温度。 三、设计的具体实现 1、系统概述 方案一:由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。 方案设计框图如下:

基于51单片机的电子琴设计课程设计

目录 前言 (2) 第1章基于51单片机的电子琴设计 (3) 1.1 电子琴的设计要求 (3) 1.2 电子琴设计所用设备及软件 (3) 1.3 总体设计方案 (3) 第2章系统硬件设计 (5) 2.1 琴键控制电路 (5) 2.2 音频功放电路 (6) 2.3 时钟-复位电路 (6) 2.4 LED显示电路 (6) 2.5 整体电路 (6) 第3章电子琴系统软件设计 (7) 3.1 系统硬件接口定义 (7) 3.2 主函数 (8) 3.2.1 主函数程序 (8) 3.3 按键扫描及LED显示函数 (9) 3.3.1 键盘去抖及LED显示子程序 (10) 3.4 中断函数 (11) 3.4.1 中断程序 (12) 第4章电子琴和调试 (12) 4.1 调试工具 (12) 4.2 调试结果 (13) 4.3 电子琴设计中的问题及解决方法 (14) 第5章电子琴设计总结 (15) 参考文献 (16) 附录 (17)

前言 音乐教育是学校美育的主要途径和最重要内容,它在陶冶情操、提高素养、开发智力,特别是在培养学生创新精神和实践能力方面发挥着独特的作用。近年来,我国音乐教育在理论与实践上都取得了有目共睹的成绩,探索并形成了具有中国特色的、较为完整的音乐教育教学体系。但我国音乐教育的改革力度离素质教育发展的要求还存在一定距离。如今,电子琴作为电子时代的新产物以其独特的功能和巨大的兼容性被人们广泛的接受和推崇。而在课堂教学方面,它拥有其它乐器无法比拟的两个瞬间:瞬间多元素思维的特殊的弹奏方法;瞬间多声部(包括多音色)展示的乐队音响效果的特点。结合电子琴自身强大的功能及独特的优点来进行音乐教育的实施,这样就应该大力推广电子琴进入音乐教室,让电子琴教学在音乐教育中发挥巨大的作用。现代乐器中,电子琴是高新科技在音乐领域的一个代表,体现了人类电子技术和艺术的完美结合。电子琴自动伴奏的稳定性、准确性,以及鲜明的强弱规律、随人设置的速度要求,都更便于人们由易到难、深入浅出的准确掌握歌曲节奏和乐曲风格,对其节奏的稳定性和准确性训练能起到非常大的作用。电子琴所包含的巨量的音乐信息和强大的音乐表现力可以帮助音乐教学更好地贯彻和落实素质教育,更有效地提高人们的音乐素质和能力。目前,市场上的电子琴可谓琳琅满目,功能也是越来越完备。以单片机作为主控核心,设计并制作的电子琴系统运行稳定,其优点是硬件电路简单、软件功能完善、控制系统可靠、性价比较高等,具有一定的实用与参考价值。这就为电子琴的普及提供了方便。 二、电子琴设计要求本设计主要是用AT89C51单片机为核心控制元件,设计一台电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有7个按键和1个复位按键。本系统主要是完成2大功能:音乐自动播放、电子琴弹奏。关于声音的处理,使用单片机C语言,利用定时器来控制频率,而每个音符的符号只是存在自定义的表中。

51单片机红绿灯课程设计

1 电源提供方案 为使模块稳定工作,须有可靠电源。因此考虑了两种电源方案:方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。 方案二:采用单片机控制模块提供电源。改方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。综上所述,选择方案二。 2 显示界面方案 该系统要求完成倒计时功能。基于上述原因,我考虑了二种方案:方案一:采用数码管显示。这种方案只显示有限的符号和数码字符,简单,方便。方案二:采用点阵式LED 显示。这种方案虽然功能强大,并可方便的显示各种英文字符,汉字,图形等,但实现复杂,成本较高。 综上所述,选择方案一。 3 输入方案: 设计要求系统能调节灯亮时间,并可处理紧急情况,我研究了两种方案:方案一:采用8155扩展I/O 口及键盘,显示等。 该方案的优点是:使用灵活可编程,并且有RAM,及计数器。若用该方案,可提供较多I/O 口,但操作起来稍显复杂。 方案二:直接在I/O口线上接上按键开关。 由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O 口就可实现,且本身的计数器及RAM已经够用。

综上所述,选择方案二。 3.1单片机交通控制系统的通行方案设计 设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。其具体状态如下图所示。说明:黑色表示亮,白色表示灭。交通状态从状态1开始变换,直至状态6然后循环至状态1,周而复始,即如图2.1所示: 图1 交通状态 本系统采用MSC-51系列单片机AT89C51作为中心器件来设计交通灯控制器。实现以下功能:

单片机课程设计——基于51单片机的温度监控系统设计

单片机课程设计报告 题目:温度监控系统设计 学院:能源与动力工程学院 专业:测控技术与仪器专业 班级: 2班 成员:魏振杰 二〇一五年十二月

一、引言 温度是工业控制中主要的被控参数之一,特别是在冶金、化工、建材、食品、机械、石油等工业中,具有举足重轻的作用。对于不同场所、不同工艺、所需温度高低范围不同、精度不同,则采用的测温元件、测方法以及对温度的控制方法也将不同;产品工艺不同、控制温度的精度不同、时效不同,则对数据采集的精度和采用的控制算法也不同,因而,对温度的测控方法多种多样。 随着电子技术和微型计算机的迅速发展,微机测量和控制技术也得到了迅速的发展和广泛的应用。利用微机对温度进行测控的技术,也便随之而生,并得到日益发展和完善,越来越显示出其优越性。 作为获取信息的手段——传感器技术得到了显著的进步,其应用领域较广泛。传感器技术已成为衡量一个国家科学技术发展水平的重要标志之一。因此,了解并掌握各类传感器的基本结构、工作原理及特性是非常重要的。 为了提高对传感器的认识和了解,尤其是对温度传感器的深入研究以及其用法与用途,基于实用、广泛和典型的原则而设计了本系统。本系统利用传感器与单片机相结合,应用性比较强,本系统可以作为仓库温度监控系统,如果稍微改装可以做热水器温度调节系统、实验室温度监控系统,以及构成智能电饭煲等等。课题主要任务是完成环境温度监测,利用单片机实现温度监测并通过报警信号提示温度异常。本设计具有操作方便,控制灵活等优点。 本设计系统包括单片机,温度采集模块,显示模块,按键控制模块,报警和指示模块五个部分。文中对每个部分功能、实现过程作了详细介绍。整个系统的核心是进行温度监控,完成了课题所有要求。 二、实验目的和要求 2.1学习DS18B20温度传感芯片的结构和工作原理。 2.2掌握LED数码管显示的原理及编程方法。 2.3掌握独立式键盘的原理及使用方法。 2.4掌握51系列单片机数据采集及处理的方法。 三、方案设计

80c51单片机课程设计word文档良心出品

单片机课程设计报告 题目: 基于51单片机发光牌与伴奏音乐系统 专业班级机械111班 姓名 学号

一、设计目的 (一)、以AT89C51单片机为主体,设计一个有伴奏音乐的发光牌。 1、功能 放光牌用数码管显示,分别按顺序显示出“2”、“0”、“1”、“3”的数字样。而且不断的循环从左到右显示。同时还伴有歌名为“同一首歌”的旋律。 发光牌由数码管进行设置,歌声的旋律则由蜂鸣器来实现。 2、效果 即数码管为发光牌,同时伴有歌声 发光牌效果图可如下

二、硬件系统 AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。 (1)、硬件总电路图如下 其中AT89C51单片机的设置如下 选择12MH的晶振,该单片机选用24V的电压。其中电路图中的7447芯片中的A,B,C,D,E,F,G 引脚是引出来用来分别接四个数码管的。其中低电平代表通电,其数码管的0~9的数字代码如下: 0X01、0X12、0X24、0X38、0X41、0X52、 0X64、0X78、0X81、0X92. 并通过p2.0、p2.1、p2.2、p2.3引脚分别来控制四个数码管的得电顺序。从而实现发光牌的设置和控制。 、对蜂鸣器的控制的电路介绍)2(. 为般是指时钟电路引脚、其中XTAL1XTAL2在片内它是振荡器反相放大器的

输接外部晶振和微调电容的一端,TAL1:X入;若使用外部时钟时,该引脚必 须接地。在片内它是振荡器反相放大器的:接外部晶振和微调电容的另一端,XTAL2 输出;若使用外部时钟时,该引脚接外部时钟的输入端。利用这两个引脚可以对歌曲的节奏和时间进行控制。从而演奏蜂鸣器可根据不同代码发出声音。其中歌曲的谱音可用代码表示,出“同一首歌”的旋律。三、软件系统protues,仿真用软件软件编程序用keil软件其中控制歌曲播放的流程图如下 开始 定义晶振频率 12000000HZ

(完整word版)51单片机课程设计实验报告

51单片机课程设计报告 学院: 专业班级: 姓名: 指导教师: 设计时间:

51单片机课程设计 一、设计任务与要求 1.任务:制作并调试51单片机学习板 2.要求: (1)了解并能识别学习板上的各种元器件,会读元器件标示; (2)会看电路原理图; (3)制作51单片机学习板; (4)学会使用Keil C软件下载调试程序; 用调试程序将51单片机学习板调试成功。 二、总原理图及元器件清单 1.总原理图 2.元件清单 三、模块电路分析 1. 最小系统: 单片机最小系统电路分为振荡电路和复位电路, 振荡电路选用12MHz 高精度晶振, 振荡电容选用22p和30p 独石电容;

图 1 图 2 复位电路使用RC 电路,使用普通的电解电容与金属膜电阻即可; 图 3 当单片机上电瞬间由于电容电压不能突变会使电容两边的电位相同,此时RST 为高电平,之后随着时间推移电源负极通过电阻对电容放电,放完电时RST 为低电平。正常工作为低电平,高电平复位。 2. 显示模块: 分析发光二极管显示电路: 图 4 发光二极管显示电路分析:它是半导体二极管的一种,可以把电能转化成光能,常简写为

LED。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。当给发光二极管加上正向电压后,产生自发辐射的荧光。图中一共有五个发光二极管其中一个为电源指示灯,当学习板通电时会发光以指示状态。其余四个为功能状态指示灯,实际作用与学习板有关 分析数码管显示电路 图 5 数码管显示电路分析:数码管按段数分为七段数码管和八段数码管,图中所用为八段数码管(比七段管多了一个小数点显示位),按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管.共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。数码管主要用来显示经电路板处理后的程序的运行结果。图中使用了八个八段数码管,可以显示八个0-15的数字。使用数码管可以直观的得到程序运行所显示的结果.也可以显示预置在学习板上的程序,主要通过16个开关来控制。 四、硬件调试 1、是否短路 用万用表检查P2两端是短路。电阻为0,则短路,电阻为一适值,电路正常。 2、焊接顺序 焊接的顺序很重要,按功能划分的器件进行焊接,顺序是功能部件的焊接--调试--另一功能部件的焊接,这样容易找到问题的所在。 3、器件功能 1)检查原理图连接是否正确 2)检查原理图与PCB图是否一致 3)检查原理图与器件的DATASHEET上引脚是否一致 4)用万用表检查是否有虚焊,引脚短路现象 5)查询器件的DATASHEET,分析一下时序是否一致,同时分析一下命令字是否正确 6)通过示波器对芯片各个引脚进行检查,检查地址线是否有信号的 7)飞线。用别的的口线进行控制,看看能不能对其进行正常操作,多试验,才能找到问题出现在什么地方。 1、详细描述硬件安装过程中出现的故障现象,并作故障分析,及解决方法。 六、软件调试

51单片机课程设计

课程设计说明书
课程设计名称






学生姓名
指导教师
单片机原理及应用课程设计 电子信息工程 140405 20141329 李延琦 胡黄水
2016 年 12 月 26 日

课程设计任务书
课程设计 题目
酒精测试仪
起止日期
2016 年 12 月 26 日— 2017 年 1 月 6 日
设计地点
计算机科学与工程学 院单片机实验室 3409
设计任务及日程安排: 设计任务:分两部分: (一)、设计实现类:进行软、硬件设计,并上机编程、联线、调试、 实现; 1.电子钟的设计 2.交通灯的设计 3.温度计的设计 4.点阵显示 5.电机调速 6.电子音乐发声(自己选曲) 7.键盘液晶显示系统 (二)、应用系统设计类:不须上机,查资料完成软、硬件设计画图。 查资料选定题目。 说明:第 1--7 题任选其二即可。(二)里题目自拟。 日程安排: 本次设计共二周时间,日程安排如下: 第 1 天:查阅资料,确定题目。 第 2--4 天:进实验室做实验,连接硬件并编写程序作相关的模块实验。 第 5--7 天:编写程序,并调试通过。观察及总结硬件实验现象和结果。 第 8--9 天:整理资料,撰写课程设计报告,准备答辩。 第 10 天:上交课程设计报告,答辩。 设计报告要求:
1. 设计报告里有两个内容,自选题目内容+附录(实验内容),每 位同学独立完成。 2. 自选题目不须上机实现,要求能正确完成硬件电路和软件程序 设计。内容包括: 1) 设计题目、任务与要求 2)硬件框图与电路图 3) 软件及流程图 (a)主要模块流程图 (b)源程序清单与注释 4) 总结 5) 参考资料 6)附录 实验上机调试内容
注:此任务书由指导教师在课程设计前填写,发给学生做为本门课程设计 的依据。

单片机课程设计——基于C51简易计算器

单片机双字节十六进制减法实验设计 摘要 本设计是基于51系列的单片机进行的双字节十六进制减法设计,可以完成计 算器的键盘输入,进行加、减、3位无符号数字的简单运算,并在LED上相应的显示结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入采用5个键盘。显示采用3位7段共阴极LED动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用KEIL公司的μVision3软件,采用汇编语言进行编程,并用proteus 仿真。 引言 十六进制减法计算器的原理与设计是单片机课程设计课题中的一个。在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。 单片机课程设计既要让学生巩固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,十进制加法计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。 关键词:单片机、计算器、AT89C51芯片、汇编语言、数码管、加减

目录 摘要 (01) 引言 (01) 一、设计任务和要求............................. 1、1 设计要求 1、2 性能指标 1、3 设计方案的确定 二、单片机简要原理............................. 2、1 AT89C51的介绍 2、2 单片机最小系统 2、3 七段共阴极数码管 三、硬件设计................................... 3、1 键盘电路的设计 3、2 显示电路的设计 四、软件设计................................... 4、1 系统设计 4、2 显示电路的设计 五、调试与仿真................................. 5、1 Keil C51单片机软件开发系统 5、2 proteus的操作 六、心得体会.................................... 参考文献......................................... 附录1 系统硬件电路图............................ 附录2 程序清单.................................. 一、设计任务和要求

89C51单片机课程设计之秒表设计实验报告

单片机课程设计报告 单 片 机 秒 表 系 统 课 程 设 计 班级: 课程名称:秒表设计 成员: 实训地点:北校机房 实训时间:6月4日至6月15日

目录 1课程设计的目的和任务 1.1 单片机秒表课程设计的概述 1.2课程设计思路及描述 1.3 课程设计任务和要求 2硬件与软件的设计流程 2.1系统硬件方案设计 2.2所需元器件 3 程序编写流程及课程设计效果 3.1源程序及注释 3.2原理图分析 3.3课程设计效果 4 心得体会

1. 课程设计的目的和任务 1.1单片机秒表课程设计的概述 一、课程设计题目 秒表系统设计——用STC89C51设计一个4位LED数码显示“秒表”,显示时间为000.0~9分59.9秒,每10毫秒自动加一,每1000毫秒自动加一秒。 二、增加功能 增加一个“复位”按键(即清零),一个“暂停”和“开始”按键。 三、课程设计的难点 单片机电子秒表需要解决几个主要问题,一是有关单片机定时器的使用;二是如何实现LED的动态扫描显示;三是如何对键盘输入进行编程;四是如何进行安装调试。 四、课程设计内容提要 本课程利用单片机的定时器/计数器定时和记数的原理,结合集成电路芯片8051、LED数码管以及课程箱上的按键来设计计时器。将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。其中本课程设计有三个开关按键:其中key1按键按下去时开始计时,即秒表开始键,key2按键按下去时数码管清零,复位为“00.00”. key3按键按下去时数码管暂停。 五、课程设计的意义 1)通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的 应用进一步的了解。 2)掌握定时器、外部中断的设置和编程原理。 3)通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。 4)该课程通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统, 拥有正确的计时、暂停、清零,并同时可以用数码管显示,在现实生活中应用广泛,具有现实意义 1.2课程设计思路及描述

89C51单片机课程设计之秒表设计实验报告.

这里可以加学校LOGAL 单片机课程设计报告 院系:12级物信系 班别:光信息科学与技术7班 课程名称:秒表设计 姓名:龚俊才欧一景 学号:1210407033 1210407041 指导老师:张涛 2011.12.23

目录 1课程设计的目的和任务 1.1 单片机秒表课程设计的概述 1.2课程设计思路及描述 1.3 课程设计任务和要求 2硬件与软件的设计流程 2.1系统硬件方案设计 2.2软件方案设计 3 程序编写流程及课程设计效果3.1源程序及注释 3.2原理图分析 3.3课程设计效果 4 心得体会 5 相关查阅资料

1. 课程设计的目的和任务 1.1单片机秒表课程设计的概述 一、课程设计题目 秒表系统设计——用STC89C52RC设计一个4位LED数码显示“秒表”,显示时间为 00.00~99.99秒,每10毫秒自动加一,每1000毫秒自动加一秒。 二、增加功能 增加一个“复位”按键(即清零),一个“暂停”和“开始”按键。 三、课程设计的难点 单片机电子秒表需要解决三个主要问题,一是有关单片机定时器的使用;二是如何实现LED 的动态扫描显示;三是如何对键盘输入进行编程。 四、课程设计内容提要 本课程利用单片机的定时器/计数器定时和记数的原理,结合集成电路芯片8051、LED数码管以及课程箱上的按键来设计计时器。将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。其中本课程设计有两个开关按键:其中key1按键按下去时开始计时,即秒表开始键(同时也用作暂停键),key2按键按下去时数码管清零,复位为“00.00”. 五、课程设计的意义 1)通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步 的了解。 2)掌握定时器、外部中断的设置和编程原理。 3)通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。 4)该课程通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的 计时、暂停、清零,并同时可以用数码管显示,在现实生活中应用广泛,具有现实意义 六、课程设计仪器 a) 集成电路芯片8051,七段数码管,89C51单片机开发板 b) MCS-51系列单片机微机仿真课程系统中的软件(Keil uvision2)。

51单片机课程设计 AD转换

课程设计报告 华中师范大学武汉传媒学院 传媒技术学院 电子信息工程2011 仅发布百度文库,版权所有.

AD转换 要求: A.使用单片机实现AD转换 B.可以实现一位AD转换,并显示(保留4位数字)设计框图:

方案设计: AD转换时单片机设计比较重要的实验。模数转换芯片种类多,可以满足不同用途和不同精度功耗等。 外部模拟量选择的是简单的电位器,通过控制电位器来改变模拟电压。显示电压值采用一般的四位七段数码管。而AD转换芯片采用使用最广的ADC0809 ADC0809芯片有28条引脚,采用双列直插式封装,如图所示。 下面说明各引脚功能: ?IN0~IN7:8路模拟量输入端。 ?2-1~2-8:8位数字量输出端。 ?ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路。?ALE:地址锁存允许信号,输入端,高电平有效。 ?START: A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。 ?EOC: A/D转换结束信号,输出端,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。 ?OE:数据输出允许信号,输入端,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。 ?CLK:时钟脉冲输入端。要求时钟频率不高于640KHz。

?REF(+)、REF(-):基准电压。 ?Vcc:电源,单一+5V。 ?GND:地 工作原理: 首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC 变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。 本次实验采用中断方式 把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。 不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。 首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。 采用中断可以减轻单片机负担。并可以使程序有更多的空间作二次开发。

(完整版)基于51单片机的4人抢答器课程设计

基于51单片机的4人抢答器设计 设计要求: 以单片机为核心,设计一个4位竞赛抢答器:同时供4名选手或4个代表队比赛,分别用4个按钮S0~S3表示。 设置一个系统清除和抢答控制开关S,开关由主持人控制。 抢答器具有锁存与显示功能。即选手按按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。 抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。 当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间为0.5s左右。 参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。 如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。 工作原理: 通过键盘改变抢答的时间,原理与闹钟时间的设定相同,将定时时间的变量置为全局变量后,通过键盘扫描程序使每按下一次按键,时间加1(超过30时置0)。同时单片机不断进行按键扫描,当参赛选手的按键按下时,用于产生时钟信号的定时计数器停止计数,同时将选手编号(按键号)和抢答时间分别显示在LED上。

#include #define uchar unsigned char #define uint unsigned int uchar num; //定义中断变量,num计满20表示1秒时间到uchar num1; //十秒倒计时显示初始值 uchar flag1,flag2; //清零键及开始键按下标志位 uchar flag3,flag4=0; //定义键盘按下标志位 uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f}; //数码管编码

51单片机课程设计源程序

TIME0_DOWN EQU F0 ;将F0设置为定时器0定时到标志 FINISH_ID EQU 30H ;学号发送标志 KEY_FLAG BIT 00H ;有键按下标志 KEY_LONG BIT 01H ;键长按 KEY_D EQU 31H ;键值存放地址 ADC0809_AD EQU 8000H ;设置ADC0809地址 DAC0832_AD EQU 0000H ;设置DAC0832地址 ADC_FLAG BIT 02H ;设置ADC0809读数据标志 ADC_DATE EQU 32H ;设置ADC0809数据地址 ADC_0 EQU 33H ;ADC0809转化为BCD码后个位存放地址 ADC_1 EQU 34H ;十分位存放地址 ADC_2 EQU 35H ;百分位存放地址 ADC_3 EQU 36H ;千分位存放地址 ORG 0000H ;程序开始,跳转至主程序 0000 020030 LJMP MAIN ORG 0003H ;外部中断0入口0003 020141 LJMP INT0_IN ORG 000BH ;设置定时器0中断入口地址 000B 020132 LJMP TIME0 ORG 0013H ;外部中断1入口0013 020151 LJMP INT1_IN ORG 0030H ;主程序开始地址 0030 758169 MAIN: MOV SP,#69H ;初始化堆栈指针 0033 C292 CLR P1.2 ;显示器清零 0035 D292 SETB P1.2 0037 753000 MOV FINISH_ID,#0 ;将标志位清零 003A C2D5 C LR TIME0_DOWN 003C C200 CLR KEY_FLAG 003E C201 CLR KEY_LONG 0040 753100 MOV KEY_D,#0 0043 C202 CLR ADC_FLAG 0045 753200 MOV ADC_DATE,#0 0048 753300 MOV ADC_0,#0 004B 753400 MOV ADC_1,#0 004E 753500 MOV ADC_2,#0 0051 753600 MOV ADC_3,#0 0054 C291 CLR P1.1 ;初始化键盘,行线置零,有键按下触发中断 0056 C293 CLR P1.3

51单片机电子时钟课程设计报告报告

目录 第一部分设计任务和要求 1.1单片机课程设计内 容 (2) 1.2单片机课程设计要求………………………………………………… 2 1.3系统运行流程………………………………………………………… 2 第二部分设计方案 2.1 总体设计方案说明 (2) 2.2 系统方框图 (3) 2.3 系统流程图 (3) 第三部分主要器材及基本简介 3.1 主要器材 (4) 3.2 主要器材简介 (4) 第四部分系统硬件设计 4.1 最小系统 (6) 4.2 LCD显示电路 (6) 4.3 键盘输入电路 (7) 4.4 蜂鸣器和LED灯电路 (7)

第五部分仿真电路图与仿真结果 (8) 第六部分课程设计总结 (8) 第七部分参考文献 (9) 附录A 实物图 附录B 系统源程序 第一部分设计任务和要求 1.1 单片机课程设计内容 利用STC89C51单片机和LCD1602电子显示屏实现电子时钟,可由按键进行调时和12/24小时切换。 1.2 单片机课程设计要求 1.能实现年、月、日、星期、时、分、秒的显示; 2.能实现调时功能; 3.能实现12/24小时制切换; 4.能实现8:00—22:00整点报时功能。 1.3 系统运行流程 程序首先进行初始化,在主程序的循环程序中首先调用数据处理程序,然后调用显示程序,在判断是否有按键按下。若有按键按下则转到相应的功能程序执行,没有按键按下则调用时间程序。若没到则循环执行。计时中断服务程序完成秒的计时及向分钟、小时的进位和星期、年、月、日的进位。调时闪烁中断服务程序

用于被调单元的闪烁显示。调时程序用于调整分钟、小时、星期、日、月、年,主要由主函数组成通过对相关子程序的调用,如图所示。实现了对时间的设置和修改、LCD显示数值等主要功能。相关的调整是靠对功能键的判断来实现的。第二部分设计方案 2.1 总体设计方案说明 1.程序设计及调试 根据单片机课程设计内容和要求,完成Protues仿真电路的设计和用Keil软件编写程序,并进行仿真模拟调试。 2.硬件焊接及调试 根据仿真电路图完成电路板的焊接,并进行软、硬件的调试,只到达到预期目的。3.后期处理 对设计过程进行总结,完成设计报告。 2.2 单片机系统方框图

相关主题