文档库 最新最全的文档下载
当前位置:文档库 › 51单片机的脉冲控制器

51单片机的脉冲控制器

51单片机的脉冲控制器
51单片机的脉冲控制器

课程设计说明书(2011 /2012 学年第二学期)

课程名称:《单片机应用》课程设计

题目:脉冲控制器

专业班级:

学生姓名:

学号:

指导教师:

设计周数:两周

设计成绩:

2012年07月08日

目录

1. 课程设计目的................................................................................................32. 课程设计内容及设计过程说明...........................................................................32.1功能介绍................................................................................................32.2.1电路原理..........................................................................................32.2.2protel原理图....................................................................................42.2.3各功能模块电路设计...........................................................................52.2.3.1LED和蜂鸣器模块.....................................................................52.2.3.2硬件复位模块和晶振模块............................................................52.2.3.3段码输出和共阴极数码管模块......................................................62.2.4 PCB图.............................................................................................72.2.5 共阴极数码管显示码对照表..................................................................72.3元件清单................................................................................................82.4实际电路板成品图....................................................................................92.5程序流程图 (10)

2.6汇编程序 (11)

2.6.1程序源代码 (11)

2.6.2代码分析 (13)

3. 课程设计结论 (13)

4. 参考文献 (15)

1、课程设计目的

通过具体的功能电路进一步熟练protel99se的应用,进一步熟练焊接技术,掌握万用电路板的使用方法和技巧,初步掌握单片机编程和调试的技能,例如本课题的数码管显示模块,中断程序设计等。学会利用相关工具检查电路和借助计算机或仿真仪器单步调试程序。注重团队合作,合理组织分工作业,耐心细心,不怕困难,各尽其力,勤动手动脑,善于分析问题,灵活解决问题,提出设计思路,模块组合与技巧的实际操作。

2、课程设计正文

2.1功能介绍

脉冲控制器可以实现手动加减计数。k1为加计数键,k2为减计数键,数码管可以显示0~9、A、b、C、d、E、F。另外当显示为“0”且按下k2键,或者当显示为“F”

且按下k1键时,蜂鸣器响,同时LED亮。

2.2.1电路原理

由于课题要求采用中断控制,所以k1可由INT0表示,k2可由INT1表示,P1.0输出驱动蜂鸣器和LED。通过适当编程就可以实现这样的要求:当按下k1时显示加1,而当按下k2时显示减1,当显示为“0”且按下k2键,或者当显示为“F”且按下k1键时,蜂鸣器响,同时LED 亮。另个在这里附带共阴极八段数码管引脚功能图和AT89C51单片机引脚功能图如下所示:

2.2-1 共阴极数码管引脚图 2.2-2 AT89C51引脚图

2.2.2protel原理图

此图同时包含了P1.0输出通过三极管驱动蜂鸣器和LED模块,硬件复位模块,晶振模块,

中断模块,I/O接口模块,由P2构成的段码输出模块,共阴极数码管模块。可以作为原理分析和硬件调试的依据。

2.2.3各功能模块电路设计

2.2.3.1LED和蜂鸣器模块

因为课题要求为LED亮时蜂鸣器同时响,这样就可以把它们并联到一起,鉴于单片机P0

入了电阻,这样可以达到理想的结果。

模块电路如右图2-2-3-1所示

图2-2-3-1

2.2.3.2硬件复位模块和晶振模块

如图2-2-3-2下方所示为硬件复位模块,即单片机的最小系统,它由复位开关和10uF电容并联而成,分别接到单片机的EA和RESET接口,当开关闭合后,RESET接口为高电平,实现复位功能。

如图2-2-3-2右上角所示为晶振模块,由6MHz的晶振和两个30pF的电容构成,接到单片机的X1、X2端口,为单片机提供外部时钟脉冲,从而使单片机可以运行。

图2-2-3-2 2.2.3.3段码输出和共阴极数码管模块

如图2-2-3-3所示为段码输出和共阴极数码管模块,前者由P0口中的七个接口P0.1~P0.7构

成,由P0口出来的段码直接送给数码管显示,而不再需要CD4511的驱动,因为单片机本身有

一定的带负载能力,可以驱动一个数码管。共阴极数码管也容易连接,只是在焊接时要注意其引

脚排列顺序和3、8引脚的接地(即电源负极)。

2.2.4PCB图

2.2.5共阴极数码管显示码对照表

字符Dp g f e d c b a 段码

0 1 1 0 0 0 0 0 0 3FH

1 1 1 1 1 1 0 0 1 06H

2 1 0 1 0 0 1 0 0 5BH

3 1 0 1 1 0 0 0 0 4FH

4 1 0 0 1 1 0 0 1 66H

6 1 1 0 0 0 0 1 0 7DH

7 1 1 1 1 1 0 0 0 07H

8 1 1 0 0 0 0 0 0 7FH

9 1 0 0 1 0 0 0 0 6FH

A 1 0 0 0 1 0 0 0 77H

B 1 0 0 0 0 0 1 1 7CH

C 1 1 0 0 0 1 1 0 39H

D 1 0 1 0 0 0 0 1 5EH

E 1 0 0 0 0 1 1 0 79H

F 1 0 0 0 1 1 1 0 71H 2.3元件清单

AT89C51单片机1个

共阴极数码管1个

PNP三极管9012 1个

蜂鸣器1个

红色发光二极管1个

6 MHz晶振1个

10uF电容1个

30pF电容2个

开关3个

330Ω电阻4个

1kΩ电阻1个

导线若干

万用电路板1个

焊锡、松香适量

