搜档网
当前位置:搜档网 › 基于51单片机的信号发生器

基于51单片机的信号发生器

基于51单片机的信号发生器
基于51单片机的信号发生器

单片机原理及接口技术

课程设计报告

设计题目:基于51单片机的波形发生器

学号:

姓名:

指导教师:

信息与电气工程学院

二零一三年七月

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

信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。各种波形曲线均可以用三角函数方程式来表示。能够产生多种波形,如方波、锯齿波、三角波、正弦波的电路被称为函数信号发生器。在通信、广播、电视系统,工业、农业、生物医学领域内,函数信号发生器在实验室和设备检测中具有十分广泛的用途。

信号发生器是一种经常使用的设备,若按照传统的设计方法,由纯粹的物理器件构成,存在许多弊端,如:体积较大、重量较沉、移动不方便、信号失真较大、波形形状调节过于死板,无法满足用户对精度、便携性、稳定性等要求。研究设计出一种具有频率稳定、准确,波形质量好,便携性好等特点的波形发生器来满足工业领域对信号源的要求,具有较好的市场前景。

本次设计的低频信号发生器,以AT89C51 单片机为核心,通过拨码开关输入控制类型和频率的的选择,采用8位D/A 转换芯片DAC0832输出相应的波形,同时以数码管实时显示信号相关信息。我们采用C 语言进行编程,可实现方波,三角波,锯齿波和正弦波四种波形的产生,且波形的频率可调。

经测试该设计方案不仅在理论和实践上都能满足设计要求,而且具有很强的可行性,线路优化,结构紧凑,性能优越。

1. 设计任务

结合实际情况,基于AT89C51单片机设计一个波形发生器系统。该系统应满足的功能要求为:

(1)四种波形,方波、正弦波、锯齿波、三角波;

(2)通过按键实现四种波形的切换;

(3)通过按键进行频率选择;

主要硬件设备:AT89C51单片机、DAC0832数模转换芯片、UA741运算放大器、示波器、PC机一台

2. 整体方案设计

课设需要各个波形的基本输出,正弦波、锯齿波、方波、三角波,这些波形的实现的具体步骤:

(1)正弦波:使用查表法。通过手动的方法计算出输出各点的电压值,然后在编写程序时以数组的方式给出。当需要时,只要按照顺序进行输出即可。这种方法比在软件中计算速度快且曲线的形状修改灵活。在本设计中将一个周期(360度)分为256个点,则每两个点之间的间隔为1.4度,然后计算出每个点电压对应的数字量,形成数组。只要反复输出这组数据到DAC0832,就可以在系统输出端得到想要的正弦波。

(2)锯齿波:使用查表法。将三角波的一个周期(360度)分为128个点,相邻点等差,生成数组。反复输出前128个数据到DAC0832,就可以在系统输出端得到想要的锯齿波。

(3)方波:使用查表法。将方波的一个周期(360度)分为256个点,相邻点等差,生成数组,反复输出该数组数据到DAC0832,就可以在系统输出端得到想要的方波。

(4)三角波:使用查表法。将三角波的一个周期(360度)分为256个点,相邻点等差,生成数组。反复输出该数组数据到DAC0832,就可以在系统输出端得到想要的三角波。

该波形发生器以AT89C51单片机作为整个系统的控制核心,应用其强大的接口功能,构成整个波形发生控制的硬件系统。通过C 语言对单片机编程即可产生相应的正弦波,方波,三角波,锯齿波等波形信号。将所写程序装入单片机的程序存储器中,在程序运行中,当接收到来自外界的命令,需要输出某种波形时调用相应的中断服务子程序和波形发生程序,经电路的数/模转换器和运算放大器处理后,从信号发生器的输出端口输出。并且可以通过数码管显示模块实现可视化,通过拨码开关进行各种功能的转换和信号频率的控制。该波形发生器系统的原理图如图2-1所示。

图2-1 基于单片机的波形发生器系统原理图

本系统硬件主要D/A转换电路、键盘接口电路、显示电路等几部分组成。各模块的主要功能如下:

(1) D/A转换电路的功能是把数字量变换成模拟量的线性电路。单片机产生的数字信号通过DAC0832 转化成模拟信号,输出相应的电流值。

(2)显示电路的功能通过UA741集成运算放大器取出DAC0832输出的模拟量的电压值,最后利用示波器输出获得的信号的波形。

(3)按键电路的功能是通过拨码开关的不同状态实现四中信号波形的切换及信号频率的改变。

系统的整体设计方案设计图如图2-2所示。

系统的整体电路连接图如图2-3所示。

3系统硬件电路设计

3.1 时钟电路

单片机的时钟信号通常用两种电路形式得到:内部振荡和外部振荡方式。在引脚XTAL1 和XTAL2 外接晶体振荡器,构成了内部振荡方式。由于单片机内部有一个高增益的反相放大器,当外接晶振后,就构成了自激振荡,并产生振动

时钟脉冲。晶振通常选用6MHZ、12MHZ、24MHZ。

本设计中时钟电路,我们选择了12MHZ的晶振分别接引脚XTAL1 和XTAL2,电容C1,C2 均选择为10pF,对振荡器的频率有稳定作用,当频率较大时,正弦波、方波、三角波及锯齿波中每一点的延时时间为几微妙,故延时时间还要加上指令时间才能获得较大的频率波形。

单片机时钟电路如图3-1所示

图2-2 系统的整体方案设计图

图2-3 系统的整体电路连接图

图3-1 单片机时钟电路

3.2 复位电路

复位引脚RST 通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。复位电路通常采用上电自动复位和按钮复位两种方式。

本设计选择了按键复位如图3-2, 在系统运行时,按一下开关,就在RST 断出现一段高电平,使图3-2时钟电路图器件复位。此时ALE、PSEN、P0、P1、P2、P4 输出高电平,RST 上输入返回低电平以后,变退出复位状态开始工作。

图3-2单片机复位电路

本设计所用D/A转换电路采用通用的DAC0832模数转换芯片,它是一种8分辨率的D/A转换集成芯片。D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。其主要特性有:

(1)电流稳定时间1us;

(2)可单缓冲、双缓冲或直接数字输入;

(3)单一电源供电(+5V~+15V);

(4)低功耗,200mW。

