基于51单片机的四足机器人

基于51单片机的四足机器人
基于51单片机的四足机器人

深圳大学期末考试试卷

开/闭卷开卷A/B卷N/A

课程编号1303270001

1303270002 课程名称EDA技术与实践(2)学分2.0

命题人(签字) 审题人(签字) 2015 年10 月20 日

设计考试题目:完成一个集成电路或集成系统设计项目

基本要求:2-3位同学一组,完成一个完整的集成电路设计项目或是一个集成系统设计项目。

规格说明:

1.题目自定。

1)集成电路设计项目

i.若为IC设计项目需要完成IC设计的版图。

ii.若采用FPGA实现数字集成电路设计,需要进行下板测试。

2)集成系统设计项目,需使用FPGA开发板或嵌入式开发板,完成一个完整的集成

系统作品。

3)作品需要课堂现场演示,最后提交报告,每个小组单独一份报告,但需阐述各个

成员的工作。

2.评分标准:

2015年第二学期,建议作品内容:

完成一个行走机器人,基本要求

o2-8只脚

o能行走

o可以用单片机,嵌入式,FPGA方案

一、设计目的:

通过设计一个能够走动的机器人来增加对动手能力,和对硬件电路设计的能力,增强软件流程设计的能力和对设计流程实现电路功能的能力,在各个方面提升自己对电子设计的能力。

二、设计仪器和工具:

本设计是设计一个能走动的机器人,使用到的仪器和工具分别有:sg90舵机12个、四脚机器人支架一副、单片机最小系统一个、电容电阻若干、波动开关一个、超声遥控模块一对、杜邦线若干、充电宝一个。

三、设计原理:

本次设计的机器人是通过51单片机控制器来控制整个电路的。其中,舵机的控制是通过产生一个周期为20毫秒的高电平带宽在0.5到2.5ms之间的pwm信号来控制。12路Pwm信号由单片机的定时器来产生。51单片机产生12路pwm信号的原理是:以20毫秒为周期,把这20毫秒分割成8个2.5ms,因为,每个pwm信号的高电平时间最多为2.5ms,然后在前六个2.5ms中分别输出两个pwm信号的高电平,例如,在第一个2.5ms中输出第一个和第二个pwm信号的高电平时,首先开始时,把信号S1、S2都置1,然后比较两个高电平时间,先定时时间短的高电平时间,把高电平时间短的那个信号置0,再定时两个高电平时间差,到时把高电平时间长的按个信号置0,然后,定时(2.5-较长那个高电平时间),在第二个

2.5ms开始时,把S3、S4置1,接下来和上面S1、S2一样,以此类推,

在六个2.5ms 中输出12路pwm信号来控制舵机。原理图如图1.

通过超声模块来控制机器人前进、后退、向前的左转、向前的右转、向后的左转、向后的右转几个动作。

控制模块电路,D0,D1,D2,D3分别为超声接受模块的输出,输出为高电平,要加NPN作为开关。

四、设计步骤:

1、设计好硬件电路,焊接51单片机的最小系统和各个硬件电路。

2、设计好软件的流程图,如图2。

3、写产生12路控制舵机的pwm信号的程序并在proteus中测试,如

图3。

4、设计出行走步态,四脚机器人的步态是采用对角的相互前进来实现

的,如图4。

5、写出流程图中各个模块的软件,包括前进函数、后退函数、左转和

右转的函数,并逐个烧到单片机中测试。

6、按流程图把各个函数组合到主函数中,完成所有软件的编写,并烧

到单片机中测试,并不断的调试。

图2.流程图

图3.在proteus里测试并调试pwm信号

图4,行走步态

五、遇到的问题及解决:

1、此设计的pwm信号输出使用定时器来产生每个信号的高电平和低

电平,每次定时时间到,都会会关掉定时器并执行中断函数,在此过

程中会消耗一定的时间,等到给定时器赋值下一次定时时间并开始定

时时,就会产生一定的时间延时,造成每次高电平时间都会变长一

点,且总的加起来会使20ms周期变长,因此,需要稍微减小高电平的

定时时间,并结合proteus仿真确定最准确值。

2、由于机器人的四个脚都是自己组装的,可能会有存在不平衡和对

称,当对角的两只脚同时向前迈同一个角度时,会使机器人向一个方

向偏转而不沿直线前进,这时要结合实际测试来调整机器人的各个脚

的前迈角度来使机器人平衡的沿直线前进,比如,一只脚迈多点,另

一边的脚迈少点。

六、心得与体会:

通过这次设计,我更加的熟悉基本的硬件电路和软件的设计,特别是软件的流程图设计。更加熟悉软硬件电路结合的测试与调试。

六、实验实物图:

设计代码:

#include

#define uchar unsigned char

#define uint unsigned int

