单片机课程实践报告电话模拟拨号器
电话键盘及拨号的模拟

课程设计课程名称单片机课程设计题目名称电话键盘及拨号的模拟学生学院材料与能源学院专业班级热能与动力工程(制冷方向)1001 学号**********学生姓名陈光谋指导教师王桂棠日21 月06 年2013.目录1、概述1.1 课程项目名称1.2 设计任务及要求系统设计方案2、2.1 硬件介绍3、电路设计3.1 电路原理图3.2 程序清单4、Proteus软件仿真4.1系统仿真电路图4.2 仿真结果分析5、课程设计心得体会6、参考文献1、概述1.1课程设计项目名称电话拨号键LCD显示1.2设计任务及要求1.实验要求:设计一个单片机监控的电话拨号键盘,将电话键盘中拨出的某一电话号码,显示在LCD显示屏上。
电话键盘共有12个键,除了“0”~“9”10个数字键外,还有“*”键用于实现退格功能,即清除输入的号码;“#”键用于清除显示屏上所有的数字显示。
还要求每按下一个键要发出声响,以表示按下该键。
2.仿真实现说明:本实验在Proteus下按设计要求用P1口扩展了12个键盘,其中每个键盘所代表的含义已在Proteus下用文本注出。
在LCD显示中,第一行为设计者名,第二行开始显示所拨的电话号码,最多为16位(因为LCD第二行功能显示16个字符)。
2、系统设计方案2.1 硬件介绍1.1 AT89C51简介AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
基于单片机技术电话拨号防盗警报器的设计毕业综合实践

毕业综合实践课题名称:基于单片机技术拨号防盗报警器的设计系部:电子工程系摘要本设计由单片机控制器、键盘输入、数码管显示、触发电路、拨号电路、与电源等6个部分组成,单片机控制器是整个系统的核心,负责控制检测输入/输出显示、模拟摘机、拨号报警、挂机等一系列的程序动作,并采用小引脚,高性能,低价位的AT89C2051。
键盘输入电路负责输入单片机中一系列工作参数与功能设定。
发光二极管数码管显示器在整个系统工作过程中充当一个简单的人机界面,用以显示工作状况与输入/输出的数据等。
拨号防盗报警器的触发电路用磁性开关,简单可靠,报警器采用隐蔽安装,防止小偷发现。
拨号与报警电路来完成模拟摘机、拨号、发出报警音、挂机等工作过程,由单片机控制。
电源部分负责整个系统供电。
设计目标要现对盗情的感知,并在一定的时间围,向手机或者发送报警。
对方接通后,即可听到报警音,达到拨号报警的目的。
关键词 :单片机,拨号,防盗报警,自动报警系统AbstractThis design by single-chip microcomputer controller, keyboard input, digital tube display, trigger circuit, dial-up circuit, and power supply, six parts, microcomputer controller is the core of the whole system, is responsible for the control test input/output display, simulation pick machine, dial-up alarm, hang machine, and a series of procedures movement, and the XiaoYin feet, high performance, low price of AT89C2051. The keyboard input circuit is responsible for a series of working parameters input single chip microcomputer and function setting. Leds digital tube display in the system in the process of work as a simple interface to show work situation and input/output data etc. Dialing and alarm system of trigger circuit with magnetic switch, simple, reliable and alarm the hidden installation, prevent the thief found. Dial-up and alarm circuit to complete simulation pick machine, dial, alarm sound, hang up and work process, from single chip microcomputer control. The power is in charge of the whole system of power supply. Design goals to achieve the perception of the stolen feeling, and in certain time range, mobile phone or phone to send the police. Connect each other, can be heard the alarm sound, to achieve the purpose of dial-up alarm.Key words: a single-chip microcomputer, dialing, anti-theft alarm, automatic alarm system目录摘要 (3)1课题分析1.1方案提出与准备 (4)1.2方案的选择 (5)2 系统的设计2.1设计思路 (6)2.2系统方案 (7)3 单片机介绍3.1单片机的发展简介 (7)3.2 AT89C2051单片机简介 (8)4 电路设计4.1电路设计原理 (9)4.2脉冲拨号原理 (10)4.3键盘输入 (11)4.4显示电路 (12)4.5 脉冲拨号实现过程 (13)5 程序设计5.1 主程序设计 (14)5.2 变量定义与初始化模块 (15)5.3 启动报警器子程序模块 (16)5.4 脉冲拨号子程序模块 (17)5.5 关机子程序模块 (18)6 电路的安装调试6.1 电路的总调试 (19)6.2 调试过程中出现的问题 (20)7 系统性能与社会经济效益分析7.1系统的性能 (20)7.2 安装与使用说明 (21)7.3 社会经济效益分析 (22)8 结束语 (23)9 致 (24)10参考文献资料 (24)11物品清单 (24)1课题分析1.1方案提出与准备预设计一个通过线传输报警器信息的装置,首先应考虑该装置的应用平台与媒体。
电话键盘及拨号的模拟