DAC0832结构:

(1)D0~D7:8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错);

(2)ILE:数据锁存允许控制信号输入线,高电平有效;

(3)CS:片选信号输入线(选通数据锁存器),低电平有效;

(4)WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存;

(5)XFER:数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效;

(6)WR2:DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。由WR1、XFER的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。

(7)IOUT1:电流输出端1,其值随DAC寄存器的内容线性变化;

(8)IOUT2:电流输出端2,其值与IOUT1值之和为一常数;

(9)Rfb:反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度;

(10)Vcc:电源输入端,Vcc的范围为+5V~+15V;

(11)VREF:基准电压输入线,VREF的范围为-10V~+10V;

(12)AGND:模拟信号地

(13)DGND:数字信号地

DAC0832的工作原理为:DAC0832是常用的8位电流输出型并行低速数模转换芯片,当需要转换为电压输出时,可外接运算放大器。集成电路内有两级输入寄存器使得芯片具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。

使用DAC0832应该注意DAC0832通常需外接运算放大器,进行电流/电压转换,才能得到模拟输出电压。

其与单片机的接口电路如图3-3所示。

3.5 键盘接口电路

该模块采用了一般的键盘接口,键盘输出信号。具体为:

P3.0、P3.1波形选择,其中当P3.0=0,P3.1=0 输出正弦波,当P3.0=0,P3.1=1 输出锯齿波,当P3.0=1,P3.1=0输出方波;当P3.0=1,P3.1=1 输出三角波。P3.2、P3.3、P3.4进行频率调节,P3.2=0,P3.3=0,P3.4=0时,信号频率为10Hz,P3.2=1,P3.3=0,P3.4=0时,信号频率为20Hz,P3.2=0,P3.3=1,P3.4=0时,信号频率为30Hz,P3.2=1,P3.3=1,P3.4=0时,信号频率为40Hz,P3.2=0,P3.3=0,P3.4=1时,信号频率为50Hz,P3.2=1,P3.3=0,P3.4=1时,信号频率为60Hz,P3.2=0,P3.3=1,P3.4=1时,信号频率为70Hz,P3.2=1,P3.3=1,P3.4=1时,信号频率为80Hz。

键盘与单片机的连接如图3-4所示。

图3-3 DAC0832与单片机的接口电路

图3-4键盘和单片机的连接电路图

3.6 显示电路

(1)运算放大电路

运算放大器型号为UA741,它是一种高增益运算放大器,用于军事、工业和商

业应用。这类单片硅整集成电路器件提供输出短路保护和闭锁自由运作。

运算放大器与DAC0832接口电路如图3-5所示。

图3-5 运算放大器与DAC0832接口电路图

(2)示波器显示

利用示波器输出获得的信号的波形如图3-6:

图3-6 四种信号波形不同频率对比仿真结果

4. 系统程序设计

4.1 主程序流程图

系统运行工作工程如下,首先进入中断子程序,在中断子程序中,设置定时器T0的工作在方式一下,即16位定时器/计数器,并把初值装入定时器,启动定时器,开启定时器T0溢出中断允许位,和中断允许总控制位。然后程序进入死循环,在循环程序中不断进行按键扫描,当T0溢出时,程序进入中断服务子程序,在中断服务子程序中,对定时器T0转入相应的初值,然后根据按键状态,利用信号波形数组输出不同信号波形。

系统主程序流程图如图4-1所示。

图4-1主程序流程图

4.2按键控制子程序流程图

在主程序中不断调用按键扫描子程序,在按键扫描子程序中不断扫描按键的状态,当按键状态改变时,为保证按键状态的可靠性,调用延时子程序程序延时3毫秒,然后再次检查按键状态,当两次按键状态一致时,程序进行相应的操作,若是按键1,2的状态发生改变则对变量boxing进行相应的赋值,从而输出不同波形,若是按键3,4,5的状态发生改变,则定时器T0的初值FRE将被赋不同数值,则每个波形采样点输出时间不同,可以达到改变波形频率的效果。

按键控制子程序流程图如图4-2所示。

5.系统调试

在调试过程中,我们小组遵循“发现一个问题,解决一个问题”的思路,将问题一个一个解决,最终完成整个程序的调试。在调试过程中,各组员集思广益,通力合作,遇到问题各抒己见,尝试每种问题可能,再逐项排除,最后发现问题所在。

5.1 Proteus软件仿真调试

在软件仿真过程中,首先遇到的问题是要保证电路图的完整性和绝对正确性,我们根据单片机实验指导书画出了系统电路图,包括单片机的时钟电路,复位电路,按键电路和数模转换电路。在程序理论编译无错后,烧写到仿真电路中。在软件仿真调试过程中会遇到很多问题,比如说程序不运行,按键读取无效,输出频率与设定不符等等问题。因为程序编译无错只是代表程序没有逻辑错误,但不代表程序会按照自己理想的方式运行,而上述问题的解决就需要我们小组全体成员一起寻找可能出现问题的所有地方,并一个个解决。

5.2 硬件调试

在软件仿真完成之后,就代表程序是没有大的运行方面的问题,此时就可以进行硬件调试。按照原定I/O口的分配将电路连接完整,并将示波器与DAC0832的输出口相连。

由于在软件上采用的是独立按键,而实验箱上只有拨码开关,所以又必须推翻原来的程序和软件仿真去适应硬件。改变按键读取方式后,成功输出想要的波形,并可以改变频率。硬件调速时我们还出现了示波器不能输出期望波形,经过按照系统硬件连接图对硬件电路逐一排查,最后发现由于单片机和DAC0832的连线高低位对应关系接错,改正连线后,就得到了期望的信号波形。

图4-2按键控制子程序流程

6. 程序清单

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

单片机课设

P1口连接DAC0832

P0口读取按键

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

#include

#include

#include "timer.h"

#define uint unsigned int

#define uchar unsigned char

//8个独立按键 1~4是4种波形选择 5~7 变频按键

sbit key1 = P3^0;

sbit key2 = P3^1;

sbit key3 = P3^2;

sbit key4 = P3^3;

sbit key5 = P3^4;

sbit key6 = P3^5;

sbit led1 = P2^7;

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

小延时程序

延时x毫秒

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

void delayms(uint x)

