基于51单片机的零件计数器设计_-_1

合集下载

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计一、引言在现代社会中,计数器是一种非常常见的电子设备,它可以对某一事件或物体进行计数,并对计数结果进行显示、记录或控制。

计数器广泛应用于工业控制、电子设备、仪器仪表等领域。

本文将基于AT89C51单片机设计一款简单的计数器,并通过实验来验证其功能。

二、AT89C51单片机简介AT89C51是一款由意法半导体公司(STMicroelectronics)生产的一款高性能、低功耗的单片机芯片。

它具有8位的CPU、4KB的Flash存储器、128B的RAM,以及32个通用I/O 端口。

AT89C51单片机集成了多种功能模块,包括定时器、串行通信接口、中断控制器等,适合于需要较高性能的嵌入式系统。

三、计数器设计1. 硬件设计在本设计中,我们将使用AT89C51单片机作为核心控制器,外接数码管进行计数结果的显示。

我们还将使用按键进行计数器的操作,包括计数、清零等功能。

硬件电路设计如下:- AT89C51单片机- 7段数码管(共阳极)- 74595移位寄存器- 按键- 电阻、电容等元件2. 软件设计在软件设计中,我们将使用C语言编程,并调用单片机的相关接口函数来实现计数器的功能。

主要包括以下几个方面的功能:- 初始化:对单片机的相关GPIO口进行初始化,包括数码管、按键等。

- 计数:通过按下计数按钮触发计数功能,将计数结果存储在单片机内部的变量中。

- 显示:将计数结果显示在数码管上,通过74595移位寄存器进行驱动。

- 清零:通过按下清零按钮触发清零功能,将计数结果清零。

四、实验验证为了验证上述设计的正确性,我们将进行一个实验。

我们将使用AT89C51单片机、数码管、按键等元件进行搭建,然后编写软件程序进行测试。

1. 硬件搭建我们需要按照硬件设计的原理图进行搭建。

将AT89C51单片机、数码管、按键等元件按照原理图连接好,并进行电源连接。

2. 软件编程接下来,我们需要编写C语言程序,将程序下载到单片机中。

基于51单片机的计数器

