搜档网
当前位置:搜档网 › 无线wifi模块,51单片机,C语言程序

无线wifi模块,51单片机,C语言程序

无线wifi模块,51单片机,C语言程序
无线wifi模块,51单片机,C语言程序

无线WIFI模块ESP8266和51单片机

实现LED灯的无线控制

一、关于51单片机和无线WIFI模块的接线方面

RXD、TXD、GND和51单片机的TXD、RXD、GND接好,模块其他引脚均为高电平,电源VCC是3.3V左右(两节1.5v干电池),本人由于没有稳压模块,偷懒了当时使用5V的直流源,测试结果目前没有问题(不过不建议啊!)

二、关于安卓手机方面

测试时可以使用,网络调试助手(下载这个app安装在手机即可)发送数字1表示小灯亮,0表示灯灭。后续想深入的话可以自己开发安卓app软件。

三、参数设置

由于参数的设置方法和步奏网上资料很全,这里提供相关的网址自行参考。

Uart-WiFi模块ESP8266把玩记

https://www.sodocs.net/doc/0f2257963.html,/kangear/article/details/40392385物联网wifi模块工作的STA和AP模式详细介绍

https://www.sodocs.net/doc/0f2257963.html,/archives/239

/******************************************************************** *

题目:基于STC12C560S2 单片机无线WIFI模块控制

内容:通过MCU上位机对ESP8266wifi模块的控制和设置,实现手机端控制LED灯的亮灭。

注意:该型号单片机是普通89C51单片执行速度的12倍,内含RAM1280字节,ROM 为60K,PCA 计数器,PWM发生模块,ADC转换模块等,晶振一定是11.0592MHz。********************************************************************/ #include //包含头文件

#define uint unsigned int

#define uchar unsigned char

#define RELOAD_COUNT 0xFA //宏定义波特率发生器的载入值

//define RELOAD_COUNT (256-(((11520000/16)/12)/9600)) 也可以或波特率9600 //256-晶振频率/波特率x16=BRT

/*****************LED灯对应P0口的1个端口*************/

sbit LED0=P3^2;

/************波特率发生器相关功能寄存器的定义****************/

sfr AUXR=0x8E;

sfr BRT=0x9C;

sfr AUXR1=0xA2;

/*****************相关变量**************/

uchar Receive,i;

uint n;

uchar Recive_table[15]; //用于接收wifi模块反馈到MCU上的数据

/******************************************************************* 名称:延时函数

作用:毫秒级延时,微妙级延时函数,为数据收发完成作等待.......

********************************************************************/ void ms_delay(uint t)

{

uint i,j;

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

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

}

void us_delay(uchar t)

{

while(t--);

}

/********************************************************************

名称:波特率发生器函数

作用:波特率发生器可以是T1定时器实现,也可以是MCU内部独立的波特率发生器,

各自不同的载入值计算式,具体根据寄存器相关设置来参考计算,以实现

异步串行通讯。(经测试,两种设置方式均可用,可任选一种。)

********************************************************************/ void Uart_Init()//使用定时器1作为波特率发生器(STC89C52、STC89C51、AT89C51或者STC12C560S2等均可)

{

SCON=0x50; //设置为串行口以方式1工作,8位异步通讯,允许接收中断。

//一帧信息为10位,1位起始位,8位数据位(低位在先),1位停止位。

PCON=0x80; //SMOD波特率选择位为1,SMOD=1.

TMOD=0x21; //设置定时器1为波特率发生器,工作在模式2,8位自动装载

TH1=RELOAD_COUNT;//波特率9600 ,TH1=256-FOSC/16/12/波特率

TL1=TH1;

EA=1; //总中断打开

ES=0; //关闭串口中断

TR1=1; //启动定时器1

}

/*

void Uart_Init()//使用独立的波特率发生器(STC12C560S2或带有独立波特率发生器//、//的单片机均可)

{

SCON=0x50; //设置为串行口以方式1工作,8位异步通讯,允许接收中断。

PCON=0x80; //SMOD波特率选择位为1,SMOD=1.

BRT=RELOAD_COUNT; //波特率9600 256-晶振频率/波特率x16=BRT

AUXR=0xD5; //T0、T1不12分频,速度是89C51的12倍,启动独立波特率//发生器,每个时钟计数一次

//设置串口1的波特率发生器为独立波特率发生器,

AUXR1=0x80; //切换到P1口

ES=1; //开启串口中断

EA=1; //开启总中断

}

*/

/******************************************************************** 名称:串口发送函数

功能:MCU向其他与其连接的设备发送数据(此处是无线WIFI模块ESP8266)

********************************************************************/ void Send_Uart(uchar value)

{

ES=0; //关闭串口中断

TI=0; //清发送完毕中断请求标志位

SBUF=value; //发送

while(TI==0); //等待发送完毕

TI=0; //清发送完毕中断请求标志位

ES=1; //允许串口中断

}

/******************************************************************** 名称:WIFI模块设置函数

作用: 启动模块,以便可以实现无线接入和控制

********************************************************************/ void ESP8266_Set(uchar *puf) // 数组指针*puf指向字符串数组

{

while(*puf!='\0') //遇到空格跳出循环

{

Send_Uart(*puf); //向WIFI模块发送控制指令。

us_delay(5);

puf++;

}

us_delay(5);

Send_Uart('\r'); //回车

us_delay(5);

Send_Uart('\n'); //换行

ms_delay(1000);

}