{

uint i,j;

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

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

}

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

按键读取

**************************************************/ void keyscan()

{

if(key1==0&&key2==0)

{

delayms(3);

if(key1==0&&key2==0)

{

boxing = 1;

n=0;

}

}

if(key1==0&&key2==1)

{

delayms(3);

if(key1==0&&key2==1)

{

boxing = 2;

n=0;

}

}

if(key1==1&&key2==0)

{

delayms(3);

if(key1==1&&key2==0)

{

boxing = 3;

n=0;

}

}

if(key1==1&&key2==1)

{

delayms(3);

if(key1==1&&key2==1)

{

boxing = 4;

n=0;

}

}

if(key3==0&&key4==0&&key5==0)

{

delayms(3);

if(key3==0&&key4==0&&key5==0) {

FRE = 65146;

pin = 1;

}

}

if(key3==0&&key4==0&&key5==1)

{

delayms(3);

if(key3==0&&key4==0&&key5==1) {

FRE = 65341;

pin = 10;

}

}

if(key3==0&&key4==1&&key5==0)

{

delayms(3);

if(key3==0&&key4==1&&key5==0) {

FRE = 65406;

pin = 20;

}

}

if(key3==0&&key4==1&&key5==1)

{

delayms(3);

if(key3==0&&key4==1&&key5==1) {

FRE = 65439;

pin = 30;

}

}

if(key3==1&&key4==0&&key5==0)

{

delayms(3);

if(key3==1&&key4==0&&key5==0) {

FRE = 65458;

pin = 40;

}

}

if(key3==1&&key4==0&&key5==1)

delayms(3);

if(key3==1&&key4==0&&key5==1)

{

FRE = 65471;

pin = 50;

}

}

if(key3==1&&key4==1&&key5==0)

{

delayms(3);

if(key3==1&&key4==1&&key5==0)

{

FRE = 65481;

pin = 60;

}

}

if(key3==1&&key4==1&&key5==1)

{

delayms(3);

if(key3==1&&key4==1&&key5==1)

{

FRE = 65488;

pin = 70;

}

}

}

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

主程序

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

