




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机设计报告基于液晶显示器的电子时钟院 系: 专 业: 姓 名: 学 号: 指导老师: 完成日期: 第一章 设计简介及论述本次设计是一个显示数字时钟的功能的嵌入式系统,使用AT89C51控制芯片从DS1302芯片中取得年月日时分秒信息,显示到一片12864LCD显示器上。并显示“石河子大学”,“机械电气工程学院”字样。第二章 设计思路及方案各模块功能的原理分析(1)AT89C52单片机性能介绍AT89C52是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的只读程序存储器(PEROM)和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C52单片机适合于许多较为复杂控制应用场合。主要性能参数: 与MCS-51产品指令和引脚完全兼容 8k字节可重擦写Flash闪速存储器 1000次擦写周期 全静态操作:0Hz24MHz 三级加密程序存储器 2568字节内部RAM 32个可编程IO口线 3个16位定时计数器 8个中断源 可编程串行UART通道 低功耗空闲和掉电模式功能特性概述:AT89C52提供以下标准功能:8k字节Flash闪速存储器,256字节内部RAM,32个IO口线,3个16位定时计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。(2)设计一个能正常工作的单片机最小系统。单片机最小系统包括晶振电路和复位电路。晶振电路结合单片机内部电路产生所需的频率,晶振提供的时钟频率越高,那么单片机运行速度越快;单片机一切指令的执行都是建立在单片机晶振提供的时钟平率。本次设计晶振电路部分使用的无极性电容容值为22PF,晶振为12MHZ。复位电路的主要作用是把特殊功能寄存器的数据刷新为默认数据,单片机在运算过程中由于干扰等外界原因造成寄存器中数据混乱不能使其正常继续执行程序(称死机)或产生的结果不正确时均需要复位,以使程序重新开始运行。本次设计采用的是单片机启动复位功能。使用一个有极性电容容值为10uF和一个阻值为10K的电阻。单片机第31引脚(EA)的作用是选择存储器的,设置为高电平时使用片内ROM,低电平时使用片外ROM;本设计中无需外部ROM,所以将其连接至高电平。(3)设计单片机与AMPIRE128*64LCD显示器的连接电路,使单片机在AMPIRE128*64LCD控制显示相应效果。AMPIRE12864图形点阵液晶显示器,它主要采用动态驱动原理由行驱动控制器和列驱动控制器两部分组成了128(列)*64(行)的全点阵液晶显示。可显示8*4个16*16点阵汉字或16*4个16*8点阵ASCII字符集,也可以完成图形显示。与CPU接口采用5条位控制总线和8位并行数据总线输入输出,具有4位/8位并行,2线或3线串行多种接口方式。AMPIRE12864共18个引脚,其中包括8个三态数据引脚,5个控制信号引脚,1个复位引脚和4个电源相关引脚。AMPIRE12864详细引脚描述见表:AMPIRE12864引脚描述引脚号引脚名字级别引脚功能描述1CS1H/L片选信号,CS1=1时液晶左半屏显示2CS2H/L片选信号,CS2=1时液晶右半屏显示3GND0V电源地4VCC+5V电源电压5V00-10VLCD驱动负压,要求VDD-VLCD=13V6RSH/L寄存器选择信号7R/WH/L读/写操作选择信号8EH/L使能信号9DB0H/L八位三态并行数据线10DB111DB212DB313DB414DB515DB616DB717/RSTH/L复位信号,低电平有效18Vout-10V输出-10V的负电压(单电源供电)DDRAM是存储图形显示数据的。DDRAM的地址与显示位置关系对照如下表所示:DDRAM的地址与显示位置关系对照图除了两个片选CS1/2引脚之外还有三个控制引脚,一下为相关描述:使能信号E控制方式E状态执行动作功能下降沿I/O缓冲DDRAM配合R/W写数据或指令高电平DDRAMI/O缓冲配合RS进行读取数字或指令上升沿无动作RS,R/W的配合选择决定读写方式的4种模式RS信号R/W信号功能说明00MCU写指令到暂存器(IR)01读忙标志及地址计数器(AC)的状态10MCU写入数据到暂存器(DR)11MCU从数据暂存器(DR)中读出数据(4)设计单片机与DS1302芯片的连接电路,使单片机能够与DS1302芯片进行数据交换。DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.55.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。DS1302的外部引脚分配如图1所示及内部结构如图2所示。DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。DS1302的外部引脚分配各引脚的功能为:Vcc1:主电源;Vcc2:备份电源。当Vcc2Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2 Vcc1时,由Vcc1向DS1302供电。SCLK:串行时钟,输入,控制数据的输入与输出; I/O:三线接口时的双向数据线;CE:输入信号,在读、写数据期间,必须为高。该引脚有两个功能:第一,CE开始控制字访问移位寄存器的控制逻辑;其次,CE提供结束单字节或多字节数据传输的方法。DS1302内部寄存器列表如表2所示:寄存器名称命令字取值范围各位内容写读76543210秒寄存器80H81H00-59CH10SECSEC分寄存器82H83H00-59010MINMIN小时寄存器84H85H01-12或00-2312/240AHRHR日期寄存器86H87H01-28,29,30,310010DATEDATE月份寄存器88H89H01-1200010MMONTH周寄存器8AH8BH01-0700000DAY年份寄存器8CH8DH00-9910YEARYEAR控制寄存器8EH8FHWP0第三章 仿真软件调试结果3.1本次设计仿真调试通过三个部分完成:(1)硬件调试(2)软件调试(3)软硬件联调硬件调试完成后,使用软件对硬件模块进行单独测试,程序结构使用模块化编程,不同硬件模块使用分立文件单独编程,调试均正确后再使用主函数调用。3.2调试现象及分析软件调试的过程中,发现一些语法错误,我在调试过程中使用了while(1);函数对仿真过程暂停判断错误地方。再次过程中发现子文件不能过调用字库数组,使用指针方式可以解决这个问题。3.3仿真结果仿真效果图:第四章 心得体会通过这一次的课程设计,使我对单片机有了更深入的了解,在使用DS1302芯片和AMPIRE12864LCD显示器的过程中,查阅了大量的芯片与产品手册,对相关的控制指令进行长时间的摸索,逐渐熟悉DS1302芯片和AMPIRE12864LCD工作原理和过程。本次设计对我以后针对单片机的实际应用有着深刻的体会,在编写程序的过程中,清晰的思路,对编程有非常大的帮助。学会了怎样将理论很好的应用到实际当中去,而且我还学会了如何去培养我们的不畏艰险,勇于挑战的精神,我在设以设计过程中,学会了坚持不懈,不轻易放弃。附 录mian.c文件#include#include#include#include#define uchar unsigned char#define uint unsigned int/void main()init();disp_hz(1,0,0*16,shi);disp_hz(1,0,1*16,he);disp_hz(1,0,2*16,zi);disp_hz(1,0,3*16,da);disp_hz(2,0,4*16,xue);disp_hz(1,2,0*16,ji);disp_hz(1,2,1*16,xie);disp_hz(1,2,2*16,dian);disp_hz(1,2,3*16,qi);disp_hz(2,2,4*16,gong);disp_hz(2,2,5*16,cheng);disp_hz(2,2,6*16,xue1);disp_hz(2,2,7*16,yuan);disp_zf(1,4 ,0*8,digit+2*16);disp_zf(1,4 ,1*8,digit+0*16);disp_zf(1,4 ,4*8,digit+11*16);disp_zf(1,4 ,7*8,digit+11*16);disp_zf(2,6 ,2*8,digit+10*16);disp_zf(2,6 ,5*8,digit+10*16);set_rtc();/时钟芯片设置while(1)read_rtc();time_pros(disp);disp_zf(1,4 ,2*8,digit+disp0*16);/年disp_zf(1,4 ,3*8,digit+disp1*16);disp_zf(1,4 ,5*8,digit+disp4*16);/月disp_zf(1,4 ,6*8,digit+disp5*16);disp_zf(2,4 ,0*8,digit+disp6*16);/日disp_zf(2,4 ,1*8,digit+disp7*16);disp_zf(2,6 ,0*8,digit+disp8*16);/时disp_zf(2,6 ,1*8,digit+disp9*16);disp_zf(2,6 ,3*8,digit+disp10*16);/分disp_zf(2,6 ,4*8,digit+disp11*16);disp_zf(2,6 ,6*8,digit+disp12*16);/秒disp_zf(2,6 ,7*8,digit+disp13*16);AMPIRE12864.c文件#include#include#define databus P0#define uchar unsigned char#define uint unsigned intsbit rs=P12;sbit rw=P11;sbit en=P10;sbit cs1=P14;sbit cs2=P13;/判忙函数void checkbusy()en=1;rs=0;rw=1;databus=0x00;while(databus&0x80);/写指令函数void write_command(uchar com)checkbusy();rs=0;rw=0;en=1;databus=com;_nop_();_nop_();en=0;/写数据函数void write_data(char dat)checkbusy();rs=1;rw=0;en=1;databus=dat;_nop_();_nop_();en=0;/设置页函数void set_page(uchar page)page=0xb8|page;write_command(page);/设置显示起始行函数void set_line(uchar line)line=0xc0|line;write_command(line);/设置起始列函数void set_column(uchar column)column=0x40|column;write_command(column);/选屏函数void selectscreen(uchar screen)switch(screen)case 0 :cs1=cs2=0;break;/全屏case 1 :cs1=0;cs2=1;break;/左半屏case 2 :cs1=1;cs2=0;break;/右半屏/设置显示开关函数void setonoff(uchar onoff)/cs1=cs2=0;onoff=0x3e|onoff;write_command(onoff);/清屏函数void clearscreen()uchar i,j;/cs1=cs2=0;for(i=0;i8;i+)set_page(i);set_column(0);for(j=0;j64;j+)write_data(0x00); /初始化函数void init()selectscreen(0);/选屏checkbusy();/判忙clearscreen();/清屏setonoff(1);/开显示set_line(0);/显示起始行 /显示函数/选屏/设置页/设置列/汉字数组地址void disp_hz(uchar ss,uchar page ,uchar column,uchar *P)uchar i;selectscreen(ss);set_page(page);set_column(column);for(i=0;i16;i+)write_data(Pi);/汉字的上半部分set_page(page+1);set_column(column);for(i=0;i16;i+)write_data(Pi+16);/汉字的下半部分/显示字符void disp_zf(uchar ss,uchar page ,uchar column,uchar *P)uchar i;selectscreen(ss);set_page(page);set_column(column);for(i=0;i8;i+)write_data(Pi);/汉字的上半部分set_page(page+1);set_column(column);for(i=0;i8;i+)write_data(Pi+8);/汉字的下半部分AMPIRE12864.h库文件#ifndef _init_h_#define _init_h_#define uchar unsigned charvoid init();void disp_hz(uchar ss,uchar page ,uchar column,uchar *P);void disp_zf(uchar ss,uchar page ,uchar column,uchar *P);#endifDS1302.c文件#include#include#include/#include#define uchar unsigned char#define uint unsigned int/uchar time_data7=10,6,4,17,11,58,30;/年周月日时分秒(十进制)uchar write_add7=0x8c,0x8a,0x88,0x86,0x84,0x82,0x80;/写地址uchar read_add7=0x8d,0x8b,0x89,0x87,0x85,0x83,0x81;/读地址sbit rst=P15;sbit sck=P16;sbit io=P17;/void write_ds1302_byte(uchar dat);void write_ds1302(uchar add,uchar dat);uchar read_ds1302_byte(uchar add);/void ds1302_init();void set_rtc();void read_rtc();void time_pros(uchar *disp1);void display();/*单字节写*/void write_ds1302_byte(uchar dat)uchar i;for(i=0;i1;sck=1;/上升沿被写入/*将要写入的数据按地址写入*/void write_ds1302(uchar add,uchar dat)rst=0;_nop_();sck=0;_nop_();rst=1;_nop_();write_ds1302_byte(add);write_ds1302_byte(dat);rst=0;_nop_();io=1;sck=1;/*按地址读对应的数据*/uchar read_ds1302_byte(uchar add)uchar i,value;rst=0;_nop_();sck=0;_nop_();rst=1;_nop_();write_ds1302_byte(add);for(i=0;i1;/第一次空移,实际移位7次sck=0;/下降沿被读出if(io)value=value|0x80;sck=1;rst=0; _nop_();sck=0;_nop_();sck=1;io=1;return value; /*设置实时时钟*/void set_rtc()uchar i,j;/*将数据处理成BCD码格式,存放到time_data数组*/for(i=0;i7;i+)j=time_datai/10;time_datai=time_datai%10;time_datai=time_datai+j*16;write_ds1302(0x8e,0x00);/去除写保护/*将新设定的时间存入DS1302芯片*/for(i=0;i7;i+)write_ds1302(write_addi,time_datai);write_ds1302(0x8e,0x80);/加上写保护/*读实时时钟time_data数组里存放的数据是BCD码格式的*/void read_rtc()uchar i;for(i=0;i7;i+)time_datai=read_ds1302_byte(read_addi);/*数据处理*/void time_pros(uchar *disp1)disp18=time_data4/16;/时disp19=time_data4%16;/disp2=16;disp110=time_data5/16;/分disp111=time_data5%16;/disp5=16;disp112=time_data6/16;/秒disp113=time_data6%16;disp10=time_data0/16;/年disp11=time_data0%16;disp12=time_data1/16;/周disp13=time_data1%16;disp14=time_data2/16;/月disp15=time_data2%16;disp16=time_data3/16;/日disp17=time_data3%16;DS1302.h库文件#ifndef _DS1302_init_h_#define _DS1302_init_h_#define uchar unsigned charvoid read_rtc();void time_pros(uchar *disp1);void set_rtc();#endif字库文件hanzi.hunsigned char code shi=/*- 文字: 石 -*/*- 黑体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x06,0x06,0x86,0xE6,0xFE,0xDE,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x06,0x06,0x00,0x04,0x06,0x03,0x01,0x7F,0x7F,0x30,0x30,0x30,0x30,0x30,0x7F,0x7F,0x00,0x00,0x00,;unsigned char code he=/*- 文字: 河 -*/*- 黑体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x20,0x62,0xC6,0x0C,0x00,0xF6,0xF6,0x36,0xF6,0xF6,0x06,0xFE,0xFE,0x06,0x06,0x00,0x20,0x70,0x1C,0x0E,0x00,0x0F,0x0F,0x06,0x07,0x07,0x60,0x7F,0x3F,0x00,0x00,0x00,;unsigned char code zi=/*- 文字: 子 -*/*- 黑体12; 此字体下对应的点阵为:宽x高=16x16 -*/0xC0,0xC0,0xC3,0xC3,0xC3,0xC3,0xC3,0xF3,0xF3,0xDB,0xCF,0xC7,0xC3,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x60,0x7F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,;unsigned char code da=/*- 文字: 大 -*/*- 黑体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x30,0x30,0x30,0x30,0x30,0xFF,0xFF,0x30,0x30,0x30,0x30,0x30,0x30,0x00,0x00,0x00,0x40,0x60,0x30,0x18,0x0E,0x07,0x03,0x06,0x0C,0x18,0x30,0x60,0x40,0x00,0x00,;unsigned char code xue=/*- 文字: 学 -*/*- 黑体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x38,0x39,0xDB,0xDE,0xD8,0xD9,0xDB,0xDE,0xD8,0xDC,0xDF,0x3B,0x38,0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x26,0x66,0x7E,0x3F,0x07,0x06,0x06,0x06,0x06,0x00,0x00,;unsigned char code ji=/*- 文字: 机 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x08,0x08,0xC8,0xFF,0x48,0x88,0x08,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x04,0x03,0x00,0xFF,0x00,0x41,0x30,0x0C,0x03,0x00,0x00,0x00,0x3F,0x40,0x78,0x00,;unsigned char code xie=/*- 文字: 械 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x10,0xD0,0xFF,0x50,0x90,0x00,0xE8,0x08,0xE8,0x08,0xFF,0x08,0x0A,0xCC,0x08,0x00,0x06,0x01,0xFF,0x00,0x20,0x19,0x07,0x01,0x5F,0x21,0x13,0x0C,0x33,0x40,0xF8,0x00,;unsigned char code dian=/*- 文字: 电 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00,;unsigned char code qi=/*- 文字: 气 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x20,0x10,0x8C,0xA7,0xA4,0xA4,0xA4,0xA4,0xA4,0xA4,0xA4,0x24,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x30,0x40,0xF0,0x00,;unsigned char code gong=/*- 文字: 工 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,;unsigned char code cheng=/*- 文字: 程 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x10,0x12,0xD2,0xFE,0x91,0x11,0x80,0xBF,0xA1,0xA1,0xA1,0xA1,0xBF,0x80,0x00,0x00,0x04,0x03,0x00,0xFF,0x00,0x41,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x40,0x00,;unsigned char code xue1=/*- 文字: 学 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00,;unsigned char code yuan=/*- 文字: 院 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0xFE,0x02,0x32,0x4A,0x86,0x0C,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0x0C,0x04,0x00,0xFF,0x00,0x02,0x04,0x83,0x41,0x31,0x0F,0x01,0x01,0x7F,0x81,0x81,0x81,0xF1,0x00,;unsigned char code digit=/*- 文字: 0 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,/*- 文字: 1 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,/*- 文字: 2 -*/*- 宋体12; 此字体下对应的点阵为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年射线RT无损检测员初级面试练习题集
- 2025年VR交互设计师中级面试模拟题及答案
- 2025年安全生产安全文化建设练习题集
- 2025年农家乐厨师面试实战技巧与模拟试题
- 2025年安全生产法规知识测试题及答案库
- 2025年摄影测量员理论知识模拟题库中级
- 2025年旅游规划师职业潜力测评试卷及答案解析
- 2025年金融分析师综合能力测试题及答案解析
- 2025年驾驶员安全培训技能考核试题及答案解析
- 2025年环境科学与工程领域专业技术考试试卷及答案解析
- 2025新版企业员工劳动合同范本
- PCR实验室基因扩增检验人员培训试题及答案
- 2025年全国版图知识竞赛(中学组)历年参考题库含答案详解(5卷)
- 2025年西藏自治区三支一扶人员招募考试(公共基础知识)历年参考题库含答案详解(5卷)
- 护士长领导力提升与团队管理技巧
- 2025年富县辅警考试题库(附答案)
- 2026届张家港市达标名校中考语文模试卷含解析
- 保密观试题含答案2025年
- DB42T 1917.1-2022 中药材 水蛭(日本医蛭)养殖与加工技术规程 第1部分:种苗繁育
- 柏拉图教育思想体系解析
- 奶茶线上活动方案
评论
0/150
提交评论