在焊接时我们以PCB板图作为参考,充分利用万用板的优势,比如成排交叉的电源线和地线、三孔相连的焊孔,我们本着尽量节省导线的原则安装元器件,而且不少地方我们利用了元器件的引脚当导线,更有少些短导线我们用从电阻上剪下的引脚做成裸导线代替,同时保证导线之间不发生短路的可能。焊点全部在印刷电路一侧,多余导线全用明线,这样使得电路板做出来方

便放置并容易检测,但由于万用板孔距的限制因而使实际接线不太美观,给它带来了小小的缺陷。

开始

初始化变量

K1按下?

N

延时10ms

Y

K1仍按下?

N

Y

关蜂鸣器和LED

显示是否为“F”?

蜂鸣器响、LED亮

Y

数码管显示加1

N

返回

K2按下?

N

延时10ms

Y

K2仍按下?

N

Y

关蜂鸣器和LED

显示是否为“0”?

蜂鸣器响、LED亮

Y

数码管显示减1

N

返回

2.6.1程序源代码

#include

#define uint unsigned int

#define uchar unsigned char

sbit key1=P3^2;

sbit tixing=P0^1;

sbit key2=P3^3;

uchar code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

uchar num=0;

void delay(uint z)

{

uint x,y;

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

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

}

void main()

{

while(1)

{

if(key1==0)

{

delay(5);

if(key1==0)

{

num++;

tixing=1;

if(num==16)

{

num=0;

tixing=0;

}

while(!key1);

}

else

if(key2==0)

{

delay(5);

if(key2==0)

{

tixing=1;

if(num==0)

{

num=16;

tixing=0;

}

num--;

}

while(!key2);

}

P2=table[num]; }

}

2.6.2代码分析

结合程序流程图,本程序可以识为由INT0和INT1构成的两个“主程序”MAIN1和MAIN2,利用它们之间的相互跳转来等待两个中断的键入,在按键去抖之,保护好中断现场后可进入各自的中断子程序。利用“while”和“for”循环语句来实现“0~F”的加减计数循环,利用“if”语句判断显示值为“F”时或者“0”时,再按键就使蜂鸣器响并且LED亮的子程序。送到P2口的段码则由读取事先编好的段码表来实现。

3、课程设计结论

经过两周的设计工作,我们最终完成了任务,实现了我们单片机控制的脉冲控制器功能电路,它来之不易,凝聚了我们组员的辛勤汗水努力过程。从这个意义上它不只是一块有功能的电路板,更是我们劳动和智慧的象征。

课程设计是一个大项目,集中体现团队合作,协调配合的精神。在设计之前我们已初步根据各自的特长分工进展。开始我们拿到任务书后感觉很简单,首先因为实现功能并不复杂,所谓的脉冲控制器其实就是加减计数器,其次用到的元件也不多,如同上面元件清单里所列。但实际做起来就开始遇到这样或那样的麻烦,有时让人心急如焚。

开始选择P0口作为段码输出,可后来由于还得加上拉电阻,为了简化设计电路,所以就改成了P2口作为段码输出。在选择中k1、k2按键时也作了小小改动,开始由T0作为k1,INT0作为k2,可是同学建议如果采用中断控制最好两个都是外部中断,所以最后改为INT0和INT1作为两个按键。

另外AT89C51的引脚图和共阴极数码管引脚图我们都从互联网上得到了详细的资料,这样保证了主体电路原理图的正确性。

在指导老师初步检查并协助修改后我们得到更为合理的原理图,领取元件和工具后我们就开始焊接电路板了。经过反复的设计与布局,焊板工作顺利完成。

接下来的就是程序的编写了,我们花了好几天的时间完成编写,期间参考了不少书籍资料和网络资料,但刚开始使用计算机模拟仿真后却发现很多错误,后来经过一边一边的改正和调试,终于在计算机仿真上成功实现所要求的功能。但仿真成功不代表实际成功,理论上行得通的程序,真正运行起来就未必能够成功。程序下载进单片机之后,运行功能仍然有问题,数码管的显示不正常,后来我们又一遍一遍的查找问题,将可能出现问题的地方一个一个排查,最终终于排除故障,成功实现脉冲控制器的功能。

这次课程设计终于顺利完成了,在设计中遇到了很多专业知识问题,最后在老师的指导下,

终于迎刃而解。同时,在老师的身上我们学也到很多实用的知识,在此我们对指导老师表示感谢!感谢老师辛勤的工作,透彻的讲解,耐心的点拨以及不厌其烦的纠正我们的错误。同时,对给过我们帮助的所有同学和实验室的老师表示忠心的感谢!

课程设计是对课本知识的巩固和加强,由于课本上的知识太多,平时课上的学习并不能很好的理解和运用这些知识,而且考试内容有限,所以在这次课程设计过程中,我们了解了很多综合布线设计过程中的细节环节,对其在有了更多的认识。有些平时不太懂得问题,做完课程设计也就迎刃而解了,而且印象深刻。通过这次课设,我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,以后还需更加努力。

通过两周的课程设计,也加深了我对团队精神的认识。我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。某个人的离群都可能导致整项工作的失败。团结协作是我们实习成功的一项非常重要的保证。而这次实习也正好锻炼我们这一点,这也是非常宝贵的。

此次的课程设计,我学到了很多课本上学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高。这些都让我受益非浅。两个星期的实习,一度热情高涨,也曾无比失落,有欢笑,也有汗水。从开始时满腔热情到中途的挥洒汗水再到最后成功的喜悦,点点滴滴无不令我回味无长。这份财富,会伴随这我一直前进。

4、参考文献

[1]张毅刚,彭喜元,董继成.《单片机原理及应用》.北京:高等教育出版社.2003

[2]王守中.《51单片机开发入门与典型实例》.北京:人民邮电出版社.2007

[3]龚运新.《单片机C语言开发技术》.北京:清华大学出版社.2006.10

[4]王东锋,王会良,董冠强.《单片机C语言应用100例》.电子工业出版社.2009

课程设计

评语

课程设计成绩指导教师

(签字)年月日

51单片机中断程序大全

//实例42 :用定时器T0 查询方式 P2 口8 位控制LED 闪烁 //#include单片机寄存器定义的头文件 51包含 /******************************************************* *******函数功能:主函数 ******************************************************** ******/void main(void){ // EA=1;开总中断// 中断允许T0 // 定时器// ET0=1; 1的模式TMOD=0x01;// 使用定时器T0 位赋初值定时器T0 的高8 TH0=(65536-46083)/256; // 位赋初值的高8 TL0=(65536-46083)%6; // 定时器T0 T0启动定时器TR0=1;// TF0=0;P2=0xff; 无限循环等待查询while(1)// {while(TF0==0); TF0=0;P2=~P2; 位赋初值的高8 定时器TH0=(65536-46083)/256; // T0 位赋初值T0 TL0=(65536-46083)%6; //

定时器的高8 }} 1KHzT1:用定时器43 实例// 音频查询方式控制单片机发出 #include 单片机寄存器定义的头文件51 // 包含sbit sound=P3^7;将// 引脚sound P3.7 位定义为 /********************************************************** **** 函数功能:主函数 ******************************************************** ******/void main(void){// EA=1;开总中断// 中断允许ET0=1;// // 定时器T0 1的模式使用定时器// T1 TMOD=0x10; 位赋初值// TH1=(65536-921)/256; T1 定时器的高8 TL1=(65536-921)%6; // 定时器T1 的高8 位赋初值 TR1=1;// 启动定时器T1TF1=0; while(1)// 无限循环等待查询{while(TF1==0); TF1=0;