/****************************************************

名称:ESP8266发送数据函数

功能:用于与wifi模块相连的终端发送数据

*****************************************************/

void ESP8266_Sent(uchar *puf) // 数组指针*puf指向字符串数组

{

ESP8266_Set("AT+CIPSEND=0,4");

while(*puf!='\0') //遇到空格跳出循环

{

Send_Uart(*puf); //向WIFI模块发送控制指令。

us_delay(5);

puf++;

}

us_delay(5);

Send_Uart('\n'); //换行

ms_delay(10);

}

/******************************************************************** 名称:主函数

作用:程序的执行入口

********************************************************************/ void main()

{

LED0=0;//关闭LED灯

Uart_Init();//使用独立的波特率发生器

ESP8266_Set("AT+CWMODE=2"); //设置路由器模式 1 station模式 2 AP

//点路由器模式 3 station+AP混合模式

ESP8266_Set("AT+RST"); //重新启动wifi模块

ESP8266_Set("AT+CWSAP=\"WIFI\",\"1234567890\",11,4");

//设置模块SSID:WIFI, PWD:密码及安全类型加密模式(WPA2-PSK)

ESP8266_Set("AT+CIPMUX=1");//开启多连接模式,允许多个各客户端接入

ESP8266_Set("AT+CIPSERVER=1,5000"); //启动TCP/IP 端口为8080 实现基于网络//控制

ES=1;

//允许串口中断

while(1)

{

if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P')) //MCU接收到的数据为+IPD时进入判断控制0\1来使小灯亮与灭

{

if((Recive_table[3]=='D')&&(Recive_table[6]==','))

{

if(Recive_table[9]=='0')

{

LED0=0; //0 灯灭

ESP8266_Sent("灯灭");

//wifi模块向pc端或手机端发送"灯灭

}

else if (Recive_table[9]=='1')

{

LED0=1; //1 灯亮

ESP8266_Sent("灯亮");

//wifi模块向pc端或手机端发送"灯亮"

}

}

}

}

}

/******************************************************************** *

名称:串行通讯中断

作用:发送或接收结束后进入该函数,对相应的标志位软件清0,实现模块对数据正常的收发。

********************************************************************/ void Uart_Interrupt() interrupt 4

{

static uchar i=0;

if(RI==1)

{

RI=0;

Receive=SBUF; //MCU接收wifi模块反馈回来的数据

Recive_table[i]=Receive;

i++;

if((Recive_table[i-1]=='\n'))i=0; //遇到换行重新装值

}

else TI=0;

}

51单片机控制的步进电机C语言程序

我上周刚做的这个实验成功拉,给你参考一下吧这可是我当时辛辛苦苦编出来的啊,不过我用的是L298驱动的和ULN2003一样,你把它换成2003就行拉 #include unsigned char code table[]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf 9,0x00,0xf1,0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0x00}; unsigned char temp,temp_old; unsigned char key; unsigned char i,j,k,m,s; void delay(int i) { for(m=i;m>0;m--) for(j=250;j>0;j--) for(k=10;k>0;k--); } void saomiao() { P3=0xff; P3_4=0; temp=P3; temp=temp&0x0f; if(temp!=0x0f) { for(i=50;i>0;i--)

