AT89C51单片机开发板程序

合集下载

基于AT89C51单片机的最小系统设计

基于AT89C51单片机的最小系统设计

基于AT89C5仲片机的最小系统设计组员:田竹、王维、袁倍明摘要:本次实验课题为设计一个基于AT89C51单片机的最小系统。

用P1 口设计流水灯,用P2 口和P0 口分别作段选和位选设计了六位数码管的静动态显示和简易的电子钟,用P3 口设计了一个4*4的矩阵键盘,并用蜂鸣器实现了唱歌功能和键盘按下的声响,用62256扩展内部RAM,还扩展并实现了LCD1602的静动态显示,最后通过ADC0809和DAC0832分别实现了A/D、D/A转换功能。

一、系统电源用MC7805集成稳压器将输入电压转为+5V稳压给系统供电二、晶振(12MHZ )及复位电路采用12MHz的外部晶振,给系统提供时钟信号。

并采用了按键复位电路。

LJMP LOOPDLY:MOV R7,#250 ;延时子程序 DLY1: MOV R6,#200DJNZ R6,$ DJNZ R7,DLY1 RET 源程序:ORG 0000HLJMP START ORG 0100H START:MOV P0,#0 MOV P2,#0F9HSETB P0.0 LCALL DELAY CLR P0.0 MOV P2,#0C4H源程序: 流水灯116 D3U1 2 1T°3■EKSK"--------- ---1 1亠门7 rS-------- 1^EHZFHk.11~6二93ICMrn寸9日。

日日日。

日且Q26LEDq o pJ3 p1…「zgLo o 二o1 d—-1--1、流水灯功能描述:让8个led 灯循环闪烁 D2*5V| LEDORes Pack436ORPIOPll P12P13P14P15P16数码管动态显示窝21END四、数码管功能描oSETB P0.1LCALL DELAYCLR P0.1MOV P2,#0D0HSETB P0.2LCALL DELAYCLR P0.2MOV P2,#99HSETB P0.3LCALL DELAYCLR P0.3MOV P2,#92HSETB P0.4LCALL DELAYCLR P0.4MOV P2,#82HSETB P0.5LCALL DELAYCLR P0.5LJMP STARTDELAY: MOV R5,#10D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RETEND五、4*4矩阵键盘和蜂鸣器功能描述:通过按键让数码管显示0-F,按键按下时,蜂鸣器响一下LSIP2_ Speaker —GND源程序:ORG 0000HLJMP MAINORG 0100HMAIN: MOV P0,#0FFHMOV B,#4MOV P3,#0F0H;列置0,看行电平JNB P3.4,L1JNB P3.5 ,L2JNB P3.6 ,L3JNB P3.7 ,L4AJMP MAINL1: MOV R1,#0AJMP LL1L2: MOV R1,#1AJMP LL1L3: MOV R1,#2AJMP LL1L4: MOV R1,#3AJMP LL1LL1: ACALL DL10MS;消抖MOV A,P3XRL A,#0F0HJZ MAINMOV P3,#0FH;行置0,看列电平JNB P3.0,L5JNB P3.1 ,L6JNB P3.2 ,L7JNB P3.3 ,L8L5: MOV 20H,#0AJMP KEYL6: MOV 20H,#1AJMP KEYL7: MOV 20H,#2AJMP KEYL8: MOV 20H,#3AJMP KEYKEY:MOV A,R1; 计算键值并查表赋值MUL ABADD A,20HMOV R2,AMOV DPTR,#TABLEMOV A,R2MOVC A,@A+DPTRMOV P2,ACALL BEEP_BLLCALL DELAYLJMP MAINBEEP_BL: CLR P2.7;蜂鸣器子程序ACALL DELAY SETBP2.7 RETDELAY: MOV R5,#50延时D1: MOV R6,#20D2: MOV R7,#50DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RETDL10MS:MOV R7,#05HLOOP1: MOV R6,#0F9HLOOP2:NOPNOPDJNZ R6,LOOP2DJNZ R7,LOOP1RETTABLE:DB 0A0H,0F9H,0C4H,0D0H,99HDB 92H,82H,0F8H,80H,90HDB 88H,83H,0A6H,0C1H,86H DB 8EHEND六、时钟功能描述:在数码管上实现时钟功能,并通过矩阵键盘的调时,调分。

AT89C51单片机程序

AT89C51单片机程序
{
ch451_write(display[0]+0);
}
}
else if(!stop_flag)
{
ch451_write(display[0]+BCD[miaoge]);
}
}
void key_Recognize()
{
switch(ch451_key)
//beep=~beep;
miaoge++;
}
}
else if(stop_flag)
{
timecount=0;
ss_flag=~ss_flag;
}
}
}
void ch451_inter() interrupt 3
{
#include<reg52.h>
#include"ch451.h"
sbit beep=P2^6;
uchar timecount=0;
uint count;
extern uchar shishi,shige,fenshi,fenge,miaoshi,miaoge;
extern bit stop_flag,ss_flag;
num=1;
}break;
case 0x49: delay(65000);
num--;
if(num<1)
{
num=6;
}
break;
case 0x43:delay(65000);
//*****************************************************

基于AT89C51单片机频率计的设计(含程序)

基于AT89C51单片机频率计的设计(含程序)

AT89C51单片机频率计的设计摘要基于在电子领域内,频率是一种最基本的参数,并与其他许多电参量的测量方案和测量结果都有着十分密切的关系。

由于频率信号抗干扰能力强、易于传输,可以获得较高的测量精度。

因此,频率的测量就显得尤为重要,测频方法的研究越来越受到重视。