uint pwm[12],p_min1,p_max1,p_min2,p_max2,p_min3,p_max3,p_min4,p_max4,p_min5,p_max5, p_min6,p_max6,p1,p2,p3,p4,p5,p6,p11,p21,p31,p41,p51,p61;//高电平带宽

sbit s0=P2^0;//12路输出信号

sbit s1=P2^1;

sbit s2=P2^2;

sbit s3=P2^3;

sbit s4=P2^4;

sbit s5=P2^5;

sbit s6=P2^6;

sbit s7=P2^7;

sbit s8=P0^6;

sbit s9=P0^4;

sbit s10=P0^2;

sbit s11=P0^0;

sbit up=P1^0;

sbit right=P1^4;

sbit left=P1^2;

sbit down=P1^6;

uchar s_num,f,b,r,l,back_flag;forward_flag;

void back();//后退

void forward(); //前进

void back_right(); //后右转、前左转

void back_left(); //后左转、前右转

void scan_key();//遥控监控

void labor_init();//机器人的初始状态

void delay(uint i) //延时函数,延时一秒

{

uint j;

for(i;i>0;i--)

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

}

void init(void)//中断初始函数

{

TMOD=0x01;

TR0=1;

ET0=1;

EA=1;

}

void rate(uint p[12])//pwm的排序函数

{

p_min1=(p[0]<=p[1]?(p[0]):(p[1]))-40;

p_max1=p[0]>p[1]?(p[0]):(p[1]);

p_min2=(p[2]<=p[3]?p[2]:p[3])-64;

p_max2=p[2]>p[3]?p[2]:p[3];

p_min3=(p[4]<=p[5]?p[4]:p[5])-64;

p_max3=p[4]>p[5]?p[4]:p[5];

p_min4=(p[6]<=p[7]?p[6]:p[7])-64;

p_max4=p[6]>p[7]?p[6]:p[7];

p_min5=(p[8]<=p[9]?p[8]:p[9])-64;

p_max5=p[8]>p[9]?p[8]:p[9];

p_min6=(p[10]<=p[11]?p[10]:p[11])-64;

p_max6=p[10]>p[11]?p[10]:p[11];

p1=p_max1-p_min1-21;

p2=p_max2-p_min2-42;

p3=p_max3-p_min3-42;

p4=p_max4-p_min4-42;

p5=p_max5-p_min5-42;

p6=p_max6-p_min6-42;

p11=2400-p_max1;

p21=2400-p_max2;

p31=2400-p_max3;

p41=2400-p_max4;

p51=2400-p_max5;

p61=15500-p_max6;

TH0=-p_min1/256;

TL0=-p_min1%256;

s_num=0;

s0=1;

s1=1;

init();

}

void scan_key()

{

if(P1!=0xff)

{

delay(5);

if(up==0)

{

f=0;

}

if(down==0)

b=0;

if(right==0)

r=0;

if(left==0)

l=0;

}

}

void time0() interrupt 1 //中断产生12路pwm信号{

TR0=0;

switch(s_num)

{

case 0:if(pwm[0]<=pwm[1])

{

if(pwm[0]==pwm[1])

{s0=0;s1=0;s_num++;TH0=-(p1-0)/256;TL0=-(p1-0)%256;break;} else

s0=0;

}

else

s1=0;

TH0=-p1/256;

TL0=-p1%256;

s_num++;

break;

case 1:if(pwm[0]>pwm[1])

s0=0;

else

s1=0;

TH0=-p11/256;

TL0=-p11%256;

s_num++;

break;

case 2:s2=1;

s3=1;

TH0=-p_min2/256;

TL0=-p_min2%256;

s_num++;

break;

case 3:if(pwm[2]<=pwm[3])

{

if(pwm[2]==pwm[3])

{s2=0;s3=0;s_num++;TH0=-p2/256;TL0=-p2%256;break;}

else

s2=0;

}

else

s3=0;

TH0=-p2/256;

TL0=-p2%256;

s_num++;

break;

case 4:if(pwm[2]>pwm[3])

s2=0;

else

s3=0;

TH0=-p21/256;

TL0=-p21%256;

s_num++;

break;

case 5:s4=1;

s5=1;

TH0=-p_min3/256;

TL0=-p_min3%256;

s_num++;

break;

case 6:if(pwm[4]<=pwm[5])

{

if(pwm[4]==pwm[5])

{s4=0;s5=0;s_num++;TH0=-p3/256;TL0=-p3%256;break;} else

s4=0;

}

else

s5=0;

TH0=-p3/256;

TL0=-p3%256;

s_num++;

break;

case 7:if(pwm[4]>pwm[5])

s4=0;

else

s5=0;

TH0=-p31/256;

TL0=-p31%256;

s_num++;

break;

case 8:s6=1;

s7=1;

TH0=-p_min4/256;

TL0=-p_min4%256;

s_num++;

break;

case 9:if(pwm[6]<=pwm[7])

{

if(pwm[6]==pwm[7])

{s6=0;s7=0;s_num++;TH0=-p4/256;TL0=-p4%256;break;} else

s6=0;

}

else

s7=0;

TH0=-p4/256;

TL0=-p4%256;

s_num++;

break;

case 10:if(pwm[6]>pwm[7])

s6=0;

else

s7=0;

TH0=-p41/256;

TL0=-p41%256;

s_num++;

break;

case 11:s8=1;

s9=1;

TH0=-p_min5/256;

TL0=-p_min5%256;

s_num++;

break;

case 12:if(pwm[8]<=pwm[9])

{

if(pwm[8]==pwm[9])

{s8=0;s9=0;s_num++;TH0=-p5/256;TL0=-p5%256;break;} else

s8=0;

}

else

s9=0;

TH0=-p5/256;

TL0=-p5%256;

s_num++;

break;

case 13:if(pwm[8]>pwm[9])

s8=0;

else

s9=0;

TH0=-p51/256;

TL0=-p51%256;

s_num++;

break;

case 14:s10=1;

s11=1;

TH0=-p_min6/256;

TL0=-p_min6%256;

s_num++;

break;

case 15:if(pwm[10]<=pwm[11])

{

if(pwm[10]==pwm[11])

{s10=0;s11=0;s_num++;TH0=-p6/256;TL0=-p6%256;break;}

else

s10=0;

}

else

s11=0;

TH0=-p6/256;

TL0=-p6%256;

s_num++;

break;

case 16:if(pwm[10]>pwm[11])

s10=0;

else

s11=0;

TH0=-p61/256;

TL0=-p61%256;

s_num++;

break;

case 17:

s0=1;

s1=1;

s_num=0;

TH0=-p_min1/256;

TL0=-p_min1%256;

break;

}