基于51单片机的波形发生器的设计讲解

目录 1 引言 (1) 1.1 题目要求及分析 (1) 1.1.1 示意图 (1) 1.2 设计要求 (1) 2 波形发生器系统设计方案 (2) 2.1 方案的设计思路 (2) 2.2 设计框图及系统介绍 (2) 2.3 选择合适的设计方案 (2) 3 主要硬件电路及器件介绍 (4) 3.1 80C51单片机 (4) 3.2 DAC0832 (5) 3.3 数码显示管 (6) 4 系统的硬件设计 (8) 4.1 硬件原理框图 (8) 4.2 89C51系统设计 (8) 4.3 时钟电路 (9) 4.4 复位电路 (9) 4.5 键盘接口电路 (10) 4.7 数模转换器 (11) 5 系统软件设计 (12) 5.1 流程图: (12) 5.2 产生波形图 (12) 5.2.1 正弦波 (12) 5.2.2 三角波 (13) 5.2.3 方波 (14) 6 结论 (16) 主要参考文献 (17) 致谢...................................................... 错误!未定义书签。

1引言 1.1题目要求及分析 题目:基于51单片机的波形发生器设计,即由51单片机控制产生正弦波、方波、三角波等的多种波形。 1.1.1示意图 图1:系统流程示意图 1.2设计要求 (1) 系统具有产生正弦波、三角波、方波三种周期性波形的功能。 (2) 用键盘控制上述三种波形(同周期)的生成,以及由基波和它的谐波(5次以下)线性组合的波形。 (3) 系统具有存储波形功能。 (4) 系统输出波形的频率范围为1Hz~1MHz,重复频率可调,频率步进间隔≤100Hz,非正弦波的频率按照10次谐波来计算。 (5) 系统输出波形幅度范围0~5V。 (6) 系统具有显示输出波形的类型、重复频率和幅度的功能。

单片机最小系统设计

单片机最小系统设计 时间:2011-05-01 22:47:54 来源:作者: 单片机最小系统设计 该单片机最小系统具有的功能: (1)具有2位LED数码管显示功能。 (2)具有八路发光二极管显示各种流水灯。 (3)可以完成各种奏乐,报警等发声音类实验。 (4)具有复位功能。 功能分析 (1)两位LED数码管显示功能,我们可以利用单片机的P0口接两个数码管来现这个功能;(2)八路发光二极管显示可以利用P1口接八个发光二极管实现这个功能; (3)各种奏乐、报警等发声功能可以采用P2.0这个引脚接一蜂鸣器来实现。 (4)利用单片机的第9脚可以设计成复位系统,我们采用按键复位;利用单片机的18、19脚可以设计成时钟电路,我们利用单片机的内部振荡方式设计的。 设计框图 硬件电路设计 根据本系统的功能,和单片机的工作条件,我们设计出下面的电路图。

元件清单的确定: 数码管:共阴极2只(分立) 电解电容:10UF的一只 30PF的电容2只 220欧的电阻9只 4.7K的电阻一只 1.2K的电阻一只 4.7K的排阻一只, 12MHZ的晶振一只 有源5V蜂名器一只 AT89S51单片机一片 常开按钮开关1只 紧锁座一只(方便芯取下来的,绿色的) 发光二极管(5MM红色)8只 万能板电路版15*17CM S8550三极管一只 4.5V电池盒一只,导线若干。七、硬件电路的焊接 按照原理图把上面的元件焊接好,详细步骤省略。 相关程序编写 针对上面的电路原理图,设计出本单片机最小系统的详细功能:(1)、第一个发光二极管点亮,同时数码管显示“1”。 (2)、第二个发光二极管点亮,同时数码管显示“2”。 (3)、依次类推到第八个发光二极管点亮,同时数码管显示“8”。以上出现的是流水灯的效果 (4)、所有的发光二极管灭了,同时数码管现实“0”。

单片机中断程序大全

单片机中断程序大全公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-