基于51单片机的计数器
temp = temp / 10;
dispbuf[1] =temp % 10;//时万位
temp = temp / 10;
dispbuf[0] =temp % 10;//时十万位
}
/******************************显示+读键*************************/
feedbuffer();
}
/********************************结束************************/
{ uchar j;
count=0;//秒清零
for(j=0;j<6;j++)
dispbuf[j] = 0;//清数码管显示缓冲区
TMOD = 0x05;//T0 T1工作于方式1
TL0 = 0xff;
TH0 = 0xff;//50ms定时初值
ET0 = 1;//允许T1中断
PT0 = 1;//T1中断优先级高
EA = 1;//开中断
TR0 = 1;//T1开始计时
}
/*************************************填充显示缓冲区****************************/
void feedbuffer()
{
unsigned int temp;
temp = count;
sbit addr0 = P1^4;//系统片选地址线0
sbit addr1 = P1^5;//系统片选地址线1
sbit addr2 = P1^6;//系统片选地址线2
sbit addr3 = P1^7;//系统片选地址线3
//行扫描数组

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计
计数器是一种常见的电子设备,用于实现对输入信号的计数。

基于AT89C51单片机的计数器设计,可以实现对输入信号的计数,并且可以将计数结果显示出来。

我们需要准备以下器件和材料:
1. AT89C51单片机:这是一款8位微控制器,具有丰富的输入输出功能。

2. 数码管:用于显示计数结果。

3. 按钮开关:用于输入计数信号。

接下来,我们可以按照以下步骤进行计数器的设计。

1. 连接电路:将数码管和按钮开关分别与AT89C51单片机的IO口相连。

数码管的引脚与单片机的IO口相连,按钮开关一个端接地,另一个端接单片机的IO口。

2. 编写程序:使用汇编语言或C语言编写单片机的程序。

可以使用单片机的计时器中断来实现计数功能。

在程序中,首先需要初始化单片机,并将IO口设置为输入或输出。

3. 实现计数功能:在程序中,通过判断按钮开关的状态,来决定是否对计数器进行加一或减一操作。

当按钮开关按下时,将计数器加一或减一,并将计数结果显示在数码管上。

4. 程序调试:将程序下载到单片机上,并连接电源。

通过按下按钮开关,观察数码管上计数结果的变化,可以判断程序的正确性。

如果发现计数结果不正确,可以通过调试程序来解决问题。

5. 优化设计:根据实际需求,可以对计数器的功能进行优化。

可以增加清零按钮,用于将计数器清零;可以增加计数范围限制,当计数器达到上限或下限时,禁止继续计数。

基于51单片机的零件计数器设计 - 1

基于51单片机的零件计数器设计 - 1

1 系统设计1.1 实验箱主要组件本课程设计使用的实验箱主要由单片机最小系统,LED 数码管显示部分,外部中断控制部分,独立式与行列式键盘按键输入部分,串行口通信部分,蜂鸣器与继电器等部分组成。

详细电路图见图1。

234567891R910k*812345678161514131211109U10SW-DIP81312U16F 74071110U16E 740798U16D 740756U16C 740734U16B 740712U16A 7407D8+5R20100D7+5R1810012J22SIP162738495J1DB9-PINKEY2R 15100+5D6SW5RESETD51N4148MR 1VCC 2GND 3PFI4PFO5WDI 6RST 7WDO 8U9IMP813L +5SCL 6SDA5A12NC 1WP 7VCC 8NC 3GND4U824CXX 30p30pX T 211MC1+1V+2C1-3C2+4C2-5V-6T2OUT 7R2IN8R2OUT9T2IN 10T1IN 11R1OUT 12R1IN 13T1OUT 14GND 15VCC 16U7MAX232E510uE310uE410uE210uR13100+5D11R11100+5D10D9+5R10100456U3B 7400C410NSW9int0C347UR71KTRIG2Q3R4C V o l t5THR 6DIS7V C C8G N D1U4NE555KEY1123U3A 7400C210NFC11UFR6150KR5270KTRIG2Q3R4C V o l t 5THR6DIS7V C C8G N D1U2NE555R41KR2100+5S1Q19013234567891R110k*8EA/VP 31X119X218RESET 9RD 17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P 30TXD 11RXD 10U18031D1SW123451R3150*8SW2D2SW3D3D4SW4TRIG2Q3R4C V o l t5THR 6DIS7V C C8G N D1U5NE555R81KC547USW10int1C610NRO 1RE 2DE 3DI4GND5A 6B 7VCC 8U6RS485VCC +5L2L3L4L6L5L7L8L18910U3C 7400234567891R12150*8+5RXD 23248550ms 50ms f=1hz clk-offclk-on232OUT 232INX2X1+5485A485B RXDX2X1232IN>232OUT<TXDDOGSDASCL EN485DOG SDA SCL RESETT0T1INT0INT1RESETGNDVCC GND VCCGND VCC GND TTLOUT>TTLIN<DB9RX DB9TX+5T0+5+5T1+5P10P11P12P13P10P11P12P13+5+5INT0INT1EN485TXD P20P21P22P23P24P25P26P27P20P21P22P23P24P25P26P27图1 实验箱“基础型实验”部分电路图单片机最小系统部分由内含FLASH ROM的STC89C52RC,EA接高电平;各并行口都加了10K的上拉电阻;晶振为11.0592M。

基于51单片机的简易计数器设计与实践

基于51单片机的简易计数器设计与实践

开发研究基于51单片机的简易计数器设计与实践战文韬教传艳”(沈阳工学院机械与运载学院,辽宁抚顺113122)摘要:目前科技发展迅速,单片机由于其种类繁多及其使用方便,在我们的日常工作与生活中起着必不可少的作用。

首先阐述单片机工作原理,简单介绍keil编程软件、proteus仿真软件,在熟练运用keil软件和proteus软件的基础上,对AT89C51单片机的简易计数器系统设计进行说明与实践。

关键词:AT89C51单片机;keil编程软件;proteus 仿真软件1单片机及软件相关知识1.1单片机原理单片机原理是学习单片机的基础,单片机的原理方式是指能够实现在线式实时控制计算机。

宏观来说,单片机是一块内含多个引脚的集成芯片,集成芯片通过使用者编程来进行控制,从而使各个弓I脚在不同的时间来控制高、低电平,从而便实现对单片机集成芯片各引脚的外围电路电压控制,从而达到理想的使用功能。

1.2keil编程软件简易说明keil软件将连接器、编译器、仿真调试器通过錄成开发环境组合起来,所以目标代码的生磁率大大提高,并且汇编代码在语句的生成下能够很容易被学习与使用。

1.3proteus仿真软件简易说明强大的ISIS智能原理图输入系统功能是proteus仿真的鲜明特点,有全面的操作菜单与工具以及智能的人机互动窗口界面,并且硬件设计、软件设计以及单片机源代码的实验、仿真等功能在ISIS智能原理图编辑区中也能够完成。

2单片机计数器系统设计相关说明2.1设计思路⑴了解单片机工作原理、keil编程软件、proteus仿真软件。

⑵电路原理图通过proteus仿真软来完成件。

(3)C51源程序通过keil软件进行编辑、编译与调试,然后生成与电路图能够相互对应的HEX文件。

(4)将生成的HEX 文件通过仿真软件调试运行,通过观察实验现象,检验生成的效果是否与预计效果相吻合,从而判断设计是否成功。

2.2总设计方案AT89C51单片机的8个发光二极管分别在P1.0〜P1.7接口上链接,P3.4/T0口上也接一个按键,运行keil 进行编程海一次按键通过编程来进行,C语言源程序进行编译、调试通过P11口驱动的发光二极管左移1位的动作来实现,并且与之对应的HEX文件将自动产出,最后将对通讯作者:教传艳(1982-),女,汉族,辽宁沈阳人,沈阳工学院,副教授,硕士,研究方向:计算机基础教学、虚拟现实技术、计算 机辅助机械设计。

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计单片机(Microcontroller)是一种集成了微处理器、存储器和各种输入输出功能的芯片,广泛应用于嵌入式系统中。

AT89C51单片机是英特尔公司生产的一款典型的8位微控制器,其具有强大的功能和灵活的设计特性,被广泛应用于工业控制、汽车电子、消费类电子产品等领域。

在众多应用中,计数器是一种常见的电子器件,被广泛应用于各种领域,比如工业控制、实验测量、智能家居等。

基于AT89C51单片机的计数器设计,可以实现对信号的计数和显示,具有较高的稳定性和可靠性。

本文将介绍基于AT89C51单片机的计数器设计。

首先介绍AT89C51单片机的基本特性和引脚布局,然后讨论计数器的原理和设计思路,最后给出具体的设计方案和实现步骤。

一、AT89C51单片机的基本特性和引脚布局AT89C51是一款高性能、低功耗的8位CMOS微控制器,其主要特性包括:1. 内置4KB闪存程序存储器,用于存储用户程序;2. 128字节RAM,用于存储临时数据和寄存器;3. 32个通用I/O引脚,用于连接外部器件和传感器;4. 完整的串行通信接口(UART),用于与外部设备进行通信;5. 定时器/计数器和PWM输出,用于实现各种定时和计数功能;6. 多种工作模式选择,包括被动低功耗模式和中断工作模式。

AT89C51单片机的引脚布局如下图所示:(图片)P0、P1、P2和P3是AT89C51单片机的四个通用I/O端口,分别具有8个引脚,用于连接外部设备和传感器。

X1和X2是晶体振荡器的输入和输出端,用于提供时钟信号。

RESET 是复位端,用于复位单片机。

EA和PSEN是扩展ROM控制端和程序存储器的读取端,用于外接ROM和实现程序存储。

ALE/PROG是地址锁存器的输入,用于地址总线的多路选择。

RXD 和TXD是串行通信接口的接收和发送端口,用于与外部设备进行通信。

二、计数器的原理和设计思路计数器是一种常用的数字电路,用于对输入信号进行计数和显示。

基于51单片机计算器设计

基于51单片机计算器设计

基于51单片机计算器设计计算器是一种常见的电子设备,可以进行数学运算、数据处理等功能。

本文将基于51单片机进行计算器设计。

一、设计目标:1.实现基本的数学运算功能,如加减乘除、取余等。

2.能够进行复杂的数学运算,如平方、开方等。

3.具备记忆功能,能够存储中间结果和运算符号。

4.设置输入界面,允许用户输入数字和操作符。

5.显示运算结果和中间过程。

二、硬件系统设计:1.使用51单片机作为主控芯片,具有高集成度和处理能力。

2.连接光栅液晶显示屏,用于显示数值和操作符。

3.连接矩阵键盘,用于获取用户的输入。

4.连接电源电路,保证计算器正常运行。

三、软件系统设计:1.确定界面设计,包括数值显示区、操作符显示区和功能键区。

2.设计输入处理模块,根据用户输入获取相应的数值和操作符,并进行相应的处理。

3.设计运算模块,根据用户输入的操作符进行相应的数学运算,并将结果存储起来。

4.设计显示模块,将计算结果和中间过程显示在液晶屏上。

5.设计存储模块,用来存储中间运算结果和操作符号。

四、软件流程设计:1.系统初始化:包括设置显示模式、清零中间结果等。

2.输入处理:通过矩阵键盘输入数字和操作符,并进行相应的处理。

3.运算处理:根据用户输入的操作符,进行相应的数学运算,并将结果存储起来。

4.结果显示:将计算结果和中间过程显示在液晶屏上。

5.存储结果:将计算结果和操作符存储起来,以备后续计算。

五、测试和调试:在设计完成后,需要进行系统测试和调试,确保计算器的各项功能正常运行。

首先进行单元测试,验证各个模块的功能是否按照设计要求正确执行。

然后进行综合测试,模拟用户输入各种情况下的运算过程,检测是否能够正确进行运算并显示结果。

如果发现问题,则进行调试和修改,直到计算器满足设计要求。

六、总结:基于51单片机进行计算器设计,可以实现基本的数学运算功能,并具备记忆功能。

设计步骤包括确定硬件系统和软件系统设计,设计界面、输入处理、运算处理、显示和存储模块,进行测试和调试确保计算器功能正常运行。

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计AT89C51单片机是一种常用的8位单片机,具有计数器功能。

本文将介绍基于AT89C51单片机的计数器设计。

计数器是一种常用的电子设备,用于统计某个事件发生的次数。

在数字电子技术中,计数器可以通过使用触发器和逻辑门来实现。

在AT89C51单片机中,可以通过编程控制来实现计数器功能。

我们需要通过编程配置AT89C51单片机的IO口,使其能够作为计数器的输入和输出端口。

我们可以使用P1口作为计数器的输入端口,通过外部信号来触发计数器的计数动作。

我们可以使用P2口作为计数器的输出端口,将计数结果显示出来。

接下来,我们需要编写程序来实现计数器的功能。

程序的基本思路是通过中断来实现计数器的自动计数。

当接收到外部信号时,中断服务程序会自动执行,对计数器的计数值进行更新,并将结果输出到P2口。

我们可以通过按键来控制计数器的启动和暂停。

具体编程步骤如下:1. 配置P1口和P2口为输入和输出模式,分别作为计数器的输入和输出端口。

2. 初始化计数器的计数值为0。

3. 配置中断,并编写中断服务程序。

中断服务程序在接收到外部信号时,会自动执行,对计数器的计数值进行更新,并将结果输出到P2口。

4. 编写按键处理程序。

按键处理程序会检测按键的状态,如果按下则启动计数器,再次按下则暂停计数器。

5. 主程序中,循环检测按键状态,并根据按键状态调用相应的处理程序。

通过以上步骤,我们可以实现基于AT89C51单片机的计数器设计。

这个设计可以广泛应用于各种计数需求的场合,如物料计数、人员计数等。

基于AT89C51单片机的计数器设计具有成本低、可靠性高等优点,适合在工业控制和自动化领域进行应用。

基于AT89C51单片机的计数器设计是一项有趣且实用的工程,通过合理的硬件配置和编程设计,可以实现各种计数需求的应用。

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

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

基于51单片机的计算器设计一、引言计算器(Calculator)是一种专用的电子计算设备,用于简便地进行基本数学计算。

随着科技的发展,计算器的功能也逐渐丰富,并在日常生活中得到广泛应用。

本文将介绍一种基于51单片机的计算器设计方案,以满足人们对计算器的基本需求。

二、设计方案1.硬件设计(1)51单片机:作为计算器的核心,负责处理各项计算任务。

(2)显示屏:用于显示用户输入的数据和计算结果。

(3)按键模块:用于接收用户输入的数字和操作符。

(4)存储器:用于存储用户输入的数据和计算结果。

(5)电源模块:用于为计算器供电。

2.软件设计计算器的软件设计主要包括输入处理、运算处理和输出显示三个模块。

(1)输入处理:当用户按下数字键或操作符键时,计算器会根据当前输入的字符进行相应的处理。

例如,数字键按下后,将数字添加到当前输入的数字中;操作符键按下后,将当前输入的数字和操作符添加到存储器中。

(2)运算处理:当用户按下等号键时,计算器会根据存储器中的数字和操作符进行相应的运算处理。

例如,当存储器中包含两个数字和一个操作符时,计算器会根据操作符进行相应的运算,并将结果保存到存储器中。

(3)输出显示:当计算器完成运算处理后,将结果显示在显示屏上供用户查看。

同时,计算器还需要提供清除键和退格键等功能,以方便用户进行操作。

三、实现步骤1.初始化:将51单片机的各引脚设置为输入或输出,并设置相应的初始参数。

同时,初始化存储器、显示屏和按键模块等硬件设备。

2.输入处理:通过按键模块检测用户输入,并根据当前输入的字符进行相应的处理。

例如,当用户按下数字键时,将数字添加到当前输入的数字中;当用户按下操作符键时,将当前输入的数字和操作符添加到存储器中。

3.运算处理:当用户按下等号键时,计算器会根据存储器中的数字和操作符进行相应的运算处理。

例如,当存储器中包含两个数字和一个操作符时,计算器会根据操作符进行相应的运算,并将结果保存到存储器中。

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计一、引言AT89C51是一款功能强大的8位单片机,具有丰富的外设和广泛的应用领域。

计数器是单片机应用中常见的功能模块,可以用于测量时间、统计事件次数等。

本文将介绍基于AT89C51单片机的计数器设计,通过软件和硬件相结合的方式,实现一个简单的计数器功能。

二、AT89C51单片机概述AT89C51是Atmel公司生产的一款典型的8位单片机,具有4KB的内部Flash存储器、128字节的RAM、32个I/O引脚以及定时器、串口等丰富的外设。

它采用的是CISC架构,指令集丰富,易于学习和应用。

AT89C51单片机广泛应用于各种嵌入式系统中,包括工业控制、仪器仪表、家电等领域。

三、计数器设计思路在AT89C51单片机中,可以利用其内部的定时器和外部的计数输入引脚,来实现一个简单的计数器功能。

通过配置定时器和外部中断,可以实现对外部信号的计数。

四、软件设计1. 定时器配置我们需要配置定时器作为计数器的计时基准。

AT89C51单片机具有两个定时器,分别为定时器0和定时器1。

在本设计中,我们选择使用定时器0作为计数器的计时基准。

定时器0是一个16位的定时器,可以通过预置初值和计数溢出中断来实现定时功能。

2. 外部中断配置我们需要配置外部中断来实现对外部信号的计数。

AT89C51单片机具有两个外部中断引脚,分别为INT0和INT1。

在本设计中,我们选择使用INT0引脚来接收外部信号,并实现计数功能。

通过配置外部中断0,当外部引脚的信号发生边沿变化时,可以触发外部中断,从而实现对外部信号的计数。

3. 主程序设计在主程序中,我们需要编写相应的中断服务程序来处理定时器0的溢出中断和外部中断0的触发。

在定时器0的溢出中断服务程序中,可以进行计数器的计数逻辑,而在外部中断0的触发中断服务程序中,可以实现计数器的清零和其他操作。

五、硬件设计1. 外部信号输入我们需要设计一个外部信号的输入电路,用于接收外部信号并输入到AT89C51单片机的INT0引脚。

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计一、引言计数器是数字电路中常用的一种电子仪器,用于计算和记录某一事件的频率、周期和脉冲等。

在数字系统中,计数器可以用来实现频率测量、计时器、分频器和脉冲发生器等功能。

本文将基于AT89C51单片机设计一款简单的计数器,用于演示单片机的基本应用和原理。

二、AT89C51单片机简介AT89C51是由Atmel公司生产的一款8位单片机,采用CMOS工艺制造,具有4KB Flash 存储器、128B RAM和32个I/O端口。

其主要特点包括:8位CPU,时钟经过12个时钟脉冲产生1个机器周期,最大工作频率为24MHz,具有2个16位定时/计数器。

三、设计方案基于AT89C51单片机的计数器设计,我们选用其中的一个16位定时/计数器,并通过编程实现计数功能。

设计方案如下:1.使用定时/计数器模块,设置计数器的初始值为0;2.定时/计数器开始计数,每经过一个时钟周期,计数值加1;3.设计好显示模块,将计数器的值通过数码管或LCD显示出来。

四、硬件设计1.单片机选用AT89C51;2.外部晶振选用11.0592MHz,供单片机工作使用;3.数码管模块,用于显示计数器的值;4.按键模块,用于控制计数器的启停及清零操作。

1.初始化程序,设置好定时/计数器和I/O口的工作状态;2.编写中断服务程序,用于定时/计数器溢出时的处理;3.编写计数器启动、停止及清零的控制程序;4.编写主循环程序,实现计数器的实时显示。

六、程序框图七、程序设计八、实验结果经过硬件和软件的设计与开发,成功实现了基于AT89C51单片机的计数器。

在实验中,通过外部晶振驱动单片机,定时/计数器得到了准确的计数值,并通过数码管显示模块实时显示出来。

按键模块可以实现计数器的启停及清零操作。

实验结果符合设计要求,可以满足基本的计数功能。

九、总结本文基于AT89C51单片机设计了一款简单的计数器,通过硬件和软件的设计和开发,实现了对定时/计数器的使用及控制。

基于51单片机为核心的电子计数器设计方案

基于51单片机为核心的电子计数器设计方案

基于51单片机为核心的电子计数器设计方案我们组通过查阅资料,决定用以51单片机为核心设计电子计数器,开机后,设置计数器的初始值,通过加、减键实现向下,或向上计数,通过数码管显示结果,计数结束发出警。

暂停按钮,按下暂停按钮,停止计数,再按下暂停按钮,开始计数。

并设置有复位按钮,回到初始状态。

二.设计方案1.通过up和down按键设定计数预置值。

2.通过stop键开始进入计数。

3.按下计数按键开始逐次累加计数。

1.累加至预定值报警播放一段音乐。

5音乐结束后按两次stop键可以继续计数。

6.按rset键复位,重新开始循环。

元器件清单序号名称型号规格数量1单片机AT89C5112电容20PF23电容22PF14晶振12M15电阻10K16电阻10017上拉电阻RP1RESPACK-818报警器-- 1按键输入时钟及复位电路AT89C51数码管显示报警器代码#include<reg51.h>#define uint unsigned int#define uchar unsigned charsbit up=P1^0;sbit down=P1^3;sbit stop=P1^6;sbit reset=P1^7;sbit Beep=P3^7;uint gw,sw,gww,sww,temp;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7 d,0x07,0x7f,0x6f};uchar code SONG_TONE[]={212,212,190,212,159,169,2 12,212,190,212,142,159,212,212,106,126,159, 169,190,119,119,126,159,142,159,0};uchar code SONG_LONG[]={9,3,12,12,12,24,9,3,12,12,1 2,24,9,3,12,12,12,12,12,9,3,12,12,12,24,0}; void delay(uint z){uint x,y;for (x=z;x>0;x--)for(y=110;y>0;y--);}void PlayMusic( ){uint i=0,j,k;while(SONG_LONG[i]!=0||SONG_TONE[i]!=0) {for(j=0;j<SONG_LONG[i]*20;j++){Beep=~Beep;for (k=0;k<SONG_TONE[i]/2;k++);}delay (10);i++;}}void init( ) {gw=0;gww=0;sw=0;sww=0; temp=0;P0=0;P2=0xff;P3=0xff; Beep=0;P0=table[sw]; P2=table[gw]; IT0=1;EX0=1;}void keyscan( ) {if(temp==0) {if(up==0) {delay(5);if(up==0) {while(!up);if(gw==9) {gw=0;P2=table[gw]; if(sw==9) {sw=0;P0=table[sw]; }else{sw++;P0=table[sw]; }}Y报警器播放按下rest 键复位是否达到 设定初值计数键按下开始计数设定初值按下STOP 开始计数计数键按下开始计数开始N。

(完整)基于51单片机的简易计算器设计

(完整)基于51单片机的简易计算器设计

(完整)基于51单片机的简易计算器设计基于51单片机的简易计算器设计计算器作为一种常见的电子设备,既能满足日常生活的计算需求,又能帮助人们提高工作效率。

本文将介绍基于51单片机的简易计算器的设计。

该计算器具备加减乘除的基本计算功能,并支持用户输入和结果显示。

下面将从材料准备、电路连接和程序设计三个方面详细介绍该计算器的设计。

一、材料准备在设计计算器之前,我们需要准备以下材料:1. 51单片机开发板:用于控制计算器的整个运行过程;2. 液晶显示屏:用于显示用户输入的数字和计算结果;3. 数字按键:用于用户输入数字和运算符;4. 连接线:用于连接51单片机开发板、液晶显示屏和数字按键。

二、电路连接1. 连接液晶显示屏和51单片机开发板:将液晶显示屏的VCC、GND、SCL和SDA引脚分别与开发板上对应的引脚连接。

2. 连接数字按键和51单片机开发板:将数字按键的引脚依次与开发板上的IO口引脚连接,其中有一根引脚需要连接到开发板的中断口。

三、程序设计1. 初始化设置:在程序开始时,进行液晶显示屏和数字按键的引脚初始化设置,以及相应的中断设置。

2. 输入处理:通过数字按键输入,获取用户输入的数字和运算符,并将其保存到相应的变量中。

3. 运算处理:根据用户输入的运算符,对相应的数字进行加、减、乘、除的运算,并将结果保存到一个变量中。

4. 结果显示:将运算结果显示在液晶显示屏上,以便用户查看计算结果。

5. 重置处理:在每次运算结束后,对相关变量进行重置,以便下一次计算。

通过以上程序设计,我们可以完成基于51单片机的简易计算器的设计。

在实际使用过程中,用户只需要通过数字按键输入相应的数字和运算符,计算器就可以自动进行运算,并将结果显示在液晶显示屏上,方便用户进行查看。

总结本文介绍了基于51单片机的简易计算器的设计。

通过合理的材料准备、电路连接和程序设计,我们可以实现一个具备加减乘除功能的计算器。

该计算器不仅能满足人们日常的计算需求,还能帮助提高工作效率。

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

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

基于51单片机的简易计算器设计设计一个基于51单片机的简易计算器,主要功能包括加减乘除四则运算和百分数计算。

下面是设计的详细步骤:1.硬件设计:-使用51单片机作为主控芯片。

-连接16x2的LCD显示屏,用于显示输入和计算结果。

-连接16个按键开关,用于输入运算符和数字。

-连接4个LED灯,用于指示四则运算的选择。

2.软件设计:-初始化LCD显示屏,并显示欢迎信息。

-监听按键输入,在接收到输入后,根据输入的按键值判断操作类型。

-如果按键值对应数字键,保存输入的数字,并在LCD上显示当前输入的数字。

-如果按键值对应四则运算符(+、-、*、/),保存当前输入的数字,并保存运算符。

-如果按键值对应等号(=),根据保存的数字和运算符进行相应的运算,计算结果保存并显示在LCD上。

-如果按键值对应清零(C),将所有保存的数据清空,并显示初始状态。

-如果按键值对应百分号(%),将当前数字除以100并显示在LCD上。

3.主要函数说明:- void init_lcd(:初始化LCD显示屏。

- void display_lcd(char* str):将指定字符串显示在LCD上。

- void clear_lcd(:清空LCD显示屏。

- char get_key(:获取按键输入的值。

- void calculate(:根据保存的数字和运算符进行计算。

- void add_digit(char digit):将输入的数字添加到当前数字中。

- void set_operator(char op):保存运算符。

- void clear_data(:清空所有保存的数据。

4.主要流程:-初始化LCD显示屏并显示欢迎信息。

-在循环中监听按键输入,并根据输入的按键值进行相应的操作。

-根据不同的按键值,调用不同的函数进行处理。

-最后计算结果显示在LCD上。

以上是基于51单片机的简易计算器设计的详细步骤和主要函数说明。

你可以根据这个设计框架进行具体的代码实现。

基于51单片机简易计算器课程设计报告(一)

基于51单片机简易计算器课程设计报告(一)

基于51单片机简易计算器课程设计报告(一)基于51单片机简易计算器课程设计报告1. 介绍在本次课程设计中,我设计了一个基于51单片机的简易计算器。

本报告将会详细介绍该计算器的设计思路、功能实现以及课程设计中遇到的问题与解决方法。

2. 设计思路功能需求•支持基本的加、减、乘、除运算•具备数字输入与显示功能•具备清零和等于功能•具备连续计算功能硬件设计本计算器的硬件设计主要包括51单片机、LCD显示模块以及按键输入模块。

其中,51单片机负责控制计算器的逻辑,LCD显示模块用于显示计算结果和用户输入,按键输入模块用于接收用户的输入。

软件设计计算器的软件设计主要分为以下几个部分: - 初始化:初始化51单片机、LCD模块以及按键模块。

- 按键扫描:通过扫描按键模块,获取用户的输入。

- 数字输入与显示:根据用户输入,将数字显示在LCD上。

- 运算逻辑:根据用户输入的运算符和数字,执行相应的计算操作,并将结果显示在LCD上。

3. 功能实现初始化在初始化阶段,我们需要初始化51单片机的GPIO口、LCD模块以及按键模块。

具体的初始化代码如下:// 初始化51单片机的GPIO口// 初始化LCD模块// 初始化按键模块按键扫描为了获取用户的输入,我们需要通过按键模块进行扫描。

具体的按键扫描代码如下:// 扫描按键模块// 如果检测到按键按下,则进行相应的处理数字输入与显示当用户按下数字键时,我们将获取到的数字输入缓存起来,并将其显示在LCD上。

具体的数字输入与显示代码如下:// 获取按键输入的数字// 将数字添加到输入缓存// 将输入缓存显示在LCD上运算逻辑当用户按下运算符键时,我们需要根据输入的数字和运算符执行相应的计算操作,并将结果显示在LCD上。

具体的运算逻辑代码如下:// 获取运算符输入// 根据运算符和输入的数字执行相应的计算操作// 将计算结果显示在LCD上清零和等于功能为了提升用户体验,我们还可以添加清零和等于功能。

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

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

基于51单片机的计数器设计单片机课程设计目录111 课程设计的目的1.利用单片机定时器/计数器中断设计计数器,0到99的累加。

2.综合运用所学的《单片机原理与应用》理论知识,通过实践加强对所学知识的理解,具备设计单片机应用系统的能力。

3.通过本次课程设计加深对单片机掌握定时器、外部中断的设置和编程原理的全面认识复习和掌握,对单片机实际的应用作进一步的了解。

4.通过本次试验,增强自己的动手能力。

认识单片机在日常生活中的应用的广泛性,实用性。

明确学习目的,端正学习态度,提高对课程设计重要性的认识,以积极认真的态度参加课程设计工作,按要求完成规定的设计任务。

2 设计思路本实验利用单片机的定时器/计数器定时和计数的原理,通过采用仿真软件来模拟实现。

模拟利用AT89C2052单片机、LED数码管以及各种控制器件来控制表的计数以及计数的开启/计数与复位等。

利用单片机AT89S51单片机来制作一个手动计数器,在AT89S51单片机的P3.7管脚接一个轻触开关,作为手动计数的按钮,用单片机的P2.0-P2.7接一个共阴数码管,作为00-99计数的个位数显示,用单片机的P0.0-P0.7接一个共阴数码管,作为00-99计数的十位数显示,用单片机P1.0-P1.6接一个并排的7个LED灯,作为00-99计数的二进制显示。

设计总图如图2-1所示1图2-1 设计总图3 设计过程3.1 方案论证AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

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

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

《单片机技术及其应用》课程设计报告专业:通信工程班级:09312班姓名:某某某学号:09031069指导教师:二0一二年六月十八日目录1设计目的 (1)2 设计题目描述与要求 (1)3 设计过程 (2)4硬件总体方案及说明 (7)5 软件总体方案及设计流程 (11)6 调试与仿真 (16)7 心得体会 (18)8 指导老师意见 (19)9 参考文献 (19)附录一 (19)附录二 (31)基于51单片机的数字计算器的设计1设计目的简易计算器的原理与设计是单片机课程设计课题中的一个。

在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用和单片机完整程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。

单片机课程设计既巩固了课本学到的理论,还学到了单片机硬件电路和程序设计,简易计算器课程设计通过自己动手用计算机电路设计软件,编写和调试,最后仿真,来加深对单片机的认识,充分发挥我们的个人创新和动手能力,并提高我们对单片机的兴趣,同时学习查阅资料、参考资料的方法。

本设计是基于51系列的单片机进行的简易计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED 上相应的显示结果。

设计过程在硬件与软件方面进行同步设计。

硬件选择AT89C51单片机和74ls164,输入用4×4矩阵键盘。

显示用5位7段共阴极LED静态显示。

软件从分析计算器功能、流程图设计,再到程序的编写进行系统设计。

选用编译效率最高的Keil软件进行编程,并用proteus仿真。

2 设计题目描述与要求基于AT89C51数字计算器设计的基本要求与基本思路:(1)扩展4*4键盘,其中10个数字,5个功能键,1个清零(2)使用五位数码管接口电路(3)完成十进制的四则运算(加、减、乘、除)(4)实现低于三位小于255数字的连续运算(5)使用keil 软件编写程序(6)最后用ptoteus 仿真3 设计过程3.1设计思路按照2的设计要求,本课题需要使用数码管显示和扩展4*4键盘,由于实验箱的硬件电路已经固定,故选择串行静态显示和用P1口扩展4*4键盘,扩展的4*4键盘定义十个数字键,六个功能键,使用串行静态显示显示运算结果。

基于51单片机的零件计数器设计_-_

基于51单片机的零件计数器设计_-_
单片机课程设计报告
题 目零件计数器
专 业通信工程
学 号
姓 名
指导教师玉宏
学 校河海大学校区
摘要:
零件计数器生产实践中具有很实际的用途,我们所设计的零件计数器的功能是把接在INT0上的单稳信号当作零件信号,每来一个零件,单片机计数一次,当计满10次时,蜂鸣器发出一声警告音,并使继电器闭合一次,产生零件打包动作,要求LED上显示当前一共生产了多少零件,并能通过串口将零件数目发送给PC机。选择这个项目可以帮助我们更加了解中断、定时器及串口是如何工作的,提高对实际问题的动手操作能力以及解决问题的能力。
LedOut1[1] = count2%100/10 + 0x30;
LedOut1[0] = count2%10 + 0x30;
SBUF = LedOut1[3];
while(!TI);
TI = 0;
SBUF = LedOut1[2];
while(!TI);
TI = 0;
SBUF = LedOut1[1];
I部分电路为蜂鸣器和继电器电路。
蜂鸣器采用9012三极管驱动,其基极接到RD端,当RD端为低电平时,三极管导通,蜂鸣器响。否则关断。
继电器采用9013三极管驱动,其基极接到WR端,当WRD端为低电平时,三极管关断,继电器不吸合,常闭触点闭合,常开触点打开,D1熄灭;反之则反。
2、实验过程与结果
2.1 程序设计
case 2:P2 = 0xdf;break;
case 3:P2 = 0xef;break;
}
delay(5);
}
}
/*******蜂鸣器函数*************/
void beep()
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机课程设计报告题目零件计数器专业通信工程学号姓名指导教师刘玉宏学校河海大学常州校区摘要:零件计数器生产实践中具有很实际的用途,我们所设计的零件计数器的功能是把接在INT0上的单稳信号当作零件信号,每来一个零件,单片机计数一次,当计满10次时,蜂鸣器发出一声警告音,并使继电器闭合一次,产生零件打包动作,要求LED上显示当前一共生产了多少零件,并能通过串口将零件数目发送给PC机。

选择这个项目可以帮助我们更加了解中断、定时器及串口是如何工作的,提高对实际问题的动手操作能力以及解决问题的能力。

本课程采用C51编写程序,通过Keil C编写为机器代码,烧写入单片机中,在实验箱上进行操作,完成单片机这种实用工具的整体的学习。

关键字:单片机零件计数器LED显示串口通信目录一、系统设计1.1主要组件及电路框图 (4)1.2软件设计方框图及流程图 (5)1.3电路功能 (7)二、实验过程及结果2.1 程序设计 (9)2.2调试过程 (13)2.3问题及解决 (13)2.4调试结果 (13)三、结论3.1课程设计特点及贡献 (14)3.2改善建议 (14)3.3心得体会 (14)参考文献 (15)附录 (16)一、系统设计1.1 主要组件及电路框图本课程设计使用的实验箱主要由单片机最小系统,LED 数码管显示部分,外部中断控制部分,独立式与行列式键盘按键输入部分,串行口通信部分,蜂鸣器与继电器等部分组成。

电路总图与功能如图所示,每当来一次外部中断时,内部计数一次,并将数值通过4位共阴数码管动态显示出来。

而单片机的P2口可以选择四根不同的数码管来动态显示,通过视觉暂留达到同时显示的效果。

同时内部程序检测每当计数十次时,会形成一个继电器闭合的零件打包动作,并通过程序使得蜂鸣器发出警报。

复位INT0P0单片机 AT89C52 P2P38个限流电阻蜂鸣器 继电器4位共阴数码管动态显示选位1.2 软件设计框图及流程图零件计数器系统由多个函数构成,其中包括主函数,初始化函数,延时函数,串口发送函数,蜂鸣器函数,继电器函数等。

数码管动态显示显示子函数延时函数单片机零件计数器软件系统各个函数框图串口和外部中断初始化函数主函 数蜂鸣器函数继电器函数串口通信函数流程图:开始初始化零件数为0LED动态显示是否按下S_INT0?零件数加1LED动态显示零件数是十的倍数?蜂鸣器响一次,继电器闭合,执行零件打包执行串口发送函数是否按下复位键否否否是是是1.3主要电路功能B部分是单片机的最小系统部分,单片机为内含8K FLASH程序存储器的STC89C52RC,EA接高电平;各并行口都加了10K的上拉电阻;晶振为11.0592M。

设置了上电复位和手动复位电路。

S1为手动复位按钮。

C部分电路由4位一体的数码管LED1、单个数码管LED2和8个独立发光二极管L1-L7组成。

这3个部分都是共阴结构,并联在一起,连接在P0口上。

LED1用于完成LED动态显示实验,各个位选线为P24-P27,段码由P0口输出;LED2的COM端接地,完成LED静态显示实验;L1-L7,可以方便地读出P0输出的二进制数据,亦可做流水灯实验。

7407在此起驱动作用。

I部分电路为蜂鸣器和继电器电路。

蜂鸣器采用9012三极管驱动,其基极接到RD端,当RD端为低电平时,三极管导通,蜂鸣器响。

否则关断。

继电器采用9013三极管驱动,其基极接到WR端,当WRD端为低电平时,三极管关断,继电器不吸合,常闭触点闭合,常开触点打开,D1熄灭;反之则反。

二、实验过程与结果2.1 程序设计#include<reg52.h>#define uint unsigned int#define uchar unsigned char/*******LED 的字模,共阴数码管0-9*************/uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};uint count1 = 0; //定义计数变量uint count2 = 0;uint Leout[4];sbit Beep = P3^7; //定义蜂鸣器对应单片机引脚sbit RELAY = P3^6; //定义继电器对应单片机引脚/*******延时函数*************/void delay(uint z){uint i、j;for(i=z; i > 0; i--)for(j = 110; j > 0; j--);}/*******数码管动态显示函数*************/void display(){uchar i;LedOut[3] = table[count2%10000/1000];LedOut[2] =table[count2%1000/100];LedOut[1] = tablecount2%100/10];LedOut[0] = table[count2%10];for( i=0; i<4; i++){P0 = LedOut[i];switch(i){case 0:P2 = 0x7f;break;case 1:P2 = 0xbf;break;case 2:P2 = 0xdf;break;case 3:P2 = 0xef;break;}delay(5);}}/*******蜂鸣器函数*************/void beep(){Beep = 0;delay(100);Beep = 1;}/*******继电器函数*************/void relay(){RELAY = ~RELAY;}/*******串口发送函数*************/ void send(){uchar LedOut1[4];LedOut1[3] = count2%10000/1000 + 0x30;LedOut1[2] = count2%1000/100 + 0x30;LedOut1[1] = count2%100/10 + 0x30;LedOut1[0] = count2%10 + 0x30;SBUF = LedOut1[3];while(!TI);TI = 0;SBUF = LedOut1[2];while(!TI);TI = 0;SBUF = LedOut1[1];while(!TI);TI = 0;SBUF = LedOut1[0];while(!TI);TI = 0;SBUF = '\n';while(!TI);TI = 0;}/*******外部中断0函数*************/ void counter() interrupt 0{EX0=0;count1++; //中断计数count2++;send();EX0=1;}/*******串口初始化函数*************/ void initUart(void){TMOD|=0x20;SCON=0x50;PCON&=0x7f;TH1=0xfd;TL1=0xfd;TR1=1;}/*******主函数*************/ void main(){initUart();IT0=1; //下降沿触发EA=1; //开外部中断EX0=1;while(1){display();if(count1==10){count1 = 0;beep();relay();}}}2.2调试过程由于单片机实验箱的存在,因此硬件部分无需做过多准备,主要是进行软件程序方面的调试。

程序的调试我们是分一个一个模块进行的,具体的顺序是先进行数码管动态显示模块的调试,然后是蜂鸣器和继电器的调试,最后是串口通信的调试。

这样调试的好处是,当某一个功能没有实现时,我们可以知道是哪一段程序出了问题,可以迅速地对其修改,直到每个模块都能正确而准确地完成各自的功能为止。

等到所有的模块调试完毕,就能实现零件计数器的功能。

这样与整体调试相比,等到出现问题,再一个个地去找是哪一段程序发生了错误,大大地提高了工作效率,节省了时间。

2.3问题与解决问题一:蜂鸣器的声音太小,几乎无法听到。

解决方案:改变蜂鸣器的延时时间,直到合适为止。

问题二:数码管动态显示的调试时,显示的数字闪的比较厉害。

经过多次调试,最终取得了比较好的显示效果。

解决方案:是因为数码管显示延迟的时间太短,改变延时的时间,直到调试成功。

问题三:进行的串口调试时,PC机但发现收到的数据是乱码,不是发送的数据。

解决方案:把发送的数据由十六进制显示改为字符显示,在程序中也有所调整后,发现PC机收到的数据即是当前的计数数据。

2.4调试结果经过反复调试,最终解决了遇到的问题,较好地实现了零件计数器的功能:1、每来一个零件,单片机计数一次,LED上显示当前一共生产了多少零件;2、当计满10次时,蜂鸣器发出一声警告音,并使继电器闭合一次,产生零件打包动作;3、可以通过串口在PC上显示零件个数。

三、结论3.1 本课程设计的主要特点及贡献本次课程设计的主要特点是利用C51编程实现基于单片机的零件计数器,而非使用汇编语言。

在编程中,要学会写出各种子程序,然后合理的调用它们,还要根据实际显示结果不断地去修改和完善,使其最终显示出符合要求的结果。

设计中用到烧写工具以及串口助手等软件工具,无需考虑硬件设计,只需完成软件设计部分。

本次课程设计完成了基于单片机的零件计数器的设计,不仅考察了我对于单片这门课的学习掌握情况,还考察了我对C语言的基础知识是否扎实,让我们学会将各学科的知识融会贯通。

3.2 改善建议本课程设计中还有一些需要改善的方面:一、当零件计满10个时,继电器闭合一次,产生零件打包动作,却不能够显示打包的次数,可以设计一段可以显示打包次数的程序。

二、可以通过一些记忆芯片,实现当前计数结果的保存,一共查询及对数据的相关处理。

3.3 心得体会通过这学期对单片机这门课程的学习,我对单片机的原理和运用有了一定的了解。

但是当自己动手去设计零件计数器时,还是遇到了很多的问题。

程序出现了许多错误,使得调试时无法成功。

我们选择的零件计数器考功能是当来一次外部中断时,内部计数一次,并将数值通过4位共阴数码管动态显示出来。

而单片机的P2口可以选择四根不同的数码管来动态显示,通过视觉暂留达到同时显示的效果。

同时内部程序检测每当计数十次时,会形成一个继电器闭合的零件打包动作,并通过程序使得蜂鸣器发出警报。

考查的主要是中断、定时器、串口通信部分的内容。

考试后对单片机的许多内容都有了一点生疏,经过这段时间的学习,我对过去所学的知识进行了温习,对我的课题零件计数器所用到的知识也进行了专门的梳理和消化。

相关文档
最新文档