课程设计报告--数字时钟的设计与制作.doc_第1页
课程设计报告--数字时钟的设计与制作.doc_第2页
课程设计报告--数字时钟的设计与制作.doc_第3页
课程设计报告--数字时钟的设计与制作.doc_第4页
课程设计报告--数字时钟的设计与制作.doc_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

天津职业技术师范大学Tianjin University of Technology and Education课 程 设 计专业班级:应电 0814学生姓名:苏鹏 姚金伟 张劲松指导教师:潘静 讲师 刘新月 讲师系 别:电子工程学院目 录一、数字时钟的设计与制作31.1主要技术指标31.2方案论证及选择31.2.1方案论证3方案一:使用专用时钟芯片。4方案二:采用MCU内部定时器。41.2.2方案选择51.3系统组成框图51.4单元电路设计61.5总体电路图111.6电路仿真121.7调试过程及测试结果121.7.1调试过程121.7.2测试结果331.8主要元件清单33二、出租车计费器的设计与制作351.1主要技术指标351.2方案论证及选择351.2.1方案论证351.2.2方案选择371.3系统组成框图371.4单元电路设计371.5总体电路图421.6调试过程及测试结果431.6.1调试过程431.7.2测试结果581.8主要元件清单581.9课程设计小结59三、个人总结61天津职业技术师范大学课程设计一、数字时钟的设计与制作1.1主要技术指标 设计和制作一个显示时、分、秒的数字时钟,具有校时功能,可对小时和分单独校时,对分校时的时候,停止向小时的进位。校时时钟可以手动输入或借用电路中的时钟;实现秒表功能;省电状态(不显示);显示年、月、日、学号。在实现数字时钟功能的同时,设计和制作一个温度显示器,可用键盘设置温度的上限和下限,测量的温度高于低于设置的温度时,温度显示器报警。1.2方案论证及选择1.2.1方案论证 单片机的选择:方案一:采用型号为AT89S52的51单片机芯片。51内核具有丰富的指令集和32个通用工作寄存器。所有的寄存器都直接与算术逻辑单元(ALU) 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC微控制器最高至10倍的数据吞吐率。AT89S52有如下特点:8K字节的系统内可编程Flash(具有同时读写的能力,即(RWW),512 字节EEPROM,1K字节SRAM,32个通用I/O口线,32个通用工作寄存器,用于边界扫描的JTAG 接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/ 计数器(T/C),片内/外中断,可编程串行USART,有起始条件检测器的通用串行接口,具有片内振荡器的可编程看门狗定时器,一个SPI串行端口,以及六个可以通过软件进行选择的省电模式。 工作于空闲模式时CPU停止工作,而USART、两线接口、SRAM、T/C、SPI 端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态;Standby模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力;扩展Standby模式下则允许振荡器和异步定时器继续工作。本芯片是以Atmel高密度非易失性存储器技术生产的。片内ISP Flash允许程序存储器通过ISP串行接口,或者通用编程器进行编程,也可以通过运行于AVR 内核之中的引导程序进行编程。引导程序可以使用任意接口将应用程序下载到应用Flash存储区(Application Flash Memory)。在更新应用Flash存储区时引导Flash区(Boot Flash Memory)的程序继续运行,实现了RWW操作。 通过将8位RISC CPU与系统内可编程的Flash集成在一个芯片内,ATmega16 成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。方案二:选用其他单片机。无论从单片机的资源,还是执行速度进行比较,51单片机都要比其他单片机性价比高。而且51单片机的价格比其他单片机便宜。计时控制方案方案一:使用专用时钟芯片。使用微控制器控制专用时钟芯片实现计时控制,这种方案有着计时精度高、控制简单的优点,而且更易于实现日期/时间显示、定时烹调等计时扩展功能。方案二:采用MCU内部定时器。AT89S52内部含有2个定时器,可以利用一个定时器与程序计数器相结合的方式,在系统晶振的驱动下,产生标准时钟频率。显示方案选择方案一:数码管显示工作原理简单,软件编程简单,但考虑到本电路功能多所需数码管多,组合使用电路焊接难度加大,故不宜使用。方案二:液晶显示工作原理较复杂,切编程难度大,但外围电路简单,能显示多种字符,能够同时显示多位字符,焊接也比较容易。1.2.2方案选择 单片机的选择:根据以上的两种方案的比较,本电路设计时最终采用的是AT89S52芯片。计时控制方案根据以上的两种方案的比较,本电路设计时最终采用的是实用专用的时钟芯片。显示方案选择 根据以上的两种方案的比较,考虑到方案二比较适合本电路,切可用软件实现多位显示,综上所述,故选择方案二。选择最常用的显示器1602。1.3系统组成框图系统组成框图如下图1-1所示:图1-11.4单元电路设计(1) 复位电路如图1-2所示:图1-2(2)晶振电路如图1-3所示:图1-3(3)显示电路如图1-4所示:图1-4 液晶显示器用的是HS1602芯片,共有16个管脚,三个控制口,七个数据口,是一种低功能CMOS技术实现的LCD模块。液晶显示模块具有体积小、功耗低、显示内容丰富等特点,现在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件了。1602B可以显示2行16个字符,有8位数据总线D0-D7,和RS、R/W、EN三个控制端口,工作电压为5V,并且带有字符对比度调节和背光。该模块也可以只用D4-D7作为四位数据分两次传送。1602B外观如图1-5所示:图1-51602引脚说明如表2-1所示:编号符号引脚说明编号符号引脚说明1VSS电源地9D2双向数据口2VDD电源正极10D3双向数据口3VL对比度调节11D4双向数据口4RS数据/命令选择12D5双向数据口5R/W读/写选择13D6双向数据口6E模块使能端14D7双向数据口7D0双向数据口15BLK背光源地8D1双向数据口16BLA背光源正极表2-11602的基本操作时序为:读状态:输入: RS=0,RW=1,E=1 输出:D0D7=状态字写指令:输入: RS=0,RW=0,D0D7=指令码,E=高脉冲 输出:无读数据:输入: RS=1,RW=1, 输出:D0D7=数据写数据:输入: RS=1,RW=0,D0D7=数据,E=高脉冲 输出:无(4) 时钟信号产生电路:本单元电路采用时钟芯片DS1302来实现日期、时间的显示功能。DS1302 是DALLAS 公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31 字节静态RAM 通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM 指示决定采用24 或12 小时格式DS1302 与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线(1) RES(复位)(2) I/O 数据线(3)SCLK(串行时钟)时钟/RAM 的读/写数据以一个字节或多达31 个字节的字符组方式通信DS1302 工作时功耗很低保持数据和时钟信息时功率小于1mW。DS1302的管脚配置图如图1-6所示:图1-6管脚描述:X1、X2: 32.768KHz 晶振管脚GND: 地RST: 复位脚/O: 数据输入/输出引脚SCLK: 串行时钟Vcc1,Vcc2:电源供电管脚(5)闹钟电路如图1-7所示:图1-7(6)按键电路如图1-8所示:图1-81.5总体电路图总体电路图如图1-9所示:图1-91.6电路仿真电路仿真图如下图1-10:图1101.7调试过程及测试结果1.7.1调试过程(1) 电路按设计图焊接确保无误。(2) 软件编程流程图: 按电路设计图,分配各I/O口; 根据任务要求分配各按键功能; 根据分配的按键功能完成相应的编程; 根据各分配的I/O口,完成相应的编程; 完成芯片1602初始化程序; 完成主程序的编程。(3) 软件流程图如图1-11所示开始系统初始化读取数据否是判断是否有按键按下数据处理按键处理数据显示结束调时、调分、调温度上下限图1-11(4)整体编程如下: #include#include#include#include#include#define uchar unsigned char#define uint unsigned intsbit buzz = P26;sbit lcd_on=P14;sbit lcd_rs=P24; sbit lcd_rw=P15;sbit lcd_re=P25;sbit dq = P31;sbit s1 =P20; /总控制端sbit s2 =P21;/加一sbit s3 =P22; /减一 sbit s4 =P23; /秒表控制sbit s7=P27; /the controlling of the lcdvoid lcd_writedata(uchar date);void lcd_writecom(uchar com);void change(uchar add,uchar date,uchar row);void delay_ds1820(int num);uchar readonechar(); /读一个字节void writeonechar(uchar dat); /写一个字节uchar code wendu=0123456789;uint readtemp() ; /读温度void displayw() ; /显示温度void key();void guding();void ds1302_inputbyte(uchar d); uchar ds1302_outputbyte();uchar read1302(uchar add);void write1302(uchar add,uchar date);void get_1302(uchar realtime);void xianshi();void miaobiao_init();void keys();void set_alarm();void read_alarm();void alarm();void alarm_sound();void sheng_set();void read_sheng();void sheng();sbit ds1302_rst=P10; /ds1302脚定义sbit ds1302_clk=P11;sbit ds1302_io=P12;sbit acc0 = ACC0;sbit acc7 = ACC7;uchar C12_24,count=0,up=25,dn=25;uchar num,s1num,s4num,flag,flag1,flag2,flag3; /定义变量uchar shi,fen,miao,weimiao,t;char time7,time17;uchar ashi,afen,amiao,anian,ayue,ari;uchar code table_1=BY: 21 29 41;uchar code table_2=Welcome to use!;uchar table_3=ST_UP:;uchar table_3_1=30;uchar table_4_1=20;uchar table_4=ST_DN:;uchar code table= StopWatch ;uchar code table1= 00:00:00:00 ;uchar code table43=Mon,Tue,Wed,Thu,Fri,Sat,Sun;void write_xingqi(char xingqi);void delay(uint z) uint x,y;for(x=z;x0;x-) for(y=110;y0;y-); void lcd_init()/液晶初始化和命令数据操作lcd_rw=0;lcd_writecom(0x38);lcd_writecom(0x0c);lcd_writecom(0x06);lcd_writecom(0x01);lcd_writecom(0x80); void lcd_writecom(uchar com)lcd_rs=0;lcd_re=0;P0=com;lcd_re=1;delay(1);lcd_re=0;void lcd_writedata(uchar date)lcd_rs=1;lcd_re=0;P0=date;lcd_re=1;delay(1);lcd_re=0;void change(uchar add,uchar date,uchar row)uchar shi,ge; shi=date/10; ge=date%10;if(row=0) lcd_writecom(0x80+add); lcd_writedata(0x30+shi); lcd_writedata(0x30+ge);if(row=1) lcd_writecom(0x80+0x40+add); lcd_writedata(0x30+shi); lcd_writedata(0x30+ge);void key()if(s4=0)delay(5);if(s4=0) flag1=1;while(!s4);s4num+;if(s4num=1) lcd_init(); miaobiao_init(); lcd_writecom(0x80+0x40+4); lcd_writedata(:); lcd_writecom(0x80+0x40+7); lcd_writedata(:); lcd_writecom(0x80+0x40+10); lcd_writedata(:); lcd_writecom(0x80+2); for(num=0;num14;num+) lcd_writedata(tablenum); delay(6); if(s4num=2)TR0=1; if(s4num=3)TR0=0;if(s4num=4) lcd_init(); miaobiao_init(); lcd_writecom(0x80+0x40+4); lcd_writedata(:); lcd_writecom(0x80+0x40+7); lcd_writedata(:); lcd_writecom(0x80+0x40+10); lcd_writedata(:); lcd_writecom(0x80+2); for(num=0;num0;i-)ds1302_io = acc0; ds1302_clk = 1; ds1302_clk = 0; ACC = ACC 1; uchar ds1302_outputbyte( ) /实时时钟读取一字节 uchar i; for(i=8; i0; i-) ACC = ACC 1; acc7 = ds1302_io; ds1302_clk = 1; ds1302_clk = 0; return(ACC); void write1302(uchar add,uchar date) ds1302_rst = 0; ds1302_clk = 0; ds1302_rst = 1; ds1302_inputbyte(add); ds1302_inputbyte(date); ds1302_clk = 1; ds1302_rst = 0;uchar read1302(uchar add)uchar date; ds1302_rst = 0; ds1302_clk = 0; ds1302_rst = 1; ds1302_inputbyte(add); date = ds1302_outputbyte(); ds1302_clk = 1; ds1302_rst = 0; return(date);void get_1302(uchar realtime)uchar i;uchar add=0x81;for(i=0;i7;i+)realtimei=read1302(add);add+=2;void xianshi()uchar i,a;get_1302(time);for(i=0;i12) a = a-12; lcd_writecom(0x80+0x40+8); lcd_writedata(P); else lcd_writecom(0x80+0x40+8); lcd_writedata(A); else a =time12;lcd_writecom(0x80+0x40+8); lcd_writedata( ); change(6,time10,1);/写秒 change(3,time11,1);/写分change(0,a,1);/写时change(8,time13,0);/写日change(5,time14,0); /写月write_xingqi(time15);change(2,time16,0); /写年void write_xingqi(char xingqi)char num;lcd_writecom(0x80+12);for(num=0;num0;i-)dq = 0; dat=1;dq = 1; if(dq)dat|=0x80;delay_ds1820(4);return(dat);void writeonechar(uchar dat) /写一个字节 uchar i;for (i=8; i0; i-)dq = 0;dq = dat&0x01;delay_ds1820(5);dq = 1;dat=1;uint readtemp() /读温度uchar a=0;uchar b=0;uint t=0;float tt=0; Init_DS18B20();writeonechar(0xCC);writeonechar(0x44); Init_DS18B20();writeonechar(0xCC);writeonechar(0xBE);a=readonechar();b=readonechar();t=b;t=up)|(ge=dn) buzz=0;else buzz=1;ge=ge%10;xiaoshu=num%10;lcd_writecom(0x80+0x40+10);lcd_writedata(wendushi);lcd_writecom(0x80+0x40+11); lcd_writedata(wenduge);lcd_writecom(0x80+0x40+12);lcd_writedata(0x2e);lcd_writecom(0x80+0x40+13);lcd_writedata(wenduxiaoshu);void miaobiao_init() change(2,0,1);lcd_writecom(0x80+0x40+2);change(5,0,1);lcd_writecom(0x80+0x40+5);change(8,0,1);lcd_writecom(0x80+0x40+8);change(11,0,1);lcd_writecom(0x80+0x40+11);TMOD=0x01;TH0=(65536-10000)/256;TL0=(65536-10000)%256;ET0=1;EA=1;TR0=0;void set_alarm()write1302(0x8e,0x00); /控制写入write1302(0xc0,0x08); /时 write1302(0xc2,0x00); /分write1302(0xc4,0x00); /秒 write1302(0x8e,0x80); /禁止写入void read_alarm() write1302(0x8e,0x00);/写控制字,允许写操作 ashi=read1302(0xc1);afen=read1302(0xc3); amiao=read1302(0xc5); write1302(0x8e,0x80);/写保护,不允许写 void Show_num(void) lcd_writecom(0x80+1); for(num=0;num15;num+) lcd_writedata(table_2num); delay(6); lcd_writecom(0x80+0x40+2); for(num=0;num12;num+) lcd_writedata(table_1num); delay(6); void wenkey() if(!s2) delay(70); if(!s2) up+; if(up=50) up=25; while(!s2); table_3_10=up/10;table_3_11=up%10; if(!s3) delay(70); if(!s3) dn-; if(dn=0) dn=25; while(!s3); table_4_10=dn/10; table_4_11=dn%10; void SetTemp() lcd_writecom(0x80+0); for(num=0;num6;num+) lcd_writedata(table_3num); delay(6); lcd_writedata(table_3_10+0x30); lcd_writedata(table_3_11+0x30); lcd_writecom(0x80+0x40+0); for(num=0;num6;num+) lcd_writedata(table_4num); delay(6); lcd_writedata(table_4_10+0x30); lcd_writedata(table_4_11+0x30);void main() uchar ds1302_read;delay(100);lcd_init(); lcd_on = 0;Show_num();delay(1000);lcd_writecom(0x01); while(s1)wenkey(); SetTemp(); lcd_writecom(0x01);delay(500);lcd_init();write1302(0x90,0xa5);guding(); ds1302_read=read1302(0xc3);write1302(0x8e,0x00);if(!(ds1302_read=0x33) ds1302_set( ) ;write1302(0xc2,0x33);set_alarm();read_alarm();buzz =1; while(1) key();if(flag1=0) if(flag=0) xianshi(); displayw() ; delay(10); void time0() interrupt 1TH0=(65536-10000)/256;TL0=(65536-10000)%256;weimiao+;if(weimiao=100)weimiao=0;miao+;if(miao=60)miao=0;fen+;if(fen=60)fen=0;s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论