//实例42:用定时器T0查询方式P2口8位控制L E D闪烁#include // 包含51单片机寄存器定义的头文件void main(void) { // EA=1; //开总中断 // ET0=1; //定时器T0中断允许 TMOD=0x01; //使用定时器T0的模式1 TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%256; //定时器T0的高8位赋初值 TR0=1; //启动定时器T0 TF0=0; P2=0xff; while(1)//无限循环等待查询 { while(TF0==0) ; TF0=0; P2=~P2; TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%256; //定时器T0的高8位赋初值 //实例43:用定时器T1查询方式控制单片机发出1KHz音频

#include // 包含51单片机寄存器定义的头文件sbit sound=P3^7; //将sound位定义为P3.7引脚 void main(void) {// EA=1; //开总中断 // ET0=1; //定时器T0中断允许 TMOD=0x10; //使用定时器T1的模式1 TH1=(65536-921)/256; //定时器T1的高8位赋初值 TL1=(65536-921)%256; //定时器T1的高8位赋初值 TR1=1; //启动定时器T1 TF1=0; while(1)//无限循环等待查询 { while(TF1==0); TF1=0; sound=~sound; //将P3.7引脚输出电平取反 TH1=(65536-921)/256; //定时器T0的高8位赋初值 TL1=(65536-921)%256; //定时器T0的高8位赋初值 } } //实例44:将计数器T0计数的结果送P1口8位LED显示 #include // 包含51单片机寄存器定义的头文件sbit S=P3^4; //将S位定义为P3.4引脚

基于51单片机系统设计

基于51单片机的多路温度采集控制系统设计 言: 随着现代信息技术的飞速发展,温度测量控制系统在工业、农业及人们的日常生活中扮演着一个越来越重要的角色,它对人们的生活具有很大的影响,所以温度采集控制系统的设计与研究有十分重要的意义。 本次设计的目的在于学习基于51单片机的多路温度采集控制系统设计的基本流程。本设计采用单片机作为数据处理与控制单元,为了进行数据处理,单片机控制数字温度传感器,把温度信号通过单总线从数字温度传感器传递到单片机上。单片机数据处理之后,发出控制信息改变报警和控制执行模块的状态,同时将当前温度信息发送到LED进行显示。本系统可以实现多路温度信号采集与显示,可以使用按键来设置温度限定值,通过进行温度数据的运算处理,发出控制信号达到控制蜂鸣器和继电器的目的。 我所采用的控制芯片为AT89c51,此芯片功能较为强大,能够满足设计要求。通过对电路的设计,对芯片的外围扩展,来达到对某一车间温度的控制和调节功能。 关键词:温度多路温度采集驱动电路 正文: 1、温度控制器电路设计 本电路由89C51单片机温度传感器、模数转换器ADC0809、窜入并出移位寄存器74LS164、数码管、和LED显示电路等组成。由热敏电阻温度传感器测量环境温度,将其电压值送入ADC0809的IN0通道进行模数转换,转换所得的数字量由数据端D7-D0输出到89C51的P0口,经软件处理后将测量的温度值经单片机的RXD端窜行输出到74LS164,经74LS164 窜并转换后,输出到数码管的7个显示段,用数字形式显示出当前的温度值。89C51的P2.0、P2.1、P2.2分别接入ADC0809通道地址选择端A、B、C,因此ADC0809的IN0通道的地址为F0FFH。输出驱动控制信号由p1.0输出,4个LED为状态指示,其中,LED1为输出驱动指示,LED2为温度正常指示,LED3为高于上限温度指示,LED4为低于下限温度指示。当温度高于上限温度值时,有p1.0输出驱动信号,驱动外设电路工作,同时LED1亮、LED2灭、LED3亮、LED4灭。外设电路工作后,温度下降,当温度降到正常温度后,LED1亮、LED2亮、LED3灭、LED4灭。温度继续下降,当温度降到下限温度值时,p1.0信号停止输出,外设电路停止工作,同时LED1灭、LED2灭、LED3灭、LED4亮。当外设电路停止工作后,温度开始上升,接着进行下一工作周期。 2、温度控制器程序设计 本软件系统有1个主程序,6个子程序组成。6个子程序为定时/计数器0中断服务程序、温度采集及模数转换子程序ADCON、温度计算子程序CALCU、驱动控制子程序DRVCON、十进制转换子程序METRICCON 及数码管显示子程序DISP。 (1)主程序 主程序进行系统初始化操作,主要是进行定时/计数器的初始化。 (2)定时/计数器0中断服务程序 应用定时计数器0中断的目的是进行定时采样,消除数码管温度显示的闪烁现象,用户可以根据实际环境温度变化率进行采样时间调整。每当定时时间到,调用温度采集机模数转换子程序ADCON,得到一个温度样本,并将其转换为数字量,传送给89C51单片机,然后在调用温度计算子程序CALCU,驱动控制子程序DRVCON,十进制转换子程序MERTRICCON,温度数码显示子程序DISP。

51单片机最小系统实验报告

51单片机最小系统实验报告 1.实验目的: 1).学习、了解单片机原理,即单片机的各引脚功能、特殊功能寄存器、中断系统、定时/计数器和通信方式等; 2).了解指令系统,各指令的功能; 3).学习电路原理设计,PC板设计以及编排; 2.方案设计: 1).最小系统部分的设计能够用于基本的数字信号处理,运行一些简单的程序。此部分主要包括电源电路、复位电路、时钟电路、USB 接口设计等; 2).扩展电路的设计对于51最小系统CPU芯片等在芯片出厂时不可能让片内存储器的大小满足所有功能的要求,如果将片内存储器做太大,必然造成芯片成本的提高。所以合适的外部RAM、液晶、外部中断和串行接口电路设计等。 3.任务:51单片机最小系统的设计 1)CPU选择:STC15W4K系列 选择原因:a.宽电压(2.5V-5.5V) b. 大容量4K字节SRAM和多组并行端口 c.16/32/56/61/63.5字节多选Flash程序储存器以及普通定时、计数器T0-T4外部管脚可掉电唤醒。 d.内置高精准时钟(5-28MHz任意设置)和集成MAX810专用复位电路