课程设计课程名称单片机课程设计题目名称电话键盘及拨号的模拟学生学院材料与能源学院专业班级热能与动力工程(制冷方向)1001 学号**********学生姓名陈光谋指导教师王桂棠日21 月06 年2013.目录1、概述1.1 课程项目名称1.2 设计任务及要求系统设计方案2、2.1 硬件介绍3、电路设计3.1 电路原理图3.2 程序清单4、Proteus软件仿真4.1系统仿真电路图4.2 仿真结果分析5、课程设计心得体会6、参考文献1、概述1.1课程设计项目名称电话拨号键LCD显示1.2设计任务及要求1.实验要求:设计一个单片机监控的电话拨号键盘,将电话键盘中拨出的某一电话号码,显示在LCD显示屏上。
电话键盘共有12个键,除了“0”~“9”10个数字键外,还有“*”键用于实现退格功能,即清除输入的号码;“#”键用于清除显示屏上所有的数字显示。
还要求每按下一个键要发出声响,以表示按下该键。
2.仿真实现说明:本实验在Proteus下按设计要求用P1口扩展了12个键盘,其中每个键盘所代表的含义已在Proteus下用文本注出。
在LCD显示中,第一行为设计者名,第二行开始显示所拨的电话号码,最多为16位(因为LCD第二行功能显示16个字符)。
2、系统设计方案2.1 硬件介绍1.1 AT89C51简介AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
单片机电话模拟键盘项目设计

河海大学物联网与工程学院(常州)课程设计报告题目单片机电话模拟键盘项目设计专业通信工程学生姓名学号授课班号275501指导教师刘玉宏完成时间2014.6.23摘要本课程设计通过单片机设计模拟电话键盘系统,模拟了日常生活中手机电话拨号、显示、发送的过程。
电话在日常生活中与我们息息相关,功能简单也有实际意义。
设计以89C51为核心,利用共阴极数码管显示号码,4X4键盘作为输入。
文中介绍了课程设计的步骤过程与实验结果,分析了各个模块功能与硬件电路的实现。
这个项目中,数码管在整个系统工作过程中充当一个简单的人机界面,用以显示工作状况以及输入、输出的数据等。
软件部分主要采用简单且通用性强的C语言编写实现,编写结构清晰,使用keil软件对程序调试。
模拟电话键盘的设计基础功能简单,在此基础上还可以添加其他的功能予以实现,从而能给日常生活带来方便。
【关键词】89C51单片机键盘电话拨号数码管ABSTRACTThis course is designed by single-chip analog phone keypad system designed to simulate the daily life Mobile phone dialing, display, process sent. The telephone is closely linked with in our daily life, simple and practical.The design uses 89C51 as the core, with LCD1602 display number, 4X4 keyboard as input. This paper introduces the steps of process and result of curriculum design, analyzes the functions and hardware circuit of each. In this project, LCD1602 acts as a simple user interface in the whole system work process, used to display the working condition and the input, output data etc.. The software part mainly uses a simple and versatile C language, writing clear structure, program debugging using keil software. Design basis function analog telephone keyboard simple, on this basis can also add to realize other functions, which can bring convenience to daily life.【Key words】89C51Single chip microcomputer keyboard Telephone dial目录1 课程设计目标及要求 (5)1.1 课程设计目标 (5)1.2 研究方法及手段应用 (5)1.3 课程设计预期效果 (5)2 系统设计 (6)2.1 基本方案及器件选用 (6)2.2系统组成 (7)2.3 系统工作原理 (7)2.4 程序编写设计 (8)3 硬件调试、结果分析讨论 (17)3.1 硬件调试 (17)3.2 问题和解决方案 (19)4 心得体会 (19)5 附录 (20)1. 课程设计目标及要求1.1 课程设计目标目前单片机已经渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
电话拨号模拟器课程设计