{

n=0;

Timer0_Init();

while(1)

{

keyscan();

}

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

中断程序

定时器中断初始化程序和中断执行程序

四种波形的数组

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

sbit led = P2^0;

unsigned char i;

unsigned int boxing = 1,pin=10;

unsigned int n,s,p;

Unsignedcharcodesintab[256]={0x80,0x83,0x86,0x89,0x8d,0x90 ,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7 ,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8 ,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1 ,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe ,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe ,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1 ,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8 ,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7 ,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,0x90 ,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69 ,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,0x4e,0x4c,0x48,0x45,0x43 ,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22 ,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b ,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02 ,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11 ,0x13,0x15,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b ,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e ,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x72,0x76 ,0x79,0x7c,0x80};

Ucharcodejctab[256]={ 0x00,0x02,0x04,0x06,0x08,0x0a,0x0c,0x0e, 0x10,0x12,0x14,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x24,0x26,0x28, 0x2a,0x2c,0x2e,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x3e,0x40,0x42, 0x44,0x46,0x48,0x4a,0x4c,0x4e,0x50,0x52,0x54,0x56,0x58,0x5a,0x5c, 0x5e,0x60,0x62,0x64,0x66,0x68,0x6a,0x6c,0x6e,0x70,0x72,0x74,0x76,

0x78,0x7a,0x7c,0x7e,0x80,0x82,0x84,0x86,0x88,0x8a,0x8c,0x8e,0x90, 0x92,0x94,0x96,0x98,0x9a,0x9c,0x9e,0xa0,0xa2,0xa4,0xa6,0xa8,0xaa, 0xac,0xae,0xb0,0xb2,0xb4,0xb6,0xb8,0xba,0xbc,0xbe,0xc0,0xc2,0xc4, 0xc6,0xc8,0xca,0xcc,0xce,0xd0,0xd2,0xd4,0xd6,0xd8,0xda,0xdc,0xde, 0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xee,0xf0,0xf2,0xf4,0xf6,0xf8, 0xfa,0xfc,0xfe,0x00,0x02,0x04,0x06,0x08,0x0a,0x0c,0x0e,0x10,0x12, 0x14,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x24,0x26,0x28,0x2a,0x2c, 0x2e,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x3e,0x40,0x42,0x44,0x46, 0x48,0x4a,0x4c,0x4e,0x50,0x52,0x54,0x56,0x58,0x5a,0x5c,0x5e,0x60, 0x62,0x64,0x66,0x68,0x6a,0x6c,0x6e,0x70,0x72,0x74,0x76,0x78,0x7a, 0x7c,0x7e,0x80,0x82,0x84,0x86,0x88,0x8a,0x8c,0x8e,0x90,0x92,0x94, 0x96,0x98,0x9a,0x9c,0x9e,0xa0,0xa2,0xa4,0xa6,0xa8,0xaa,0xac,0xae, 0xb0,0xb2,0xb4,0xb6,0xb8,0xba,0xbc,0xbe,0xc0,0xc2,0xc4,0xc6,0xc8, 0xca,0xcc,0xce,0xd0,0xd2,0xd4,0xd6,0xd8,0xda,0xdc,0xde,0xe0,0xe2, 0xe4,0xe6,0xe8,0xea,0xec,0xee,0xf0,0xf2,0xf4,0xf6,0xf8,0xfa,0xfc, 0xfe};

ucharcodesjtab[256]={0x00,0x02,0x04,0x06,0x08,0x0a,0x0c ,0x0e,0x10,0x12,0x14,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x24,0x26 ,0x28,0x2a,0x2c,0x2e,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x3e,0x40 ,0x42,0x44,0x46,0x48,0x4a,0x4c,0x4e,0x50,0x52,0x54,0x56,0x58,0x5a ,0x5c,0x5e,0x60,0x62,0x64,0x66,0x68,0x6a,0x6c,0x6e,0x70,0x72,0x74 ,0x76,0x78,0x7a,0x7c,0x7e,0x80,0x82,0x84,0x86,0x88,0x8a,0x8c,0x8e ,0x90,0x92,0x94,0x96,0x98,0x9a,0x9c,0x9e,0xa0,0xa2,0xa4,0xa6,0xa8 ,0xaa,0xac,0xae,0xb0,0xb2,0xb4,0xb6,0xb8,0xba,0xbc,0xbe,0xc0,0xc2 ,0xc4,0xc6,0xc8,0xca,0xcc,0xce,0xd0,0xd2,0xd4,0xd6,0xd8,0xda,0xdc ,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xee,0xf0,0xf2,0xf4,0xf6 ,0xf8,0xfa,0xfc,0xfe,0xfe,0xfc,0xfa,0xf8,0xf6,0xf4,0xf2,0xf0,0xee ,0xec,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,0xde,0xdc,0xda,0xd8,0xd6,0xd4 ,0xd2,0xd0,0xce,0xcc,0xca,0xc8,0xc6,0xc4,0xc2,0xc0,0xbe,0xbc,0xba ,0xb8,0xb6,0xb4,0xb2,0xb0,0xae,0xac,0xaa,0xa8,0xa6,0xa4,0xa2,0xa0 ,0x9e,0x9c,0x9a,0x98,0x96,0x94,0x92,0x90,0x8e,0x8c,0x8a,0x88,0x86 ,0x84,0x82,0x80,0x7e,0x7c,0x7a,0x78,0x76,0x74,0x72,0x70,0x6e,0x6c ,0x6a,0x68,0x66,0x64,0x62,0x60,0x5e,0x5c,0x5a,0x58,0x56,0x54,0x52 ,0x50,0x4e,0x4c,0x4a,0x48,0x46,0x44,0x42,0x40,0x3e,0x3c,0x3a,0x38 ,0x36,0x34,0x32,0x30,0x2e,0x2c,0x2a,0x28,0x26,0x24,0x22,0x20,0x1e ,0x1c,0x1a,0x18,0x16,0x14,0x12,0x10,0x0e,0x0c,0x0a,0x08,0x06,0x04 ,0x02,0x00};

ucharcodefbtab[256]={0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff ,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff ,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff ,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff ,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff ,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff ,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff ,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff ,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff ,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff ,0xff,0xff,} ;

void Timer0_Init(void)

{

TMOD = 0X01; //

TH0 = FRE/256;

TL0 = FRE-256*TH0;

TR0 = 1;

ET0 = 1;

EA =1;

}

void Timer0_Int(void) interrupt 1

{

TH0 = FRE/256;

TL0 = FRE-256*TH0;

i+=1;

switch(boxing)

{

case 1:

P1 = sintab[i];break;

case 2:

P1 = jctab[i];break;

case 3:

P1 = fbtab[i];break;

case 4:

P1 = sjtab[i];break;

default:

基于51单片机的的温度报警器设计

1引言 (1) 1.1 单片机的应用背景 (1) 2 总体设计方案 (2) 2.1 功能简介 (2) 2.2 设计思路 (2) 2.3 芯片器材 (3) 3 硬件设计 (3) 3.1 AT89C51 (3) 3.1.1 AT98C51引脚图 (3) 3.1.2 AT89C51结构特点 (5) 3.2 温度获取 (5) (7) 3.3 时钟电路 (8) 3.4 温度显示电路 (8) 3.5报警电路 (10) (10) 4 程序设计 (10) 4.1 程序流程图 (11) 4.2 初始化子程序 (11) 4.3 读子程序 (12) 4.4 写子程序 (13) 4.5 数据处理子程序 (13) 4.6 显示子程序 (15) 4.7报警子程序 (17) 5 实验仿真 (18) (18) 6 总结 (19) 参考文献 (20) 附录 (21) 1引言 1.1 单片机的应用背景 目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通信与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录象机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机,更不用说自动控制领域的机器人、智能仪表、医疗机械了。

世面上主要的单片机类型有Motorola 单片机、Microchip 单片机、东芝单片机、8051单片机、Atmel 单片机等。此次课设中用到的是ATMEL公司,下面着重介绍一下ATMEL公司的单片机。 ATMEL 公司是世界上著名的高性能低功耗非易失性存储器和数字集成电路的一流半导体制造公司。ATMEL 公司最令人注目的是它的EEPROM 电可擦除技术闪速存储器技术和质量高可靠性的生产技术。在CMOS 器件生产领域中,ATMEL 的先进设计水平优秀的生产工艺及封装技术一直处于世界的领先地位。这些技术用于单片机生产,使单片机也具有优秀的品质在结构性能和功能等方面都有明显的优势,ATMEL 公司的单片机是目前世界上一种独具特色。 而性能卓越的单片机它在计算机外部设备通讯设备自动化工业控制宇航设备仪器仪表和各种消费类产品中都有着广泛的应用前景。其生产的AT90系列是增强型RISC内载FLASH单片机,通常称为A VR系列。AT91M系列是基于ARM7TDMI 嵌入式处理器的ATMEL 16/32 微处理器系列中的一个新成员,该处理器用高密度的16 位指令集实现了高效的32 位RISC 结构且功耗很低。另外ATMAL的增强型51系列单片机目前在市场上仍然十分流行,其中AT89S51十分活跃。 当今社会,人们在追求高质量的生活,所以生活中离不开单片机,根据国家权威统计显示,目前我国的单片机容量达3亿片,且每年以大约20%的速度增长,但在世界市场我国的占有率还不到1%。沿海地区尤其像电子产品高度发达的深圳大部分单片机应用更是广泛,这种发展趋势也不断向内地辐射,因此,学好单片机有很重要的意义。 2 总体设计方案 2.1 功能简介 8位LED数码管直接显示DS18B20所测量的温度,超出-50~110℃范围时喇叭报警,并且对应的发光二极管开始闪烁,在温度范围内时喇叭停止报警并且数码管显示其温度,测量精度为0.5℃。 2.2 设计思路

C51单片机定时器及数码管控制实验报告

理工大学信息工程与自动化学院学生实验报告 (201 — 201学年第1 学期) 课程名称:单片机技术

一、实验目的 1.掌握定时器T0、T1 的方式选择和编程方法,了解中断服务程序的设计方法,学会实时程序的调试技巧。 2.掌握LED 数码管动态显示程序设计方法。 二、实验原理 1.89C51 单片机有五个中断源(89C52 有六个),分别是外部中断请求0、外部中断请求1、定时器/计数器0 溢出中断请求、定时器/计数器0 溢出中断请求及串行口中断请求。每个中断源都对应一个中断请求位,它们设置在特殊功能寄存器TCON 和SCON 中。当中断源请求中断时,相应标志分别由TCON 和SCON 的相应位来锁寄。五个中断源有二个中断优先级,每个中断源可以编程为高优先级或低优先级中断,可以实现二级中断服务程序嵌套。在

同一优先级别中,靠部的查询逻辑来确定响应顺序。不同的中断源有不同的中断矢量地址。 中断的控制用四个特殊功能寄存器IE、IP、TCON (用六位)和SCON(用二位),分别用于控制中断的类型、中断的开/关和各种中断源的优先级别。中断程序由中断控制程序(主程序)和中断服务程序两部分组成: 1)中断控制程序用于实现对中断的控制; 2)中断服务程序用于完成中断源所要求的中断处理的各种操作。 C51 的中断函数必须通过interrupt m 进行修饰。在C51 程序设计中,当函数定义时用了interrupt m 修饰符,系统编译时把对应函数转化为中断函数,自动加上程序头段和尾段,并按MCS-51 系统中断的处理方式自动把它安排在程序存储器中的相应位置。 在该修饰符中,m 的取值为0~31,对应的中断情况如下: 0——外部中断0 1——定时/计数器T0 2——外部中断1 3——定时/计数器T1 4——串行口中断 5——定时/计数器T2 其它值预留。 89C51 单片机设置了两个可编程的16 位定时器T0 和T1,通过编程,可以设定为定时器和外部计数方式。T1 还可以作为其串行口的波特率发生器。

基于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单片机的一氧化碳报警器的设计

基于51单片机的一氧化碳报警器的设计 本文设计了一款能够自动检测房间内一氧化碳气体浓度的报警器,当气敏传感器检测到的浓度值大于安全值时,报警器发出报警信号并控制外部的排风扇和电磁阀进行事故处理;整个过程中通过LED实时显示一氧化碳气体的浓度值。 标签:一氧化碳;气体传感器;单片机;检测;浓度 一、引言 现今,单片机技术快速发展、应用广泛,涉及到现实生活中的各个领域,单片机技术产品和设备的应用促进了生产技术水平的不断提高。本文中的气体浓度检测系统正是单片机应用系统中的一种。这次设计使用的气体传感器就是要测量一氧化碳浓度的动态信号,然后利用A/D转换芯片将浓度值转换为数字值,实现整个系统的检测与事故处理功能,实现智能控制。 二、系统硬件设计 (一)系统硬件电路组成 本系统属于单片机在系统检测及工程控制方面的应用。为保证可靠运行,整个硬件系统包括三个部分:主控模块、浓度检测及显示模块、报警及事故处理模块,其中,主控模块以单片机为中心,对其他模块的运行进行控制;浓度检测及显示模块的功能是将房间中的一氧化碳浓度值转换成为单片机能够处理的数字信号,并且将浓度值通过LED显示出来;报警及事故处理模块是此系统的外围电路,它的功能实现形式最人性化,体现了智能控制,在检测到一氧化碳的浓度超过指定值时会启动蜂鸣器报警,报警无效后即会进行事故处理,启动排气扇和关闭电磁阀来防止事故的发生。 (二)系统各个模块功能说明 1.主控模块 系统选用单片机控制,采用MCS-51单片机。MCS-51系列单片机是美国Intel 公司1980年推出的一种高性能8位单片微型计算机,内带4K字节的内存和程序保护系统,便于程序的调试修改和保密。它的主要功能是和ADC0809芯片一起共同接收检测信号,通过对数字信号的处理来控制外围电路及显示电路。模数转换芯片采用ADC0809,接收经过运算放大器处理后的一氧化碳传感器的检测值,检测结果经过ADC0809处理后送单片机进行数据处理。处理后的信息将通过单片机控制,在LED显示管上显示出来,并且控制事故处理模块。 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单片机的多功能定时器

摘要 本设计要求以单片机为核心主体,完成最小系统板的设计与制作(通过Protel 软件,对电路进行设计,调试。生成PCB板,再对元器件进行排布,焊接。)之后要进行初调试,证实电路板无误后才能进行下面的内容。电路板完成后,在总程序基础上通过编程设计家用多路定时控制器。本课程设计目标:具有正常数字钟功能,包括时间校正,具有至少三路定时开关控制功能,每路定时时间可以任意设置。但重要的是要有一定的创新,因为此系统还有很多值得开发的功能,单纯的三路定时只是设计内容的基本要求。 关键词:Protel,单片机,MCS-51

目录 摘要........................................................................................................ - 1 - 引言........................................................................................................ - 2 - 1 绪论.................................................................................................... - 2 - 1.1系统背景 (1) 1.1.1单片机技术及其发展特点 (1) 1.1.2单片机在电子技术中的应用 (3) 1.1.3课程设计的内容与任务 (4) 2 系统电路设计 (5) 2.1 系统总体设计框架结构 (5) 2.2 系统硬件单元电路设计 (6) 2.2.1 时钟电路设计 (6) 2.2.2 复位电路设计 (6) 2. 2.3 按键电路设计 (7) 2.3数码管电路设计 (8) 2.3.1、数码管的分类 (8) 2.3.2、数码管的驱动方式 (8) 2.3 系统硬件总电路 (14) 3 系统软件设计 (10) 3.1 系统软件流程图 (10) 4 实验结果和分析 (11) 4.1 实验使用的仪器设备 (11) 4.2 测试结果分析 (11) 结论 (12) 参考文献 (13) 附录 (13) 系统程序设计 (15) Abstract (25) 致谢 (25)

基于51单片机的温湿度报警器

引言 网络通信技术的发展,使监控系统广泛应用于工农业生产等领域,因此,粮情检测技术粮情检测属监控系统范畴,近年来,由于计算机技术、超大规模集成电路技术和的研究在软、硬件等方面都有了一定的进展。 早期粮情监测主要采用温度计测量法,它是将温度计放入特制的插杆中,根据经验插在粮堆的多个测温点,管理人员定期拔出读数,确定粮温的高、低,决定是否倒粮。这种方法对储粮有一定的作用,但由于温度计精度、人工读数的人为因素等原因,温度检测不仅速度慢,而且精度低,抽样不彻底,局部粮温过高不易被及时发现,导致因局部粮食发霉变质引起大面积坏粮的情况时有发生。随着科技的发展,从1978 年开始,采用电阻式温度传感器、采样器、模数转换器、报警器等组成的储粮监测系统出现,它可对各粮库的各个测温点进行巡回检测,检测速度、精度大大提高,降低了劳动强度,但由于电阻传感器的灵敏度低,致检测精度、系统可靠性还不够理想。至1990 年,粮情检测系统有了很大的改善和提高,系统在布线上采用矩阵式布线技术,简化了数据采集部分的线路,在传感器方面应用了半导体、热电偶等器件;在线路传输上采用了串行传输方式,从而减少了传输线根数;采用单板机进行数据处理,并采用各种手段提高数据传输及检测速度,通过软硬件技术的结合,检测精度和可靠性较前有很大提高。但温度传感器的线性度差,系统的检测精度仍不理想,无法大面积推广。近年来,随着单片机功能的日益强大和计算机的广泛应用,粮情检测的准确性、稳定性要求越来越高。寻找最佳配置和最好的性价比成为粮情监测研究的热点国外在粮情监控技术上已达到了很成熟的地步,高科技数字式传感器广泛应用于粮情检测系统。这种传感器采用了半导体集成电路与微控制器最新技术,在一个管芯上集成

基于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

基于51单片机的报警器设计

引言 报警器,防盗报警器,是对用于发生警情、危险、紧急情况等状况下以声音、光线、气压等形式发出警报的电子产品的统称。随着科技的进步,机械式报警器越来越多地被先进的电子报警器代替,经常应用于系统故障、安全防范、交通运输、医疗救护、应急救灾等领域,与社会生产、生活密不可分。 防盗报警系统通常由:探测器(又称报警器)、传输通道和报警控制器三部分构成。报警探测器是由传感器和信号处理组成的,用来探测入侵者入侵行为的,由电子和机械部件组成的装置,是防盗报警系统的关键,而传感器又是报警探测器的核心元件。采用不同原理的传感器件,可以构成不同种类、不同用途、达到不同探测目的的报警探测装置,单片微型计算机,通常简称为单片机,它采用大规模集成电路技术把微处理器和随机存取数据存储器,只读程序存储器,输入输出电路以及定时计数器。串行通信口,时钟电路。脉冲调制电路。模拟多路转换器,A/D转换器等电路集成到单独的一块芯片上,构成一个最小的完善的计算机系统,这些电路能在软件的控制下单独。准确,迅速,高效的完成程序设计者现规定的任务。因为由单片机构成的电路玩玩具有体积小,成本低,功能强,可靠性高,功耗低,电路简洁,开发和改进容易等等一系列有点,因此就有优异地性价比,从而使它在多方面得到了越来越多的使用,本次设计就是基于单片机的报警器设计。

一设计基本电路原理和思路 该报警器得设计思路是首先,利用光敏电阻构成光敏开关,光敏开关的作用是为单片机报警主电路提供报警信号,即通过光敏开关实现高低电平信号的转换,报警信号通过单片机软件处理实现信号的转换,在利用转换的信号驱动扬声器继而用声音输出进行报警,本次实验是通过光照的变化,利用光敏电阻随光照强度变化,阻值发生变化的特性首先实现的开关电路,即报警信号的来源是关照,报警主电路由单片机和音频放大模块组成,利用单片机上写入的程序,实现当报警信号输入单片机,其就会产生频率不等的信号。以驱动扬声器报警。 采用光敏电阻的光控开关 这是两种开关电路的主要原理:利用功率MOS场效应管可以作功率开关,开关的敏感元件可以采用光敏电阻LDR,当光线照射的光敏电阻上时,LDR呈低阻值,有信号加在场效应晶体管的栅极上,源漏极间导通,从而使继电器线圈K改变状态,产生控制作用或发出信号,如果将光敏电阻LDR接在地电位处,则在暗时无光线照射的光敏电阻,光敏电阻阻值高,故VMOS管栅极电位高,导通使灯L亮,反之,当有光线照射到LDR上时,VMOS栅极处于低电位截止,灯L 不亮。 本次试验采用试验一电路,即利用继电器线圈构成的电子开关达到采集信号的目的。具体是当有光线照到LDR上时,光敏电阻阻值减小,对应VMOS门级电压增加,电磁开关上流过的电流增加,引起电磁开光开启,开关k1闭合,端口输入高电平,报警电路导通,即可实现报警功能,光敏开关控制电路置于端口P1.0与总开关K1之间。

基于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)使用五位数码管接口电路

