版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2012016-2017学年第一学期《微机原理及接口技术课程设计》《微机原理及接口技术课程设计》基于C51单片机的万年历系统学院:计算机科学与信息工程学院专业:软件工程学号:141033 姓名:日期:2016年12月16日
目录一、设计要求及目的 3(1)设计要求: 3(2)实验目的: 3二、实验环境 3三、主要元器件列表 3四、实验原理 4五、程序源代码 5六、总结 12
一、设计要求及目的万年历就是记录一定时间范围内的具体公历与农历日期的年历,方便有需要的人查询使用。万年只是一种象征,表示时间跨度大,与机械时钟相比,电子万年历具有更高的精确性和直观性,使用寿命长。因此广泛用于家庭、车站、码头和办公室等公共场所,成为人们日常生活中不可少的必需品。下面介绍一种基于单片机的电子万年历系统,能够实现年、月、日、时、分、秒、温度、星期的显示与调节。(1)设计要求:1.显示:能够显示年、月、日、时、分、秒、温度、星期:调用write_sfm(int,uchar)函数显示时分秒、调用write_nyr(int,uchar)函数显示年月日、调用write_week(week)函数星期数、调用write_temp(int,ReadTemperature())函数显示温度。2.输入、输出:能够读取系统时间,并在LM016L显示器显示出数据。3.中断:使用voidtimer()interrupt1中断函数,取得并显示日历和时间。4.定时器、计数器:在voidinit()函数中进行对定时器、计数器的设置。5.通信技术:与DS1302和DS18B20通信,获取时间与温度。(2)实验目的:掌握《微机原理及接口技术》课程所学理论知识,通过实践操作,实现对显示器、定时器、计数器、输入设备、输出设备、中断操作、双机通信等原理的综合运用。二、实验环境Windows环境下:KeiluVision4、Proteus7Professional。三、主要元器件列表编号名称参数数量1单片机AT89C5112时钟芯片DS130213温度传感器DS18B2014液晶显示器LM016L1表一主要元器件列表
四、实验原理图一万年历系统实验原理图
五、程序源代码#include<reg52.h>#include"DS18B20.H"#defineuintunsignedint#defineucharunsignedcharuchara,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp;//flag用于读取头文件中的温度值,和显示温度值#defineyh0x80//LCD第一行的初始位置,因为LCD1602字符地址首位D7恒定为1(100000000=80)#defineer0x80+0x40//LCD第二行初始位置(因为第二行第一个字符位置地址是0x40)//液晶屏的与C51之间的引脚连接定义(显示数据线接C51的P0口)sbitrs=P2^7;sbiten=P2^5;sbitrw=P2^6;sbitled=P2^6;//LCD背光开关//DS1302时钟芯片与C51之间的引脚连接定义sbitIO=P2^1;sbitSCLK=P2^0;sbitRST=P2^2;sbitACC0=ACC^0;sbitACC7=ACC^7;/************************************************************ACC.O就是ACC的第0位。Acc可以位寻址。************************************************************///校时按键与C51的引脚连接定义sbitkey1=P3^2;//设置键sbitkey2=P3^3;//+键sbitkey3=P3^4;//-键sbitbuzzer=P2^4;//蜂鸣器。通过三极管9012驱动,端口低电平响/*****************************************************************/ucharcodetabl[]={"2016-12-14"};//年显示的固定字符ucharcodetab2[]={"15:17:03"};//时间显示的固定字符voiddelay(uintxms)//延时函数,有参函数{uintx,y;for(x=xms;x>0;x--)for(y=110;y>0;y--);}write_1602com(ucharcom)//液晶写入指令函数{rs=0;//数据/指令选择置为指令rw=0;//读写选择置为写P0=com;//送入数据delay(1);en=1;//拉高使能端,为制造有效的下降沿做准备,下降沿写代码delay(1);en=0;//en由高变低,产生下降沿,液晶执行写代码命令}write_1602dat(uchardat)//液晶写入数据函数{rs=1;//数据/指令选择置为数据rw=0;//读写选择置为写P0=dat;//送入数据delay(1);en=1;//en置高电平,为制造下降沿做准备delay(1);en=0;//en由高变低,产生下降沿,液晶执行命令}//***液晶初始化函数***lcd_init(){write_1602com(0x38);//设置液晶工作模式:16*2行显示,5*7点阵,8位数据write_1602com(0x0c);//开显示不显示光标write_1602com(0x06);//整屏不移动,光标自动右移write_1602com(0x01);//清显示write_1602com(yh+1);//日历显示固定符号从第一行第1个位置之后开始显示for(a=0;a<14;a++){write_1602dat(tabl[a]);//向液晶屏写日历显示的固定符号部分//delay(3);}write_1602com(er+2);for(a=0;a<8;a++){ write_1602dat(tab2[a]); //delay(3);}}/******************DS1302有关的子函数*********************/voidwrite_byte(uchardat)//写一个字节{ ACC=dat; RST=1; for(a=B;a>0;a--) { IO=ACC0; SCLK=0; SCLK=1; ACC=ACC>>1; }}ucharread_byte()//读一个字节{ RST=1; for(a=8;a>0;a--) { ACC7=IO; SCLK=1; SCLK=0; ACC=ACC>>1; } return(ACC);}voidwrite_1302(ucharadd,uchardat)//向1302芯片写函数,指定写入地址、数据{ RST=0; SCLK=0; RST=1; write_byte(add); write_byte(dat); SCLK=1; RST=0;}ucharread_1302(ucharadd)//从1302读数据函数,指定读取数据来源地址{ uchartemp; RST=0; SCLK=0; RST=1; write_byte(add); temp=read_byte(); SCLK=1; RST=0; return(temp);}ucharBCD_Decimal(ucharbcd)//BCD码转十进制函数,输入BCD返回十进制{ ucharDecimal; Decimal=bcd>>4; return(Decimal=Decimal*10+(bcd&=0x0f));}voidds1302_init()//1302芯片初始化子函数{ RST=0; SCLK=0; write_1302(0x8e,0x00); write_1302(0x8e,0x80);}voidwrite_temp(ucharadd,uchardat)//向LCD写温度数据,并指定显示位置{ uchargw,sw; gw=dat%10; sw=dat/10; write_1602com(er+add); write_1602dat(0x30+sw); write_1602dat(0x30+gw); write_1602dat(0xdf); write_1602dat(0x43);}voidwrite_sfm(ucharadd,uchardat)//向LCD写时分秒{ uchargw,sw; gw=dat%10; sw=dat/10; write_1602com(er+add); write_1602dat(0x30+sw); write_1602dat(0x30+gw);}//年月日显示子函数voidwrite_nyr(ucharadd,uchardat)//写年月日{ uchargw,sw; gw=dat%10; sw=dat/10; write_1602com(yh+add); write_1602dat(0x30+sw); write_1602dat(0x30+gw);}voidwrite_week(ucharweek)//写星期数{ write_1602com(yh+0x0c); switch(week) { case1:write_1602dat('M'); write_1602dat('O'); write_1602dat('N'); break; case2:write_1602dat('T'); write_1602dat('U'); write_1602dat('E'); break; case3:write_1602dat('W'); write_1602dat('E'); write_1602dat('D'); break; case4:write_1602dat('T'); write_1602dat('H'); write_1602dat('U'); break; case5:write_1602dat('F'); write_1602dat('I'); write_1602dat('R'); break; case6:write_1602dat('S'); write_1602dat('T'); write_1602dat('A'); break; case7:write_1602dat('S'); write_1602dat('U'); write_1602dat('N'); break; }}/************键盘扫描有关函数************************/voidkeyscan(){ { if(key1==0) { delay(9); if(key1==0) { buzzer=0; delay(20); buzzer=1; while(!key1); key1n++; if(key1n==9) { key1n=1; switch(key1n) { case1: TR0=0; write_1602com(er+0x09); write_1602com(0x0f); temp=(miao)/10*16+(miao)%10; write_1302(0x8e,0x00); write_1302(0x80,0x80|temp); write_1302(0x8e,0x00); break; case2:write_1602com(er+6); break; case3:write_1602com(er+3); break; case4:write_1602com(yh+0x0e); break; case5:write_1602com(yh+0x0a); break; case6:write_1602com(yh+0x07); break; case7:write_1602com(yh+0x04); break; case8:write_1602com(yh+0x0c); TR0=1; temp=(miao)/10*16+(miao)%10; write_1302(0x8e,0x00); write_1302(0x80,0x00|temp); write_1302(0x8e,0x80); break; } } } /************加键key2*****************/ } }}voidinit()//定时器、计数器设置函数{ TMOD=0X11; TH0=0; TL0=0; EA=1; ET0=1; TR0=1;}voidmain()//主函数{ lcd_init(); //初始化液晶 ds1302_init();//调用DS1302时钟的初始化子函数 init();//调用定时计数器的设置子函数 led=0;//打开LCD背光电源 buzzer=0; delay(80); buzzer=1;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高档商品房认购协议书
- 商业秘密授权使用协议
- 塑料排水板堆载预压施工方案
- 高空作业平台安全专项施工方案
- 管道顶管施工测量放线方案
- 数据中心运维管理安装施工方案
- 土地表面平整施工措施
- 降水施工技术方案
- 仓库管理员安全制度
- 2026年跨境电商营销推广方案
- 现代西班牙语A1课后翻译
- 《碳排放管理体系建设与评价指南》
- 装配式建筑装饰装修技术 课件 模块一 装配式装修概述
- FZ∕T 93043-2012 棉纺并条机行业标准
- 高铁火车工作原理
- MOOC 英国小说-南京大学 中国大学慕课答案
- 《旅游法规》课件-第25讲 旅行社责任保险分析
- MOOC 隔网的智慧-乒羽两项-西南交通大学 中国大学慕课答案
- JTT327-2016 公路桥梁伸缩装置通用技术条件
- 实验题-江苏省南通市10年(2013-2022)中考物理真题按题型分类(解析版)
- 高中化学选择性必修3 教材习题答案
评论
0/150
提交评论