频率计作为测量仪器的一种,常称为电子计数器,它的基本功能是测量信号的频率和周期频率计的应用范围很广,它不仅应用于一般的简单仪器测量,而且还广泛应用于教学、科研、高精度仪器测量、工业控制等其它领域。

随着微电子技术和计算机技术的迅速发展,特别是单片机的出现和发展,使传统的电子侧量仪器在原理、功能、精度及自动化水平等方面都发生了巨大的变化,形成一种完全突破传统概念的新一代侧量仪器。

频率计广泛采用了高速集成电路和大规模集成电路,使仪器在小型化、耗电、可靠性等方面都发生了重大的变化。

目前,市场上有各种多功能、高精度、高频率的数字频率计,但价格不菲。

为适应实际工作的需要,本次设计给出了一种较小规模和单片机(AT89C51)相结合的频率计的设计方案,不但切实可行,而且体积小、设计简单、成本低、精度高、可测频带宽,大大降低了设计成本和实现复杂度。

频率计的硬件电路是用Ptotues绘图软件绘制而成,软件部分的单片机控制程序,是以KeilC做为开发工具用汇编语言编写而成,而频率计的实现则是选用Ptotues仿真软件来进行模拟和测试。

关键词:单片机;AT89C51;频率计;汇编语言选题的目的意义数字频率计的主要功能是测量周期信号的频率。

其基本原理就是用闸门计数的方式测量脉冲个数。

频率是单位时间( 1s )内信号发生周期变化的次数。

如果我们能在给定的 1s 时间内对信号波形计数,并将计数结果显示出来,就能读取被测信号的频率。

数字频率计首先必须获得相对稳定与准确的时间,同时将被测信号转换成幅度与波形均能被数字电路识别的脉冲信号,然后通过计数器计算这一段时间间隔内的脉冲个数,将其换算后显示出来。

AT89C51单片机课程设计 抢答器设计

AT89C51单片机课程设计 抢答器设计

一.需求分析1.设计目的现如今电视节目日益丰富其中的竞赛环节也越来越多,其中智力抢答器是不可或缺的器材。

在本学期学习了单片机这门课之后,我们小组成员觉得可以试着自己来实现抢答器的功能,令它能准确、公正、直观地判断出第一抢答者,并通过抢答器的数码管显示和蜂鸣器报警指出抢答组别。

我们最终做出一种数字式抢答器的设计方案,通过Proteus设计完成,利用WAVE6000软件编辑程序,仿真验证,适用于多种竞赛场合。

2.设计要求设计一个用于智力竞赛的抢答器,其功能的实现是由单片机控制的,满足(1)能容许2-6组进行抢答。

(2)能显示抢答组号。

(3)各组记分,并能记分显示。

(4)比赛结束时,能发出报警声。

二.设计方案在设计中采用的单片机是AT89C51,它主要负责控制各个部分协调工作。

P1.0和P1.7由裁判控制,分别是抢答开始和停止键。

P1.1—P1.6是6组抢答的输入口,按下对应按钮即为抢答。

P0口为数码管的段选口,位选口用的是P2口的低4位,外部中断0。

外部中断1,P3.3用于控制有组答题完成后结束计时。

P3.4—P3.5分别实现了分数的加一和减一。

P3.6为蜂鸣器的控制口。

外部中断和内部中断并存,单片机有硬件复位端,只要输入持续4个机器周期的高电平即可实现复位。

外部还接有蜂鸣器用来发出报警音。

采用7SEG-MPX4-CC-BLUE显示,它是共阴极的由高电平点亮。

系统仿真用到了WAVE6000和Proteus软件,通过仿真可以显示所设计系统的功能,对于程序的调试等有很大的帮助。

三.硬件设计1.电路原理图图3.1 电路原理图2.总体设计电路图整个系统分为:外部振荡电路、复位电路、加减分电路及蜂鸣器报警电路、抢答电路及裁判控制开始停止电路、数码管显示电路几个部分本设计的核心是单片机AT89C51。

AT89C51 提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。

at89c51最简单的应用电路及其程序编写

at89c51最简单的应用电路及其程序编写

at89c51最简单的应用电路及其程序编写文章标题:AT89C51最简单的应用电路及其程序编写主题词:AT89C51、应用电路、程序编写导语:AT89C51是一款经典的单片机芯片,具有广泛的应用领域。

本文将深入探讨AT89C51的最简单应用电路及其程序编写,旨在帮助读者全面、深入地理解这一主题。

一、AT89C51概述AT89C51是一款8位微控制器,由恩智浦(NXP)公司生产。

它采用MCS-51指令集架构,具有4KB的闪存和128字节的RAM,以及 32 个I/O 引脚,适用于各种嵌入式系统设计。

作为一款经典产品,AT89C51在工业控制、汽车电子、家用电器等领域都有着重要的应用。

二、AT89C51的最简单应用电路针对AT89C51的最简单应用电路,我们选取了典型的晶振外部工作方式,以便展示AT89C51的基本工作原理。

该电路包括AT89C51芯片、12MHz晶振、液晶显示模块、热敏电阻和数码管等元件。

通过连接这些元件,我们可以实现一个简单的温度检测系统,并通过数码管显示温度数值。

三、程序编写在进行AT89C51程序编写时,我们需要首先了解MCS-51指令集的基本结构和指令格式。

根据我们设计的应用功能,编写相应的C语言程序,并通过Keil C51等IDE软件进行编译和下载。

在程序编写的过程中,我们需要充分考虑AT89C51的资源限制和时钟频率,以确保程序的稳定性和高效性。

四、个人观点和理解作为一款经典的单片机芯片,AT89C51在嵌入式系统设计中具有重要的地位。

