基于51单片机的简易电子表

合集下载

51单片机写的电子表

51单片机写的电子表

用51单片机编程,实现一个电子表源程序#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charsbit dula=P2^6 ;sbit wela=P2^7;sbit led1=P1^0;Uchar code table[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x7 1};void delay(uint t) //延迟函数{uint i,j;for(i=0;i<t;i++)for(j=0;j<110;j++);}uchar num,num1,num2,num3,num4;uint a[6];void display(uint a[]){wela=1;P0=0xfe; //第一个数码管亮wela=0;dula=1;P0=table[a[0]];dula=0;delay(1);wela=1;P0=0xfd; //第2个数码管亮wela=0;dula=1;P0=table[a[1]];dula=0;delay(1);wela=1;P0=0xfd; //第2个数码管亮小数点wela=0;dula=1;P0=0x80;dula=0;delay(1);wela=1;P0=0xfb; //第3个数码管亮wela=0;dula=1;P0=table[a[2]];dula=0;delay(1);wela=1;P0=0xf7; //第4个数码管亮wela=0;dula=1;P0=table[a[3]];dula=0;delay(1);wela=1;P0=0xf7; //第4个数码管亮小数点wela=0;dula=1;P0=0x80;dula=0;delay(1);wela=1;P0=0xef; //第5个数码管亮wela=0;dula=1;P0=table[a[4]];dula=0;delay(1);wela=1;P0=0xdf; //第6个数码管亮wela=0;dula=1;P0=table[a[5]];dula=0;delay(1);}void main (void) //主函数开始{TMOD=0x11; // 初始化函数TH0=(65536-45872)/256; //TL0=(65536-45872)%256; //TH1=(65536-45872)/256; //TL1=(65536-45872)%256; //EA=1;ET0=1;ET1=1;TR0=1;TR1=1;while(1){display(a); //显示数字}}void T0_time()interrupt 1{TH0=(65536-45872)/256; //初始化TL0=(65536-45872)%256;num1++;if(num1==4){num1=0;led1=~led1; //LED闪亮}}void T1_time()interrupt 3{TH1=(65536-45872)/256; //初始化TL1=(65536-45872)%256;num2++;if(num2==20){num2=0;num++;if(num==60){num=0;num3++;}if(num3==60){num3=0;num4++;}if(num4==24){num=0;}a[4]=num/10; // 秒(十位)a[5]=num%10; // 秒(个位)a[2]=num3/10; // 分(十位)a[3]=num3%10; // 分(个位)a[0]=num4/10; // 时(十位)a[1]=num4%10; // 时(个位)}}。

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

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

1 绪论电子表是20世纪50年代才开始出现的新型计时器。

最早的一款电子表被称做“摆轮游丝电子表”,它诞生于1955年。

这种手表用电磁摆轮代替发条驱动,以摆轮游丝作为振荡器,微型电池为能源,通过电子线路驱动摆轮工作。

它的走时部分与机械手表完全相同,被称为第一代电子手表。

1960年,美国布洛瓦公司最早开始出售“音叉电子手表”。

这种手表以金属音叉作为振荡器,用电子线路输出脉冲电流,使机械音叉振动。

它比摆轮式电子手表结构简单,走时更精确,被称为第二代电子手表。

1969年,日本精工舍公司推出了世界上最早的石英电子表。

石英电子表的出现,立刻成为了钟表界主流产品,它走时精确,结构简单,轻松地将一、二代电子表,甚至机械表淘汰出局。

石英表又称“水晶振动式电子表”,因为它是利用水晶片的“发振现象”来计时的。

当水晶受到外部的加力电压,就会产生变形和伸缩反应;如果压缩水晶,便会使水晶两端产生电力。

这样的性质在很多结晶体上也可见到,称为“压电效果”。

石英表就是利用周期性持续“发振”的水晶,为我们带来准确的时间。

单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛应用。

从上世纪80年代,由当时的4位、8为单片机,发展到现在的32位300M的高速单片机。

1.1 单片机的介绍单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。

概括的讲:一块芯片就成了一台计算机。

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

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

1 绪论电子表是20世纪50年代才开始出现的新型计时器。