e.看门狗、对外输出时钟及复位 2).系统要实现的功能: 以UPU为核心器件,并利用外存储器对最小系统电路进行扩展。在介绍CPU基本特点的基础上,通过学习指导,开展出51单片机最小系统板。系统要实现以下功能,最小系统部分的设计能够用于基本的数字信号处理,运行一些简单的程序。此部分主要包括电源电路、复位电路、时钟电路、中断系统,USB 接口的设计和相对扩展等。 4.外围器件选择及说明: 1).外部RAM:IS62C256AL。ISSI的IS62C256AL是一个32Kx8位字长的低功耗CMOS静态随机存取存储器。IS62C256AL采用ISSI公司的高性能,低功耗CMOS工艺制造。 当/CE处于高电平(未选中)时,IS62C256AL进入待机模式。在此CMOS 输入标准的待机模式下,功耗低至150 μW(典型值)。 使用IS62C256AL的低触发片选引脚(/CE)和低触发输出使能引脚(/OE),可以轻松实现存储器扩展。低触发写入使能引脚(/WE)将完全控制存储器的写入和读取。 IS62C256AL在引脚上完全兼容其他32Kx8的塑料SOP或TSOP1封装的SRAM。 2).USB接口。接收、传送数据。 3).USB转串口芯片:CH340G。支持USB1.1或者USB2.0/USB3.0通信.具有仿真接口,可以升级外围串口设备,支持常用的MODE联络信号、STC全系

51单片机中断程序大全

//实例42:用定时器T0查询方式P2口8位控制LED闪烁#include // 包含51单片机寄存器定义的头文件 /************************************************************** 函数功能:主函数 **************************************************************/ void main(void) { // EA=1; //开总中断 // ET0=1; //定时器T0中断允许 TMOD=0x01; //使用定时器T0的模式1 TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%256; //定时器T0的高8位赋初值 TR0=1; //启动定时器T0 TF0=0; P2=0xff; while(1)//无限循环等待查询 { while(TF0==0) ; TF0=0; P2=~P2; TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%256; //定时器T0的高8位赋初值 } } //实例43:用定时器T1查询方式控制单片机发出1KHz音频#include // 包含51单片机寄存器定义的头文件 sbit sound=P3^7; //将sound位定义为P3.7引脚 /************************************************************** 函数功能:主函数 **************************************************************/ void main(void) { // EA=1; //开总中断 // ET0=1; //定时器T0中断允许 TMOD=0x10; //使用定时器T1的模式1 TH1=(65536-921)/256; //定时器T1的高8位赋初值

单片机定时器详解

一、MCS-51单片机的定时器/计数器概念 单片机中的定时器和计数器其实是同一个物理的电子元件,只不过计数器记录的是单片机外部发生的事情(接受的是外部脉冲),而定时器则是由单片机自身提供的一个非常稳定的计数器,这个稳定的计数器就是单片机上连接的晶振部件;MCS-51单片机的晶振经过12分频之后提供给单片机的只有1MHZ的稳定脉冲;晶振的频率是非常准确的,所以单片机的计数脉冲之间的时间间隔也是非常准确的,这个准确的时间间隔是1微秒; MCS-51单片机外接的是12MHZ的晶振(实际上是11.0592MHZ),所以,MCS-51单片机内部的工作频率(时钟脉冲频率)是12MHZ/12=1MHZ=1000000次/秒=1000000条指令/秒=1000000次/1000000微秒=1次/微秒=1条指令/微秒;也就是说,晶振振荡一次,就会给单片机提供一个时钟脉冲,花费的时间是1微秒,此时,CPU会执行一条指令,经历一个机器周期;即:1个时钟脉冲=1个机器周期=1微秒=1条指令; 注:个人PC机上的CPU主频是晶振经过倍频之后的频率,这一点恰好与MCS-51单片机的相反,MCS-51单片机的主频是晶振经过分频之后的频率; 总之:MCS-51单片机中的时间概念就是通过计数脉冲的个数来测量出来的;1个脉冲=1微秒=1条指令=1个机器周期; MCS-51单片机定时器/计数器的简单结构图: 8051系列单片机有两个定时器:T0和T1,分别称为定时器和定时器T1,这两个定时器都是16位的定时器/计数器;8052系列单片机增加了第三个定时器/计数器T2;它们都有定时或事件计数功能,常用于时间控制、延时、对外部时间计数和检测等场合; 二、定时器/计数器的结构 8051单片机的两个定时器T0和T1分别都由两个特殊功能寄存器组成;T0由特殊功能寄存器

C51单片机的波形发生器

通信专业技能实训报告 题目基于Proteus的波形发生器设计 学院信息科学与工程学院 专业通信工程 班级 学生 学号 指导教师魏长智 二〇一九年一月五日

济南大学通信专业技能实训报告 目录 1 前言 ...................................................................................................................... - 1 - 2 硬件设计 .............................................................................................................. - 2 - 2.1 启动方式选择 ........................................................................................... - 2 - 2.2 框图设计 ................................................................................................... - 2 - 2.3 电路图设计 ............................................................................................... - 3 - 3 DAC0832性能与特征....................................................................................... - 4 - 3.1 D/A转换器与单片机接口探究 ............................................................. - 4 - 3.1.1 数据线连接 .................................................................................... - 4 - 3.1.2 地址线连接 .................................................................................... - 4 - 3.1.3 控制线连接 .................................................................................... - 4 - 3.2 DAC0832的认识.................................................................................... - 5 - 3.2.1 DAC0832的结构......................................................................... - 5 - 3.2.2 DAC0832的引脚......................................................................... - 6 - 3.2.3 DAC0832的启动控制方式......................................................... - 7 - 4 程序设计 .............................................................................................................. - 8 - 4.1 程序流程图 ............................................................................................... - 8 - 4.1.1 程序设计思路 ................................................................................ - 8 - 4.1.2流程图 ............................................................................................. - 8 - 4.2 用C语言实现 ........................................................................................ - 10 - 5 Proteus仿真及结果 ......................................................................................... - 13 - 5.1方波: ...................................................................................................... - 13 - 5.2正弦波: .................................................................................................. - 14 - 5.3三角波: .................................................................................................. - 15 - 5.4梯形波: .................................................................................................. - 16 - 5.5锯齿波: .................................................................................................. - 17 -实训结语: ............................................................................................................ - 18 -参考文献 ................................................................................................................ - 19 -