基于单片机实现的定时器设计

第一章单片机的简介 一个8位的80c51微处理器,片内256字节数据存储器RAM/SFR,用以存放可以读写的数据,如运算的中间结果,最终结果以及欲显示的数据;片内4kb程序存储器Flash ROM,用以存放程序,一些原始数据和表格;4个8位并行I/O 口P0~P3,每个端口既可用作输入,也可用作输出;两个16位的定时器/计数器,每个定时器/计数器都可设置成计数方式,用以对外部事件进行计数,也可设置成定时方式,并可以根据计数或者定时的结果实现计算机控制;具有5个中断源,两个中断优先级的中断控制系统;一个全双工UART(通用异步接受发送器)的串行I/O口,用于实现单片机之间或者单片机与PC机之间的串行通信;片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接,最高允许震荡频率为24MHz;89c51与80c51相比具有节电工作方式,即休闲方式及掉电方式。 1.1中央处理器(CPU): CPU是单片机内部的核心部件,是一个8位二进制数的中央处理单元,主要由运算器、控制器和寄存器阵列构成。 1.1.1 运算器: 运算器用来完成算术运算和逻辑运算功能,它是 89C51内部处理各种信息的主要部件。运算器主要由算术逻辑单元(ALU)、累加器(ACC)、暂存寄存器(TMP1、TMP2)和状态寄存器(PSW)组成。算术逻辑单元(ALU): 89C51中的ALU由加法器和一个布尔处理器组成。