最早的一款电子表被称做“摆轮游丝电子表”,它诞生于1955年。

这种手表用电磁摆轮代替发条驱动,以摆轮游丝作为振荡器,微型电池为能源,通过电子线路驱动摆轮工作。

它的走时部分与机械手表完全相同,被称为第一代电子手表。

1960年,美国布洛瓦公司最早开始出售“音叉电子手表”。

这种手表以金属音叉作为振荡器,用电子线路输出脉冲电流,使机械音叉振动。

它比摆轮式电子手表结构简单,走时更精确,被称为第二代电子手表。

1969年,日本精工舍公司推出了世界上最早的石英电子表。

石英电子表的出现,立刻成为了钟表界主流产品,它走时精确,结构简单,轻松地将一、二代电子表,甚至机械表淘汰出局。

石英表又称“水晶振动式电子表”,因为它是利用水晶片的“发振现象”来计时的。

当水晶受到外部的加力电压,就会产生变形和伸缩反应;如果压缩水晶,便会使水晶两端产生电力。

这样的性质在很多结晶体上也可见到,称为“压电效果”。

石英表就是利用周期性持续“发振”的水晶,为我们带来准确的时间。

单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛应用。

从上世纪80年代,由当时的4位、8为单片机,发展到现在的32位300M的高速单片机。

1.1 单片机的介绍单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。

概括的讲:一块芯片就成了一台计算机。

基于51单片机的简易数字电压表的设计单片机

基于51单片机的简易数字电压表的设计单片机

基于51单片机的简易数字电压表的设计单片机————————————————————————————————作者:————————————————————————————————日期:2个人收集整理勿做商业用途甘肃畜牧工程职业技术学院毕业设计题目:基于51单片机的简易数字电压表的设计系部:电子信息工程系专业:信息工程技术班级:学生姓名:学号:指导老师:日期:目录毕业设计任务书 (1)开题报告 (3)摘要 (6)关键词 (7)引言 (7)第一章A/D转换器 (9)1.1A/D转换原理 (9)1.2 ADC性能参数 (11)1.2.1 转换精度 (11)1.2.2。

转换时间......................................... 错误!未定义书签。

1.3 常用ADC芯片概述 (13)第二章8OC51单片机引脚 (14)第三章ADC0809 (16)3。

1 ADC0809引脚功能 (16)3。

2 ADC0809内部结构 (18)3.3ADC0809与80C51的接口 (19)3.4 ADC0809的应用指导 (20)3.4。

1 ADC0809应用说明 (20)3.4.2 ADC0809转换结束的判断方法 (20)3。

4.3 ADC0809编程方法 (21)第四章硬件设计分析 (22)4。

1电源设计 (22)4.2 关于74LS02,74LS04 (22)4。

3 74LS373概述 (23)4。

3。

1 引脚图 (23)4。

3。

2工作原理 (23)4.4简易数字电压表的硬件设计 (24)结论 (25)参考文献 (25)附录.......................................................................................... 错误!未定义书签。

致谢 (29)毕业设计任务书学生姓名专业班级信息工程技术08。

2指导教师论文题目基于51单片机的简易数字电压表的设计研究的目标、内容及方法目标:基于MCS—51单片机,对设计硬件电路和软件程序应用的设计,使用发光二极管来显示所要测试模拟电压的数字电压值。

基于51单片机的数字秒表设计

基于51单片机的数字秒表设计

摘要本设计是基于AT89S51单片机的简易数字秒表设计,主要组成是以51单片机最小系统为核心,通过运用单片机的振荡电路实现计时同时用数码管同步显示。

本秒表最大计时为99秒。

本设计的特点是:大部分功能通过软件实现,使电路简单明了,系统稳定性好。