跟我学51单片机(一):单片机最小系统组成与IO输出控制

跟我学51单片机(一):单片机最小系统组成与I/O输出控制 1 单片机是一门实践性较强的技术,很多初学者在学习单片机技术开发的时候往往一头雾水,不知何从下手。为此,笔者结合自己使用单片机多年的经验,特意设计了单片机开发所需的Stud y-c 整机和硬件套件,并结合套件精心编写了单片机从入门到精通系列教程。通过讲述单片机原理、电路设计、应用开发软件工具、编写实验实例让读者全面接触单片机技术。教程编排上由浅入深,循序渐进,内容力求完整、实用、趣味并存,使读者在轻松愉快的学习过程中逐步提高单片机软硬件综合设计水平。 一、内容提要 本讲主要向大家介绍51 系列单片机的最小系统的实现并通过编写程序来实现对单片机IO 口的输出控制。以点亮外部连接的LED(发光二极管)为例,简要的介绍单片机的原理、最小系统的组成,并通过简单的C51 程序设计来讲述编译软件Keil的使用并下载Hex 文件烧写单片机。 二、原理简介 在了解原理之前,首先让我们思考一个问题,什么是单片机,单片机有什么用?这是一个有意思的问题,因为任何人都不能给出一个被大家都认可的概念,那到底什么是单片机呢?普遍来说,单片机又称单片微控制器,是在一块芯片中集成了CPU(中央处理器)、RAM (数据存储器)、ROM(程序存储器)、定时器/ 计数器和多种功能的I/O(输入/ 输出)接口等一台计算机所需要的基本功能部件,从而可以完成复杂的运算、逻辑控制、通信等功能。在这里,我们没必要去找到明确的概念来解析什么是单片机,特别在使用C 语言编写程序的时,不用太多的去了解单片机的内部结构以及运行原理等。从应用的角度来说,通过从简单的程序入手,慢慢的熟悉然后逐步深入精通单片机。 在简单了解了什么是单片机之后,然后我们来构建单片机的最小系统,单片机的最小系统就是让单片机能正常工作并发挥其功能时所必须的组成部分,也可理解为是用最少的元件组成的单片机可以工作的系统。对51 系列单片机来说,最小系统一般应该包括:单片机、时钟电路、复位电路、输入/ 输出设备等(见图1)。

基于51单片机波形发生器的设计与实现开题报告

基于51单片机波形发生器的设计与实现开题报告合肥师范学院本科生毕业论文(设计)开题报告 (学生用表) 课题基于51单片机波形发生器的设计与实现 系部电子信息工程学院专业电子信息工程学科工学 学生屠宝轩指导教师吴剑威一、课题的来源、背景及意义 (1)来源:科研/生产 (2)背景:单片机是再20世纪70年代中期发展起来的一种大规模集成电路芯 片,是由中央处理器(CPU), ROM、RAM芯片及I/O接口和一些外围电路等通过印刷版总线连接在一起的一个完整的讣算机系统。信号发生器是一种作为激励源或者信号源的电子设备,它能够产生各种各样的波形和频率,其在教学实验,生产装实践和科技领域有着广泛的应用,是最普遍使用的电子仪器之一。对于电子类专 业的学生,除了学习理论知识外,还必须将所学的理论知识付诸实践,在实践中订应用理论知识,提高动手能力,从而提高发现,解决问题的能力,所以试验是必 不可少的环节,而信号波形发生器是实验过程最普遍,最基本,也是应用最广泛线的电子设备之一,本研究不是针对高端的信号发生器开发,而是从降低经 济成本, 操作方便简单,输出波形实用角度出发,研究一套设备。

(3)意义:传统的正弦信号源根据实际需要一般价格昂贵,低频输出时性能不好且不便于自动调节,丄程实用性较差。现在利用单片机的优越性,制作一种体积小,实用性强,使用方便的低频信号发生器,以AT85C51单片机为核心,结合低俗D/A转换器,通过设计与编程实现了正弦波、方波、锯齿波的产生及其自山切换以及频率、相位的可调与多相波的同时输出。 二、国内外发展现状 信号波形发生器历史非常的久远,它产生于上个世纪20年代,那会,电子设备刚刚诞生,随后,雷达发展了起来,通信技术也在不断地发展,到了40年代,标准信号发生器开始出现,它的出现主要是为了进行各种接收机的测试,使信号发生器诞生之初主要是用来做定性分析的,随着使用的要求不断提升,慢慢发展成为了定量分析的测量仪器,还是在这个时期,脉冲信号发生器也出现了,这个主要是用于脉冲方面的测量的,上面说的这些信号波形发生器都是早期的一些产品,复杂的机械结构,比较 [1]大的功率,比较简单的电路,速度发展总体是比较慢的。这种发展速度一直持续到1964年,笫一台全电子晶体管做的信号发生器出现。 从60年代以后,信号波形发生器的发展速度就开始加快了,有个代表产品,那就是函数信号发生器,但是模拟的电子方面的技术在这段时期是占主要的,组成的部分一般都是分立元件,或者是采用模拟的集成方面的电路,电路结构相比于60年代以前,要复杂了,产生的波形就多了一些,比如有方波、正弦波、三角波,还有了锯齿波,但是波形还是比较简单的,加上模拟电路会产生较大的漂移,输出波形的稳定性还是比较差的,70年代乂是一个转折点,出现了微控制器,这个时候信号波形发生器的功能就开始强大了起来,波形的产生也比较复杂了。对信号波形发生器而言,软件成为这个时期的主要特征,通过程序用微控制器进行相应的处理就能方便灵活的获得一些简单的信号波形,当然这种方式也是有缺陷的,那就是波形输出的频率不会很

