基于51单片机的简易电子表
基于51单片机的电子跑表
![基于51单片机的电子跑表](https://img.taocdn.com/s3/m/c421bf7027d3240c8447ef6f.png)
电子跑表电路元件说明
一、显示部分
显示部分采用两片四位一体和两位一体的共阴数码管作为电路的显示时间信息和跑表的计时信息,显示部分驱动采用一片74HC04作为数码管的驱动芯片,如下图:
74HC04为六组反相器我们用来驱动六位数码管的共阴端,1A-6A为输入端,1Y-6Y为输出端。
二、复位电路
此复位电路为单片机上电的瞬间提供复位信号供单片机复位,在上电的瞬间
电容C1相当于同路,电压信号通过电容给单片机复位引脚提供一个高电平的复位信号,在电容充满电之后复位结束单片机进入正常工作状态,电阻R1为电容的放电电阻,用于在单片机掉电后快速将电容C1中的电量消耗掉方便下次单片机上电复位。
按键直接接在单片机VCC和单片机复位引脚端,当按下按键后单片机复位引脚通过按键短接到VCC实现复位,松开按键复位结束。
三、晶振电路
如中X1为单片机晶振,为单片机提供时钟信号,晶振值在仿真时设定为12MHZ,C2和C3为晶振起振电容。
四、时钟电路部分
单片机走时时钟信号使用一片DS1302作为计时基准,从1302中读取时分秒信息并实时显示在数码管,设定的时间信息可在按下确认键后保存到DS1302。
电池BT1为DS1302的掉电走时电池,方便单片机系统掉电后能继续走时。
五、按键部分
一共使用9个按键来作为电路的设定和切换键,按键功能及分布如下图
六、 单片机
单片机使用STC89系列51单片机作为主控芯片。
51单片机写的电子表
![51单片机写的电子表](https://img.taocdn.com/s3/m/a068c94ae518964bcf847c97.png)
用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单片机的电子表设计](https://img.taocdn.com/s3/m/9a8cfa246137ee06eef91860.png)
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单片机的简易数字电压表的设计单片机](https://img.taocdn.com/s3/m/ff61f154fd0a79563d1e7294.png)
基于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单片机的数字秒表设计](https://img.taocdn.com/s3/m/74efa4270242a8956aece4a4.png)
摘要本设计是基于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单片机的简易电子表设计与仿真](https://img.taocdn.com/s3/m/3c943720be1e650e52ea99f3.png)
智能仪器及使用实验报告项目名称:基于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单片机电子秒表设计(Proteus)
![51单片机电子秒表设计(Proteus)](https://img.taocdn.com/s3/m/364d63f10b4c2e3f5627631f.png)
51单片机电子秒表设计(Proteus)单片机硬件设计结课论文简易秒表设计专业:计算机科学与技术学生姓名:学号: 1307064248完成时间:2020年12月28日目录一、简述 (3)二、主要工具 (2)三、线路连接图(ISIS 7 Professional环境) (2)四、实现细则 (2)显示电路 (2)定时计数器 (3)五、程序 (4)六、模拟运行截图 (16)七、心得体会 (16)一、简述此秒表主要实现的功能是利用单片机内部定时计数器实现计时,然后通过LED组件显示出来。
因为这次设计时使用的是并排的6个数字显示LED,所以在计时时精确到10ms,最大即时59分59秒99。
实现过程中的主要部分包含显示和定时。
因为该LED与单片机相接的引脚只有14个,其中8个接在P0口上实现字形的显示,剩下的6个接在P2口用于选择6个数字型LED中的一个显示,所以每次只能显示一个数字。
要实现多个数字的显示需要快速显示每个LED,利用人的视觉差来实现多个数字同时显示。
计时只用到定时计数器T1(因为需要配合中断优先级,故没有使用T0,下文会详细讲到)。
另外还用到了两个按键,和两个LED灯(红、绿)。
按键用于控制开始计时和暂停、重置,LED 灯用于指示当前工作状态。
二、主要工具Keil uVision3,ISIS 7 Professional,AT89C51基础组件(试验箱)。
三、线路连接图(ISIS 7 Professional环境)四、实现细则显示电路数字型LED的实现原理为每个单元(共6个单元)含8个发光独立的LED灯,其中7个构成“8”字形,剩下的一个为小数点。
6个单元的每个相同位置引脚并联起来,最后通过8根线连接到单片机的P0口。
因此如果不把另外6根线连接上,每次通过P0口输出值时6个显示单元都会显示相同的图形(数字)。
LED单元组中另外6根引脚连接到单片机上,实现“按位显示”,并且是低电平选择,例如“111101”对应显示的是从右到左的第5个LED 单元。
电子测量大作业(基于C51单片机的简单数字电压表)
![电子测量大作业(基于C51单片机的简单数字电压表)](https://img.taocdn.com/s3/m/7f8d3a15e97101f69e3143323968011ca300f78a.png)
电⼦测量⼤作业(基于C51单⽚机的简单数字电压表)基于单⽚机的简易数字电压表的设计⼀、概述本课题设计是⼀种基于单⽚机的简易数字电压表的设计。
该设计主要由三个模块组成:A/D转换模块,数据处理模块及显⽰模块。
A/D转换主要由芯⽚ADC0808来完成,它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。
数据处理则由芯⽚AT89C51来完成,其负责把ADC0808传送来的数字量经过⼀定的数据处理,产⽣相应的显⽰码送到显⽰模块进⾏显⽰;此外,它还控制着ADC0808芯⽚⼯作。
⼆、主要芯⽚1、ADC0808 主要特性ADC0808是CMOS单⽚型逐次逼近式A/D转换器,带有使能控制端,与微机直接接⼝,⽚内带有锁存功能的8路模拟多路开关,可以对8路0-5V输⼊模拟电压信号分时进⾏转换,由于ADC0808设计时考虑到若⼲种模/数变换技术的长处,所以该芯⽚⾮常适应于过程控制,微控制器输⼊通道的接⼝电路,智能仪器和机床控制等领域。
ADC0808主要特性:8路8位A/D转换器,即分辨率8位;具有锁存控制的8路模拟开关;易与各种微控制器接⼝;可锁存三态输出,输出与TTL兼容;转换时间:128µs;转换精度:0.2%;单个+5V电源供电;模拟输⼊电压范围0- +5V,⽆需外部零点和满度调整;低功耗,约15mW。
ADC0808芯⽚有28条引脚,采⽤双列直插式封装,其引脚图如图3所⽰。
图1 ADC0808引脚图下⾯说明各个引脚功能:IN0-IN7(8条):8路模拟量输⼊线,⽤于输⼊和控制被转换的模拟电压。
地址输⼊控制(4条):ALE: 地址锁存允许输⼊线,⾼电平有效,当ALE为⾼电平时,为地址输⼊线,⽤于选择IN0-IN7上那⼀条模拟电压送给⽐较器进⾏A/D转换。
ADDA,ADDB,ADDC: 3位地址输⼊线,⽤于选择8路模拟输⼊中的⼀路,其对应关系如表1所⽰:表1 ADC0808通道选择表START:START为“启动脉冲”输⼊法,该线上正脉冲由CPU送来,宽度应⼤于100ns,上升沿清零SAR,下降沿启动ADC⼯作。
基于51单片机的简易数字电压表的方案设计书
![基于51单片机的简易数字电压表的方案设计书](https://img.taocdn.com/s3/m/a88a31ac6529647d272852ad.png)
班级:智能电网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:复位信号输入引脚/备用电源输入引脚。
基于51单片机的电子式单相智能电表设计
![基于51单片机的电子式单相智能电表设计](https://img.taocdn.com/s3/m/eea2b77ff5335a8102d220a3.png)
山东农业大学毕 业 论 文 基于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.................................. 错误!未定义书签。
基于AT89C51单片机的电子表设计
![基于AT89C51单片机的电子表设计](https://img.taocdn.com/s3/m/378a8beb700abb68a982fba5.png)
题目: 基于A T89C51单片机的电子表设计1.设计要求利用AT89C51单片机作为微控制器,在数码管通过一个控制键转换来显示相应的时间和日期,能通过多个控制键用来实现时间和日期的调节。
2. 设计任务与要求2.1系统硬件电路设计根据该系统设计的功能要求选择所用元器件,设计硬件电路。
要求用Proteus绘制整个系统电路原理图。
2.2软件设计根据该系统要求的功能进行软件设计,绘制整个系统的软件流程图;根据流程图编写程序并汇编调试通过;列出软件清单,软件清单要求逐条加以注释。
2.3 Proteus仿真用Proteus对系统软硬件进行仿真调试并通过。
2.4 编写设计说明书内容包括任务书、设计方案分析、硬件部分设计、软件部分设计、调试结果整理分析、设计调试的心得体会等,字数不少于5000字;硬件部分设计要绘制整个系统电路原理图,对各部分电路设计原理做出说明;软件设计部分要(用visio2003画图软件)绘制整个系统及各部分的软件流程图,列出程序清单,逐条加以注释,并注明各程序功能块的功能。
3.工作计划4.主要参考资料单片机课程设计指导书皮大能北京理工大学出版社 2012.7 8051单片机实践与应用吴金戎清华大学出版社2003.8单片机技术基础教程与实践夏路易电子工业出版社2008.1单片机原理及应用张毅刚高等教育出版社 2012.11基于Proteus的单片机系统设计与仿真实例蒋辉平机械工业出版社2007.7…指导老师签字:日期:一、电子表1.1电子表简介1957年,Ventura发明了世界上第一个电子表,从而奠定了电子表的基础,电子表开始迅速发展起来。
现代的电子表是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。
从而达到计时的功能,是人民日常生活补课缺少的工具。
1.2 电子表的原理该电子表由AT89C51,74LS373,BUTTON,数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天,满三十天(闰年二月满二十九天,平年二月满二十八天)为一个月,满十二个月为一年。
基于C51单片机的电子表(内附完整程序源码)
![基于C51单片机的电子表(内附完整程序源码)](https://img.taocdn.com/s3/m/c7136c1a86c24028915f804d2b160b4e767f81e6.png)
基于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单片机的电子表设计](https://img.taocdn.com/s3/m/397bbc75b0717fd5370cdc5f.png)
此次设计主要是应用单片机来设计电子时钟, 硬件部分主要分以下电路模块: 显示电 路用8个共阴极数码显示。
电路的总体设计框架如下:
第
3.1
89C51是一个8位单片机,片内ROM全部采用FLASH RO技术,晶振时钟为12MHz 89C51是标准的40引脚双列直插式集成电路芯片,有4个八位的并行双向I/O端口,分 别记作P0、P1、P2、P3。第31引脚需要接高电位使单片机选用内部程序存储器;第40脚为电源端VCC接+5V电源,第20引脚为接地端VSS通常在VCC和VSS引脚之间接0.1卩F高频滤波电容。
应用极为广泛的51系列单片机。
利用AT89C51单片机定时器完成计时功能,定时器0计时中断程序每隔0.01s中断一 次并当作一个计数,设定定时1秒的中断计数初值为0,每中断一次中断计数初值加1, 当加到100时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。
为了将时间在6位LED数码管上显示,可采用静态显示法和动态显示法, 由于静态显示法 需要译码器,数据锁存器等较多硬件,可采用动态显示法实现LED显示,通过对每位数码
即按键的开与关,以达到用按键进行显示时间的调整与设置扩展的小键盘的设计要求,
电路采用
3.5
段码与
单片机芯片即可控制段码电平的高低的方式实现数码管段码控制。
第4章电路设计原理图
—UTE*-、
5.1
在主程序的开始定义了一组固定单元用来存储计数的分、秒、时的存储单元。在主程 序中,对不同的按键进行扫描,实现秒表,时间调整。系统总体流程图如图
部脉冲源引入脉冲信号以保证个单片机之间时钟信号的同步。从硬件实现难易角度考虑, 内部时钟电路的实现比外部时钟电路的实现更简易。既本数字电子钟设计所需的时钟源采
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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[]="SA T";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);write_com(0x80+0x40+7);}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);write_com(0x80+7);}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);}}。