关键词:AT89S51 振荡电路计时数码管目录1设计概述 (1)1.1AT89S51概述 (1)1.2系统设计功能概述 (1)2系统设计 (2)2.1设计思路 (2)2.2硬件设计 (2)2.2.1单片机最小系统的设计 (2)2.2.2数码管显示电路设计 (3)2.3软件设计 (7)2.3.1软件设计流程图 (7)2.3.2消除开关抖动 (9)2.3.3数码管延时显示程序 (9)2.3.4延时1秒的程序 (10)3软件调试和结果 (10)3.1软件调试与下载 (10)3.2硬件仿真 (11)4心得体会 (12)参考文献 (14)附录 (15)I基于单片机的数字秒表设计主程序 (15)IIPCB电路图 (17)III实物图 (17)11 设计概述1.1 AT89S51概述AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In -system programmable)的可反复擦写1000次的Flash 只读程序存储器,器件采用ATMEL 公司的高密度、非易失性存储技术制造,兼容标准MCS -51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash 存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89S51具有如下特点:40个引脚,4k Bytes Flash 片内程序存储器,128 bytes 的随机存取数据存储器(RAM ),32个外部双向输入/输出(I/O )口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT )电路,片内时钟振荡器。

#基于51单片机的简易电子表设计与仿真

#基于51单片机的简易电子表设计与仿真

智能仪器及使用实验报告项目名称:基于51单片机的简易电子表设计和仿真专业名称:测控技术和仪器班级:测控0901班学生姓名:指导教师:一、任务要求使用Keil uVision编程软件以及ISIS 7 Professional仿真软件制作一个简易电子表,要求具备电子表基本功能(时间显示、时间调整等)。

二、总体设计方案利用AT89C51作为控制以及1602LCD作为显示,通过6个按键实现出入时间设置状态、出入闹铃设置状态、小时位调整、分钟位调整、开关闹铃等功能。

系统的流程图如下:图1-1 系统仿真流程图三、系统硬件1、AT89C51引脚功能说明:AT89C51芯片如图1-2所示图1-2 AT89C51VCC:供电电压。

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编程和校验时接收高八位地址信号和控制信号。

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

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

目录目录 (1)第1章概述 (1) (1)第2章设计思路及框图 (1) (1) (2)第3章系统的硬件设计 (2) (2) (3) (3) (4) (4)第4章电路设计原理图 (4) (4)第5章程序设计 (5) (5) (7)第6章系统的验证及调试 (43) (43) (43) (44)第7章总结 (45)第8章参考文献 (45)第1章概述单片机集成度高、功能强、可靠性高、体积小、功耗地、使用方便、价格低廉等一系列优点,目前已经渗入到人们工作和生活的方方面面,几乎“无处不在,无所不为”。

单片机的应用领域已从面向工业控制、通讯、交通、智能仪表等迅速发展到家用消费产品、办公自动化、汽车电子、PC机外围以及网络通讯等广阔领域。

单片机有两种基本结构形式:一种是在通用微型电脑中广泛采用的,将程序存储器和数据存储器合用一个存储器空间的结构,称为普林斯顿结构。

另一种是将程序存储器和数据存储器截然分开,分别寻址的结构,一般需要较大的程序存储器,目前的单片机以采用程序存储器和数据存储器截然分开的结构为多。

本课题讨论的方波发生器的核心是目前应用极为广泛的 51系列单片机。

利用AT89C51单片机定时器完成计时功能,定时器0计时中断程序每隔0.01s中断一次并当作一个计数,设定定时1秒的中断计数初值为0,每中断一次中断计数初值加1,当加到100时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。

为了将时间在6位LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要译码器,数据锁存器等较多硬件,可采用动态显示法实现LED显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。

由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。

第2章设计思路及框图设计思路针对要实现的功能,采用AT89S51单片机进行设计,AT89S51 单片机是一款低功耗,高性能CMOS8位单片机,第一,熟悉AT89S51单片机,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。

基于51单片机的电子式单相智能电表设计

基于51单片机的电子式单相智能电表设计