for(j=200;j>0;j--); temp=P3; temp=temp&0x0f; if(temp!=0x0f) { temp=P3; temp=temp&0x0f; switch(temp) { case 0x0e: key=1; break; case 0x0d: key=2; break; case 0x0b: key=3; break; case 0x07: key=4; break; } temp=P3;

temp=temp&0x0f; while(temp!=0x0f) { temp=P3; temp=temp&0x0f; } } } P3=0xff; P3_5=0; temp=P3; temp=temp&0x0f; if(temp!=0x0f) { for(i=50;i>0;i--) for(j=200;j>0;j--); temp=P3; temp=temp&0x0f; if(temp!=0x0f) { temp=P3; temp=temp&0x0f; switch(temp)

51单片机实例程100讲全集

目录 目录 (1) 函数的使用和熟悉 (4) 实例3:用单片机控制第一个灯亮 (4) 实例4:用单片机控制一个灯闪烁:认识单片机的工作频率 (4) 实例5:将P1口状态分别送入P0、P2、P3口:认识I/O口的引脚功能 (5) 实例6:使用P3口流水点亮8位LED (5) 实例7:通过对P3口地址的操作流水点亮8位LED (6) 实例8:用不同数据类型控制灯闪烁时间 (7) 实例9:用P0口、P1 口分别显示加法和减法运算结果 (8) 实例10:用P0、P1口显示乘法运算结果 (9) 实例11:用P1、P0口显示除法运算结果 (9) 实例12:用自增运算控制P0口8位LED流水花样 (10) 实例13:用P0口显示逻辑"与"运算结果 (10) 实例14:用P0口显示条件运算结果 (11) 实例15:用P0口显示按位"异或"运算结果 (11) 实例16:用P0显示左移运算结果 (11) 实例17:"万能逻辑电路"实验 (11) 实例18:用右移运算流水点亮P1口8位LED (12) 实例19:用if语句控制P0口8位LED的流水方向 (13) 实例20:用swtich语句的控制P0口8位LED的点亮状态 (13) 实例21:用for语句控制蜂鸣器鸣笛次数 (14) 实例22:用while语句控制LED (15) 实例23:用do-while语句控制P0口8位LED流水点亮 (16) 实例24:用字符型数组控制P0口8位LED流水点亮 (17) 实例25:用P0口显示字符串常量 (18) 实例26:用P0 口显示指针运算结果 (19) 实例27:用指针数组控制P0口8位LED流水点亮 (19) 实例28:用数组的指针控制P0 口8 位LED流水点亮 (20) 实例29:用P0 、P1口显示整型函数返回值 (21) 实例30:用有参函数控制P0口8位LED流水速度 (22) 实例31:用数组作函数参数控制流水花样 (22) 实例32:用指针作函数参数控制P0口8位LED流水点亮 (23) 实例33:用函数型指针控制P1口灯花样 (25) 实例34:用指针数组作为函数的参数显示多个字符串 (26) 实例35:字符函数ctype.h应用举例 (27) 实例36:内部函数intrins.h应用举例 (27) 实例37:标准函数stdlib.h应用举例 (28) 实例38:字符串函数string.h应用举例 (29) 实例39:宏定义应用举例2 (29) 实例40:宏定义应用举例2 (29) 实例41:宏定义应用举例3 (30)

基于51单片机电子密码锁设计

一、设计目的 1.1课题简介 如何实现防盗是很多人关心的问题,传统的机械锁由于其构造简单,被撬的事件屡见不鲜,使人们的人身及财产安全受到很大威胁。电子密码锁是一种依靠电子电路来控制电磁锁的开和闭的装置,开锁需要输入正确密码,若密码泄露,用户可以随时更改密码。因此其保密性高,使用灵活性好,安全系数高,可以满足广大用户的需要,现在广泛使用的有红外遥控电子密码锁,声控密码锁,按键密码锁等。 1.2课题研究目的 本设计是一种基于单片机的密码锁方案,根据基本要求规划单片机密码锁的硬件电路和软件程序,同时对单片机的型号选择、硬件设计、软件流程图、单片机存储单元的分配等都有注释。现在很多地方都需要密码锁,电子密码锁的性能和安全性大大超过了机械锁,为了提高密码的保密性,必须可以经常更改密码,以便密码被盗时可以修改密码。 本次设计的密码锁具备的功能:LED数码管显示初始状态“——————”,用户通过键盘输入密码,每输入一位密码,LED数码管相应有一位变为“P”,若想重新输入密码,只需按下“CLR”键。密码输入完毕后按确认键“#”,密码锁控制芯片将输入的密码和密码锁控制芯片中存储的密码相比,若密码错误,则不开锁,会有红灯亮提示,同时显示“Error”。若正确,则开锁,会有绿灯亮提示,同时显示“PASS”。用户可以根据实际情况随意改变密码值或密码长度,密码输入正确后可以按下“CHG”修改密码,输入新密码时每输入一位新密码相应有一位变为“H”,以便提示用户此时输入的是新密码,修改新密码时若想重新输入新密码只需按下“CLR”键即可。输入新密码后按确认键即修改成功,新密码写入单片机内部RAM中,以便以后用来确认密码的正确性。按下复位键,系统恢复初始状态,密码也恢复初始密码,本设计中初始密码是“096168”。 本次设计中硬件主要由我完成,软件主要由张振完成。 二、硬件设计 2.1概述 本系统主要由单片机最小系统、电源电路、输入键盘电路、输出显示电路、开锁电路等组成,系统框图如图1所示:

基于51单片机的步进电机控制-设计报告(说明书)及源程序

南京XX大学 指导老师:张X 课程设计基于51单片机的步进电机控制 机械电子工程学院 测控技术与仪器 XXXXX Xxx 2012年1年4日

步进电机控制系统 [摘要]本课程设计的内容是利用51单片机,达到控制步进电机的启 动、停止、正转、反转、两档速度和状态显示的目的,使步进电机控制更加灵活。步进电机驱动芯片采用ULN2803,ULN2803具有大电流、高电压,外电路简单等优点。利用四位数码管增设电机状态显示功能,各项数据更直观。实测结果表明,该控制系统达到了设计的要求。 关键字:步进电机、数码管、51单片机、ULN2803 一步进电机与驱动电路 1.1 什么是步进电机 步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时也可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 1.2 步进电机的种类 步进电机分永磁式(PM)、反应式(VR)、和混合式(HB)三种。永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。在欧美等发达国家80年代已被淘汰;混合式步进是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为 0.72度。这种步进电机的应用最为广泛。 1.3 步进电机的特点 1.精度高一般的步进电机的精度为步进角的3-5%,且不累积。可在宽广的频率范围内通过改变脉冲频率来实现调速,快速起停、正反转控制及制动等,这是步进电动机最突出的优点 2.过载性好其转速不受负载大小的影响,不像普通电机,当负载加大时就会出现速度下降的情况,所以步进电机使用在对速度和位置都有严格要求的场合; 3.控制方便步进电机是以“步”为单位旋转的,数字特征比较明显,这样就给计算

基于51单片机电子万年历设计

基于51单片机电子万年历设计 专业:机电设备维修与管理姓名:杜洪浦指导老师: 摘要电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。它可以对年、月、日、周日、时、分和秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒等信息,还具有时间校准等功能。该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3到5V电压供电。 万年历的设计过程在硬件与软件方面进行同步设计。硬件部分主要由AT89C52单片机,液晶显示电路,复位电路,时钟电路,稳压电路电路以及串口下载电路等组成。在单片机的选择上使用了AT89C52单片机,该单片机适合于许多较为复杂控制应用场合。显示器使用液晶LCD1602。软件方面主要包括日历程序、液晶驱动程序,显示程序等。程序采用汇编语言编写。所有程序编写完成后,在Keil C51软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。 关键词时钟电钟,DS1302,液晶LCD1602,单片机 目录 1设计要求与方案论证 (2) 1.1 设计要求 (2) 1.2 系统基本方案选择和论证 (2) 1.2.1单片机芯片的选择方案和论证 (2) 1.2.2 显示模块选择方案和论证 (3) 1.2.3时钟芯片的选择方案和论证: (3) 1.3 电路设计最终方案决定 (3) 2系统的硬件设计与实现 (3) 2.1 电路设计框图 (4) 2.2 系统硬件概述 (4) 2.3 主要单元电路的设计 (4) 2.3.1单片机主控制模块的设计 (4)

51单片机PWM控制直流电机正反转

//程序说明:使用内部时//PWM0=P3^7PWM1=P3^5 PWM2=P2^0 PWM3=P2^4 #include #define uchar unsigned char #define uint unsigned int sbit PWM0=P3^7; sbit PWM1=P3^5; sbit PWM2=P1^2; sbit PWM3=P1^3; uint i,j; void PWM_init() { CMOD=0x00;//PCA计数脉冲选择内部时钟fosc/12(0x02:fosc/2) CL=0x00;//PCA赋初值 CH=0x00; CR=1; //开始计数 } void zheng(uchar ZKB) { CCAP0L=255*(40-ZKB)/100;//占空比设置 CCAP0H=255*(40-ZKB)/100;//CL由ff-00溢出时,CCAP0H的值装入CCAP0L CCAPM0=0x42;// 8位PWM模式 CCAP1L=255*(40-0)/100;//占空比设置 CCAP1H=255*(40-0)/100;//CL由ff-00溢出时,CCAP0H的值装入CCAP0L CCAPM1=0x42;// 8位PWM模式 CR=1; //开始计数 } void fan(uchar ZKB) { CCAP0L=255*(40-0)/100;//占空比设置 CCAP0H=255*(40-0)/100;//CL由ff-00溢出时,CCAP0H的值装入CCAP0L CCAPM0=0x42;// 8位PWM模式 CCAP1L=255*(40-ZKB)/100;//占空比设置 CCAP1H=255*(40-ZKB)/100;//CL由ff-00溢出时,CCAP0H的值装入CCAP0L CCAPM1=0x42;// 8位PWM模式 CR=1; //开始计数 } void Delay(uint t) //延时函数

基于51单片机控制步进电机

单片机原理及系统课程设计 1 引言 步进电机又称为脉冲电动机或阶跃电动机,它是基于最基本的电磁感应作用,将电脉冲信号转变为角位移或线位移的开环控制元件。单片机控制的步进电机广泛地应用于工业自动控制、数控机床、组合机床、机器人、计算机外围设备、照相机,大型望远镜,卫星天线定位系统等等。 随着经济的发展,技术的进步和电子技术的发展,步进电机的应用领域更加广阔,同时也对步进电机的运行性能提出了更高的要求。 步进电机的原始模型起源于1830年至1860年,1870年前后开始以控制为目的的尝试,应用于氩弧灯的电极输送机构中,这被认为最早的步进电机。 1950年后期晶体管的发明也逐渐应用在步进电机上,对于数字化的控制变得更为容易。到20世纪60年代后期,在步进电机本体方面随着永磁材料的发展,各种实用性步进电机应运而生。步进电机往后经过不断改良,使得今日步进电机已广泛运用在需要高定位精度、高分解能、高响应性、信赖性等灵活控制性高的机械系统中。 在生产过程中要求自动化、省人力、效率高的机器中,我们很容易发现步进电机的踪迹,尤其以重视速度、位置控制、需要精确操作各项指令动作的灵活控制性场合步进电机用得最多。

2 设计方案与原理 4.1 设计方案 设计一个51单片机四相步进电机控制系统要求系统具有如下功能: (1)由I/O口产生的时序方波作为电机控制信号; (2)信号经过驱动芯片驱动电机的运转; (3)电机的状态通过键盘控制,包括正转,反转,加速,减速,停止和单步运行。 4.2 设计原理 步进电机实际上是一个数字\角度转换器,也是一个串行的数\模转换器。步进电机的基本控制包括启停控制、转向控制、速度控制、换向控制4个方面。从结构上看,步进电机分为三相、四相、五相等类型,本次设计的是四相电机。四相步进电机的工作方式有单四拍、双四拍和单双八拍三种。 在本次设计中,我们使用的是四相单八拍的工作方式。通过P1口给A,B,C,D四相依次输出高电平即可实现步进电机的旋转,通过控制两次输出的间隔,即可实现对步进电机的速度控制。 图 2.1 步进电机内部结构截图 根据步进电机的相关相序表我们可以正常的控制电机的步进运行。

最全最好的课程设计-51单片机电子日历时钟( 含源程序)

LED日历时钟课程设计 院系: 班级: 姓名: 学号: 指导教师: 2012 年06 月16 日

目录

摘要 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习、应用,以AT89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。 第一章前言 数字电子钟具有走时准确,一钟多用等特点,在生活中已经得到广泛的应用。虽然现在市场上已有现成的电子钟集成电路芯片,价格便宜、使用也方便,但是人们对电子产品的应用要求越来越高,数字钟不但可以显示当前的时间,而且可以显示期、农历、以及星期等,给人们的生活带来了方便。另外数字钟还具备秒表和闹钟的功能,且闹钟铃声可自选,使一款电子钟具备了多媒体的色彩。单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。 时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。 AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k B ytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。 AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

基于51单片机电子闹钟的设计(1)

单片机原理与接口技术课程设计题目:多功能电子闹钟 院系:电气与电子工程系 专业:电气工程及其自动化 班级:电气工程1503 姓名: 学号: 指导教师: 二零一七年十二月

多功能电子闹钟 摘要 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。而51单片机是各单片机中最为典型和最有代表性的一种。 本设计以AT89C51芯片为核心,辅以必要的外围电路,设计了一个结构简单,功能齐全的电子时钟,它由5V直流电源供电。在硬件方面,除了CPU外,使用八个七段LED数码管来进行显示,LED采用的是动态扫描显示,使用74LS245芯片进行驱动。通过LED能够较为准确地显示时、分、秒。四个简单的按键实现对时间的调整。软件方面采用C语言编程。整个电子钟系统能完成时间的显示、调时、校时和三组定时闹钟的功能。 选用单片机最小系统应用程序,添加比较程序、时间调整程序及蜂鸣程序,通过时间比较程序触发蜂鸣,实现闹钟功能,完成设计所需求的软件环境。介绍并使用Keil 单片机模拟调试软件,测试程序的可行性并用Proteus进行仿真。 关键词:单片机定时器中断闹钟 LED

目录 第1章方案的选择和论证 (1) 1.1单片机型号的选择 (1) 1.2按键的选择 (1) 1.3显示器的选择 (1) 1.4计时部分的选择 (1) 1.5发音部分的设计 (2) 1.6显示器驱动电路 (2) 1.7电源的选择 (2) 第2章数字电子钟的设计原理和方法 (3) 2.1设计原理 (3) 2.2硬件电路的设计 (3) 2.2.1 AT89C51单片机简介 (3) 2.2.2 键盘电路的设计 (3) 2.2.3 段码驱动电路 (4) 2.2.4 蜂鸣器驱动电路 (4) 2.3软件部分的设计 (5) 2.3.1 主程序部分的设计 (5) 2.3.2 中断定时器的设置 (5) 2.3.3 闹钟子函数 (6) 2.3.4 计时函数 (6) 2.3.5 键盘扫描函数 (8) 2.3.6 时间和闹钟的设置 (8) 第3章实验结果 (10) 总结 (11) 致谢 (12) 参考文献 (13) 附录 (14)

基于AT89C51单片机的步进电动机控制系统设计

重庆科技大学 本科毕业论文 基于AT89C51单片机的步进电动机控制系统 设计 考生姓名: XXXXX X 准考证号: XXXXXXXXXXXX 专业层次:本科院(系):XXXXXXXXXXXXXXXXXXX 指导教师: XXXXXX 职称:讲师 重庆科技大学 二O一二年月日

基于AT89C51单片机的步进电动机控制系统 设计 考生姓名: XXXXXX 准考证号: XXXXXXXXXXXX 专业层次:本科 指导教师: XXXXXXX 院(系):机械与动力工程学院 重庆科技大学 二O一二年九月二十日

摘要 随着微电子和计算机技术的发展,步进电机的需求量与日俱增,它广泛用于打印机、电动玩具等消费类产品以及数控机床、工业机器人、医疗器械等机电产品中,其在各个国民经济领域都有应用。研究步进电机的控制系统,对提高控制精度和响应速度、节约能源等都具有重要意义。 步进电机是一种能将电脉冲信号转换成角位移或线位移的机电元件,步进电机控制系统主要由步进控制器,功率放大器及步进电机等组成。采用单片机控制,用软件代替上述步进控制器,使得线路简单,成本低,可靠性大大增加。软件编程可灵活产生不同类型步进电机励磁序列来控制各种步进电机的运行方式。 本设计是采用AT89C51单片机对步进电机的控制,通过I/O口输出的时序方波作为步进电机的控制信号,信号经过芯片ULN2003驱动步进电机。 实践证明,基于单片机控制的步进电机比传统的步进控制器具有更好的性能,更加简单、方便、可靠。本设计的主要研究对象就是开环伺服系统中最常用的执行器件——步进电机。 关键词:步进电机,单片机,正反转控制,键盘控制,LCD液晶显示

单片机编程全集(含源代码)

前言 (2) 基础知识:单片机编程基础 (2) 第一节:单数码管按键显示 (4) 第二节:双数码管可调秒表 (6) 第三节:十字路口交通灯 (7) 第四节:数码管驱动 (9) 第五节:键盘驱动 (10) 第六节:低频频率计 (15) 第七节:电子表 (18) 第八节:串行口应用 (19)

前言 本文是本人上课的一个补充,完全自写,难免有错,请读者给予指正,可发邮件到ZYZ@https://www.sodocs.net/doc/0f2257963.html,,或郑郁正@中国;以便相互学习。结合课堂的内容,课堂上的部分口述内容,没有写下来;有些具体内容与课堂不相同,但方法是相通的。https://www.sodocs.net/doc/0f2257963.html, 针对当前的学生情况,尽可能考虑到学生水平的两端,希望通过本文都学会单片机应用。如果有不懂的内容,不管是不是本课的内容,都可以提出来,这些知识往往代表一大部分同学的情况,但本人通常认为大家对这些知识已精通,而在本文中没有给予描述,由此影响大家的学习。对于这些提出问题的读者,本人在此深表谢意。 想深入详细学习单片机的同学,可以参考其它有关单片机的书籍和资料,尤其是外文资料。如果有什么问题,我们可以相互探讨和研究,共同学习。 本文根据教学的情况,随时进行修改和完善,所以欢迎同学随时注意本文档在课件中的更新情况。 基础知识:单片机编程基础 单片机的外部结构: 1、DIP40双列直插; 2、P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平) 3、电源VCC(PIN40)和地线GND(PIN20); 4、高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位) 5、内置振荡电路,外部只要接晶体至X1(PIN18)和X0(PIN19);(频率为主频的12倍) 6、程序配置EA(PIN31)接高电平VCC;(运行单片机内部ROM中的程序) 7、P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1 单片机内部I/O部件:(所为学习单片机,实际上就是编程控制以下I/O部件,完成指定任务) 1、四个8位通用I/O端口,对应引脚P0、P1、P2和P3; 2、两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1) 3、一个串行通信接口;(SCON,SBUF) 4、一个中断控制器;(IE,IP) https://www.sodocs.net/doc/0f2257963.html, 针对AT89C52单片机,头文件AT89x52.h给出了SFR特殊功能寄存器所有端口的定义。教科书的160页给出了针对MCS51系列单片机的C语言扩展变量类型。 C语言编程基础: 1、十六进制表示字节0x5a:二进制为01011010B;0x6E为01101110。 2、如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位,而丢掉高8位。 3、++var表示对变量var先增一;var—表示对变量后减一。 4、x |= 0x0f;表示为 x = x | 0x0f; 5、TMOD = ( TMOD & 0xf0 ) | 0x05;表示给变量TMOD的低四位赋值0x5,而不改变TMOD的高四位。 6、While( 1 ); 表示无限执行该语句,即死循环。语句后的分号表示空循环体,也就是{;} 在某引脚输出高电平的编程方法:(比如P1.3(PIN4)引脚)

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)附录 实验上机调试内容
注:此任务书由指导教师在课程设计前填写,发给学生做为本门课程设计 的依据。

基于51单片机的电子表设计

1 绪论 电子表是20世纪50年代才开始出现的新型计时器。最早的一款电子表被称做“摆轮游丝电子表”,它诞生于1955年。这种手表用电磁摆轮代替发条驱动,以摆轮游丝作为振荡器,微型电池为能源,通过电子线路驱动摆轮工作。它的走时部分与机械手表完全相同,被称为第一代电子手表。1960年,美国布洛瓦公司最早开始出售“音叉电子手表”。这种手表以金属音叉作为振荡器,用电子线路输出脉冲电流,使机械音叉振动。它比摆轮式电子手表结构简单,走时更精确,被称为第二代电子手表。1969年,日本精工舍公司推出了世界上最早的石英电子表。石英电子表的出现,立刻成为了钟表界主流产品,它走时精确,结构简单,轻松地将一、二代电子表,甚至机械表淘汰出局。石英表又称“水晶振动式电子表”,因为它是利用水晶片的“发振现象”来计时的。当水晶受到外部的加力电压,就会产生变形和伸缩反应;如果压缩水晶,便会使水晶两端产生电力。这样的性质在很多结晶体上也可见到,称为“压电效果”。石英表就是利用周期性持续“发振”的水晶,为我们带来准确的时间。 单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛应用。从上世纪80年代,由当时的4位、8为单片机,发展到现在的32位300M的高速单片机。 1.1 单片机的介绍 单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提

基于51系列单片机控制步进电机调速实验 (自动保存的)

基于51系列单片机控制步进电机调速实验 实验指导书 仇国庆编写 重庆邮电大学自动化学院 自动化专业实验中心 2009年2月

基于51系列单片机控制步进电机调速实验 实验目的及要求: 1、熟悉步进电机的工作原理 2、熟悉51系列单片机的工作原理及调试方法 3、设计基于51系列单片机控制的步进电机调速原理图(要求实现电机的速度反馈测量,测量方式:数字测量) 4、实现51系列单片机对步进电机的速度控制(步进电机由实验中心提供,具体型号42BYG )由按钮控制步进电机的启动与停止;实现加速、匀速、和减速控制。速度设定由键盘设定,步进电机的反馈速度由LED 数码管显示。 实验原理: 步进电机控制原理 一般电动机都是连续旋转,而步进电动却是一步一步转动的,故叫步进电动机。步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。步进电机可分为反应式步进电机(简称VR)、永磁式步进电机(简称PM)和混合式步进电机(简称HB)。因此步进电动机是一种把脉冲变为角度位移(或直线位移)的执行元件。步进电动机的转子为多极分布,定子上嵌有多相星形连接的控制绕组,由专门电源输入电脉冲信号,每输入一个脉冲信号,步进电动机的转子就前进一步。由于输入的是脉冲信号,输出的角位移是断续的,所 以又称为脉冲电动机。随着数字控制系统的发展,步进电动机的应用将 逐渐扩大。 步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来 进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由 脉冲信号频率决定。步进电机的驱动电路根据控制信号工作,控制信号 可以由单片机产生。 电机转子均匀分布着很多小齿,定子齿有三个励磁绕阻,其几 何轴线依次分别与转子齿轴线错开。0、1/3て、2/3て,(相邻 两转子齿轴线间的距离为齿距以て表示),即A与齿1相对齐, B与齿2向右错开1/3て,C与齿3向右错开2/3て,A'与齿5相对齐,(A'就是A,齿5就是齿1)下面是定转子的展开图:(图2所示)