电话拨号模拟器课程设计一、课程目标知识目标:1. 让学生理解电话拨号的基本原理,掌握模拟电话拨号器的制作方法。
2. 帮助学生掌握电子元件的功能和连接方式,如按钮、LED灯和电阻等。
3. 引导学生了解数字与字母的对应关系,加深对电话拨号盘的认识。
技能目标:1. 培养学生动手操作能力,能够独立完成电话拨号模拟器的制作。
2. 提高学生的问题解决能力,能够分析并解决在制作过程中遇到的问题。
3. 培养学生的团队协作能力,能够在小组内有效沟通,共同完成任务。
情感态度价值观目标:1. 培养学生对科学技术的兴趣,激发他们探索未知世界的热情。
2. 培养学生的创新意识,鼓励他们勇于尝试,不断优化设计方案。
3. 增强学生的环保意识,让他们在制作过程中注意资源的节约和回收。
课程性质:本课程为信息技术与电子技术的跨学科综合实践活动,注重理论与实践相结合,培养学生的动手操作能力和创新精神。
学生特点:六年级学生具备一定的信息技术基础,对新事物充满好奇,具备初步的团队合作意识,但部分学生的动手能力较弱。
教学要求:结合学生的特点,教师应注重引导,让学生在实践中掌握知识,培养能力,同时关注学生的情感态度价值观的培养,使他们在愉快的氛围中学习。
在教学过程中,将目标分解为具体的学习成果,便于教学设计和评估。
1. 理论知识:- 电话拨号原理:介绍电话拨号的基本过程,如拨号盘的工作原理、数字与字母的对应关系等。
- 电子元件知识:讲解按钮、LED灯、电阻等基本电子元件的功能和连接方式。
- 数字电子技术:引导学生了解数字电路的基本概念,如逻辑门、编码器等。
2. 实践操作:- 制作电话拨号模拟器:指导学生按照电路图连接电子元件,完成电话拨号模拟器的制作。
- 故障排查与优化:培养学生分析问题、解决问题的能力,针对制作过程中出现的问题进行排查和优化。
- 团队合作:以小组为单位进行制作,培养学生团队协作能力。
3. 教学进度安排:- 第一课时:介绍电话拨号原理,认识电子元件,学习电路图阅读。
电话拨码与显示实验报告