山东农业大学毕 业 论 文 基于51单片机的电子式单相智能电表设计 院系: 机械与电子工程学院 专业班级: 电气工程及其自动化专业三班 届次:20**届 学生姓名: 学号: 指导教师: 二0**年六月六日……………………. ………………. …………………装订线……………….……. …………. …………. ………目录引言 (3)1传统电能表 (3)1.1电能表的发展 (3)1.2 电能表的发展前景 (3)2 智能电能表 (4)2.1智能电表的概念 (4)2.2 智能电能表的典型结构 (4)2.3智能电表的主要特点 (4)3系统设计的基本思路和具体设计任务以及结构框图 (4)3.1系统设计的基本思路 (4)3.2具体设计任务 (5)3.3 系统结构框图 (5)4系统硬件电路设计 (6)4.1 计量芯片ADE7757 (6)4.1.1 ADE7757功能及特点概述 (6)4.1.2 ADE7757计量芯片的内部结构和各引脚功能 (6)4.1.3 ADE7757的原理特性 (7)4.1.4 ADE7757与单片机的接口 (8)4.2电能计量电路设计 (8)4.2.1电压采集通道设计 (9)4.2.2电流采集通道设计 (10)4.2.3计量芯片与单片机之间连线 (11)4.3单片机外围电路设计及器件选择 (11)4.3.1 单片机STC89C52概述、引脚配置及功能概述 (11)4.3.2 单片机控制电路最小系统 (13)4.3.3 LCD显示器模块设计 (14)4.3.3.1 LCD显示器工作原理简介 (14)4.3.3.2 芯片1602简介 (14)4.3.3.3 显示电路设计 (16)4.3.4 数据存储模块设计 (16)4.3.4.1芯片24C02简介 (16)4.3.4.2 存储模块电路设计图 (17)4.3.5时钟模块设计 (18)4.3.5.1 DS1302简介 (18)4.3.5.2 时钟电路设计 (19)4.3.6 通信模块设计 (19)4.3.6.1单片机串行通信基础 (19)4.3.6.2 RS232串行口标准简介 (20)4.3.6.3 MAX232简介 (20)4.3.6.4 接口电路设计 (21)4.3.7 电源模块设计 (21)5 系统软件程序流程图以及上位机设计 (23)5.1主程序设计框图 (23)5.2 功率计量流程图 (23)5.3 按键查询流程图 (25)5.4上位机设计 (25)6 总结 (26)参考文献 (27)致谢 (28)附录 (29)ContentsAbstracts (1)Introduction (1)1Traditional meters (1)1.1 The development of meters (1)1.2 The prospects of meters (2)2 Smart meters (2)2.1The concept of smart meters (2)2.2 The typical structure of smart meters (2)2.3The main features of smart meters (3)3The basic idea of system design and detailed design tasks and structure diagram (3)3.1The basic idea of system design (3)3.2The detailed design tasks (3)3.3 System structure diagram (4)4System hardware circuit design (4)4.1 Metering chip ADE7757 (4)4.1.1 ADE7757 functions and features Overview (5)4.1.2 ADE7757 chip's internal structure and function of each pin (6)4.1.3 The principle of ADE7757 (6)4.1.4ADE7757 and microcontroller interface (6)4.2 Energy Metering Circuit Design (7)4.2.1Design of voltage acquisition channels (8)4.2.2Design of the current acquisition channel (9)4.2.3Metering connection between the chip and the microcontroller (9)4.3 Single-chip peripheral circuit design and component selection (9)4.3.1 SCM STC89C52 overview, pin configuration and function overview .. 124.3.2 Minimum System of MCU control circuit (13)4.3.3 LCD display module design (13)4.3.3.1 LCD monitor works Introduction (13)4.3.3.2 Chip 1602 Introduction (14)4.3.3.3 Display circuit design (15)4.3.4 Design Data storage module (15)4.3.4.1 Chip 24C02 Introduction (16)4.3.4.2 The memory module circuit design (16)4.3.5Clock Module Design (16)4.3.5.1 DS1302 Introduction (17)4.3.5.2 Clock circuit design (18)4.3.6 Communication Module (18)4.3.6.1Serial communication infrastructure (18)4.3.6.2 RS232 serial port standard profiles (19)4.3.6.3 MAX232 Introduction.................................. 错误!未定义书签。

基于C51单片机的电子表(内附完整程序源码)

基于C51单片机的电子表(内附完整程序源码)

基于C51单片机的电子表(内附完整程序源码)电子科学与技术系科研训练中文题目:基于C51单片机为主控芯片的电子时钟英文题目: Based on C51 single chip microcomputer as main control chipof electronic watch姓名:王****学号:**********专业名称:电子科学与技术指导教师:郑国旭基于C51单片机为主控芯片的电子表作者哈尔滨理工大学电子科学与技术系[内容摘要]本文论述了用C51单片机制作电子表的方法和过程,电路图以及程序源代码。