scan_key();

TR0=1;

}

void motor_init1()//给所有信号都设高电平时间为1.5毫秒

{

uchar i;

for(i=0;i<12;i++)

pwm[i]=1500;

}

void labor_init()//机器人的初始状态{

motor_init1();

l=1;

f=1;

r=1;

b=1;

back_flag=0;

forward_flag=0;

rate(pwm);

//delay(200);

while(1)

{

if(r==0)

{

r=1;

back_right();

}

if(l==0)

{

l=1;

back_left();

}

if(f==0)

{

f=1;

forward();

}

if(b==0)

{

b=1;

back();

}

}

}

void back()

{

back_flag=1;

forward_flag=0;

motor_init1();

pwm[8]=pwm[8]+300;

pwm[9]=pwm[9]-250;

pwm[2]=pwm[2]+150;

pwm[3]=pwm[3]-150;

pwm[7]=pwm[7]+50;

//pwm[0]=pwm[0]-80;

//pwm[5]=pwm[5]+80;

//pwm[11]=pwm[11]-30;

rate(pwm);

delay(500);

pwm[3]=pwm[3]+320;

pwm[8]=pwm[8]-200;

pwm[4]=pwm[4]+600;

pwm[5]=pwm[5]+600;

pwm[6]=pwm[6]+600;

pwm[7]=pwm[7]+600;

rate(pwm);

delay(300);

pwm[4]=pwm[4]-600;

pwm[5]=pwm[5]-600;

pwm[6]=pwm[6]-600;

pwm[7]=pwm[7]-600;

rate(pwm);

delay(300);

while(1)

{

if(r==0)

{

r=1;

back_right();

}

if(l==0)

{

l=1;

back_left();

}

if(f==0)

{

f=1;

forward();

}

if(b==0)

b=1;

pwm[3]=pwm[3]-320;

pwm[8]=pwm[8]+200;

pwm[2]=pwm[2]-270;

pwm[9]=pwm[9]+320;

pwm[1]=pwm[1]-600;

pwm[0]=pwm[0]-600;

pwm[10]=pwm[10]-600;

pwm[11]=pwm[11]-600;

rate(pwm);

delay(300);

pwm[1]=pwm[1]+600;

pwm[0]=pwm[0]+600;

pwm[10]=pwm[10]+600;

pwm[11]=pwm[11]+600;

rate(pwm);

delay(500);

pwm[2]=pwm[2]+270;

pwm[9]=pwm[9]-320;

pwm[3]=pwm[3]+320;

pwm[8]=pwm[8]-200;

pwm[4]=pwm[4]+600;

pwm[5]=pwm[5]+600;

pwm[6]=pwm[6]+600;

pwm[7]=pwm[7]+600;

rate(pwm);

delay(300);

pwm[4]=pwm[4]-600;

pwm[5]=pwm[5]-600;

pwm[6]=pwm[6]-600;

pwm[7]=pwm[7]-600;

rate(pwm);

delay(500);

if(P1!=0xff)

forward();

}

}

void back_right()