51单片机控制LED灯程序设计

51单片机:LED灯亮灯灭程序设计 1.功能说明:控制单片机P1端口输出,使P1.0位所接的LED点亮,其他7只灯熄灭。 程序: 01: MOV A , #11111110B ; 存入欲显示灯的位置数据 02: MOV P1,A ; 点亮第一只灯 03: JMP $ ; 保持当前的输出状态 04: END ; 程序结束 2.功能说明:单片机P1端口接8只LED,点亮第1、3、4、6、7、8只灯。 程序:

01:START: MOV A , #00010010B ; 存入欲显示灯的位置数据 02:MOV P1,A ; 点亮灯 03:JMP START ; 重新设定显示值 04:END ; 程序结束 3.功能说明:单片机P1端口接8只LED,每次点亮一只,向左移动点亮,重复循环。 程序: 01:START: MOV R0, #8 ;设左移8次 02:MOV A, #11111110B ;存入开始点亮灯位置

03:LOOP: MOV P1, A ;传送到P1并输出 04:RL A ;左移一位 05:DJNZ R0, LOOP ;判断移动次数 06:JMP START ;重新设定显示值 07:END ;程序结束 4.功能说明:单片机P1端口接8只LED,每次点亮一只,向右移动点亮,重复循环。 程序: 01:START: MOV R0, #8 ;设右移8次