通过设计简单的应用电路和进行程序编写,我们可以更好地认识和理解AT89C51的工作原理和应用特点。

AT89C51也可以作为学习嵌入式系统的良好教学工具,帮助学习者快速掌握单片机的设计和编程技能。

总结通过本文的探讨,我们详细介绍了AT89C51的最简单应用电路及其程序编写。

通过这一过程,我们对AT89C51的工作原理和应用有了更深入的了解,也为后续的单片机设计和编程打下了坚实的基础。

AT89C51单片机最小化系统

AT89C51单片机最小化系统

AT89C51单片机最小化系统目录1引言.......................................................................................1 2总设计方案 (1)2.1 设计思路 (1)2.2 单片机介绍 (1)2.3 电动车介绍 (1)2.4 方案论证 (1)2.5 设计框图.....................................................................13设计原理 (2)3. 1硬件设计 (2)3.1.1最小系统 (2)3.1.2控制电路 (3)3.1.3驱动电路 (3)3.1.4显示电路 (4)3.2保护电路 (4)3. 2. 1 过流、欠压保护电路 (4)3. 2(2 刹车保护 (5)3.2.3低压指示灯 (5)3.3 软件设计 (5)3.3.1主程序设计………………………………………………6 4结束语…………………………………………………………………6 参考文献……………………………………………………………………7 附录1.......................................................................................8 附录2 (9)基于单片机控制的电动车控制器摘要:电动车成为人类生活中越来越重要的交通工具。

电动车控制器主要有单片机、ADC0809、霍尔传感器、74LS164等组成。

通过单片机控制电动车,使电动机转速发生变化达到对电动车的控制的目的。

该设计具有结构简单、性能可靠使用方便、可实现较复杂的控制、具有防飞车保护和低压保护等重要的功能。

关键词:电动车单片机 ADC0809 A44E1 引言单片机的出现给人类生活带来加大方便,使控制系统简单化。

本设计主要是设计一个由单片机控制的电动车控制系统,操作者可通过单片机系统控制电动车的转速,其旋转速度和当前电量可以在数码管上显示出来。

AT89C51 52 55单片机编程器(烧写器)制作

AT89C51  52  55单片机编程器(烧写器)制作

AT89C51/52/55单片机编程器(烧写器)制作--------------------------------------------------------------------------------AT89C51/52/55单片机编程器(烧写器)制作AT89C51是一款应用最为广泛的8051单片机,更重要的是他具有反复烧写(FLASH)的特性。

一般情况下可重复烧写1000次,这样为初学者试验提供了一个廉价的平台。

为了满足广大单片机爱好者动手的需要,本人利用半个月的时间,参考国外资料,实际设计制作成功一款简单的AT89C51/52/55单片机编程器。

由于单片机编程时序不同,这一款编程器仅仅支持ATMEL 公司的AT89C51, AT89C52, AT89C55芯片,不支持华邦或飞利浦兼容芯片。

下面是单片机编程器电路图.注:元器件清单见附录工作原理简述:Q2, Q4以及周围的几个元件构成了电平转换电路,这样节省了1片max 232芯片,在要求不高的场合,这个电路在单片机通信中可以取代MAX232。

Q1, R2,R4,DW2,4个元件为编程器提供烧写用12V电压,其中,R4, R2构成了分压电路;平时,*芯片89C51第13脚(P3.3)输出高电平,Q1导通,R2(1K)将DW2(12V)拉低,此时DW2电压由R4,R2 分压,大约3-5V 之间;当写程序时,*芯片第13脚(P3.3)输出低电平,Q1截止,DW2(12V)直接送到被烧芯片的31脚,从而提供烧写电压。

ATMEL官方网站提供的编程器器烧写电压是用LM317调整得到的,并且用到了两个高精度电阻,电路复杂且成本高,该电路经过本人数百台的实验证明非常稳定可靠.电源变压器要求为15V的电源,例如常见的3-12V直流可调电源,注意其空载电压不要低于13V , 滤波应好一些,否则可能出现编程不可靠的情况。

*芯片用IC座安装,另外找一个编程器烧写好*程序EZ51.HEX后插入,方便调试。

51单片机电子秤程序设计

51单片机电子秤程序设计

51单片机电子秤程序设计概述本文档介绍了如何使用51单片机(AT89C51)设计一个简单的电子秤程序。

通过该程序,电子秤能够测量物体的重量并实时显示在液晶显示屏上。

硬件准备在开始编写程序之前,我们需要准备以下硬件设备:- AT89C51单片机开发板- 电子秤传感器模块- 16x2液晶显示屏- 连接线程序设计以下是该电子秤的主要程序设计步骤:1. 引入必要的头文件include <reg51.h>include <lcd.h>2. 定义端口和变量sbit DOUT = P3^7; // 电子秤传感器数据接口float weight = 0; // 测量到的重量3. 初始化液晶显示屏void lcd_init(){// 在这里初始化液晶显示屏的相关设置}4. 启动AD转换void start_conversion(){// 在这里启动AD转换,将传感器的模拟数据转换为数字数据}5. 读取AD转换结果float read_conversion(){// 在这里读取AD转换结果并返回}6. 主程序void main(){lcd_init(); // 初始化液晶显示屏while (1){start_conversion(); // 启动AD转换weight = read_conversion(); // 读取AD转换结果// 将重量显示在液晶显示屏上lcd_gotoxy(1, 1); // 设置光标位置lcd_print("Weight: %.2f kg", weight); // 显示重量delay(500); // 延时一段时间,以控制刷新速度}}总结通过以上步骤,我们可以设计一个简单的51单片机电子秤程序。

该程序可以实时获取电子秤传感器的数据,并将测量到的重量显示在液晶显示屏上。

我们可以根据实际需求进行进一步的功能扩展和优化。

请注意,本文档仅提供了程序设计的概述,并未包含具体的代码实现。

AT89C51单片机说明

AT89C51单片机说明

EA A8H AF
ET2 ES
ET1 EX1 ET0 EX0
AD AC AB AA A9 A8 IE
A0H A7 A6 A5 A4 A3 A2 A1 A0 P2
SM0 SM1 SM2 REN TB8 RB8 TI
RI
98H 9F 9E 9D 9C 9B 9A 99 98 SCON
90H 97 96 95 94 93 92 91 90 P1
工作寄存器组3 18H
17H 工作寄存器组2
10H
0FH 工作寄存器组1
08H
07H 工作寄存器组0
00H
图 2-4 内部低 128 个字节地址 RAM 空间
第 3 页 共 9页
附录
AT89C51 单片机说明
寄存器符号 ACC B PSW SP
DPTR
P0 P1 P2 P3 IP IE TMOD TCON TH0 TL0 TH1 TL1 SCON SBUF PCON
IP 中断优先次序寄存器
位地址 - - BD BC BB BA B9 B8
符号
- - PT2 PS PT1 PX1 PT0 PX0
-(IP.7) :保留位,无定义。 -(IP.6) :保留位,无定义。 PT2(IP.5) :设定计时器 2 的优先次序(8052 使用)。 PS(IP.4) :设定串行端口的中断优先次序。 PT1(IP.3) :设定时/计时器 1 的优先次序。 PX1(IP.2) :设定外部中断 INT1 的优先次序。 PT0(IP.1) :设定计时器 0 的优先次序。 PX0(IP.0) :设定外部中断 INT0 的优先次序。
(60KB)
0FFFFH
1000H
外部 程序 存储器

用单片机AT89C51设计一个2位的LED数码显示作为“秒表”—单片机课程设计

用单片机AT89C51设计一个2位的LED数码显示作为“秒表”—单片机课程设计

目录一、设计题目和要求: (2)二、设计目的: (2)三、设计内容: (3)四、课程设计心得体会 (25)五、参考文献 (26)六、课程设计指导教师评审标准及成绩评定 (27)附件1:秒表原理图(实际接线图) (28)附件2:仿真图1 (30)附件3:仿真图2 (31)一、设计题目和要求:题目三:秒表应用AT89C51的定时器设计一个2位的LED数码显示作为“秒表”:显示时间为00~99s,每秒自动加1,设计一个“开始”键,按下“开始”键秒表开始计时。

设计一个“复位”键,按下“复位”键后,秒表从0开始计时。

任务安排:李座负责绘制电路原理图;梁宗林负责收集资料及电子版整理;付忠林负责程序和仿真。

二、设计目的:1.进一步掌握AT89C51单片机的结构和工作原理;2.掌握单片机的接口技术及外围芯片的工作原理及控制方法;3.进一步掌握单片机程序编写及程序调试过程,掌握模块化程序设计方法;4.掌握PROTEUS仿真软件的使用方法;5.掌握LED数码管原理及使用方法。

6.掌握定时器、外部中断的设置和编程原理。

7.通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。

8.该课程设计通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、清零、复位功能,并同时可以用数码管显示。

三、设计内容:了解8051芯片的的工作原理和工作方式,使用该芯片对LED数码管进行显示控制,实现用单片机的端口控制数码管,显示分、秒,并能用按钮实现秒表起动、停止、清零功能,精确到1秒。

AT89C51单片机的主要工作特性:·内含4KB的FLASH存储器,擦写次数1000次;·内含28字节的RAM;·具有32根可编程I/O线;·具有2个16位可编程定时器;·具有6个中断源、5个中断矢量、2级优先权的中断结构;·具有1个全双工的可编程串行通信接口;·具有一个数据指针DPTR;·两种低功耗工作模式,即空闲模式和掉电模式;·具有可编程的3级程序锁定定位;AT89C51的工作电源电压为5(1±0.2)V且典型值为5V,最高工作频率为24MHz.AT89C51各部分的组成及功能:振荡器和时钟电路数据存储器128字节程序存储器14KBCPU 两个16位定时器计数器中断控制总线扩展控制器并行可编程I/O口可编程串行口内部总线外部中断扩展控制P0 P1 P2 P3 RXD TXD1.单片机的中央处理器(CPU )是单片机的核心,完成运算和操作控制,主要包括运算器和控制器两部分。

毕业设计-基于AT89C51单片机的电子密码锁的设计

毕业设计-基于AT89C51单片机的电子密码锁的设计

毕业设计(论文)题目:电子密码锁的设计学院:电气与信息工程学院专业:电子信息工程姓名:学号: ********* 指导老师:**完成时间: 2013年5月28日摘要随着经济社会发展,人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出。

传统的机械锁,由于其构造简单,安全性能低,无法满足人们的需要。

随着电子产品向智能化和微型化的不断发展,数字密码锁作为防盗卫士的作用显得尤为重要。

而单片机以其实用,功能强大,价格低廉等功能,已成为电子产品研制和开发中首选的控制器。

本文从经济实用的角度出发,阐述一个基于单片机的液晶显示电子密码锁的设计与实现。

系统采用ATMEL公司的AT89C51单片机作为系统核心,液晶显示器LCD1602作为输出设备显示系统提示信息,4*4矩阵键盘作为输入设备,CMOS串行E2PROM存储器AT24C02作为数据存储器,配合蜂鸣器、继电器等电路构成整个系统硬件;系统软件采用C语言编写。

设计的系统液晶显示,密码修改方便,具有报警、锁定等功能,使用便捷简单,符合住宅、办公用锁需求,具有一定的实用价值。

关键词:单片机,密码锁,AT89C51,LCD1602,AT24C02AbstractWith the development of our society and the i mprovement of people’s living standard, how to ensure the family security is becoming more and more important in particular. Traditional mechanical lock is unable to meet the need of us because of its simple structure and low security. Nowadays, electronic products become smarter and smaller, electronic password anti-theft lock plays a more important role as the security guards. The MCU with its practical, strong function, low price and other functions , has become the preferred controller in electronic product research and development.This article is written from the economic perspective, elaborates the design and implementation of a LCD electronic password anti-theft lock which is based on MCU. This system is composed of AT89C51 which is designed as the core of this system, LCD1602 as the output device to display the message of this system, 4 * 4 matrix keyboard as the input device, a CMOS serial E2PROM AT24C02 as the data storage, and a buzzer, relay circuit.The software of the system is written in C language. The system displays in a LCD, it can change password easily, and has the function of alarming, locking, and so on. This system has some practical value, and it is simple and easy to use, meets the demand of residential and the need of office lock.Key Words: MCU, Password-Lock, AT89C51, LCD1602, AT24C02目录摘要 (I)Abstract ............................................................................................................................. I I 目录 ................................................................................................................................. I II 1引言 . (1)1.1课题的背景和意义 (1)1.2课题的研究现状 (1)1.3课题研究内容 (2)2 数字密码锁总体设计 (3)2.1 系统方案论证 (3)2.1.1 采用数字电路的设计方案 (3)2.1.2 采用以单片机为核心设计方案 (4)2.2 基于单片机的数字密码锁的设计原理 (5)3 系统硬件设计 (6)3.1 主要元器件介绍 (6)3.1.1 主控芯片AT89C51的的介绍 (6)3.1.2 继电器的介绍 (9)3.1.3 存储芯片AT24C02的介绍 (10)3.1.4 LCD1602显示器的介绍 (10)3.1.5 矩阵键盘模块的介绍 (11)3.2 系统硬件部分 (12)3.2.1 系统电源部分 (12)3.2.2 键盘输入部分 (13)3.2.3 密码存储部分 (14)3.2.4 显示部分 (14)3.2.5 报警部分 (15)3.2.6开锁部分 (16)4 系统软件设计 (17)4.1 系统程序流程图 (17)4.1.1主程序流程图 (17)4.1.2 键功能程序流程图 (18)4.1.3 修改密码程序流程图 (19)4.1.4 开锁程序流程图 (20)4.2 子程序举例 (21)4.2.1 按键扫描子程序 (21)4.2.2 显示子程序 (22)4.2.3 开锁子程序 (22)4.3 系统软件调试及结果 (24)4.3.1 Proteus软件介绍 (24)4.3.2 系统软件调试 (25)4.3.3 仿真结果 (25)5 硬件系统制作及调试 (29)5.1焊接注意事项 (29)5.2硬件调试问题及解决办法 (30)5.3硬件调试效果 (31)总结 (34)致谢 (35)参考文献 (36)附录 (37)附录A 电路原理图 (37)附录B 系统总体程序 (38)1引言1.1课题的背景和意义随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤为突出,传统的机械锁由于其构造简单,被撬的事件屡见不鲜。

AT89C51单片机-毕业设计

AT89C51单片机-毕业设计

AT89C51单片机-毕业设计1.绪论 (3)1.1 课程设计要求 (3)1.2 数字电压表介绍 (3)2.硬件单元电路设计 (3)2.1数字电压表结构框图 (3)2.1.1 AT89C51单片机简介 (4) (5)2.1.3 时钟电路 (6)2.1.4 复位电路 (6)73 (7)789 (9)4.10 (10)10115.程序代码 (12)6.项目设计总计 (19)7.参考文献 (19)1.绪论1.1 课程设计要求使用单片机AT89C51和ADC0832设计一个数字电压表,能够测量0-5V之间的直流电压值,两位数码显示。

在单片机的作用下,能监测两路的输入电压值,用8位串行A/D转换器,8位分辨率,逐次逼近型,基准电压为 5V;能用两位LED进行轮流显示或单路选择显示,显示精度0.1伏。

1.2 数字电压表介绍数字电压表简称DVM,数字电压表基本原理是将输入的模拟电压信号转化为数字信号,再进行输出显示。

而A/D转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器基本结构是由采样保持,量化,编码等几部分组成。

因此AD转换是此次设计的核心元件。

输入的模拟量经过AD转换器转换,再由驱动器驱动显示器输出,便得到测量的数字电压。

2.硬件单元电路设计2.1数字电压表结构框图结构如(图1)所示2.1.1 AT89C51单片机简介AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含4kBytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,AT89C51在众多嵌入式控制应用系统中得到广泛应用。

51单片机内包含以下几个部件:1) 8位微处理器(CPU)。