累加器(ACC):用来存放参与算术运算和逻辑运算的一个操作数或运算的结果。暂存寄存器(TMP1、TMP2):用来存放参与算术运算和逻辑运算的另一个操作数,它对用户不开放。 状态寄存器(PSW):PSW是一个8位标志寄存器,用来存放ALU操作结果的有关状态。 1.1.2控制器: 控制器是单片机内部按一定时序协调工作的控制核心,是分析和执行指令的部件。控制器主要由程序计数器PC、指令寄存器IR、指令译码器ID和定时控制逻辑电路等构成。程序计数器PC是专门用于存放现行指令的16位地址的。CPU 就是根据PC中的地址到ROM中去读取程序指令码和数据,并送给指令寄存器IR 进行分析。指令寄存器IR用于存放CPU根据PC地址从ROM中读出的指令操作码。指令译码器ID是用于分析指令操作的部件,指令操作码经译码后产生相应于某一特定操作的信号。定时控制逻辑中定时部件用来产生脉冲序列和多种节拍脉冲。1.1.3寄存器阵列: 寄存器阵列是单片机内部的临时存储单元或固定用途单元,包括通用寄存器组和专用寄存器组。通用寄存器组用来存放过渡性的数据和地址,提高CPU的运行速度。 专用寄存器组主要用来指示当前要执行指令的内存地址,存放特定的操作数,指示指令运行的状态等。 1.1.4存储器: 89C51单片机内部有256个字节的RAM数据存储器和4KB的闪存程序存储器