02:MOV A, #01111111B ;存入开始点亮灯位置03: LOOP: MOV P1, A ;传送到P1并输出 04: ACALL DELAY ;调延时子程序05: RR A ;右移一位 06: DJNZ R0, LOOP ;判断移动次数07: JMP START ;重新设定显示值08: DELAY: MOV R5,#50 ; 09:DLY1: MOV R6,#100 ; 10: DLY2: MOV R7,#100 ;

#基于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 按键控制模块 电子琴设有8个按键,其中7个作为音符输入,另外一个作为模式转换按键,实现用户存放的自动播放歌曲。7个按键分别代表7个音符,包括中音段的全部音符,通过软硬件设计,模式转换按键触发外部中断,中断使程序跳转,实现模式转换,启动电子琴。然后通过查询电子琴所按下的按键,读取电子琴输入状态,跳转到对应的程序入口,实

基于51单片机FAT32文件系统程序

基于51单片机FAT32文件系统程序 #ifndef __ZNFAT_H__ #define __ZNFAT_H__ #include "mytype.h" //类型重定义 /*******************************************************/ //znFAT的裁减宏--------------------------------------------------------- //#define ZNFAT_ENTER_DIR //有此宏,函数 znFAT_Enter_Dir() 参与编译 #define ZNFAT_OPEN_FILE //有此宏,函数 znFAT_Open_File() 参与编译 //#define ZNFAT_SEEK_FILE //有此宏,函数 znFAT_Seek_File() 参与编译 //#define ZNFAT_READ_FILE //有此宏,函数 znFAT_Read_File() 参与编译 //#define ZNFAT_READ_FILEX //有此宏,函数 znFAT_Read_FileX() 参与编译 //#define ZNFAT_ADD_DAT //有此宏,函数 znFAT_Add_Dat() 参与编译 //#define ZNFAT_CREATE_DIR //有此宏,函数 znFAT_Create_Dir() 参与编译 //#define ZNFAT_CREATE_FILE //有此宏,函数 znFAT_Create_File() 参与编译 //#define ZNFAT_DEL_FILE //有此宏,函数 znFAT_Del_File() 参与编译 //#define ZNFAT_XCOPY_FILE //有此宏,函数 znFAT_XCopy_File() 参与编译 //#define ZNFAT_RENAME_FILE //有此宏,函数 znFAT_Rename_File() 参与编译 //#define ZNFAT_GET_TOTAL_SIZE //有此宏,函数 znFAT_Get_Total_Size() 参与编译 //#define znFAT_GET_REMAIN_CAP //有此宏,函数 znFAT_Get_Remain_Cap() 参与编译 #include "cj.h" #include "cj.h" //---------------------------------------------------------------------- #define SOC(c) (((c-pArg->FirstDirClust)*(pArg->SectorsPerClust))+pArg->FirstDirSector) // 用于计算簇的开始扇区#define CONST const //设备表 #define SDCARD 0 //SD卡 #define UDISK 1 //U盘 #define CFCARD 2 //CF卡 #define OTHER 3 //其它 //这里的存储设备表,可以灵活扩充,以实现对更多存储设备的支持 //------------------------------------------- #define MAKE_FILE_TIME(h,m,s) ((((unsigned int)h)<<11)+(((unsigned int)m)<<5)+(((unsigned int)s)>>1)) /* 生成指定时分秒的文件时间数据 */ #define MAKE_FILE_DATE(y,m,d) (((((unsigned int)y)+20)<<9)+(((unsigned int)m)<<5)+((unsigned int)d)) /* 生成指定年月日的文件日期数据 */ //DPT:分区记录结构如下 struct PartRecord { UINT8 Active; //0x80表示此分区有效 UINT8 StartHead; //分区的开始磁头 UINT8 StartCylSect[2];//开始柱面与扇区 UINT8 PartType; //分区类型 UINT8 EndHead; //分区的结束头 UINT8 EndCylSect[2]; //结束柱面与扇区 UINT8 StartLBA[4]; //分区的第一个扇区 UINT8 Size[4]; //分区的大小