2) 数据存储器(128B RAM)。

AT89C51基于单片机智能浇花系统设计说明

AT89C51基于单片机智能浇花系统设计说明

目录1. 绪论 (1)1.1系统工作原理 (1)1.2系统模块 (1)1.3系统操作界面及其操作过程 (1)1.3.1 系统操作过程 (2)2. 部件的选择 (2)2.1芯片的选择 (2)2.2继电器的选择 (2)2.3阀门的选择 (2)2.3.1 电磁阀的选择 (2)3. 硬件设计 (2)3.1设备的结构 (2)3.1.1 中央处理单元 (2)3.1.2 LED显示部分 (3)3.1.3 电磁阀部分 (3)3.1.4按键部分 (3)3.1.5 指示灯部分 (3)3.2总电路设计图 (3)3.3AT89C51单片机电路 (4)3.4晶振电路 (5)3.5复位电路 (5)3.6按键电路 (7)3.9LED显示电路 (7)3.10电磁阀电路 (9)4. 软件设计 (9)4.1系统组成 (9)4.2消抖流程及程序 (10)4.3总流程及程序 (12)4.4按键处理总流程及程序 (13)4.5工作中的处理流程 (14)5. 结论 (15)参考文献 (16)AT89C51基于单片机智能浇花系统设计摘要:本设计是通过AT89C51单片机采用汇编语言进行编程,在LED液晶屏上实现小时,分,秒的显示;并利用单片机来实现计时,定时功能,同时通过7个按键开关和3个指示灯来实现参数设置和调节功能、浇花间隔时间的设定、浇水持续时间的设定、单片机对电磁阀的自动控制。