包括时间基准的选取和实现;1602液晶显示屏的驱动和编程;独立键盘的使用和编程;单片机内部时间中断的原理及编程。

[关键词] C51单片机;时间基准; 1602液晶显示屏;编程Based on C51 single chip microcomputer as maincontrol chip of electronic watch[Abstract]This paper discusses the using C51 production method and process of digital watches, circuit diagram and the program source code. Including the selection of time benchmark and implementation; 1602 LCD driver and programming; The use of independent keyboard and programming; The principle and programming of single chip microcomputer internal timeinterrupt.[Keywords] C51 production;Time benchmark;1602 LCD;programming目录1 引言 (1)2 相关文献综述 (1)3 元件简述及应用 (1)3.1 STC89C51RC单片机简介及其应用 (2)3.1.1 STC89C51RC单片机简介 (2)3.1.2 STC89C51RC单片机应用 (2)3.2 1602液晶屏简介及其应用 (3)3.2.1 1602液晶屏简介 (3)3.2.2 1602液晶屏应用 (4)4硬件电路构建 (5)4.1中控部分以及时间基准部分 (6)4.2按键交互部分 (7)4.3液晶显示部分 (8)5 软件程序编程 (9)5.1计算类函数代码 (9)5.1.1闰年计算函数 (9)5.1.2日期清零函数 (9)5.1.3星期计算函数 (10)5.2独立按键函数 (11)5.2.1 S1数位选择按键 (11)5.2.2 S2数值加一按键 (12)5.2.3 S3数值减一按键 (14)5.3计时器函数 (15)5.3.1计时器初始化函数 (15)5.3.2计时器中断函数 (16)5.4全部源代码 (18)6结论 (29)1 引言单片机是一种集成电路芯片,是采用超大规模集成电路技术,把具有数据处理能力的中央处理器CPU、随机存储器RAM、多种I/O口和中断系统、定时器/计数器等功能集成到一块硅片上,构成的一块小而完整的计算机系统。

51单片机实现简易数字电压表(液晶显示)仿真图+程序