51单片机电子密码锁

目录 第1节引言 (1) 1.1 电子密码锁述 (1) 1.2 本设计主要任务 (1) 1.3 系统主要功能 (2) 第2节系统硬件设计 (3) 2.1 系统的硬件构成及功能 (3) 2.2 AT89C2051单片机及其引脚说明 (3) 第3节系统软件设计 (5) 3.1 系统主程序设计(流程图) (5) 3.2 软件设计思想 (5) 3.3 储单元的分配 (5) 3.4 系统源程序 (6) 3.5 系统应用说明 (9) 3.6 小结 (9) 结束语 (10) 参考文献 (11) 附录 (12)

电子密码锁 第1节引言 1.1 电子密码锁概述 随着社会物质财富的日益增长和人们生活水平的提高,安全成为现代居民最关心的问题之一。而锁自古以来就是把守门的铁将军,人们对它要求甚高,即要求可靠地防盗,又要使用方便,这也是制锁者长期以来研制的主题。传统的门锁既要备有大量的钥匙,又要担心钥匙丢失后的麻烦。另外,如:宾馆、办公大楼、仓库、保险柜等,由于装修施工等人住时也要把原有的锁胆更换,况且钥匙随身携带也诸多便。随着单片机的问世,出现了带微处理器的密码锁,它除具有电子密码锁的功能外,还引入了智能化、科技化等功能。从而使密码锁具有很高的安全性、可靠性。目前西方发达国家已经大量应用智能门禁系统,可以通过多种的更加安全更加方便可靠的方法来实现大门的管理。但电子密码锁在我国的应用还不广泛,成本还很高,希望通过不断地努力使电子密码锁能够在我国及居民日常生活中得到广泛应用,这也是一个国家生活水平的体现。 很多行业的许多地方都要用到密码锁,随着人们生活水平的提高,如何实现家庭或公司的防盗这一问题也变的尤其突出,传统的机械锁由于其构造简单,被撬的事件屡见不鲜,再者,普通密码锁的密码容易被多次试探而破译,所以,考虑到单片机的优越性,一种基于单片机的电子密码锁应运而生。电子密码锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲睐。 设计本课题时构思的方案:采用以AT89C2051为核心的单片机控制方案;能防止多次试探而不被破译,从而有效地克服了现实生活中存在的许多缺点。 1.2 本设计主要任务 (1)共8位密码,每位的取值范围为1~8。 (2)用户可以自行设定和修改密码。 (3)按每个密码键时都有声、光提示。 (4)若键入的8位开锁密码不完全正确,则报警5秒钟,以提醒他人注意。