(完整word版)基于51单片机的温度控制系统设计

基于51单片机的水温自动控制系统 0 引言 在现代的各种工业生产中 ,很多地方都需要用到温度控制系统。而智能化的控制系统成为一种发展的趋势。本文所阐述的就是一种基于89C51单片机的温度控制系统。本温控系统可应用于温度范围30℃到96℃。 1 设计任务、要求和技术指标 1.1任务 设计并制作一水温自动控制系统,可以在一定范围(30℃到96℃)内自动调节温度,使水温保持在一定的范围(30℃到96℃)内。 1.2要求 (1)利用模拟温度传感器检测温度,要求检测电路尽可能简单。 (2)当液位低于某一值时,停止加热。 (3)用AD转换器把采集到的模拟温度值送入单片机。 (4)无竞争-冒险,无抖动。 1.3技术指标 (1)温度显示误差不超过1℃。 (2)温度显示范围为0℃—99℃。 (3)程序部分用PID算法实现温度自动控制。 (4)检测信号为电压信号。 2 方案分析与论证 2.1主控系统分析与论证 根据设计要求和所学的专业知识,采用AT89C51为本系统的核心控制器件。AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压,高性能CMOS 8位微处理器。其引脚图如图1所示。 2.2显示系统分析与论证 显示模块主要用于显示时间,由于显示范围为0~99℃,因此可采用两个共阴的数码管作为显示元件。在显示驱动电路中拟订了两种设计方案: 方案一:采用静态显示的方案 采用三片移位寄存器74LS164作为显示电路,其优点在于占用主控系统的I/O口少,编程简单且静态显示的内容无闪烁,但电路消耗的电流较大。 方案二:采用动态显示的方案 由单片机的I/O口直接带数码管实现动态显示,占用资源少,动态控制节省了驱动芯片的成本,节省了电 ,但编程比较复杂,亮度不如静态的好。 由于对电路的功耗要求不大,因此就在尽量节省I/O口线的前提下选用方案一的静态显示。

单片机最小系统(详解)设计报告

摘要 近年来随着计算机在社会领域的渗透, 单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。 本次课程设计包括STC89C51单片机最小系统(包括复位和时钟电路)还有蜂鸣器电路、LED电路和RS232串口电路以及用于扩展功能的四排与I/O端口相连的插孔。利用Protel电路设计软件进行原理图设计,PCB布线,借此巩固单片机应用、模拟电路、数字电路课程及学会工程软件protel的使用。 关键词:最小系统,I/O端口,STC89C51, PCB

Abstract Recent years, with the penetration of computers in the social sphere, SCM applications are constantly deepening, while driving traditional control detects the rapidly growing updated. In the real-time detection and automatic control of microcomputer application system, the microcontroller is often used as a core component, only the microcontroller knowledge is not enough, should be based on the specific hardware architecture, as well as application-specific software features object combine to make perfect . The curriculum includes the SCM STC89C51 minimum system (including reset and clock circuit) and the buzzer circuit, eight digital tube display circuit, RS232 serial port circuitry, and used to extend the functionality of the four rows with the I / O ports are connected jack. Protel circuit design software for the use of schematic design, PCB layout, thereby consolidating microcontroller applications, analog circuits, digital circuits courses and learn to use engineering software Protel. Keyword:minimum system,I/O Port, STC89C51, PCB

51单片机制作的波形发生器

51单片机制作的波形发生器 相信很多朋友都可能接触到一个波型发生器的制作,可能刚刚入门,做的东西也不会说是很复杂。可能就一 个矩形波,或者是三角波。但是网上的很多资料是忽悠 人的,就此,我也提供一个比较完整的波型发生器 C51 原代: 该系统的软件比较典型:包括键盘的应用,显示的 应用和 DA 转换器的应用。本设计中,输出的波形有三种:正弦波,方波,三角波。 方波的输出最为简单,只要按照设定的周期值将输 出的电压改变即可。 三角波的输出也比较简单,单片机的输出只要完成 数字量递增和递减交替进行即可。、 正弦波的输出最麻烦,如果在软件中计算出输出的 各点电压值,将会浪费很多的 CPU 时间,以至于无法满足频率的要求。通常最简单的方法是通过手动的方法计 算出输出各点的电压值,然后在编写程序时以数组的方 式给出。当需要时,只要按照顺序进行输出即可。这种 方法比运算法速度快且曲线的形状修改灵活。在本设计 中将 360 度分为 256 个点,则每两个点之间的间隔为1.4 度,然后计算出每个点电压对应的数字量即可。只