单片机实验报告课程名称单片机技术与应用实验名称电话拨码与显示实验专业光电信息工程班级光电121班学号050312113姓名蒯玄实验地点躬行楼528实验日期2015. 4 .238051电话拨号与显示实验实验目的1、掌握4*4 键盘扫描原理与编程;2、掌握数码管动态显示原理与编程;3、掌握Proteus78 单片机仿真软件的使用;4、掌握Keil uVision 环境下工程项目设计方法与文件管理;5、熟悉键盘扫描与数码显示实验板的使用与功能验证。
器件清单实验流程操作图图一实验操作流程图实验内容1、采用 4*4 键盘与6 位共阴(CC:Common Cathode)数码管模拟一电话拨号与显示;(1)基本功能没有按键时,数码管不显示;按下 1 键,最低位显示,按住还是显示1;松开后再按下 2,低两位显示12(要求有移位功能);依次类推实现 6 位拨号功能。
(2)扩展功能增加退格与修改等功能。
1.软件部分C语言程序Key.c#include "key.h"#define DELAY_MS 20extern void delay(unsigned int n);unsigned char kbscan(void){unsigned char row,col;P3=0xf0;if((P3&0xF0)!=0xF0){delay(DELAY_MS);if((P3&0xF0)!=0xF0){row=0xFE;while((row&0x10)!=0){P3=row;if((P3&0xF0)!=0xF0){col=(P3&0xF0)|0x0F;return ((~row)|(~col));//return(~P3);}elserow=(row<<1)|0x01;}}}return(0x00);}unsigned char key_convert(unsigned char key1){unsigned char key2;switch(key1){case 0x11:key2=0x3f; break;case 0x21:key2=0x06; break;case 0x41:key2=0x5b; break;case 0x81:key2=0x4f; break;case 0x12:key2=0x66; break;case 0x22:key2=0x6d; break;case 0x42:key2=0x7d; break;case 0x82:key2=0x07; break;case 0x14:key2=0x7f; break;case 0x24:key2=0x6f; break;case 0x44:key2=0x58; break;case 0x84:key2=0x4c; break;case 0x18:key2=0x62; break;case 0x28:key2=0x69; break;case 0x48:key2=0x78; break;case 0x88:key2=0x78; break;default:key2=0x00; break;}return(key2);}Led.c#include "led.h"unsigned char LED_seg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f};//共阴段码unsigned char LED_bit[6]={0x01,0x02,0x04,0x08,0x10,0x20}; unsigned char LED_buf[6]={0};unsigned char convert(unsigned long int n,unsigned char a[]) //取各位函数{unsigned char i;i=0;while(n){a[i]=(unsigned char)(n%10);n=n/10;i++;}return(i);}Main.c#include "reg51.h"#include "key.h"#include "led.h"extern unsigned char kbscan(void);extern unsigned char key_convert(unsigned char key1);extern unsigned char LED_buf[6];void delay(unsigned int n){unsigned int i;for(i=0;i<n;i++);}void main(void){unsigned char LED_bit[6]={0x01,0x02,0x04,0x08,0x10,0x20};unsigned char LED_seg[10];unsigned char key1,key2;unsigned char i=0;unsigned char n=0;unsigned char pre_key2=0;while(1){key1=kbscan();key2=key_convert(key1);if(key2){if(pre_key2==0x00){if(n==6)n=0;LED_seg[n]=key2;n++;}}if(n){P0=LED_bit[i];P2=LED_seg[n-i-1];delay(200) ;i++;if(i==n)i=0;}pre_key2=key2;}}2. 硬件部分实验原理图图二电话拨码与显示原理图3.调试部分调试先在Keil uVision4软件环境下进行程序编写,利用工程思想,将代码模块化,分为主程序,按键程序和led显示程序三个部分,每个部分再有相对应的头文件。
基于单片机的电话自动拨号报警器