基于51单片机的电子表设计

目录 目录 (1) 第1章概述 (1) 1.1实验原理 (1) 第2章设计思路及框图 (1) 2.1设计思路 (1) 2.2设计框图 (2) 第3章系统的硬件设计 (2) 3.1主控制部件 (2) 3.2显示模块 (3) 3.3晶振模块 (3) 3.4按键模块 (3) 3.5驱动模块 (4) 第4章电路设计原理图 (4) 4.1电路原理图 (4) 第5章程序设计 (5) 5.1程序流程图 (5) 5.2源程序 (6) 第6章系统的验证及调试 (26) 6.1日期设置显示测试 (26) 6.2秒表测试 (26) 6.3倒计时测试 (27) 第7章总结 (28) 第8章参考文献 (28)

第1章概述 1.1实验原理 单片机集成度高、功能强、可靠性高、体积小、功耗地、使用方便、价格低廉等一系列优点,目前已经渗入到人们工作和生活的方方面面,几乎“无处不在,无所不为”。单片机的应用领域已从面向工业控制、通讯、交通、智能仪表等迅速发展到家用消费产品、办公自动化、汽车电子、PC机外围以及网络通讯等广大领域。 单片机有两种基本结构形式:一种是在通用微型计算机中广泛采用的,将程序存储器和数据存储器合用一个存储器空间的结构,称为普林斯顿结构。另一种是将程序存储器和数据存储器截然分开,分别寻址的结构,一般需要较大的程序存储器,目前的单片机以采用程序存储器和数据存储器截然分开的结构为多。本课题讨论的方波发生器的核心是目前应用极为广泛的 51系列单片机。 利用AT89C51单片机定时器完成计时功能,定时器0计时中断程序每隔0.01s中断一次并当作一个计数,设定定时1秒的中断计数初值为0,每中断一次中断计数初值加1,当加到100时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。 为了将时间在6位LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要译码器,数据锁存器等较多硬件,可采用动态显示法实现LED显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。 第2章设计思路及框图 2.1设计思路 针对要实现的功能,采用AT89S51单片机进行设计,AT89S51 单片机是一款低功耗,高性能CMOS8位单片机,第一,熟悉AT89S51单片机,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。这是前期准备工作。第二,设计硬件部分:依据想要的功能分块设计设计,比如输入需要开关电路,输出需要显示驱动电路和数码管电路等。第三,画图部分:设计好电路后进行画图。第四,软件部分:先学习理解汇编语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。第五部分是软件仿真部分:软硬件设计好后将软件载入芯片中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成功。第六部分是硬件实现部分:连接电路并导入程序检查电路,实现想要的功能。

相关主题