要反复输出这组数据到 DAC0832, 就可以在系统输出端得到想要的正弦波。 具体程序如下: #include ; #define uchar unsigned char #define uint unsigned int #define DAdata P0 uchar code Sinetab[256]= { 0x80,0x82,0x84,0x86,0x88,0x8a,0x8c,0x8e, 0x90,0x92,0x94,0x96,0x98,0x9a,0x9c,0x9e, 0xa0,0xa2,0xa4,0xa6,0xa8,0xaa,0xab,0xad, 0xaf,0xb1,0xb2,0xb4,0xb6,0xb7,0xb9,0xba, 0xbc,0xbd,0xbf,0xc0,0xc1,0xc3,0xc4,0xc5, 0xc6,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce, 0xce,0xcf,0xd0,0xd1,0xd1,0xd2,0xd2,0xd3, 0xd3,0xd3,0xd2,0xd2,0xd1,0xd1,0xd0,0xcf, 0xce,0xce,0xcd,0xcc,0xcb,0xca,0xc9,0xc8, 0xc6,0xc5,0xc4,0xc3,0xc1,0xc0,0xbf,0xbd, 0xbc,0xba,0xb9,0xb7,0xb6,0xb4,0xb2,0xb1, 0xaf,0xad,0xab,0xaa,0xa8,0xa6,0xa4,0xa2, 0xa0,0x9e,0x9c,0x9a,0x98,0x96,0x94,0x92,

基于51单片机的交通灯控制系统设计

目录 一引言 (2) 二概要设计 (2) 2.1 设计思路 (2) 2.2总体设计框图 (2) 三硬件设计 (3) 3.1LED循环电路设计 (3) 3.1.1 89cs51单片机概述 (3) 3.1.2 LED循环说明 (5) 3.2 倒计时显示电路 (5) 3.2.1 74LS164芯片 (5) 3.2.2 共阴极数码显示管 (6) 3.2.3 倒计时电路 (6) 3.2.4 急通车电路 (7) 四软件按设计 (7) 4.1 程序流程图: (7) 4.2 LED红绿灯显示 (8) 4.3倒计时显示 (9) 4.4 急通车控制 (9) 4.5程序代码 (9) 五总结 (9) 参考文献 (9) 附录一: (9) 附录二: (10)

基于51单片机的交通灯控制系统设计 摘要:在日常生活中,交通信号灯的使用,市交通得以有效管理,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。交通灯控制系统由80C51单片机、键盘、LED 显示、交通灯延时组成。系统除具有基本交通灯功能外,还具有时间设置、LED信息显示功能,市交通实现有效控制。 关键词:交通灯,单片机,自动控制 一引言 当今,红绿灯安装在个个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这个技术在19世纪就已经出现了。 1858年,在英国伦敦主要街头安装了以燃煤气为光源的红、蓝两色的机械般手势信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的会议大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转方式玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,是警察受伤,遂被取消! 电气启动的红绿灯出现在美国,这种红绿灯由红黄绿三色圆形的投光器组成,1914年始装于纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。 信号灯的出现,使得交通得以有效的管理,对于疏导交通流量、提高道路通行能力、减少交通事故有明显效果。1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。绿灯时通行信号灯,面对绿灯的车辆可以直行,左转弯和右转弯,除非两一种标志禁止某一种转向。左右转弯车辆必需让合法的正在路口内行驶的车辆和过人行横线的行人优先通行。红灯是禁行信号灯,面对红灯的车辆必需在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已经十分接近停车线而不能安全停车的可以进入交叉路口! 二概要设计 2.1 设计思路 利用单片机实现交通灯的控制,该任务分以下几个方面: a 实现红、绿、黄灯的循环控制。要实现此功能需要表示三种不同颜色的LED灯分别接在P1个管脚,用软件实现。 b 用数码管显示倒计时。可以利用动态显示或静态显示,串行并出或者并行并出实现。 C 实现急通车。这需要人工实现,编程时利用到中断才能带到目的,只要有按钮按下,那么四个方向全部显示红灯,禁止以诶车辆通行。当情况解除,让时间回到只能隔断处继续进行。 2.2总体设计框图 见图一:

89C51单片机最小系统设计(电子时钟,秒表,按键计数的单片机设计)

一、电子时钟、秒表和计数器的设计 1、实现的功能: 1)有key0,key1两个功能按键,复位后,数码管会默认显示时钟模式HH.MM 。 (HH表示小时,MM表示分钟), key0短按一次就进入到了秒表模式,数码管显示格式S.SS.S,(分别表示百秒,秒,毫秒) key0再短按一次就进入到了计数器模式,数码管显示格式CCCC(分别为千位百位十位个位)。 key0再短按一次,又进入到了时钟显示模式,就这样由key0控制模式的转换。 2)有RST复位键,本身电路设计有上电自动复位功能,按下RST后,电路复位。 3)有ckey0,ckey1 两个计数按键,按下ckey0,计数加一,按下ckey1,计数减一。 4) 电子时钟和秒表时间计时方法是采用89S52内部计时器0的一种工作方式(详见后面 的代码分析),通过计时器0中断来控制时间的运行。 5)计数器是采用外部中断0和外部中断1这两个外部中断实现加1和减1的操作。 (1)电子时钟模式:(以下“长按”表示按下按键的时间大于1秒,“短按”表示按下的时间小于0.7 秒)1)长按key1一次,会进入到调整分钟的模式,短按key1一次,分钟会加一。 第二次长按key1,会进入到调整小时的模式,短按key1一次,小时加一。 第三次长按key1,重新回到时钟显示模式,这时再短按key1,时间不会变化2)长按key0一次,会进入到显示秒的模式 (2)秒表模式: 1)由key0控制进入秒表模式后,短按key1一次,秒表计时开始,再短按key1一次计时结束 2)长按key1一次,秒表清零 (3)计数器模式 1)按ckey0一下,计数加一,数码管相应的显示的数值加一, 按ckey1一下,计数减一,数码管相应的显示的数值减一, 由于数码管的位数限制,最大只能显示到9999,此时按下ckey0无反应;考虑到 实际计数功能,没有设置负数,所以最小显示0000,这时按下ckey1 ,无反应。 2)长按key1一次计数器清零。 2、电路原理图

相关文档
相关文档 最新文档