基于C51单片机的声光报警器设计说明

本科课程设计报告 题目:基于C51单片机的声光报警器设计院(系):电气与信息工程学院 专业:电子信息工程 班级: 姓名: 学号:2009021986 指导教师: 设计日期:2012年11月29日 报告书写要求

1、报告封皮标题栏为宋体小三号居中,下划线需右边对齐。 2、报告的撰写要求条理清晰、语言准确、表述简明。报告中段首空两个字符,中文字体为宋体五号,数字、字符、字母为Times New Roman五号,且单教研室主任意见: 3、报告中插图应与文字紧密配合,文图相符,技术容正确。每个图都应配有图题(由图号和图名组成)。图题(宋体小五号)置于图下居中,其中图号按顺序编排,图名在图号之后空一格排写。图中若有分图时,分图号用(a)、(b)等置于分图之下。 4、报告中插表应与文字紧密配合,文表相符,技术容正确。表格不加左、右边线,每个表应配有表题(由表号和表名组成)。表题(宋体小五号)置于表上居中,其中表号按顺序编排,表名在表号之后空一格排写。 5、报告中公式原则上居中书写。若公式前有文字(如“解”、“假定”等),文字顶格书写,公式仍居中写。公式末不加标点。公式序号按顺序编排,如报告中第一部分的第一个公式序号为“(1-1)”,文中引用公式时,一般用“见式(1-1)”或“由公式(1-1)”。 6、参考文献反映报告的取材来源,是报告不可缺少的组成部分,参考文献数量一般为8~10篇。引用文献标示应置于所引容最末句的右上角,用小五号字体。所引文献编号用阿拉伯数字置于方括号“[ ]”中,如“二次铣削[1]”。参考文献应按在文中出现的顺序编排,常用参考文献编写项目和顺序规定如下:(1)著作图书文献:序号└─┘作者.书名.版次.出版者,出版年:引用部分起止页 第一版应省略 (2)翻译图书文献:序号└─┘作者.书名.译者.版次.出版者,出版年:引用部分起止页 第一版应省略 (3)学术刊物文献:序号└─┘作者.文章名.学术刊物名.年,卷(期):引用部分起止页 (4)学术会议文献:序号└─┘作者.文章名.编者名.会议名称,会议地址,年份.出版地,出版者,出版年:引用部分起止页 (5)学位论文类参考文献:序号└─┘研究生名.学位论文题目.学校及学位论文级别.答辩年份:引用部分起止页 7、若设计完成实物制作需在报告后附录硬件电路原理图和实物测试图,附录的序号采用“附录1”、“附录2”等,并注明附录的容。 8、设计报告应按如下容和顺序A4纸双面打印(标注页码)、左侧装订成册。

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

河南##############学校 毕业设计(论文) 基于51单片机的简易计算器 系部: 自动控制系 专业: 电气自动化 班级: 自083 姓名: 崔 # # 学号: 091415302 指导老师: 许 # 二零一二年五月八日

基于51单片机的简易计算器 摘要 工程实践教学环节是为了学生能够更好地巩固和实践所学专业知识而设置的,在本次工程实践中,我以《智能化测量控制仪表原理与设计》、《MCS-51系列单片微型计算机及其应用》课程中所学知识为基础,设计了简易计算器。本系统以MCS-51系列中的8051单片机为核心,能够实现多位数的四则运算。该系统通过检测矩阵键盘扫描,判断是否按键,经数据转换把数值送入数码管动态显示。本系统的设计说明重点介绍了如下几方面的内容:基于单片机简易计算器的基本功能,同时对矩阵键盘及数码管动态显示原理进行了简单的阐述;介绍了系统的总体设计、给出了系统的整体流程框图,并对其进行了功能模块划分及所采用的元器件进行了详细说明;对系统各功能模块的软、硬件实现进行了详细的设计说明。 关键词:MCS-51;8051单片机;计算器;加减乘除

Based on the simple calculator 51 SCM Abstract The engineering practice teaching is to students better to consolidate and practice have set up by the professional knowledge, in this engineering practice, I to the intelligent measurement control instrument principle and design ", "the MCS-51 series single chip computer and its application" course knowledge as the foundation, the design the simple calculator. This system to MCS-51 of the 8051 series single chip microcomputer as the core, can realize the connection arithmetic. The system through the test matrix keyboard scan, judge whether key, the data transfer the numerical into digital tube dynamic display. This system mainly introduced the design that the following aspects of content: based on single chip microcomputer simple calculator basic functions, and the matrix keyboard and a digital tube dynamic display of the principle of a simple expatiated; introduced the design of the whole system, the whole process of the system are discussed, and its function module partition and the components for a detailed explanation; the functional modules of the system hardware and software of the implementation of the detailed design instructions. Key words: MCS-51;8051 single chip microcomputer;Calculator;Add, subtract, multiply and divide:

51单片机定时器初值的计算

