实验报告——多功能万年历.pdf
《实验报告——多功能万年历.pdf》由会员分享,可在线阅读,更多相关《实验报告——多功能万年历.pdf(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机实验项目中期报告多功能万年历课程名称:单片机原理及应用组 别:第二十组小组成员:*班 级:*一、总体设计由于我们实验是在网上购买的现成的开发板来学习和使用的,故在方案的选择上也只能限于开发板设计好的电路和芯片。系统分为主控模块、时钟电路模块、温度检测模块,按键扫描模块,L C D显示模块,电源电路、复位电路、晶振电路等模块。该设计采用 S T C 8 9 c5 2芯 片 实 现 单 片 机 万 年 历 功能。设 计 应 具 有 时 间 显 示,年月日显示 等功能。依据需求可扩展实现 农历显示 功能。运用prote us进行仿真,实现 电路仿真。运 用C语言实现软件相关功能。焊接并完成作品
2、调试。二、详细设计1、各模块、元器件的型号及功能主控模块采用A T 8 9 c5 2单 片 机,S T C 8 9 C 5 2,A T M E L的5 1系列单片机。支持串口下载,使用非常方便,且具有很大的价格优势。缺点是仅支持串口下载,不支持在线下载,使用中会有些不方便。按键模块用四个按键,用于调整时间,显示模块采用L C D 1 6 0 2,时钟电路模块采用D S 1 3 0 2时钟芯片实现对时间、日期的操作,温度模块使用1 8 B 2 0实现度温度的操作。2、流程图3、软件仿真电路图RESfAC,18尹 明.u:U2GND CRYSTAL.M ;CRYSTAL-LCD1LHOKL22-4
3、5-27 27.0B2014-04-21TUEg K名N S W 岩C2XTAL1FOUftDOP01A01PQ2AD2P03WD3PQ“MHP05A05POJ6mD6P07AOTP2HM8,2.1 4P22W10P23ftliW.W12P2M3P21JR1SC422DlF口a出A7WC51.P3IM?X0P3.VDCDP J Z liE rP33flNTT,3.4/TOn s rriP3fiW l-P37/RD3键/农历查看加键4、实物连接图16-12-d I3:I2三、目前实现的功能(录制视频)四、小组分工情况李彪:连接电路,进行程序的烧写。王进:收集资料,参与相关连接。于红红:程序读写,
4、对实物的介绍。五、进度安排(截止时间12月2 3日)项目实验已完成近70%,有些功能还不能实现,有待完善,预计二十号完成。六、附 录(程序)Si n c l u d e 调用单片机头文件 d e f i n e u c ha r u n s i g n e d c ha r 无符号字符型宏定义 变量范围0 25 5W d e f i n e u i n t u n s i g n e d i n t 无符号整型 宏定义 变量范围0 65 5 35#i n c l u d e “e e pr o m 5 2.h”Si n c l u d e n o n g l i.hb i t f l a g
5、_ 20 0 m s ;b i t f l a g _ 10 0 m s ;s b i t b e e p=P37;b i t f l a g _ b e e p_ e n;蜂鸣器定义u i n tc l o c k _ v a l u e;用作闹钟用的s b i ts b i td q =P3l;hw_ P32=P32;b i t f l a g _ j i e m a _ e nu c ha r hw_ t a b l e 4;/18b 20 10 口的定义红外遥控10 口的定义0;红外解码成功标志位红外解码数据缓冲区u i n t t _ hi g h=30 0,t _ l o w=10
6、 0;u i n t t e m pe r a t u r e ;/温度变量u c ha r f l a g _ n l;农历 阳历显示标志位/*红 外遥控器按键 的操作 码*红外遥控对应的数据字节hw_ t a b l e 245440 7160 c464015191847430 90 d5 e0 8 1c 5 a42 5 2 4au c ha r m e n u _ l,m e n u _ 2;u c ha r k e y _ t i m e,f l a g _ v a l u e;用做连加的中间变量b i t k e y _ 5 0 0 m s ;u c ha r n _ n i a n
7、,n _ y u e,n _ r i;农历显示的函数t t i n c l u d e d s l 30 2.ht t i n c l u d e l c d l 60 2.h/*10 0 u s 的延时函数*12M 晶振*/v o i d d e l a y _ 10 0 u s(u c ha r z)/12Mu c ha r x,y;f o r (x=0;xz;x+)f o r (y=0;y 20;y+);)/*把数据保存至单片机内部 e e pr o m 中*/v o i d wr i t e _ e e pr o m()Se c t o r Er a s e (0 x20 0 0);b
8、 y t e _ wr i t e(0 x20 0 0,f e n l);b y t e _ wr i t e(0 x20 0 1,s hi l);b y t e _ wr i t e(0 x20 0 2,o pe n l);b y t e _ wr i t e (0 x20 0 3,t _ hi g h%25 6);b y t e _ wr i t e(0 x20 0 4,t _ hi g h/25 6);b y t e _ wr i t e (0 x20 0 5,t _ l o w%25 6);b y t e _ wr i t e(0 x20 0 6,t _ l o w/25 6);b y
9、 t e _ wr i t e(0 x20 5 8,a _ a);)/*把 数 据 从 单 片 机 内 部 e e pr o m 中 读 出 来v o i d r e a d _ e e pr o m()(f e n l =b y t e _ r e a d(0 x20 0 0);s hi l =b y t e _ r e a d (0 x20 0 1);o pe n l =b y t e _ r e a d(0 x20 0 2);t _ hi g h=b y t e _ r e a d(0 x20 0 4);t _ hi g h =8;t _ hi g h|=b y t e _ r e a
10、d(0 x20 0 3);t _ l o w=b y t e _ r e a d (0 x20 0 6);t _ l o w =8;t _ l o w=b y t e _ r e a d(0 x20 0 5);a _ a =b y t e _ r e a d(0 x20 5 8);)/*开机自检 e e pr o m 初始化*/v o i d i n i t _ e e pr o m()(r e a d _ e e pr o m ();先读i f (a _ a !=43)新的单片机初始单片机内问e e pr o m(f e n l =3;s hi l =8;o pe n l =1;t _ hi
11、 g h=35 0;t _ l o w=10 0;a _ a =34;wr i t e _ e e pr o m();保存数据)/*18b 20 初 始 化数v o i d i n i t _ 18b 20()b i t q;d q =1;d e l a y _ u i n t(1);d q =0;d e l a y _ u i n t(80);d q =1;d e l a y _ u i n t(10);q =d q;d e l a y _ u i n t (20);d q =1;把总线拿高/15 u s给复位脉冲/75 0 u s把总线拿高等待/H Ou s读取18b 20初始化信号/20
12、 0 u s把总线拿高释放总线/*写 18b 20 内的数据*/v o i d wr i t e _ 18b 20(u c ha r d a t)u c ha r i;f o r (i=0;i 8;i+)写数据是低位开始d q =0;把总线拿低写时间隙开始d q =d a t&0 x0 1;向 18b 20 总线写数据了d e l a y _ u i n t (5);/60 u sd q =1;d a t =1;释放总线/*读取 18b 20 内的数据*/u c ha r r e a d8b 20()u c ha r i,v a l u e;f o r(i=0;i 8;i+)(d q =0;把
13、总线拿低读时间隙开始v a l u e =1;读数据是低位开始d q =1;释放总线i f(d q =1)开始读写数据v a l u e|=0 x0 1;d e l a y _ u i n t(5);/60 u s 读一个时间隙最少要保持60 u s的时间)r e t u r n v a l u e;/返回数据)/*读取温度的值 读出来的是小数*/u i n t r e a d _ t e m p()u i n t v a l u e;u c ha r l o w;在读取温度的时候如果中断的太频繁了,就应该把中断给关了,否则会影响到18b 2 0的时序i n i t8b 20();初始化 18
14、b 20wr i t e _ 18b 20 (Oxc c);跳过 64 位 ROMwr i t e _ 18b 20(0 x44);启动一次温度转换命令d e l a y _ u i n t(5 0);/5 0 0 u si n i t _ 18b 20();初始化18b 20wr i t e _ 18b 20 (Oxc c);wr i t e _ 18b 20(Oxb e);跳过64位ROM发出读取暂存器命令EA=0;l o w=r e a d _ 18b 20();v a l u e =r e a d _ 18b 20 ();读温度低字节读温度高字节EA=1;v a l u e =8;v
15、a l u e =l o w;v a l u e *=0.625;r e t u r n v a l u e;把温度的高位左移8位把读出的温度低位放到v a l u e的低八位中转换到温度值小数返回读出的温度带小数/*Im s 延时函 数*/v o i d d e l a y _ l m s(u i n t q)u i n t i,j;f o r (i=0;i q;i+)f o r(j=0;j 120;j+);/*写星期 函 数*/v o i d wr i t e _ we e k (u c ha r ha n g,u c ha r a d d,u c ha r we e k)写星期函数i f
16、(ha n g=l)wr i t e _ c o m(0 x80+a d d);e l s ewr i t e _ c o m(0 x80+0 x40+a d d);s wi t c h(we e k)(c a s e 1:wr i t e _ d a t a(M );星期数为 1 时,显示wr i t e _ d a t a(,O);wr i t e _ d a t a(,N );b r e a k;c a s e 2:wr i t e _ d a t a(,T);星期数据为2时显示wr i t e _ d a t a(,U);wr i t e _ d a t a(,E);b r e a k
17、;c a s e 3:wr i t e _ d a t a(,;星期数据为3时显示wr i t e _ d a t a(,E);wr i t e _ d a t a(,D);b r e a k;c a s e 4:wr i t e _ d a t a(,T);星期数据为4是显示wr i t e _ d a t a(,H );wr i t e _ d a t a(,U);b r e a k;c a s e 5:wr i t e _ d a t a(,F );星期数据为5时显示wr i t e _ d a t a(,R);wr i t e _ d a t a(,I);b r e a k;c a s
18、 e 6:wr i t e _ d a t a(,S);星期数据为6 时显示wr i t e _ d a t a(?T);wr i t e _ d a t a(,A);b r e a k;c a s e 7:wr i t e _ d a t a(,S);星期数据为7 时显示wr i t e _ d a t a (,U);wr i t e _ d a t a(,N );b r e a k;)/*时钟显示*/v o i d i n i t _ 160 2_ d s l 30 2()wr i t e _ s f m 2_ d s l 30 2(1,1,s hi);?wr i t e _ s f m
19、2_ d s l 30 2(1,4,f e n);/wr i t e _ s f m 2_ d s l 30 2(1,7,m i a o);,wr i t e _ we e k(2,12,we e k);/wr i t e _ s f m l (1,14,we e k);/wr i t e _ s f m 3_ l 8B20(1,11,t e m pe r a t u r e);i f (f l a g _ n l =0)显示阳历显示时显示分显示秒显示星期;显示温度wr i t e _ s f m 2_ d s l 30 2(2,2,n i a n);wr i t e _ s f m 2_ d
20、 s l 30 2(2,5,y u e);wr i t e _ s f m 2_ d s 130 2(2,8,r i);e l s e显示农历wr i t e _ s f m 2_ d s l 30 2(2,2,n _ n i a n);wr i t e _ s f m 2_ d s l 30 2(2,5,n _ y u e);wr i t e _ s f m 2_ d s l 30 2(2,8,n _ r i);显示年显示月显示日显示年显示月显示日)/*定时器 o 初始化程序*/v o i d i n i t _ t i m e O()(EA=1;开总中断TM OD=0 X 0 1;定时器0
21、、工作方式1ETO=1;开定时器0中断TRO=1;允许定时器0定时)/*闹 钟 报警函 数*/v oi d m e n u _ di s()st a t i c u c ha r m m,v a l u e;i f (f l a g _ 10 0 m s=1)10 0 m s 执行一次(f l a g _ 10 0 m s=0;i f (ope n l=二1)如果闹钟打开(i f(m i a o=0)&(f e n =f e n l)&(shi =shi l)(f l a g _ b e e p_ e n=1;有报警打开蜂鸣器响的标志位i f (f l a g _ b e e p_ e n 二
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 报告 多功能 万年历
限制150内