毕业设计(论文)基于单片机的电话自动拨号报警器年月摘要随着人们生活水平的提高和安全防范意识的增强,有关家庭、办公室和仓库等处的安全防范和自动报警系统的开发研制日益被科研单位和生产厂家重视,现在市场上虽有各种名目繁多的报警装置,但多由于可靠性较差、功能单一价格较高而难于普及。
如何开发和利用单片机来构成家庭、仓库、银行等地的安全防范系统,己成为众商家关注的焦点。
因此很有必要开发一种面向家庭、办公室和仓库等处的低价位、运行可靠的安全防范设备,以适应市场所需。
本文就介绍了一种以AT89C51单片机作为控制核心的电话自动拨号报警器。
首先,主要通过热释电执红外传感器来检测是否发生了盗情,然后通过单片机发出指令,再有双音低频电路和TMDF模块进行自动拨号报警,从而达到防盗的目的。
科技改变生活,本系统涉及单片机软硬件开发,通讯技术,传感器技术。
各种技术的完美的互相结合,造就了我们生活的更加的美好。
关键词:AT89C51 自动拨号报警DTMFAbstractAs people living standard rise and safety consciousness enhancement, the family, office and the warehouse of the place such as safe guard and the automatic alarm system developed increasingly scientific research units and manufacturers pay attention to, now although the market, there are all kinds of various kinds of alarm device, but more because of poor reliability, simple function prices higher and hard to popularity. How to develop and use of single chip microcomputer to constitute the family, the warehouse, the security guard system, the businessman, has become the focus of attention. Therefore it is necessary to develop a face family, office and the warehouse of the place such as low price and reliable operation of the safety equipment, in order to adapt to the market need.This paper introduces an AT89C51 single-chip microcomputer as the core to control the telephone automatic dial-up alarm. First of all, mainly through the pyroelectric ZhiGong outside sensors to detect whether stolen happened feeling, and then through the single-chip microcomputer instruction, have dual low frequency circuit and TMDF modules to be automatic dial-up alarm, so as to achieve the purpose of guard against theft.Science and technology change life, this system involves microcontroller hardware and software development, communication technology, the sensor technology. All kinds of technology perfect with each other, make our life more beautiful.Key word:AT89C51 Auto-Dial Alarm DTM目录第一章前言 (1)第二章智能防盗报警装置的简介及构成 (2)2.1防盗报警系统的组成 (2)2.2防盗报警系统的分类 (4)2.3本智能报警装置具备的特点和优点 (4)2.4本智能报警装置系统构成 (5)第三章智能防盗装置硬件设计 (6)3.1装置总体设计 (6)3.1.1硬件电路主要由: (6)3.1.2该系统硬件要实现的功能: (6)3.2单片机模块 (7)3.2.1 电源和时钟电路以及复位电路 (7)3.2.2 单片机的引脚分配 (8)3.3信号检测与识别模块 (8)3.4语音录放模块 (10)3.5音频拨号电路 (12)3.5.1 DTMF 信号 (13)3.5.2 DTMF 发生器 (13)3.6电话机摘挂机控制模块 (15)3.7 盗情检测 (16)3.7.1热释电效应 (17)3.7.2热释电红外传感器的结构 . (18)3.7.3滤光镜材料 (18)3.7.4传感器内的元件数 (18)3.7.5热释电红外传感器的主要参数 (19)第四章软件设计 (20)4.1软件总体设计 (20)4.2中断技术的运用 (21)4.3定时器/计数器的运用 (23)4.4延时程序 (24)4.5信号音检测 (26)第五章系统的完善与改进 (28)5.1中断扩充 (28)5.1.1细丝触发式防盗报警器 (28)5.1.2语音的分段控制 (31)5.2双音频发送接受电路的扩充 (32)第六章结束语 (35)附录(一)硬件电路图 (38)附录(二)程序清单 (39)附录(三)语音芯片部分 (45)1语音单元 (45)2 SR9F26 的管脚说明 (45)3 SR9F26 的功能概述 (46)基于单片机的电话自动拨号报警器的设计Microcontroller-based telephone Auto-Dial alarm学号:作者:指导老师:第一章前言改革开放以来,经济高速发展。
实验二 电话拨号与显示实验