51单片机定时器初值的计算 一。10MS定时器初值的计算: 1.晶振12M 12MHz除12为1MHz,也就是说一秒=1000000次机器周期。10ms=10000次机器周期。 65536-10000=55536(d8f0) TH0=0xd8,TL0=0xf0 2.晶振11.0592M 11.0592MHz除12为921600Hz,就是一秒921600次机器周期,10ms=9216次机器周期。 65536-9216=56320(dc00) TH0=0xdc,TL0=0x00 二。50MS定时器初值的计算: 1.晶振12M 12MHz除12为1MHz,也就是说一秒=1000000次机器周期。50ms=50000次机器周期。 65536-50000=15536(3cb0) TH0=0x3c,TL0=0xb0 2.晶振11.0592M 11.0592MHz除12为921600Hz,就是一秒921600次机器周期,50ms=46080次机器周期。 65536-46080=19456(4c00) 三。使用说明 以12M晶振为例:每秒钟可以执行1000000次机器周期个机器周期。而T 每次溢出 最多65536 个机器周期。我们尽量应该让溢出中断的次数最少(如50ms),这样对主程序的干扰也就最小。开发的时候可能会根据需要更换不同频率的晶振(比如c51单片机,用11.0592M的晶振,很适合产生串口时钟,而12M晶振很方便计算定时器的时间),使用插接式比较方便。 对12MHz 1个机器周期 1us 12/fosc = 1us 方式0 13位定时器最大时间间隔 = 2^13 = 8.192ms 方式1 16位定时器最大时间间隔 = 2^16 = 65.536ms 方式2 8位定时器最大时间间隔 = 2^8 = 0.256ms =256 us 定时5ms, 计算计时器初值 M = 2^K-X*Fosc/12 12MHz 方式0 : K=13,X=5ms,Fosc=12MHz 则 M = 2^13 - 5*10^(-3)*12*10^6/12= 3192 = 0x0C78 THx = 0CH,TLx = 78H, 方式1: K=16,X=5ms,Fosc=12MHz 则 M = 2^16 - 5*10^(-3)*12*10^6/12= 60536 = 0xEC78

基于单片机的温度报警器

基于51单片机的温度报警器 摘要 如今火灾频频发生,比如电气线路短路、过载、接触电阻过大等 引发高温火灾;静电产生高温火灾;雷电等强电侵入导致高温火灾; 最主要是机房内电脑、空调等用电设备长时间工作,导致设备老化, ABSTRACT

Now fire happen frequently, such as electrical wiring short circuit, overload, large contact resistance, high temperature fire; Electrostatic generation high temperature fire; And so on high voltage caused by lightning intruded into the lead to high temperature fire; The main electrical equipment such as computers, air conditioning is the telecom room to work long hours, a and wide out alarm signal by single-chip microcomputer, to prevent unnecessary loss. Key words: AT89C52D,S18B20,Digital tube

目录 第一章设计背景及要求 ................................................................................................ - 1 -1.1设计意义 .................................................................................................................... - 1 -1.2设计要求 .................................................................................................................... - 2 -1.2.1基本功能 ................................................................................................................. - 2 -1.2.2扩展功能 ................................................................................................................. - 2 -1.3总体设计方案 ............................................................................................................ - 2 -1.3.1数字温度计设计方案论证 ..................................................................................... - 2 -1.3.2单片机的选择 ......................................................................................................... - 3 - - 11 - 附录 ................................................................................................................................ - 30 -附录一分组表 .............................................................................................................. - 30 -附录二程序代码 .......................................................................................................... - 30 -附录三实物图 .............................................................................................................. - 36 -

基于单片机的简易计算器设计

2013 - 2014 学年_一_学期 山东科技大学电工电子实验教学中心 创新性实验研究报告 实验项目名称__基于51单片机的简易计算器设计_ 2013 年12 月27 日

四、实验内容

2、实验内容 (一)、总体硬件设计 本设计选用AT89C52单片机为主控单元。显示部分:采用六位LED动态数码管显示。按键部分:采用2*8键盘;利用2*8的键盘扫描子程序,读取输入的键值。 (二)、键盘接口电路 计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。矩阵键盘采用两条I/O 线作为行线,八条I/O 线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为2×8个。这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。 矩阵键盘的工作原理: 计算器的键盘布局如图2所示:一般有16个键组成,在单片机中正好可以用一个P口和另一个P口的两个管脚实现16个按键功能,这种形式在单片机系统中也最常用。 矩阵键盘布局图: 矩阵键盘内部电路图如下图所示:

(三)、LED显示模块 本设计采用LED数码显示来显示输出数据。通过D0-D7引脚向LED写指令字或写数据以使LED实现不同的功能或显示相应数据。 (四)运算模块(单片机控制) MCS-51 单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O等一台计算机所需要的基本功能部件。如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O 口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。 单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性!因此我们采用单片机作为计算器的主要功能部件,可以很快地实现运算功能。

基于51单片机内部定时器的简易闹钟课程设计论文

基于51单片机内部定时器的简易闹钟 摘要 现代社会电子闹钟已广泛用于各种私人和公众场合,成为我们生活、工作和学习中不可缺少的好帮手,因此研究实用性更强的电子闹钟具有十分重要的意义。本设计是基于单片机的电子钟设计,不仅具有时分秒的显示功能,还具有双闹铃和倒计时的功能,实用性非常强。电子钟的计时部分采用AT89S52单片机内部定时器实现,而显示功能是采用液晶模块LCD1602来实现,该电子闹钟可以让使用者通过按键来轻松选择的功能菜单和调节时间,具有非常良好地人机界面。 关键词:电子闹钟;倒计时;AT89S52;液晶LCD1602;按键 Abstract In modern society, the electronic alarm clock has been widely used in various occasions and become indispensable to life.It is a good helper to our work and learning. So,there is very important significance to research more practical electronic alarm clock.This design is based on single chip microcomputer,It has display function of hours,minutes and seconds,dual alarm and countdown.The internal timer of AT89S52 achieve the part of time.The liquid crystal LCD1602 achieve the part of display.The users can use the push-buttons to choice the menu of functions and adjust the time.The man-machine interface is very good. Key words: electronic alarm; countdown; AT89S52; liquid crystal LCD1602; button

相关主题