51单片机实现简易数字电压表(液晶显示)仿真图+程序
#include <reg51.h>
#include <lcd.c>
#include <ADC0809.c>
#define uchar unsigned char
#define uint unsigned int
void main()
{
uchar i;
ADC_init();
LCD_init();
while(1)
void LCD_w_com(uchar com)
{
while(lcd_bz());
LCD_DB=com;
LCD_RS=0;//指令
LCD_RW=0;//写入
LCD_E=1;
LCD_E=0;
delay(1);//等待执行完毕。。。
}
//===================写数据函数=================
void gotoxy(uchar x,uchar y) // x表示行,y表示列
{uchar address;
if(x==1)
address=0x80+y;
else
address=0xc0+y;
LCD_w_com(address);
}
//=========显示一个字符串==================
gotoxy(2,5);
LCD_display(c);
}
void sepr(uchar i)
{
uint ch;
ch=i;
c[0]='0'+ch/51;
c[1]='.';
c[2]='0'+(ch%51)*10/51;

基于51单片机的简易数字电压表的方案设计书

基于51单片机的简易数字电压表的方案设计书

班级:智能电网111学生:喻卫湖南铁道职业技术学院电气工程系目录1控制要求2设计目的意义3 系统原理框图4 89C52单片机5 ADC0809 的工作原理6 系统原理图和PCB图7程序流程图8 C语言程序9数字电压表工作原理10设计体会1控制要求利用STC89C52单片机和ADC0809设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码管显示,使用的元器件数目较少。

外界电压模拟量输入到A/D转换部分的输入端,通过ADC0809转换变为数字信号,输送给单片机。

然后由单片机给数码管数字信号,控制其发光,从而显示数字。

2设计目的意义1.通过亲身的设计应用电路,将所用的理论知识应用到实践中,增强实践动手能力,进而促进理论知识的强化。

2.通过数字电压表的设计系统掌握51单片机的应用。

掌握A/D转换的原理及软件编程及硬件设计的方法,掌握根据课题的要求,提出选择设计方案,查找所需元器,设计并搭建硬件电路,编程写入STC89C52单片机并进行调试等。

3 系统原理框图4 89C52引脚资料STC89C52P1 P0P3 P2AD0809D0~D7IN0~IN7VREF+VREF-CLKOEST、ALE四位数码管位选段选控制线数据待测电压系统原理框图89C51引脚图总线型DIP40引脚封装电源引脚(2个)VCC:接+5V电源。

GND:接地端。

外接晶体引脚(2个)XTAL1:外接晶振输入端(采用外部振荡器时,此引脚接地)。

XTAL2:外接晶振输入端(采用外部振荡器时,此引脚作为外部振荡信号输入端)。

并行输入/输出引脚(32个)P0.0~P0.7:通用I/O引脚。

P1.0~P1.7:通用I/O引脚。

P2.0~P2.7:通用I/O引脚或数据低8位地址总线复用引脚。

P3.0~P3.7:通用I/O引脚或第二功能引脚(RXD、TXD、INT0、INT1、T0、T1、WR 、RD)。

控制引脚(4个)RST/VPD:复位信号输入引脚/备用电源输入引脚。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于51单片机的简易电子表/***************************************************************** 阿斌独家制作:电子表1602液晶显示带有闹钟功能每天到指定时间后闹钟提醒闹钟响后按s4键关闭闹钟如果闹钟响后大约20秒未检测到s4键按下,则闹钟自动关闭******************************************************************/ #include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit lcden=P2^2;sbit lcdrw=P2^1;sbit lcdrs=P2^0;sbit s1=P3^0;sbit s2=P3^1;sbit s3=P3^2;sbit s4=P3^3;sbit rd=P3^7;sbit beep=P1^2;uint nian,a;uchar count,s1num,i,xq,ri,yue,flag;char shi,fen,miao,shia,fena,miaoa;uchar code table[]=" 2012-11-19 MON";uchar code table1[]=" 00:00:00";uchar code xq1[]="MON";uchar code xq2[]="TUE";uchar code xq3[]="WED";uchar code xq4[]="THU";uchar code xq5[]="FRI";uchar code xq6[]="SAT";uchar code xq7[]="SUN";void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void didi(){beep=1;delay(5);beep=0;delay(5);beep=1;delay(5);beep=0;delay(5);}void write_com(uchar com){lcdrs=0;lcden=0;lcdrw=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}void write_date(uchar date){lcdrs=1;lcden=0;lcdrw=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;}void init(){uchar num;lcden=0;xq=1;ri=19;yue=11;nian=2012;a=1000;flag=0;shia=00;fena=00;miaoa=05;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(num=0;num<16;num++){write_date(table[num]);delay(5);}write_com(0x80+0x40);for(num=0;num<12;num++){write_date(table1[num]);delay(5);}TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}void write_sfm2(uchar add,uint date) {uchar qian,bai,shi,ge;qian=date/1000;bai=date%1000/100;shi=date%100/10;ge=date%10;write_com(0x80+add);write_date(0x30+qian);write_date(0x30+bai);write_date(0x30+shi);write_date(0x30+ge);}void write_sfm1(uchar add,uchar date) {uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+add);write_date(0x30+shi);write_date(0x30+ge);}void write_sfm(uchar add,uchar date) {uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);}void write_xq(){write_com(0x80+13);switch(xq){case 1: for(i=0;i<3;i++){write_date(xq1[i]);delay(5);} break;case 2: for(i=0;i<3;i++){write_date(xq2[i]);delay(5);} break;case 3: for(i=0;i<3;i++){write_date(xq3[i]);delay(5);} break;case 4: for(i=0;i<3;i++){write_date(xq4[i]);delay(5);} break;case 5: for(i=0;i<3;i++){write_date(xq5[i]);delay(5);} break;case 6: for(i=0;i<3;i++){write_date(xq6[i]);delay(5);} break;case 7: for(i=0;i<3;i++){write_date(xq7[i]);delay(5);} break;default: break;}}void keyscan1(){if(s4==0){delay(5);if(s4==0){while(!s4);flag=1;}}}void keyscan(){rd=0;if(s1==0){delay(5);if(s1==0){s1num++;while(!s1);if(s1num==1){TR0=0;write_com(0x80+0x40+10);write_com(0x0f);}}if(s1num==2){write_com(0x80+0x40+7);}if(s1num==3){write_com(0x80+0x40+4);}if(s1num==4){write_com(0x80+13);}if(s1num==5){write_com(0x80+10);}if(s1num==6){write_com(0x80+7);}if(s1num==7){write_com(0x80+2);}if(s1num==8){s1num=0;write_com(0x0c);TR0=1;}}if(s1num!=0){if(s2==0){delay(5);if(s2==0){while(!s2);if(s1num==1){miao++;if(miao==60)miao=0;write_sfm(10,miao);write_com(0x80+0x40+10);}if(s1num==2){fen++;if(fen==60)fen=0;write_sfm(7,fen);}if(s1num==3){shi++;if(shi==24)shi=0;write_sfm(4,shi);write_com(0x80+0x40+4);}if(s1num==4){xq++;if(xq==8)xq=1;write_xq();write_com(0x80+13);}if(s1num==5){ri++;switch(yue){case 1: case 3: case 5: case 7:case 8: case 10: case 12: if(ri==32) ri=1; break;case 4: case 6: case 9: case 11: if(ri==31) ri=1; break;case 2: if(nian%4==0&&nian%100!=0||nian%400==0){if(ri==30)ri=0;}else if(ri==29)ri=0;break;}write_sfm1(10,ri);write_com(0x80+10);}if(s1num==6){yue++;if(yue==13)yue=1;write_sfm1(7,yue);}if(s1num==7){nian++;if(nian==2100)nian=2000;write_sfm2(2,nian);write_com(0x80+2);}}}if(s3==0){delay(5);if(s3==0){while(!s3);if(s1num==1){miao--;if(miao==-1)miao=59;write_sfm(10,miao);write_com(0x80+0x40+10);}if(s1num==2){fen--;if(fen==-1)fen=59;write_sfm(7,fen);write_com(0x80+0x40+7);}if(s1num==3){shi--;if(shi==-1)shi=23;write_sfm(4,shi);write_com(0x80+0x40+4);}if(s1num==4){xq--;if(xq==0)xq=7;write_xq();write_com(0x80+13);}if(s1num==5){ri--;switch(yue){case 1: case 3: case 5: case 7:case 8: case 10: case 12: if(ri==0) ri=31; break;case 4: case 6: case 9: case 11: if(ri==0) ri=30; break;case 2: if(nian%4==0&&nian%100!=0||nian%400==0){if(ri==0)ri=29;}else if(ri==0)ri=28;break;}write_sfm1(10,ri);write_com(0x80+10);}if(s1num==6){yue--;if(yue==0)yue=12;write_sfm1(7,yue);write_com(0x80+7);}if(s1num==7){nian--;if(nian==1999)nian=2099;write_sfm2(2,nian);write_com(0x80+2);}}}}}void set_alarm(){if(shi==shia&&fen==fena&&miao==miaoa) {while(a--){didi();keyscan1();if(flag==1){flag=0;break;}}a=1000;}}void main(){init();while(1){keyscan();set_alarm();}}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;if(count==18){count=0;miao++;if(miao==60){miao=0;fen++;if(fen==60){fen=0;shi++;if(shi==24){shi=0;xq++;if(xq=8){xq=1;}write_xq();ri++;switch(yue){case 1: case 3: case 5: case 7:case 8: case 10: case 12: if(ri==32) ri=1; break;case 4: case 6: case 9: case 11: if(ri==31) ri=1; break;case 2: if(nian%4==0&&nian%100!=0||nian%400==0){if(ri==30)ri=0;}else if(ri==29)ri=0;break;default: break;}if(ri==31||ri==30||ri==29||ri==28){yue++;if(yue==13){yue=1;nian++;if(nian==2099)nian=2000;write_sfm2(2,nian);}write_sfm1(7,yue);}write_sfm1(10,ri);}write_sfm(4,shi);}write_sfm(7,fen);}write_sfm(10,miao);}}。

相关文档
最新文档