【1. 实验目的和要求】(1)掌握4*4 键盘扫描原理与编程;(2)掌握数码管动态显示原理与编程;(3)掌握Proteus 8 单片机仿真软件的使用;(4)掌握Keil uVision 环境下工程项目设计方法与文件管理;【2. 实验工具与软件】计算机、Keil uVision4集成开发环境、Proteus 8仿真软件【3. 主要原理和方法步骤】(1)任务说明➢采用4*4 键盘与6 位共阴(CC:Common Cathode)数码管模拟一电话拨号与显示;➢基本功能:没有按键时,数码管不显示;按下1 键,最低位显示,按住还是显示1;松开后再按下2,低两位显示12(要求有移位功能);依次类推实现6 位拨号功能。
➢扩展功能:增加退格与修改等功能。
(2)电路原理图(3)软件流程图(4)实例代码及注释分析#include <reg51.h>unsigned char key_value=16;unsigned code LED_SEG[16] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; //共阴极数码管段码0~F unsigned code LED_BIT[6] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20}; //6位共阴极数码管位码unsigned char LED_BUF[6] = {0}; //存储按下的键值void delay_ms(unsigned int ms) //ms延时函数(AT89C51 @11.0592MHz){ unsigned int i;while(ms--)for(i = 0; i < 110; i++);}char keys_scan() //按键扫描子程序{ unsigned char temp, value;P3 = 0x0f;delay_ms(10);temp = P3 ^ 0x0f;//高4位输出,低4位输入delay_ms(10);switch(temp){case 1: value = 0; break;case 2: value = 4; break;case 4: value = 8; break;case 8: value = 12; break;}P3 = 0xf0;delay_ms(10);temp = P3 >> 4 ^ 0x0f;//高4位输入,低4位输出switch(temp){case 1: value += 0; break;case 2: value += 1; break;case 4: value += 2; break;case 8: value += 3;}while(P3!=0xf0);return value;}void main(){unsigned char count=0, i;P0=0x00;while(1){ P3 = 0x0f;if(P3 != 0x0f){delay_ms(10);if(P3 != 0x0f){key_value = keys_scan(); //按键扫描,获取键值if(key_value>=0 && key_value<=9){ if(count == 6)count=0;count++;LED_BUF[count-1] = key_value; //记录键值}if(key_value == 14) //退格{if(count==1){P0=0x00;count = 0;}else if(count>1)count--;}if(key_value == 15) //清空数码管显示{ P0=0x00;count = 0;}}}for(i=0; i<count; i++) //循环显示数码管{ P0 = LED_BIT[i];P2 = LED_SEG[LED_BUF[count-i-1]];delay_ms(5);}}}【4. 数据记录】(1)按下矩阵键盘的S0~S9时,6位数码管由左向右移位显示数字0~9,当输入位数超过6位时,数码管就只显示当前输入键值;(2)按下按键S14时,实现退格功能,清除上一次输入的键值(S0~S9);(3)按下按键S15时,清空数码管显示;(4)其他按键按下暂无功能;【5.实验思考与小结】通过本次实验,我掌握4*4 键盘扫描原理与编程,这种方法可以减少单片机IO口的消耗,以及数码管动态显示原理与编程,通过利用人类的视觉效应,快速循环显示单个数码管,从而动态实现多个数码管。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
河海大学常州校区计信学院单片机课程设计报告专业:电子科学与技术姓名:霍宇彤学号:0962910216 课题:电话模拟拨号器指导教师:陆晓春摘要单片机是一门技术性、应用新很强的学科,而课程设计给了大家一个很好的实践机会。
实验“电话模拟拨号器”是以A T89C52单片机为控制核心,使用C程序设计,3*4矩阵控制,包括输入、删除、发送等功能,简单的实现了手机的拨打功能。
关键字:单片机,液晶显示屏,拨号目录目标及总体方案1使用的主要组件及特殊零件功能说明 (1)2流程图说明 (3)3电路图 (3)实验结果及讨论1程序设计 (4)2实验结果展示 (11)结论1本课程设计的特点 (11)2评估结果 (12)3改善建议既自我体会 (12)参考文献 (12)附录 (12)目标及总体方案1使用的主要组件及特殊零件功能说明单片机89C52管脚说明:VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口作为AT89C51的一些特殊功能口,管脚备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(计时器0外部输入)P3.5 T1(计时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)RST:复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时, ALE只有在执行MOVX,MOVC指令是ALE才起用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA / VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
3×4矩阵键盘实现1、2、3、4、5、6、7、8、9、0、SET、CLEAR的功能1602字符液晶1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控3电路图实验仿真图实验结果及讨论1实际电路设计及程序设计程序设计#include<reg52.h>#include <intrins.h>typedef unsigned int uint;typedef unsigned char uchar;uchar temp;uchar key=16;sbit rs=P2^6;sbit rw=P2^5;sbit lcden=P2^7;uchar idata table[18]="ATD+86";uchar idata tab[18];uchar idata table_int[18]="ATD+86";uchar idata receive[7];uchar idata erro[7]="erronum";uchar num=6,a=0,b=0; //b接收,a发送,num表示table[]第几位#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};/* 延时子程序*/void delay(uchar x){uchar i;while(x--){for(i = 0; i< 125; i++){{;}}}}/*检查LCD忙状态*/ /*lcd_busy为1时,忙,等待。
lcd-busy为0时,闲,可写指令与数据*/bit busy(){bit result;rs = 0;rw = 1;lcden = 1;delayNOP();result = (bit)(P0 & 0x80);lcden = 0;return result;}/*写指令数据到LCD *//*RS=L,RW=L,E=高脉冲,D0-D7=指令码。
*/void lcd_com(uchar cmd){while(busy());rs = 0;rw = 0;lcden = 0;_nop_();_nop_();P0 = cmd;delayNOP();lcden = 1;delayNOP();lcden = 0;}void lcd_pos(uchar pos){ //设定显示位置lcd_com(pos | 0x80);}/*写显示数据到LCD RS=H,RW=L,E=高脉冲,D0-D7=数据. */void lcd_dat(uchar dat){while(busy());rs = 1;rw = 0;lcden = 0;P0 = dat;delayNOP();lcden = 1;delayNOP();lcden = 0;}/* LCD初始化设定*/void lcd_init(){delay(15);lcd_com(0x38); //16*2显示,5*7点阵,8位数据delay(5);lcd_com(0x38);delay(5);lcd_com(0x38);delay(5);lcd_com(0x0c); //显示开,关光标delay(5);lcd_com(0x06); //移动光标delay(5);lcd_com(0x01); //清除LCD的显示内容delay(5);}/* LCD显示*/void display(){uchar a=0;lcd_pos(0);delay(30);while(table[a]!='\0') //判断下一位是否为空{lcd_dat(table[a]);a++;if(a==16){lcd_pos(0x40);}}}void keyscan(){temp = 0;P1=0xf0; //高四位输入行为高电平列为低电平delay(50);temp=P1;temp=temp&0xf0; //屏蔽低四位temp=~((temp>>4)|0xF0);if(temp==1) // p1.4 被拉低key=0;else if(temp==2) // p1.5 被拉低key=1;else if(temp==4) // p1.6 被拉低key=2;else if(temp==8) // p1.7 被拉低key=3;elsekey=16;P1=0x0f; //低四位输入列为高电平行为低电平delay(50);temp=P1; //读P1口temp=temp&0x0f;temp=~(temp|0xf0);if(temp==2) // p1.1 被拉低key=key+0;else if(temp==4) // p1.2 被拉低key=key+4;else if(temp==8) // p1.3 被拉低key=key+8;elsekey=16;P1=0x0f;temp=P1;if(key==0){table[num]='1';num++;}if(key==1){table[num]='2';num++;}if(key==2){table[num]='3';num++;}if(key==3){table[num]='4';num++;}if(key==4){table[num]='5';num++;}if(key==5){table[num]='6';num++;}if(key==6){table[num]='7';num++;}if(key==7){table[num]='8';num++;}if(key==8){table[num]='9';num++;}if(key==9){table[num]='0';num++;}if(key==10){table[--num]='\0'; // 删除上一位lcd_com(0x01); // 清除LCD的所有显示内容}if(key==11){while(table[a] != '\0'){if(num==17){tab[a]=SBUF = table[a]; // 显示输入数据while(!TI); // 等特数据传送TI = 0; // 清除数据传送标志a++;}else{ // 发送下一位字符tab[a]=SBUF = erro[a]; // 显示输入数据while(!TI); // 等特数据传送TI = 0; // 清除数据传送标志a++;}}}}/* 串口初始化*/void uart_int(){TMOD=0x20; //工作方式2,为常数自动重新装入的8位定时器TH1=0xf3;TL1=0xf3;TR1=1;SM0=0;SM1=1; //串口方式1REN=1; //允许接收ES=1;EA=1;}void main(){uart_int();lcd_init();while(num<=17){keyscan(); //键盘扫描display(); //LCD显示if(receive[4]=='E'){P2=0xfe;while(tab[a] != '\0'){SBUF = tab[a]; //串口发送while(!TI); // 等特数据传送(TI发送中断标志)TI = 0; // 清除数据传送标志a++; // 下一个字符}a=0;receive[4]='\0';}else if(receive[4]=='O'){P2=0xfd;receive[4]='\0';}if((receive[5]='K')||(receive[6]=='R')){b=0;receive[5]='\0';receive[6]='\0';}}}/* 串口接收*/void ser() interrupt 4{if(RI==1){receive[b]=SBUF;b++;RI=0;}}2实际的结果显示1)当拨打电话时,电话号码显示在动态LCD上2)当按下SET键时,将“A TD+电话号码”(例如ATD+8612345678900)通过串口发送到PC上,并可通过调试助手观察。