根据用户设定的时间顺利的完成浇花任务。

关键词:单片机,控制,显示,电磁阀1.绪论1.1 系统工作原理自动浇花系统的设计,其主要执行装置是一个电磁阀门,其一端连接水管,另外一端连接外置的水管作为浇水口,浇水的水量主要由单片机控制。

设备主要是通过控制浇水的时间间隔和浇水的持续时间来控制浇水量的。

1.2 系统模块系统主要是由单片机、电源、按键、显示、指示灯、复位电路、电机模块等组成。

图1-1 系统模块1.3 系统操作界面及其操作过程复位电路模51单片机模块电源模块 按键模块指示灯模块 显示模块电机模块图1.2 系统操作界面1.3.1 系统操作过程注:用上图中的数字编号代替相关按键A:放置设备,接上水管(注意:保证不漏水),插上插头。

AT89C51单片机编程

AT89C51单片机编程

{ while ((p34&&p35) ! = 0); delay( ); if ((p34&p35) != 0 ) continue; else break; }
/* 下列语句分析被按下的键所在的列号 */ mask = 0xfe; while (1)
{ TI = 0; SBUF = mask; while(TI = = 0); if((p34&&p35) ! = 0)
7.5.2

模块设计原则
若我们把复杂的问题分解成许多容易解决的小问题,复 杂的问题也就容易解决了。但是如果只是简单地分解任务, 不注意对一些子任务的归纳与抽象,不注意模块之间的关系, 往往会使模块数太多,模块之间的关系变得复杂,从而使程 序的调试、修改变得更加复杂。一般说来,模块设计应该遵 从以下几条原则: (1)模块独立 模块的独立性原则应保证模块完成独立的功能,模块与 模块之间关系简单,修改某一模块,不会造成整个程序的混 乱。保证模块的独立性应注意以下几点: ①每个模块完成一个相对独立的特定功能。在对任务分 解时,要注意对问题的综合。 ②模块之间的关系力求简单。例如:模块之间最好只通 过数据传递发生联系,而不发生控制关系。 C 语言中禁止 goto语句作用到另一函数,就是为了保证函数的独立性。
带寄存器参数的函数名加入“ _” 字符前缀,表明这类 函数包含寄存器的参数传递 对于重入函数加上“_?”字符串前缀,表明这类函数包 含栈内的参数传递
void func(void)
_FUNC
void func(void) reentrant
_?FUNC
例2 用汇编语言编写函数"toupper",参数传递发生在寄存器R7中。

AT89C51单片机入门教程

AT89C51单片机入门教程
*注:可以肯定的说这个教程只是为初学或入门者准备的,笔者本人也只是菜鸟一只, 有望各位大侠高手指点错误提出建议。
明浩 2003-3-30 pnzwzw@
第一课 建立您的第一个 C 项目
使用 C 语言肯定要使用到 C 编译器,以便把写好的 C 程序编译为机器码,这样单片机 才能执行编写好的程序。KEIL uVISION2 是众多单片机应用开发软件中优秀的软件之一, 它支持众多不同公司的 MCS51 架构的芯片,它集编辑,编译,仿真等于一体,同时还支持, PLM,汇编和 C 语言的程序设计,它的界面和常用的微软 VC++的界面相似,界面友好,易 学易用,在调试程序,软件仿真方面也有很强大的功能。因此很多开发 51 应用的工程师或 普通的单片机爱好者,都对它十分喜欢。
51 单片机 C 语言入门教程 51 单片机 C 语言学习杂记
学习单片机实在不是件易事,一来要购买高价格的编程器,仿真器,二来要学习编程语 言,还有众多种类的单片机选择真是件让人头痛的事。在众多单片机中 51 架构的芯片风行 很久,学习资料也相对很多,是初学的较好的选择之一。51 的编程语言常用的有二种,一 种是汇编语言,一种是 C 语言。汇编语言的机器代码生成效率很高但可读性却并不强,复 杂一点的程序就更是难读懂,而 C 语言在大多数情况下其机器代码生成效率和汇编语言相 当,但可读性和可移植性却远远超过汇编语言,而且 C 语言还可以嵌入汇编来解决高时效 性的代码编写问题。对于开发周期来说,中大型的软件编写用 C 语言的开发周期通常要小 于汇编语言很多。综合以上 C 语言的优点,我在学习时选择了 C 语言。以后的教程也只是 我在学习过程中的一些学习笔记和随笔,在这里加以整理和修改,希望和大家一起分享,一 起交流,一起学习,一起进步。

AT89C51单片机开发板程序

AT89C51单片机开发板程序
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define mima 3
#define duanma P1
sbit weima=P3^0。
sbit redled=P0^5。
sbit greenled=P0^6。
void delay(uint z>。
void main(>
{
uchar b,c。
c=5。
while(1>
{
P0|=0x0f。
b=P0。
b&=0x0f。
if(b!=0x0f>
{
delay(20>。
P0|=0x0f。
b=P0。
b&=0x0f。
if(b!=0x0f>
{
switch(b>
{
case 0x0e:c=1。break。
TMOD|=0x01。
TH0=(65536-10000>/256。
TL0=(65536-10000>%256。
EA=1。
ET0=1。
TR0=1。
while(1>
{
}
}
void timer0(> interrupt 1
{
TH0=(65536-10000>/256。
TL0=(65536-10000>%256。
uchar tt,i,sec,min。
uchar xianshi[4]。
void delay(uint z>。
void init(>。
void main(>

单片机AT89C51的设计与开发

单片机AT89C51的设计与开发
 ̄ ,t m 参 rA

矗煳

i I DI SA 3
P 4A 2 2, D1 l
f ^ D¨
P 2A 0 2./ Dt
P , 21瑚 i
P乏 l 姗
图 2— A 8 C 1芯片引脚图 2 T9 5
3 系统软件设计
系统软件采用汇编语 言编程 ,采用 A 8 T 9系列单片机结构 ,主要 由电源 电路 、按键控制 电路 等组
成 ,主程序分别调用子程序 ,进行相应程序模块的功能,完成再返 回主程序 ,执行下一个子程序 , 使程序
非常简洁,硬件改进也能很方便的修改相应软件 ,使系统软件修改和维护十分方便.
4 系统模块介绍
4 1 主 程序 .
O G0 H R 0
J PS A T M T R
;主程序起始地址
R M 的读操作是从内部程序存储器开始 , O 并延 至外部程序存储 器.
露 9一 帆_ 话 辫 协j 疗 话 媳 专 : ! 憾 ¥R T复位信号 S 当输入的复位信号延续 2 个机器周期以上高电平时即为有效 ,用以完成单片机 的复位初始化操作.
一一一 一 。一一 哪 时 一 一一 嘞 。 一
第2 6卷第 5期 (0 0 2 1)
河西学院学报
V பைடு நூலகம்2 N . (0 0 o.6 o5 2 1 )
单 片 机 A 8 5 的 设 计 与 开 发 T C 9 1
祝 燎 何 峰 山
张掖 7 40 ) 3 00
( 河西学院机电工程 系。甘肃 摘
要 :利用 A 8 C 1单片机控制产生 乐曲音符 ,利 用汇编语 言编程 ,再把 乐谱翻 译成计 算机 T9 5
以上是单片机芯片 4 条弓 脚的定义及简单功 能说明. 0 I

#C51语音单片机通用开发板电路图相关程序

#C51语音单片机通用开发板电路图相关程序

89C51-ISD4000语音单片机通用开发板本板采用国内最常用的MCS-51语言单片机89C51,与最新的ISD4000系列语音芯片结合,可供用户开发各种最新的智能型数码语音产品。

一、结构板上已装配好:89C51--单片机,8031内核,4K可反复擦写的程序存储器,32条I/O口,5V工作ISD4003-08--语音芯片,音质优异的模拟存储技术,可反复录放,8分钟,可分1200段,SPI接口方式,3V供电LM386--功率放大器,0.5W驱动24C01<选配件)--I2C总线串行存储器。

还有驻极体话筒<MIC)、话筒放大器、音量电位器、发光管等部件。

二、性能参数外接电源电压:5V<稳压)外接喇叭:4-16欧姆,0 .5W工作电流:25~30mA ( 录音>,50~80mA (放音>静态电流:13mA随板提供的演示程序功能:1、录音跳线插在"REC"一侧是录音状态,按住"AN"键不放,指示灯亮即可对着板上话筒讲话录音,松键时录音停止并形成一段。

再按则录下一段。

按"STOP"键为复位,再录音时又从第一段开始。

2、放音跳线插在"PLAY"一侧是放音状态,按一下"AN"键即播放一段,一段结束后自动停止放音,再按"AN"则播放下一段按"STOP"键为复位,再放音时又从第一段开始。

89C51-ISD4000语音电路程序AT89C51单片机 89C51单片机12MHz注:本程序为ISD4002、4003的控制程序,ISD4004的程序须加些改动,请注意程序后边的注释。

SS EQU P1.0 。

片选SCLK EQU P1.1 。

ISD4003时钟MOSI EQU P1.2 。

数据输入MISO EQU P1.3 。

数据输出LED EQU P1.7 。

电路编程中的AT89C51单片机

电路编程中的AT89C51单片机

电路编程中的AT89C51单片机AT89C51 In-Circuit Programming摘要本应用说明的是ATMEL公司A T89C51的电路可编程闪存的微控制器。

为在电路可编程A T89C51的应用提出了与应用程序相关的例子,它的修改要求支持在线编程。

这种方法显示在该应用程序中的A T89C51单片机可通过商业电话线远程改编。

本应用笔记中描述的电路,仅支持5伏电压下编程,需要使用一个AT89C51-XX-5。

标准AT89C51的需要12伏电压。

该应用程序的软件可从ATMEL下载。

总论当不在进行程序设计的时候,在电路设计中的A T89C51设计将变得透明化。

在编程期间必须重视EA/VPP这一脚。

在不使用外部程序存储器的应用程序中,这脚可能会永久接到VCC。

应用程序使用的外部程序存储器要求这一脚为低电平才能正常运行。

RST在编程期间必须为高电平。

应该提供一种方法使得电路通入电源以后,使RST代替主要的复位电路起到复位的作用。

在编程过程中,PSEN必须保持低电平,在正常运行期间绝不能使用。

ALE/ PROG在编程过程中输出低电平,在正常运行期间绝不能使用。

在编程过程中,A T89C51的I / O端口是用于模式应用程序,地址和数据选择的,可能需要该控制器从应用的电路隔离。

如何做到这一点取决于应用程序。

输入端口在编程过程中,控制器必须与应用电路的信号来源隔离。

带有三个输出状态的缓冲区会在应用程序之间插入电路和控制器,同时在编程时缓冲区输出三种状态。

一个多路复用器可用于信号源之间进行选择,适用于任何一方的应用电路或编程控制器电路的信号。

输出端口如果应用的电路可以允许端口在编程过程中的状态变化,则不需要改变电路。

如果应用电路的状态,必须事先在编程过程中的保持不变,可能在控制器和应用电路中插入锁存。

锁存在编程期间是可用的,并保存应用程序的电路状态。

应用实例如图1所示应用是该A T89C51一个移动的显示情况。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
keyinput=P0。
keyinput&=0x0f。
if(keyinput!=0x0f>
{
delay(10>。
P0|=0x0f。
keyinput=P0。
keyinput&=0x0f。
if(keyinput!=0x0f>
{
switch(keyinput>
{
case 0x0e:key=0。break。
case 0x0d:key=1。break。
case 0x0b:key=2。break。
case 0x07:key=3。break。
default:key=0xff。
}
}
}
}
void delay(uint z>
{
uint x,y。
for(x=z。x>0。x-->
for(y=122。y>0。y-->。
}
用矩阵键盘显示LED数码管<0-9,A-F)
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code a[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}。
AT89C51单片机开发板程序
1个LED数码管静态显示<0-9)
include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar i。
uchar code a[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}。
IE=0x82。
TMOD=0x01。
TCON=0x30。
while(1>。
}
void TOINT(> interrupt 1
{
TH0=0xd8。TL0=0xf0。
if(P2&1>P1=table[num/10]。else P1=table[num%10]。
P2^=3。
if(++count<100>return。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define mima 3
#define duanma P1
sbit weima=P3^0。
sbit redled=P0^5。
sbit greenled=P0^6。
delay(1000>。
}
}
void delay(uint z>
{
uint x,y。
for(x=z。x>0。x-->
for(y=122。y>0。y-->。
}
void extern1(> interrupt 2
{
P2=0x00。
delay(2000>。
P2=0xff。
delay(2000>。
}
பைடு நூலகம்1位密码锁
{
uint x,y。
for(x=z。x>0。x-->
for(y=122。y>0。y-->。
}
void extern1(> interrupt 2
{
P2=0x00。
delay(2000>。
P2=0xff。
delay(2000>。
}
中断控制流水灯(从左向右>
#include<reg52.h>
#include<intrins.h>
void delay(uint z>。
sbit hang1=P0^3。
sbit hang2=P0^2。
sbit hang3=P0^1。
sbit hang4=P0^0。
void main(>
{
uchar b,c。
c=16。
while(1>
{
hang1=0。
hang2=1。
hang3=1。
hang4=1。
void delay(uint z>。
void main(>
{
uchar b,c。
c=5。
while(1>
{
P0|=0x0f。
b=P0。
b&=0x0f。
if(b!=0x0f>
{
delay(20>。
P0|=0x0f。
b=P0。
b&=0x0f。
if(b!=0x0f>
{
switch(b>
{
case 0x0e:c=1。break。
TMOD|=0x01。
TH0=(65536-10000>/256。
TL0=(65536-10000>%256。
EA=1。
ET0=1。
TR0=1。
while(1>
{
}
}
void timer0(> interrupt 1
{
TH0=(65536-10000>/256。
TL0=(65536-10000>%256。
for(y=122。y>0。y-->。
}
一只闪亮的灯
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit led=P2^0。
void delay (uint z>。
void main(>
{
led=0。
delay(1000>。
count=0。
if(++num>99>num=0。
}
定时控制一只闪亮的灯
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uint n。
sbit led=P0^0。
void main (>
{
TMOD&=0xf1。
uchar key=0xff。
void scankey(>。
void delay(uint z>。
void main(>
{
weima=0。
while(1>
{
duanma=0xbf。
redled=1。
greenled=1。
scankey(>。
if(key==mima>
{
duanma=0x8c。
greenled=0。
{
case 0xe0:c=12。break。
case 0xd0:c=13。break。
case 0xb0:c=14。break。
case 0x70:c=15。break。
default:c=16。
}
}
}
P3&=0xf0。
P2=a[c]。
}
}
void delay(uint z>
{
uint x,y。
for(x=z。x>0。x-->
case 0x0d:c=2。break。
case 0x0b:c=3。break。
case 0x07:c=4。break。
default:c=0。
}
}
}
P1&=0xfe。
P2=a[c]。
}
}
void delay(uint z>
{
uint x,y。
for(x=z。x<0。x-->
for(y=122。y<0。y-->。
default:c=16。
}
}
}
P3&=0xf0。
P2=a[c]。
hang1=1。
hang2=0。
hang3=1。
hang4=1。
P0|=0xf0。
b=P0。
b&=0xf0。
if(b!=0xf0>
{
delay(10>。
P0|=0xf0。
b=P0。
b&=0xf0。
if(b!=0xf0>
{
switch(b>
delay(3000>。
key=0xff。
}
if(key!=0xff>
{
duanma=0x86。
redled=0。
delay(3000>。
key=0xff。
}
else
{
duanma=0xbf。
redled=1。
greenled=1。
}
}
}
void scankey(>
{
uchar keyinput。
P0|=0x0f。
b=P0。
b&=0xf0。
if(b!=0xf0>
{
delay(10>。
P0|=0xf0。
b=P0。
b&=0xf0。
if(b!=0xf0>
{
switch(b>
相关文档
最新文档