{

motor_init1();

pwm[8]=pwm[8]+50;

pwm[9]=pwm[9]-50;

//pwm[2]=pwm[2]+150;

//pwm[3]=pwm[3]-150;

pwm[7]=pwm[7]+100;

//pwm[0]=pwm[0]-80;

//pwm[5]=pwm[5]+80;

//pwm[11]=pwm[11]-30; rate(pwm);

delay(300);

pwm[3]=pwm[3]-70;

pwm[8]=pwm[8]-70;

pwm[4]=pwm[4]+600; pwm[5]=pwm[5]+600; pwm[6]=pwm[6]+600; pwm[7]=pwm[7]+600;

rate(pwm);

delay(300);

pwm[4]=pwm[4]-600; pwm[5]=pwm[5]-600; pwm[6]=pwm[6]-600; pwm[7]=pwm[7]-600;

rate(pwm);

delay(300);

while(1)

{

if(r==0)

{

if(back_flag==1)

{

r=1;

back_right();

}

if(forward_flag==1)

{

r=1;

back_left();

}

}

基于51单片机的数字钟

专业课程设计报告 专业班级 课程 题目基于51单片机的数字钟的设计报告学号 学生姓名 指导教师 成绩 2013年6月20日

基于A T89C51的数字钟总体设计说明书 目录 1. 51单片机设计数字钟设计的现实意义 (2) 2. 总体设计 (2) 2.1.开发与运行环境 (2) 2.2.硬件功能描述 (2) 2.3.硬件结构 (3) 3. 硬件模块设计 (3) 3.1.描述 (3) 3.1.1. AT89C51单片机简介 (3) 3.1.2. 键盘电路的设计 (4) 3.1.3. 显示器的选择 (5) 3.1.4. 蜂鸣器驱动电路 (5) 3.1.5. 各部分功能 (6) 4. 嵌入式软件设计 (7) 4.1.流程逻辑 (7) 4.2.算法 (7) 4.2.1. 中断定时器的设置 (27) 4.2.2. 闹钟子函数 (28) 4.2.3. 计时函数 (29) 4.2.4. 键盘扫描函数 (31) 4.2.5. 时间和闹钟的设置 (32) 5. 实验器材清单 (33) 6. 测试与性能分析 (33) 6.1.测试结果 (33) 6.2.优点 (33) 6.3.结论 (34) 7. 心得体会 (36) 8. 致谢 (36) 9. 参考文献 (37)

1.51单片机设计数字钟设计的现实意义 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。例如,许多火灾都是由于人们一时忘记了关闭煤气或是忘记充电时间等造成的。而钟表的数字化给人们生产生活带来了极大的方便。数字钟是通过数字电路实现时,分,秒数字显示的计时装置,广泛用于个人家庭、车站、码头办公室等公共场所,成为人们日常生活中不可少的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能,诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烤箱、通断动力设备、甚至各种定时电气的自动启用等。所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。 2.总体设计 2.1.开发与运行环境 在硬件方面,除了CPU外,使用八个七段LED数码管来进行显示,LED采用的是动态扫描显示。通过LED能够较为准确地显示时、分、秒。四个简单的按键实现对时间的调整。软件方面采用C语言编程。使用Keil单片机模拟调试软件,测试程序的可行性并用Proteus进行仿真。 2.2.硬件功能描述 硬件部分设置了的三个按键S1、S2、S3、S4。当按键S1第一次按下时,停止计时进

单片机简易示波器论文

基于单片机的简易示波器设计 摘要 随着电子科学技术的迅速发展,特别是随着大规模集成电路的出现,给人类生活带来了根本性的改变。尤其是单片机技术的开发应用发展,现在产品几乎已经走进了千家万户。而示波器的出现更是给人们的生活带来了极大的方便与实用。 本文首先描述了在整个设计中所用到的一些重要元器件的功能及相关特性并系统地介绍硬件部分的工作原理,并附以系统结构框图加以说明,着重介绍了本系统所应用的各硬件接口技术和各个接口模块的功能及工作过程,其次,详细阐述了程序的各个模块和实现过程,详细讨论了在软件上实现的过程。本设计单片机技术为核心。本文编写的主导思想是软硬件相结合,以硬件为基础,来进行各功能模块运行来编写。 关键词:ADC0809数模转换、AT89C51、128×64LCD液晶显示模块。

A simple oscilloscope design based on MCU Abstract Especially the development and application of SCM technology, now the product has almost entered thousands of households. The oscilloscope has brought convenience and practicability greatly to people's life. This paper describes some important components used in the design of the function and related characteristics and introduces working principle of hardware, and attached to the system block diagram to illustrate the structure, function and working process are introduced, the hardware interface technology and the application of the system interface module. Secondly, detailed describes the procedures for the various modules and the realization process, process is realized in the software are discussed in detail. The design of single-chip technology as the core. In this paper the compiling principle is the combination of software and hardware, the hardware as the foundation, to the module operates to write. Key words: ADC0809 digital-analog conversion, AT89C51, 128 × 64LCD liquid crystal display module.

基于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提示。

基于51单片机的简易计算器制作

基于51单片机的简易计算器制作专业:电气信息班级:11级电类一班 姓名:王康胡松勇 时间:2012年7月12日 一:设计任务 本系统选用AT89C52单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计,具体设计如下: (1)由于设计的计算器要进行四则运算,为了得到较好的显示效果,经综合分析后,最后采用LED 显示数据和结果。 (2)采用键盘输入方式,键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键(on\c)和等号键(=),故只需要16 个按键即可,设计中采用集成的计算键盘。 (3)在执行过程中,开机显示零,等待键入数值,当键入数字,通过LED显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LED上输出运算结果。 (4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在LED上提示八个0;当除数为0时,计算器会在LED上会提示八个负号。 设计要求:分别对键盘输入检测模块;LED显示模块;算术运算模块;错误处理及提示模块进行设计,并用Visio画系统方框图,keil与protues仿真 分析其设计结果。 二.硬件设计 单片机最小系统 CPU:A T89C52 显示模块:两个4位7段共阴极数码管 输入模块:4*4矩阵键盘 1.电路图

电路图说明 本电路图采用AT89C52作为中处理器,以4*4矩阵键盘扫描输入,用两个74HC573(锁存器)控制分别控制数码管的位于段,并以动态显示的方式显示键盘输入结果及运算结果。为编程方便,以一个一位共阴极数码管显示负号。 三,程序设计 #include #define Lint long int #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; //锁存器段选sbit wela=P2^7; sbit display_g=P2^0; //负号段选 sbit display_w=P2^1; //负号位选uchar code table[]={0x3f,0x06,0x5b,0x4f, //0,1,2,3

基于51单片机的电子时钟的设计

目录 0 前言 (1) 1 总体方案设计 (2) 2 硬件电路设计 (2) 3 软件设计 (5) 4 调试分析及说明 (7) 5 结论 (9) 参考文献 (9) 课设体会 (10) 附录1 电路原理 (12) 附录2 程序清单 (13)

电子时钟的设计 许山沈阳航空航天大学自动化学院 摘要:传统的数字电子时钟采用了较多的分立元器件,不仅占用了很大的空间而且利用率也比很低,随着系统设计复杂度的不断提高,用传统时钟系统设计方法很难满足设计需求。 单片机是集CPU、RAM、ROM、定时器/计数器和多种接口于一体的微控制器。它体积小、成本低、功能强,广泛应用于智能产品和工业自动化上。而51系列的单片机是各单片机中最为典型和最有代表性的一种。,本次设计提出了系统总体设计方案,并设计了各部分硬件模块和软件流程,在用C语言设计了具体软件程序后,将各个模块完全编译通过过后,结果证明了该设计系统的可行性。该设计给出了以AT89C2051为核心,利用单片机的运算和控制功能,并采用系统化LED显示模块实时显示数字的设计方案,适当地解决了实际生产和日常生活中对计时高精确度的要求,因此该设计在现代社会中具有广泛的应用性。 关键字:AT89C2051,C语言程序,电子钟。 0前言 利用51单片机开发电子时钟,实现时间显示、调整和闹铃功能。具体要求如下: (1)按以上要求制定设计方案,并绘制出系统工作框图; (2)按要求设计部分外围电路,并与单片机仿真器、单片机实验箱、电源等正确可靠的连接,给出电路原理图; (3)用仿真器及单片机实验箱进行程序设计与调试;

(4)利用键盘输入调整秒、分和小时时刻,数码管显示时间; (5)实现闹钟功能,在设定的时间给出声音提示。 1总体方案设计 该电子时钟由89C51,BUTTON,1602 LCD液晶屏等构成,采用晶振电路作为驱动电路,利用单片机内部定时计数器0通过软件扩展产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。闹钟和时钟的时分秒的调节是由一个按键控制,而另外一个按键控制时钟和闹钟的时间的调节。 图1 系统结构框图 该电子时钟由STC89C51,BUTTON,1602 LCD液晶屏等构成,采用晶振电路作为驱动电路,晶振电路的晶振频率为12MHZ,使用的定时器/计数器工作方式0,通过软件扩展产生的一秒定时,达到时分秒的计时,60秒为一分钟,60分钟为一小时,24小时为一天,又重00:00:00开始计时。没有按键按键按下时,时钟正常运行,当按下调节时钟按键K1,就会关闭时钟,当按下闹钟按键K3时时钟就会进入设置时间界面,但是时钟不会停止工作,按K2键,,就可以对时钟和闹钟要设置的时间进行调整。 2硬件电路设计

51单片机示波器

ADC #define uchar unsigned char #define uchar unsigned char #define uint unsigned int sbit START=P3^4; sbit OE=P3^6; sbit EOC=P3^5; uint AD; void adc() { START=1; START=0; while(EOC==0) { OE=1; } AD=P0; OE=0; }

89c51 #include #include #include sbit DI=P2^2; // 数据\指令选择 sbit RW=P2^1; // 读\写选择 sbit E=P2^0; // 读\写使能 sbit CS1=P2^4; // 片选1 sbit CS2=P2^3; // 片选2 sbit busy=P1^7; sbit jia=P3^7; sbit jian=P3^3; sbit jia1=P3^0; sbit jian1=P3^1; unsigned int i; unsigned char ye,lei,shu; unsigned char a[91]; void checkstate() { DI=0; RW=1; do { E=1; E=0; //仅当第7位为0时才可操作(判别busy信号) }while(busy==1); } void writecommand(unsigned char command) //写命令 { checkstate(); DI=0; RW=0; P1=command; E=1; E=0; } void writedate(unsigned char date) //写数据 { checkstate();

基于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 按键控制模块

基于51单片机的计算器设计

目录 第一章引言 (3) 1.1 简述简易计算器 (3) 1.2 本设计主要任务 (3) 1.3 系统主要功能 (4) 第二章系统主要硬件电路设计 (4) 2.1 系统的硬件构成及功能 (4) 2.2 键盘电路设计 (5) 2.3 显示电路设计 (6) 第三章系统软件设计 (7) 3.1 计算器的软件规划 (7) 3.2 键盘扫描的程序设计 (7) 3.3 显示模块的程序设计 (8) 3.4 主程序的设计 (9) 3.5 软件的可靠性设计 (9) 第四章调试 (9) 第五章结束语 (10) 参考文献 (11) 附录源程序 (11)

第一章引言 1.1 简述简易计算器 近几年单片机技术的发展很快,其中电子产品的更新速度迅猛。计算器是日常生活中比较的常见的电子产品之一。如何才能使计算器技术更加的成熟,充分利用已有的软件和硬件条件,设计出更出色的计算器呢? 本设计是以AT89S52单片机为核心的计算器模拟系统设计,输入采用4×6矩阵键盘,可以进行加、减、乘、除9位带符号数字运算,并在LCD1602上显示操作过程。 科技的进步告别了以前复杂的模拟电路,一块几厘米平方的单片机可以省去很多繁琐的电路。现在应用较广泛的是科学计算器,与我们日常所用的简单计算器有较大差别,除了能进行加减乘除,科学计算器还可以进行正数的四则运算和乘方、开方运算,具有指数、对数、三角函数、反三角函数及存储等计算功能。计算器的未来是小型化和轻便化,现在市面上出现的使用太阳能电池的计算器, 使用ASIC设计的计算器,如使用纯软件实现的计算器等,未来的智能化计算器将是我们的发展方向,更希望成为应用广泛的计算工具。 1.2 本设计主要任务 以下是初步设定的矩阵键盘简易计算器的功能: 1.扩展4*6键盘,其中10个数字,5个功能键,1个清零 2.强化对于电路的焊接 3.使用五位数码管接口电路 4. 完成十进制的四则运算(加、减、乘、除); 5. 实现结果低于五位的连续运算; 6. 使用keil 软件编写程序,使用汇编语言; 7. 最后用ptoteus模拟仿真; 8.学会对电路的调试

基于51单片机的电子时钟设计源程序

#include unsigned char DispBuf[6]; //时间显示缓冲区 unsigned char Disdate[6]; //日期显示缓冲区 unsigned char DisSec[6]; //秒表缓冲区 struct //设定时间结构体 { unsigned char Hour; unsigned char Min; unsigned char Sec; }Time; struct //设定日期结构体 { unsigned char Year; unsigned char Month; unsigned char Days; }Date; struct //设定毫秒结构体 { unsigned char Minite; unsigned char Second; unsigned char MilliSec; }Millisecond; unsigned char point=0; unsigned char point1=0; unsigned char point2=0; unsigned char Daymount; unsigned char Daymount1; unsigned char T0_Int_Times=0; //中断次数计数变量 unsigned char Flash_flag=0; //闪烁标志,每半秒闪烁 unsigned char Flash_flag1=0; //闪烁标志,每半秒闪烁 unsigned char DisPlay_Back=0; //显示缓冲区更新备份,如果显示缓冲区更新则跟闪烁标志不一致 unsigned char DisPlay_Back1=0; //显示缓冲区更新备份,如果显示缓冲区更新则跟闪烁标志不一致 unsigned char i,j; unsigned char SetMillisecond; //启动秒表 code unsigned char LEDCode[]={0x01,0xd7,0x22,0x82,0xc4,0x88,0x08,0xc1,0x00,0x80}; //数码管显示代码 code unsigned char ErrorLEDCode[]={0x01,0xe7,0x12,0x82,0xc4,0x88,0x08,0xc1,0x00,0x80};//绘制错误图纸的数码管显示代码 void DisPlayBuf(); void ChangeToDispCode(); void ChangeToDispCode1(); void changedate(); // 调日期 void displaydate(); // 显示日期 void makedays(); //确定每个月的日期 void runSec();

基于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) 系统具有显示输出波形的类型、重复频率和幅度的功能。

基于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单片机的计算器设计程序代码汇编

DBUF EQU 30H TEMP EQU 40H YJ EQU 50H ;结果存放 YJ1 EQU 51H ;中间结果存放GONG EQU 52H ;功能键存放 ORG 00H START: MOV R3,#0 ;初始化显示为空MOV GONG,#0 MOV 30H,#10H MOV 31H,#10H MOV 32H,#10H MOV 33H,#10H MOV 34H,#10H MLOOP: CALL DISP ;PAN调显示子程序WAIT: CALL TESTKEY ; 判断有无按键JZ WAIT CALL GETKEY ;读键 INC R3 ;按键个数 CJNE A,#0,NEXT1 ; 判断就是否数字键 LJMP E1 ; 转数字键处理NEXT1: CJNE A,#1,NEXT2 LJMP E1 NEXT2: CJNE A,#2,NEXT3 LJMP E1 NEXT3: CJNE A,#3,NEXT4 LJMP E1 NEXT4: CJNE A,#4,NEXT5 LJMP E1 NEXT5: CJNE A,#5,NEXT6 LJMP E1 NEXT6: CJNE A,#6,NEXT7 LJMP E1 NEXT7: CJNE A,#7,NEXT8 LJMP E1 NEXT8: CJNE A,#8,NEXT9 LJMP E1 NEXT9: CJNE A,#9,NEXT10 LJMP E1 NEXT10: CJNE A,#10,NEXT11 ;判断就是否功能键LJMP E2 ;转功能键处理NEXT11: CJNE A,#11,NEXT12 LJMP E2 NEXT12: CJNE A,#12, NEXT13 LJMP E2

#基于单片机AT89C51的电子时钟的课程设计

苏州市职业大学 课程设计任务书课程名称:单片机原理和使用课程设计 起讫时间:2011年6月22日----6月28日 院系:电子信息工程系 班级:09电子3班 指导教师:金小华 系主任:张红兵 一、课程设计课题 基于单片机的电子时钟的设计

1.掌握使用proteus软件的方法。 2.理解单片机的时钟显示方法。 3.明确设计指标,写出设计方案,设计出硬件原理图。 4.基于硬件的软件设计和调试。 5.将结果向指导教师演示,由教师提问验收通过; 6.打印程序清单,撰写程序说明,完成课程设计报告书,进行分组讨论 设计心得。

1.第一天:明确课程设计任务和目标,熟悉单片机系统调试软件仿真实 现。 2.第二天:明确设计指标,设计电路原理图。 3.第三、四天:基于硬件的软件设计和调试。 4.第五天:学生演示设计调试结果,教师提问验收。打印程序清单,撰 写程序说明,完成课程设计报告书。 四、课程设计说明书内容(有指导书的可省略) 1,单片机结构、原理。 2,电子时钟硬件设计(原理图,原理图分析)。 3,软件设计(软件简介,调试过程)。 4,硬件、软件程序清单。

苏州市职业大学课程设计说明书 名称基于单片机的电子时钟的设计 2011年6月22日至2011年6月28日共一周院系电子信息工程系 班级09电子3班 姓名于宁 学号097302340 系主任张红兵 教研室主任陆春妹 指导教师金小华

目录 第一章电子时钟 (1) 1.1电子时钟简介 (1) 1.2电子时钟的基本特点 (1) 1.3电子时钟的原理 (1) 第二章单片机识的相关知识 (2) 2.1单片机简介 (2) 2.2单片机的发展史 (2) 2.3单片机的特点 (3) 2.489C51单片机介绍 (3) 第三章控制系统的硬件设计 (6) 3.1单片机型号的选择 (6) 3.2数码管显示工作原理 (6) 3.3键盘电路设计 (7) 3.4系统工作原理 (7) 3.5整个电路原理图 (9) 第四章控制系统的软件设计 (10) 4.1程序设计 (10) 4.2程序流程图 (13) 4.3伟福硬件仿真器简介 (14) 4.4仿真图及结果分析 (15) 第五章附录程序 (17) 第六章结束语 (19) 参考文献 (20)

(完整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口线的前提下选用方案一的静态显示。

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

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

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

基于51单片机的数字计算器的设计

《单片机技术及其应用》课程设计报告 专业:通信工程 班级:09312班 姓名:某某某 学号:09031069 指导教师: 二0一二年六月十八日

目录 1设计目的 (1) 2 设计题目描述与要求 (1) 3 设计过程 (2) 4硬件总体方案及说明 (6) 5 软件总体方案及设计流程 (9) 6 调试与仿真 (13) 7 心得体会 (14) 8 指导老师意见 (15) 9 参考文献 (16) 附录一 (16) 附录二 (21)

基于51单片机的数字计算器的设计 1设计目的 简易计算器的原理与设计是单片机课程设计课题中的一个。在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用和单片机完整程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。单片机课程设计既巩固了课本学到的理论,还学到了单片机硬件电路和程序设计,简易计算器课程设计通过自己动手用计算机电路设计软件,编写和调试,最后仿真,来加深对单片机的认识,充分发挥我们的个人创新和动手能力,并提高我们对单片机的兴趣,同时学习查阅资料、参考资料的方法。 本设计是基于51系列的单片机进行的简易计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED 上相应的显示结果。 设计过程在硬件与软件方面进行同步设计。硬件选择AT89C51单片机和74ls164,输入用4×4矩阵键盘。显示用5位7段共阴极LED静态显示。软件从分析计算器功能、流程图设计,再到程序的编写进行系统设计。选用编译效率最高的Keil软件进行编程,并用proteus仿真。 2 设计题目描述与要求 基于AT89C51数字计算器设计的基本要求与基本思路: (1)扩展4*4键盘,其中10个数字,5个功能键,1个清零 (2)使用五位数码管接口电路

【精品完整版】基于51单片机的数字电子钟设计

本科毕业论文(设计) 题目基于51单片机的数字电子钟设计 院(系)电子工程与电气自动化学院 专业电气工程及其自动化 学生姓名 学号 10028116 指导教师王静洪作奎职称硕士讲师 论文字数 9682 完成日期:2014年5月20日

巢湖学院本科毕业论文(设计)诚信承诺书 本人郑重声明:所呈交的本科毕业论文(设计),是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 本人签名:日期: 巢湖学院本科毕业论文 (设计)使用授权说明 本人完全了解巢湖学院有关收集、保留和使用毕业论文 (设计)的规定,即:本科生在校期间进行毕业论文(设计)工作的知识产权单位属巢湖学院。学校根据需要,有权保留并向国家有关部门或机构送交论文的复印件和电子版,允许毕业论文 (设计)被查阅和借阅;学校可以将毕业论文(设计)的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编毕业,并且本人电子文档和纸质论文的内容相一致。 保密的毕业论文(设计)在解密后遵守此规定。 本人签名:日期: 导师签名:日期:

巢湖学院2014届本科毕业论文(设计) 基于51单片机的数字电子钟设计 摘要 随着时代的发展,生活节奏的加快,人们的时间观念愈来愈强,同时伴随着自动化、智能化及微电子技术的发展,人们用于计时的工具也在不断的更新,单片机等技术的出现使得数字电子钟有了新的发展方向。基于此本设计以单片机STC89C52为控制核心,采用美国DALLAS公司生产的实时时钟芯片DS12C887和液晶芯片LCD1602,该设计具有电路设计简单,结构合理,能够精确显示时间、星期、日期等优点,并且能够实时更新显示。本设计同时具有闹铃设置功能以及到时报警功能,按键操作简单方便。更重要的是时钟芯片DS12C887具有误差小,内部自带锂电池使得断电时时间不停,再次上电后时间仍然能够准确显示在液晶上的特点。 关键词:单片机;电子钟;DS12C887;LCD1602

基于单片机的示波器

基于单片机的示波器

题目5 基于单片机的简易示波器班级:自动化131 姓名:姜小华蔡兴鹏 一、电路设计原理 本次课程设计设计的示波器由控制模块、人机界面接口、信号输入通道、信号显示模块组成。控制器模块应该具有以下一些主要功能:在满足触发条件时能启动对被测信号的频率范围确定相应的采样速率;在对存储的信号进行显示时,可以选择一个合适的速率将存储的信号数据读出并恢复模拟量;为了使A/D在合适的模拟输入信号幅度下进行转换,应能根据垂直灵敏度的要求选择信号调理电路的增益。人机界面接口模块可通过键盘对不同信号通道的选择,与波形位置的调整。信号输入通道模块;信号(正弦信号、方波信号)的产生,信号的放大、衰减电路,A/D转换电路。 信号显示模块组成;LCD显示出波形。 二、介绍各芯片参数 1、数模转换ADC0808 ADC0808是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。ADC0808是ADC0809的简化版本,功能基本相同。一般在硬件仿真时采用ADC0808进行A/D转换,实际使用时采用ADC0809进行A/D转换。 ADC0808芯片有28条引脚,采用双列直插式封装,如右图所示。各引脚功能如下: 1~5和26~28(IN0~IN7):8路模拟量输入端。 8、14、15和17~21:8位数字量输出端。 22(ALE):地址锁存允许信号,输入,高电平有效。 6(START):A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。 7(EOC):A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。 9(OE):数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。 10(CLK):时钟脉冲输入端。要求时钟频率不高于640KHZ。 12(VREF(+))和16(VREF(-)):参考电压输入端 11(Vcc):主电源输入端。

单片机课程设计——基于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 程序清单.................................. 一、设计任务和要求

相关文档
最新文档