lcd实时日历时钟评测报告

合集下载

实时时钟设计试验报告

实时时钟设计试验报告

实验报告5.按下Key4 Key3执行时,该按键执行加一操作,Led灯按照5秒顺时针一个一个亮。

6.按下Key5 Key3执行时,该按键执行减一操作,Led灯按照5秒顺时针一个一个亮。

7.按下Key6 Key3执行时,该按键执行确定操作,Led灯按照5秒顺时针一个一个亮。

8.按下INT 闹钟关闭。

5、实验总结本次实验是对课本上“电子日历钟设计”的加深。

通过本次试验我对led和led显示有了更加熟悉的认识,能熟练应用它们的功能。

同时我对时钟计数器也有了一定的认识,可以使用定时中断实现实时时钟,更重要的是我的实践能力有很大的提高。

程序设计中遇到的问题(1)、问题:初始完成程序后秒针走的时间很快,不是精确的一秒走一次。

原因:单片机只能用主系统时间,修改fprs后可以真确显示。

(2)、问题:时间切换函数与显示函数和设计的不一样,如只需要显示时,却多显示分。

原因:在仔细看代码后发现每次按键中断都在调用time1()函数,而seeond++在里面,所以每次都会加快秒的运行。

把seeond++移到外面放入time()函数后这个问题就解决了。

(3)、问题:运行时发现按键中断总会加快秒的运行,不是很精确。

原因:最后设置了一个虚拟的key7,当执行完时间指向ease7,然后调用Freshddisplaybuffer函数,这样就很好的解决了这个问题。

在程序调试过程中,设置断点并且在断点处增加一个LED灯,通过判断灯是否亮可以判断程序是否执行到该位置,对程序调试有很大的帮助。

开始WhileKey? 6 1 3 2 4 结束主程序流程图附件程序流程图:Yd_c_inter() Freshddisp laybuffer(); Set_D_T(); noise(); key=7; , 5 NDownNum() ; Freshddispl aybuffer(); Set_D_T(); noise(); key=7; FreshddisplaybufferTime1();Show_Time();Show_Time(); Time1() Freshddis playbuffer ();; Display_D ate(); noise(); 初始化蜂鸣器并关闭蜂鸣器BZOE = 0;初始化 INT 按键 Init_Inter();初始化 Lcd 和 Led; Init_Lcd(),Init_Led();UpNum(); Freshddis playbuffer (); Set_D_T(); noise(); key=7; key = 0; noise(); Time1(); Freshddis playbuffer (); Set_D_T(); noise();初始化按键中断InitKey_INTKR();Time1(); noise();关中断DI ()关中断EI()开中断EI();源代码:#pragma sfr#pragma EI#pragma DI#pragma access#pragma interrupt INTTM000 Time#pragma interrupt INTKR OnKeyPress#pragma interrupt INTP5 OnKeyOver void Init_Led();void InitKey_INTKR();void Init_Lcd();void Init_Inter();void LightOneLed(unsigned char ucNum);void LightOff();int Count_Day(int month);〃定义变量i,是切换时间的标志//定义 key=0 〃用于存放当前月的天数 〃默认的秒second=0 〃默认的分minute=0 〃默认的时hour=12 〃默认的天day=1 〃默认的月month=5 〃默认的年year=2014 〃默认的闹钟时=1 〃默认的闹钟分=1 〃秒的数码显示缓存区 〃分的数码显示缓存区 〃时的数码显示缓存区 〃天的数码显示缓存区 〃月的数码显示缓存区 〃年的数码显示缓存区 〃月,天的数码显示缓存区 〃时,分的数码显示缓存区 〃分,秒的数码显示缓存区 〃闹钟时的数码显示缓存区 〃闹钟分的数码显示缓存区 //INT 中断中间变量LCD_num[10]={0X070d,0x0600,0x030e,0x070a,0x0603,0x050b,0x050f,0x0700,0x070f,0x070b);//数字0〜〜9的显示码unsigned char Scond;// ......................................................... 延时函数1 .............................................. //void Delay(int k){int i,j;for(i=0;i<k;i++){for(j=0;j<k;j++){〃使用特殊功能寄存器 〃开中断 〃关中断 〃使用绝对地址指令 〃定义时间中断函数为Time 〃定义按键中断为OnKeyPress //定义INT 中断为OnKeyOverchar i=0;int key=0;int temp=1;int temp1 = 1;int second=0;int minute=0;int hour=12;int day=1;int month=5;int year=2014;int c_hour=1;int c_minute=1;int buffs[2];int buffm[2];int buffh[2];int buffday[2];int buffmonth[2];int buffyear[4];int buffmd[4];int buffhm[4];int buffms[4];int buffch[2];int buffcm[2];unsigned char Que = 0;int// .................................................. 初始化Led函数................ //void Init_Led(){PM13=0XF0; 〃端口13的第四位为输出模式PM14=0XF0; 〃端口14的第四位为输出模式PM15=0XF0; 〃端口15的第四位为输出模式)// ............................................................. 按键中断函数............... •//void InitKey_INTKR(){PM4 = 0x3F; //P4的六个端口设置为输入模式PU4 = 0x3F; 〃接通上拉电阻KRM = 0x3F; 〃允许六个按键中断KRMK = 0;PM3.0 = 1;PU3.0 = 1;EGP.5 = 1;PMK5 = 0;PPR5 = 0;KRPR = 1;)// ............................... 初始化lcd函数............... //void Init_Lcd(){ PFALL=0x0F; 〃所有接lcd引脚指定为lcd引脚LCDC0=0x34; 〃设置原时钟和时钟频率LCDMD=0x30; //设置lcd电压为3/5电压LCDM=0xC0; //4分时1/3偏压模式)// ............................... 初始化定时器Inter函数.............. 〃void Init_Inter(){ CRC00)=0; //CR000为比较寄存器PRM00=0X04; 〃计数时钟为fprs/2A8 CR000=0X7FFF;//时间间隔为1s TMMK010=1;//TMMK010 中断屏蔽TMMK000=0; //TMMK000 中断允许TMC00=0X0C; //TM00和CR000相等时进入清零&启动模式)void Time(){ second++;)// ............................................................. 按键中断函数............... •//void OnKeyPress(){DI();switch(P4&0x3F) 〃判断哪个按键按下{case 0x3e:key=1; //按键keyl按下break;case 0x3d:key=2; //按键key2按下break;case 0x3b:key=3; //按键key3按下break;case 0x37:key=4; //按键key4按下break;case 0x2f:key=5; //按键key5按下break;case 0x1f:key=7; //按键key6按下break;default:break;)EI();)// ............................................................... I NT按键中断函数............... //void OnKeyOver(){DI();Que = 0; //判断Que是否为0BZOE = 0; 〃蜂鸣器关闭EI();)// ................................................... Led小灯函数............... //void LightOneLed(unsigned char ucNum){switch(ucNum){ 〃检测变量ucNumcase 0:case 1:case 2:case 3:P13 |= (unsigned char) 1 << (ucNum);〃如果为0到3中的一个值则让LED1到LED4中的一个亮break;case 4:case 5:case 6:case 7:P14 |= (unsigned char) 1 << (ucNum - 4);〃如果为4到7中的一个值则让LED5到LED8中的一个亮break;case 8:case 9:case 10:case 11:P15 |= (unsigned char) 1 << (ucNum - 8);〃如果为8至U 11中的一个值则让LED9至U LED12中的一个亮break;default:break;))// ................................................... Led小灯熄灭函数............... 〃void LightOff(){P13 = 0;P14 = 0;P15 = 0;)// ............................................. 时间函数.............. 〃void Time1(){if((second % 5) == 0){ 〃秒大于 5 变为0Scond = second / 5 + 1;LightOff(); 〃调用小灯亮函数LightOneLed(Scond % 12);)if(second>=60){minute++; //秒大于60时分加1second=0;if(minute>=60){minute=0;hour++; //分大于60时时加1if(hour>=24){hour=0;day++; 〃时大于24时天加1temp=Count_Day(month);if(day>=temp){day=1;month++; 〃天大于当前月份的天数时月加1if(month>=13){month=1;year++; //月大于12时年加1))))))// ...................................... 计算当前月的天数.............. •//int Count_Day(int month){int day;if((month==4)||(month==6)||(month==9)||(month==11))//4,6,9,11 月为30 天day=30;else if(month==2){if((year%4==0&&year%100==0)||(year%400==0))day=29; 〃闰年2月29天elseday=28; //平年2月28天)elseday=31; //1,3,5,7,8,10,12 月为31 天return (day);)// ................................ 倒计时函数 ...... //void Show_Time(){ pokew(0xFA40,0x00); pokew(0xFA42,0x00); pokew(0XFA48,buffs[1]); pokew(0XFA4A,buffs[0]); pokew(0XFA44,buffm[1]); pokew(0XFA46,buffm[0]); pokew(0xFA4C,0x00); pokew(0xFA4E,0x00); Delay(100);) // ..................................................................... 日期显示函数 ................. •// void Display_Date(){buffm[0]|=0x0800;pokew(0xFA40,buffyear[3]);〃显示年 pokew(0xFA42,buffyear[2]);pokew(0xFA44,buffyear[1]);pokew(0xFA46,buffyear[0]);pokew(0xFA48,buffmonth[1]);〃显示月 pokew(0xFA4A,buffmonth[0]);pokew(0xFA4C,buffday[1]);〃显示日pokew(0xFA4E,buffday[0]);temp1=0;) // .................................................................... 时间显示函数 .............. •//void Display_Time(){ pokew(0xFA40,0x00);pokew(0xFA42,0x00);pokew(0xFA44,buffh[1]);〃显示时 pokew(0xFA46,buffh[0]);pokew(0xFA48,buffm[1]);〃显示分 pokew(0xFA4A,buffm[0]);pokew(0xFA4C,buffs[1]);〃显示秒 pokew(0xFA4E,buffs[0]);)// ..................................................................... 设定时间函数 .............. •//void Set_D_T(){int lcd_addr;lcd_addr = 0xFA40;switch(i){case 1:pokew(lcd_addr,buffyear[3]);〃时间年 pokew(lcd_addr+2,buffyear[2]);pokew(lcd_addr+4,buffyear[1]);pokew(lcd_addr+6,buffyear[0]);pokew(lcd_addr+8,0x00);pokew(lcd_addr+10,0x00);pokew(lcd_addr+12,0x00);pokew(lcd_addr+14,0x00);break;case 2:pokew(lcd_addr,0x00);pokew(lcd_addr+2,0x00);pokew(lcd_addr+4,0x00);pokew(lcd_addr+6,0x00);pokew(lcd_addr+8,buffmonth[1]);〃时间月 pokew(lcd_addr+10,buffmonth[0]);pokew(lcd_addr+12,0x00);pokew(lcd_addr+14,0x00);break;case 3:pokew(lcd_addr,0x00); //在lcd 右边显示1〃在lcd 右边显示0 〃在lcd 右边显示1 〃在lcd 右边显示0pokew(lcd_addr+2,0x00);pokew(lcd_addr+4,0x00);pokew(lcd_addr+6,0x00);pokew(lcd_addr+8,0x00);pokew(lcd_addr+10,0x00);pokew(lcd_addr+12,buffday[1]); 〃时间日pokew(lcd_addr+14,buffday[0]);break;case 4:pokew(lcd_addr,0x00);pokew(lcd_addr+2,0x00);pokew(lcd_addr+4,buffh[1]); 〃时间时pokew(lcd_addr+6,buffh[0]);pokew(lcd_addr+8,0x00);pokew(lcd_addr+10,0x00);pokew(lcd_addr+12,0x00);pokew(lcd_addr+14,0x00);break;case 5:pokew(0xFA40,0x00);pokew(0xFA42,0x00);pokew(0xFA44,0x00);pokew(0xFA46,0x00);pokew(0xFA48,buffm[1]); 〃时间分pokew(0xFA4A,buffm[0]);pokew(0xFA4C,0x00);pokew(0xFA4E,0x00);break;case 6:pokew(0xFA40,0xd1);pokew(0xFA42,0xd0);pokew(0xFA44,0xd7);pokew(0xFA46,0xd1);pokew(0xFA48,0x50);pokew(0xFA4A,0x56);pokew(0xFA4C,buffch[1]); 〃闹钟时pokew(0xFA4E,buffch[0]);break;case 7:pokew(0xFA40,0xd1);pokew(0xFA42,0xd0);pokew(0xFA44,0xd7);pokew(0xFA46,0xd1);pokew(0xFA48,0x50);pokew(0xFA4A,0x00);pokew(0xFA4C,buffcm[1]); 〃闹钟分pokew(0xFA4E,buffcm[0]);break;default:break;))// ........................................................ 切换时间函数 .............. …// void d_c_inter(){DI(); 〃关中断i++;if(i>7) 〃切换标志>7, i=1,否则i++i=1;EI(); 〃开中断)// ........................................................ 调整时间加函数 .............. •// void UpNum(){ switch(i){ case 1:year++;case 2:month++;if(month > 12){month = 1;)break;case 3:temp = Count_Day(month);day++;if(temp < day)day = 1;break;case 4:hour++;if(hour > 23)hour = 1;break;case 5:minute++;if(minute > 59)minute = 0;break;case 6:c_hour++;if(c_hour > 23)c_hour = 1;break;case 7:c_minute++;if(c_minute > 59)c_minute = 0;break;default:break;))// ........................................................ 调整时间减函数.............. …// void DownNum(){switch(i){case 1:year--;case 2:month--;if(month < 1){month = 12;)break;case 3:temp = Count_Day(month);day--;if(day < 1)day = temp;break;case 4:hour--;if(hour < 1)hour = 23;break;case 5:minute--;if(minute < 0)minute = 59;break;case 6:c_hour--;if(c_hour < 1)c_hour = 23;break;case 7:c_minute--;if(c_minute < 0)c_minute = 59;break;default: break;))// .................................................. 闹铃以及小灯函数.............. •//void noise(){if(c_hour == hour && c_minute == minute && Que == 1){ 〃闹铃的时,分与系统时,分相等,并且闹钟标志开启CKS=0XE0; 〃开启蜂鸣器输出,输出频率为0.98khz的音频Time1(); 〃调用时间函数))// ........................................................ 显示缓存区刷新时间函数.............. •//void Freshddisplaybuffer(){buffs[1]=LCD_num[second/10];/期的显示码放入秒的数码显示缓存区buffs[0]=LCD_num[second%10];buffm[1]=LCD_num[minute/10];//分的显示码放入分的数码显示缓存区buffm[0]=LCD_num[minute%10];buffm[0]|=0x0800; 〃分的后面显示一个"."buffh[1]=LCD_num[hour/10]; 〃时的显示码放入时的数码显示缓存区buffh[0]=LCD_num[hour%10];buffh[0]|=0x0800; 〃时的后面显示一个"."buffday[1]=LCD_num[day/10];//天的显示码放入天的数码显示缓存区buffday[0]=LCD_num[day%10];buffmonth[1]=LCD_num[month/10];//月的显示码放入月的数码显示缓存区buffmonth[0]=LCD_num[month%10];buffmonth[0]|=0x0800; 〃月的后面显示一个"."buffyear[3]=LCD_num[year/100/10];/^的显示码放入年的数码显示缓存区buffyear[2]=LCD_num[(year/100)%10];buffyear[1]=LCD_num[(year%100)/10];buffyear[0]=LCD_num[(year%100)%10];buffyear[0]|=0x0800; 〃年的后面显示一个"."buffmd[3]=LCD_num[month/10];//月,天的显示码放入月,天的数码显示缓存区buffmd[2]=LCD_num[month%10];buffmd[2]|=0x0800; 〃月,天后显示一个"."buffmd[1]=LCD_num[day/10];buffmd[0]=LCD_num[day%10];buffhm[3]=LCD_num[hour/10];//时,分的显示码放入时,分的数码显示缓存区buffhm[2]=LCD_num[hour%10];buffhm[2]|=0x0800; 〃时,分的后显示一个"."buffhm[1]=LCD_num[minute/10];buffhm[0]=LCD_num[minute%10];buffms[3]=LCD_num[minute/10];/^,秒的显示码放入分,秒的数码显示缓存区buffms[2]=LCD_num[minute%10];buffms[2]|=0x0800; 〃分,秒的后显示一个"."buffms[1]=LCD_num[second/10];buffms[0]=LCD_num[second%10];buffch[1]=LCD_num[c_hour/10];//闹钟时的显示码放入闹钟时的数码显示缓存区buffch[0]=LCD_num[c_hour%10];buffcm[1]=LCD_num[c_minute/10];//闹钟分的显示码放入闹钟分的数码显示缓存区buffcm[0]=LCD_num[c_minute%10];)// ................................. 主函数............... 〃void main(){DI(); 〃关中断PM3.4 = 0; //P3.3,P3.4端口设置为输出模式P3.4 = 1; //led灯初始化为点亮状态PM3.3 = 0;P3.3 = 0;BZOE = 0; 〃蜂鸣器初始化为熄灭Init_Lcd(); 〃初始化lcdInit_Led(); 〃初始化ledInitKey_INTKR(); 〃初始化按键EI(); 〃开中断Init_Inter(); //初始化中断while(1){ Time1(); noise(); switch(key){ case 0: Freshddisplaybuffer(); Time1(); Show_Time();Show_Time(); break; case 1:Time1();Freshddisplaybuffer(); Display_Date(); noise();break;case 2:Time1();Freshddisplaybuffer(); Display_Time(); noise();break;case 3:d_c_inter();Freshddisplaybuffer(); Set_D_T();noise();key=7; break;case 4:UpNum();Freshddisplaybuffer(); Set_D_T();noise();key=7; break;case 5:DownNum();Freshddisplaybuffer(); Set_D_T();noise();key=7; break;case 6:key = 0;if(i > 5)Que = 1;1 = 0;noise();case 7:Time1();Freshddisplaybuffer(); Set_D_T(); 〃调用计算时间函数 〃调用闹钟函数 〃没有按键执行 〃调用刷新函数 〃计算时间 〃调用显示时间函数 //按键1执行 〃计算时间 〃调用刷新函数 〃调用显示日期函数 〃调用闹钟函数 //按键2执行 //计算时间 //调用刷新函数 //调用时间显示函数 //调用闹钟函数 //按键3执行 〃调用时间切换函数 //调用刷新函数 〃调用时间设置函数 //调用闹钟函数 //按键4执行 〃调用时间加函数 //调用刷新函数 //调用时间设置函数 //调用闹钟函数 //按键5执行〃调用时间减函数 //调用刷新函数 //调用时间设置函数//调用闹钟函数//按键6执行〃判断是否确认 //调用闹钟函数〃虚拟按键7 //调用刷新函数//调用时间设置函数〃调用闹钟函数noise();break;。

lcd显示实验报告

lcd显示实验报告

lcd显示实验报告LCD显示实验报告概述:本次实验旨在研究和探究液晶显示技术的原理和应用。

液晶显示器(LCD)是一种广泛应用于电子设备中的平面显示技术,其优点包括低功耗、高对比度、视角广等特点。

通过实验,我们将深入了解LCD的工作原理以及其在各种设备中的应用。

实验步骤:1. 实验前准备在实验开始前,我们需要准备一块LCD显示屏、适配器、电源线以及连接所需的电缆。

2. 实验搭建将LCD显示屏与适配器通过电缆连接,并将电源线插入适配器和电源插座之间。

确保所有连接牢固可靠。

3. 实验操作打开电源开关,观察LCD显示屏是否正常亮起。

如果显示屏亮起,说明连接成功。

4. 实验观察观察LCD显示屏上的图像、文字或图标是否清晰可见。

注意观察显示屏的对比度、颜色鲜艳度以及视角范围等特点。

5. 实验分析通过对比实验观察到的LCD显示效果,我们可以得出以下结论:- LCD显示屏的图像清晰度和对比度较高,能够呈现出细节丰富的图像。

- LCD显示屏的颜色鲜艳度较高,能够准确还原图像的真实色彩。

- LCD显示屏的视角范围较广,观察者可以从不同角度观察屏幕上的内容而不会出现明显的颜色变化或失真。

实验原理:液晶显示器的工作原理是利用液晶分子的光学性质来调节光的透过程度。

液晶分子在电场的作用下会发生旋转或排列,从而改变光的透过程度,进而形成图像。

液晶显示器主要由两层玻璃基板构成,中间夹层有液晶分子。

在两层玻璃基板上分别涂有透明电极,并通过透明电极与外部电源相连。

当外部电源施加电压时,电场作用下液晶分子发生旋转或排列,从而改变光的透过程度。

液晶显示器通常由红、绿、蓝三种基本颜色的像素组成,通过控制每个像素的电压来调节颜色的深浅和亮度。

通过对不同像素的电压控制,液晶显示器能够呈现出丰富多彩的图像。

应用领域:液晶显示器已广泛应用于各种电子设备中,包括但不限于以下领域:1. 个人电脑和笔记本电脑:作为主要的显示设备,液晶显示器提供了清晰、高对比度的图像,使用户能够更好地操作和浏览信息。

6、用DS1302与LCD1602可调数字万年历实验设计报告

6、用DS1302与LCD1602可调数字万年历实验设计报告

利用时钟芯片DS1302实现万年历系别电子通信工程系组别第十组专业名称电子信息工程指导教师组内成员2013年8月19日用DS1302与LCD1602设计的可调式电子日历时钟一、总体设计1.1、设计目的为巩固所学的单片机知识,把所学理论运用到实践中,用LCD1602与DS1302 设计可调式电子日历时钟。

1.2、设计要求(1)显示:年、月、日、时、分、秒和星期;(2)设置年、月、日、时、分、秒和星期的初始状态;(3)能够用4个按键调整日历时钟的年、月、日、时、分、秒和星期;完成可调式电子日历时钟的硬件和软件的设计,包括单片机的相关内容;日历时钟模块的设计,液晶显示模块的设计,按键模块的设计。

控制程序的编写等。

备注:本程序另外添加了每到上午8:10和下午2:10的闹钟提醒功能。

1.3、系统基本方案选择和论证1.3.1、单片机芯片的选择方案方案一:采用89C51芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容。

方案二:采用STC12C5A60S2系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。

内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。

但造价较高。

1.3.2 、显示模块选择方案和论证:方案一:采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用显示数字显得太浪费,且价格也相对较高。

所以不用此种作为显示。

方案二:采用LED数码管动态扫描,虽然LED数码管价格适中,但要显示多个数字所需要的个数偏多,功耗较大,显示出来的只是拼音,而不是汉字。

所以也不用此种作为显示。

方案三:采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量字符,且视觉效果较好,外形美观。

液晶数字电子钟实验报告

液晶数字电子钟实验报告
对照题目所给的原理图,题目本身没有提供相应的时钟芯片,因此,我们
5
小组选择方式二。 1.3.2 键盘选择: 方案一:阵列式键盘(如图)
阵列式键盘: 行列式键盘的原理就是每一行线与每一列线的交叉地方不相通,而 是接上一个按键,通过按键来接通 . 特点: 以省出不少的 I/O 口资源,程序编写相对复杂点,适用于键数比较多的情况. 方案二: 独立式键盘: (如图)
8
2.1 AT89C52 模块
2 主要硬件描述
Mcs51 单片机的硬件结构(如图)
1)一个 8 位的微处理器(CPU) 2)片内数据存储器 RAM(128B/256B) 3)片内程序存储器 ROM/EPROM(4kB/8kB) 4)4 个 8 位并行 I/O 拉口 P0-P3,每个口既可以作输入,也可以作输出 5)2 个 16 位定时器/计数器 6)5 个中断源的中断控制系统
4
2.根据题目要求,选择元器件,通过理论分析和计算选择电路参数; 3.根据操作功能要求,确定键盘控制功能; 4.按设计要求确定显示合理安排格式及内容; 5.采用 C 语言编写应用程序并调试通过; 6.对系统进行测试和结果分析; 7.撰写设计报告和答辩 PPT。 1.3 方案选择与液晶数字电子钟的研究情况 1.3.1 时钟芯片选择: 方案一:采用外围时钟芯片,如并行接口时钟芯片 DS12887、串行接口时钟芯片 DS1302。 这种方法可产生较为精准的时间,且使用简单,接口容易,与微型计算机连 线较少等特点,在目前得到广泛应用。 方案二:不使用芯片,采用单片机的定时计数器 这种方法原理是利用单片机芯片的定时器来产生固定的时间,模拟时钟的 时, 分,秒.如:利用 AT80C52 芯片,定时器用工作方式 1,每 50ms 产生一个中 断,循环 20 次,即 1s 周期.每一个周期加 1,那么 1min 为 60 个周期,1h 就是 60*60=3600 个周期,一天就是 3600*24=86400 个周期.此方法优点是 可以省去一些外围的芯片。但这种方法只能适用于一些要求不是十分精确, 不做长期保留的场合。

单片机电子时钟(LCD显示)综合实验报告

单片机电子时钟(LCD显示)综合实验报告

单片机综合实验报告题目:电子时钟(LCD)显示一、实验内容:以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间:●使用字符型LCD显示器显示当前时间。

●显示格式为“时时:分分:秒秒”。

●用4个功能键操作来设置当前时间,4个功能键接在P1.0~P1.3引脚上。

功能键K1~K4功能如下。

●K1—进入设置现在的时间。

●K2—设置小时。

●K3—设置分钟。

●K4—确认完成设置。

程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:00:00”,然后开始计时。

二、实验电路及功能说明1)单片机主控制模块以AT89C51单片机为核心进行一系列控制。

2)时钟显示模块用1602为LCD显示模块,把对应的引脚和最小系统上的引脚相连,连接后用初始化程序对其进行简单的功能测试。

测试成功后即可为实验所用,如图:3)时间调整电路用4个功能键操作来设置当前时间,4个功能键接在P1.0~P1.3引脚上。

功能键K1~K4功能如下。

K1—进入设置现在的时间。

K2—设置小时。

K3—设置分钟。

K4—确认完成设置。

如图:三、实验程序流程图:主程序:时钟主程序流程子程序:四、实验结果分析实验结果及分析:单片机的晶振可以根据要求设定。

6MHZ为和现实时间显示相同。

实验采用12MHZ晶振采用方式1定时,选取50ms采用20次中断达到一秒,采用查表方式控制LCD显示。

当烧入程序后开始运行,根据初始值设定可以观察到显示的时间,这里为了更明显观察显示数据变化把起始值设为23:59:50 运行后显示,K1为进入现在设置时间,当按下K1后显示,和实验要求相比较,实现了按下K1进入现在时间设置,按下K4确认完成时间设置的功能;不同之处: 当进入时间设置时在按下K1设置小时,再次按下K1是设置分钟。

增加功能:进入时间设置并选择设置位置后K2键位数字增加功能,K3键为数字减小功能。

根据仿真结果能够确定编程正确,基本实现了所有功能,而且有所改进。

LCD显示电子时钟设计

LCD显示电子时钟设计

LCD显示电子时钟设计LCD显示电子时钟是一种以液晶显示技术为基础的电子时钟设计。

液晶显示器(Liquid Crystal Display,简称LCD)是指通过操控液晶分子的取向和透光性来显示图像的显示器,具有薄、轻、便携、低功耗、对环境光适应性强等特点,因此被广泛应用于各种电子设备中。

设计一个LCD显示电子时钟的目的是为了制作一个精确显示时间的时钟装置,并且通过液晶显示器来实时显示时间。

具体的设计思路如下:1.显示屏设计:选择一款适用的液晶显示屏,通过与微控制器连接来实时显示时间。

可以选择有背光功能的液晶显示屏,以便在光线较暗的环境中也可以清晰显示。

2.微控制器选择:选择一款适用的微控制器,来控制液晶显示器的驱动和时间的计算。

常用的微控制器有PIC、AVR等,可以根据需求选择性能和功能适配的型号。

3.时钟电路设计:通过时钟电路提供准确的时间信号,并连接到微控制器中,用于计时和更新时间。

时钟电路可以通过晶振或者RTC(实时时钟芯片)实现。

4.按键输入设计:设计一组按键接口,用于调整和设置时间。

通过按键,可以实现时间的调整、闹钟设置、12/24小时制切换等功能。

5.动态电源设计:由于时钟是一个长时间运行的装置,因此需要设计一个适合的动态电源电路,以保证电源的稳定和可靠性。

可以选择使用电池供电,以应对停电等特殊情况。

6.温度补偿设计:由于液晶显示器的性能受环境温度的影响较大,可以采用温度传感器来感知环境温度,并通过微控制器对温度进行补偿,以提高LCD显示器的准确性。

7.其他功能设计:根据实际需求,可以增加其他功能模块,如闹钟、报时、温湿度检测、闪烁灯效果等。

总结起来,设计一个LCD显示电子时钟需要考虑液晶显示屏、微控制器、时钟电路、按键输入、动态电源、温度补偿等方面的因素。

通过合理的设计和电路连接,可以实现一个功能齐全、精确显示时间的电子时钟。

lcd数显温度万年历电波钟

lcd数显温度万年历电波钟

外观尺寸:29cm(宽)*18.5cm(高)可挂可摆,背面有挂孔,可挂在墙上,也可以安装随机配送的支架摆放在台面上。

电子说明书地址:/item.htm?spm=a1z09.5.0.4 0&id=16362908718功能特点:1、时间显示:时:分:秒,12/24小时制可选2、日历显示:日/月3、星期显示:英文简写4、温度显示:摄氏或华摄,范围:0℃-50℃(32℉-122℉),分辨率:0.1℃。

5、闹铃功能:可设置1个闹铃时间。

6、特殊日期提醒功能:可设置三个特殊日期提醒。

使用电源:两节AA电池(不配送电池),超省电,两节电池可使用一年以上。

使用说明:一、信号自动同步:当时钟正确装上电池后,稍等几秒,自动开始接收日本发射的无线电校时信号,接收过程中屏幕右上角显示一个闪动的信号接收塔标识。

当接收到正确的时间信号后,接收塔标识停止闪动并自动同步时间和日历信息,时钟每天会定时进行接收,无须人工干预。

如果接收不成功,时钟仍可以作为一个高精度石英钟使用。

时钟在接收信号的过程(接收塔标识闪动)中无法进行其他功能的操作,如果需要进行其它设置或取消接收,须按下‘+’键退出接收状态。

为了达到最好的接收效果,应将时钟远离其它用电器至少在1-2米以上,并可以适当转动时钟位置以获取最佳接收效果。

二、信号手动同步:在正常的时钟显示模式,长按‘+’键,强制进入信号接收状态,此时收塔标识闪动,接收过程与自动同步一样。

三、手动设定时钟、日历:在正常的时钟显示模式,长按‘CLK/CAL’键,进入时间日历设置界面,当前设置项目闪动,通过短按‘+,-’键调整数值,再短按‘CLK/CAL’确认并进入下一设置项目。

设置项目顺序:12/24时制—小时—分钟—年—月—日—时区。

四、每日闹钟设置:在正常的时钟显示模式,长按‘ALARM’键,进入闹铃设置界面,通过短按按‘+,-’键输入每天的闹铃时间,最后按‘ALARM’键确认。

在正常的时钟显示模式,短按‘-’键可以开启和关闭闹铃功能,当闹铃响时,按任意键都可以关闭闹铃。

LCD12864显示实时时钟例程可运行

LCD12864显示实时时钟例程可运行

DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。

实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。

下面是一段12864液晶显示实时时钟的程序:/****************************************************************************** *********时间:2012.11.30晶振:11.0592MHz芯片:STC89C52RC功能描述:在12864上显示年、月、日、星期、时、分和秒等时间信息******************************************************************************* ********/#include<reg52.h>#define uchar unsigned charsbit CLK=P1^4; //DS1302引脚定义sbit IO=P1^5;sbit CE=P1^6;sbit ACC0=ACC^0;sbit ACC7=ACC^7;sbit RS=P2^4; //12864引脚定义数据口为P0sbit RW=P2^5;sbit EN=P2^6;sbit PSB=P2^1;sbit RET=P2^3;void Input_1byte(uchar TD) //DS1302输入一字节数据{uchar i;ACC=TD;for(i=8;i>0;i--){IO=ACC0;CLK=1;CLK=0;ACC=ACC>>1;}}uchar Output_1byte(void) //DS1302输出一字节数据{uchar i;for(i=8;i>0;i--){ACC=ACC>>1;ACC7=IO;CLK=1;CLK=0;}return(ACC);}void Write_DS1302(uchar add,uchar dat)//向DS1302写{CE=0;CLK=0;CE=1;Input_1byte(add);Input_1byte(dat);CE=0;}uchar Read_DS1302(uchar add) //从DS1302读{uchar inf; //信息临时存储变量CE=0;CLK=0;CE=1;Input_1byte(add);inf=Output_1byte();CE=0;return(inf);}/**********************DS1302初始化*****************************/void init_1302(){if(Read_DS1302(0xd1)==0x55) //判断内存单元的内容,是否进行初始化 {return;}else{Write_DS1302(0x8e,0x00); //关闭写保护Write_DS1302(0x90,0x00); //电池充电设置Write_DS1302(0x80,0x00); //秒Write_DS1302(0x82,0x54); //分Write_DS1302(0x84,0x20); //时Write_DS1302(0x86,0x30); //日Write_DS1302(0x88,0x11); //月Write_DS1302(0x8a,0x05); //星期Write_DS1302(0x8c,0x12); //年Write_DS1302(0xd0,0x55); //写RAMWrite_DS1302(0x8e,0x80); //打开写保护}}/**********************延时函数*****************************/ void DelayUs2x(unsigned char t){while(--t);}void DelayMs(unsigned char t){while(t--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}/**********************12864判忙*****************************/ void check_busy(){RS=0;RW=1;EN=1;while((P0&0x80)==0x80);EN=0;}/**********************12864写指令*****************************/ void write_com(uchar com){check_busy();RS=0;RW=0;EN=1;P0=com;DelayUs2x(250);EN=0;DelayUs2x(250);}/**********************12864写数据*****************************/void write_data(uchar dat){check_busy();RS=1;RW=0;EN=1;P0=dat;DelayUs2x(250);EN=0;DelayUs2x(250);}/**********************12864初始化函数*****************************/void init(){DelayMs(40); //大于40MS的延时程序PSB=1; //设置为8BIT并口工作模式DelayMs(1); //延时RET=0; //复位DelayMs(1); //延时RET=1; //复位置高DelayMs(200);write_com(0x30); //选择基本指令集DelayUs2x(250); //延时大于100uswrite_com(0x30); //选择8bit数据流DelayUs2x(200); //延时大于37uswrite_com(0x0c); //开显示(无游标、不反白)DelayUs2x(250); //延时大于100uswrite_com(0x01); //清除显示,并且设定地址指针为00HDelayMs(200); //延时大于10mswrite_com(0x06); //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位,光标从右向左加1位移动DelayUs2x(250); //延时大于100us}/**********************清屏*****************************/void clrscreen(){write_com(0x01);DelayMs(15);}/*********************************************************主函数********************************************************/void main(){uchar sec,sec1,sec2;uchar min,min1,min2;uchar hour,hour1,hour2;uchar date,date1,date2;uchar mon,mon1,mon2;uchar day;uchar year,year1,year2;uchar table1[]="年月日时分秒星期温度摄氏"; //长度24uchar table2[]={0XD2,0XBB, 0XB6,0XFE, 0XC8,0XFD, 0XCB,0XC4, 0XCE,0XE5, 0XCE,0XF9, 0XC8,0XD5}; //长度14 uchar table3[]="0123456789"; //长度10init(); //液晶初始化clrscreen();DelayMs(200);init_1302(); //1302初始化只初始化一下就可以需要下载两次DelayMs(50);write_com(0x80); //显示20write_data('2');write_data('0');write_com(0x82); //显示年write_data(table1[0]);write_data(table1[1]);write_com(0x84); //显示月write_data(table1[2]);write_data(table1[3]);write_com(0x86); //显示日write_data(table1[4]);write_data(table1[5]);write_com(0x91); //显示时write_data(table1[6]);write_data(table1[7]);write_com(0x93); //显示分write_data(table1[8]);write_data(table1[9]);write_com(0x95); //显示秒write_data(table1[10]);write_data(table1[11]);write_com(0x88); //显示星期write_data(table1[12]);write_data(table1[13]);write_data(table1[14]);write_data(table1[15]);while(1){sec=Read_DS1302(0x81); ////读秒sec1=sec&0x0f; //个位sec2=sec>>4; //十位min=Read_DS1302(0x83); ////读分min1=min&0x0f; //个位min2=min>>4; //十位hour=Read_DS1302(0x85); ////读时hour1=hour&0x0f; //个位hour2=hour>>4; //十位date=Read_DS1302(0x87); ////读日date1=date&0x0f; //个位date2=date>>4; //十位mon=Read_DS1302(0x89); ////读月mon1=mon&0x0f; //个位mon2=mon>>4; //十位year=Read_DS1302(0x8d); ////读年year1=year&0x0f; //个位year2=year>>4; //十位day=Read_DS1302(0x8b); ////读星期write_com(0x94); //送显示内容write_data(table3[sec2]); //秒write_data(table3[sec1]);write_com(0x92);write_data(table3[min2]); //分write_data(table3[min1]);write_com(0x90);write_data(table3[hour2]); //时write_data(table3[hour1]);write_com(0x85);write_data(table3[date2]); //日write_data(table3[date1]);write_com(0x83);write_data(table3[mon2]); //月write_data(table3[mon1]);write_com(0x81);write_data(table3[year2]); //年write_data(table3[year1]);write_com(0x8a);write_data(table2[2*day-2]); //星期write_data(table2[2*day-1]);}}(注:范文素材和资料部分来自网络,供参考。

功能完整的1602LCD时钟实验

功能完整的1602LCD时钟实验

功能完整的1602LCD时钟实验摘要本设计基于单⽚机技术原理,以单⽚机芯⽚STC89C52作为核⼼控制器,通过硬件电路的制作以及软件程序的编制,设计制作出⼀个多功能数字时钟系统。

单⽚机扩展的LCD显⽰器⽤来显⽰年、⽉、⽇、时、分、秒计数单元中的值。

整个设计包括两⼤部分: 硬件部分和软件部分,以单⽚机为核⼼, 配以⼀定的外围电路和软件。

硬件是整个系统的基础, 软件部分则要合理、充分地⽀持和使⽤系统的硬件, 从⽽完成系统所要完成的任务。

本设计采⽤LCD液晶显⽰,电路简单使⽤⼴泛。

该时钟系统主要由时钟模块、闹钟模块、液晶显⽰模块、键盘控制模块以及信号提⽰模块组成。

能够准确显⽰时间(显⽰格式为年:⽉:⽇:时时:分分:秒秒,24⼩时制),可随时进⾏时间调整,具有闹钟时间设置、闹钟开/关、⽌闹功能。

设计以硬件软件化为指导思想,充分发挥单⽚机功能,⼤部分功能通过软件编程来实现,电路简单明了,系统稳定性⾼。

单⽚机在这种情况下诞⽣了基于单⽚机电⼦时钟。

关键词:单⽚机 LCD1602 数字钟This design based on the single chip microcomputer principle, taking single-chip chip STC89C52 as core controller, through the hardware circuit and software production procedure formulation, designed and produced a multi-function digital clock system. SCM extended LCD display used to display date and time, minutes and seconds counting unit of values. The whole design includes two parts, hardware and software of, based on singlechip, match with certain peripheral circuit and software. Hardware is based in the whole system, the software part then be reasonable and fully support and use the system hardware, thus completing system to complete the task. This design USES the LCD, simple circuit is widely used. This clock system mainly by the clock module, alarm module, LCD module, keyboard control module and signal hint module. To accurately display the time (display format for years: month: day: always: component: seconds seconds, 24-hour system), available for time to adjust, with alarm time setting, alarm clock on/off, stop joking function. Design with hardware and software into guiding ideology, give full play to the SCM functions, most functions through software programming realize, circuit straightforward, stability of the system is high. SCM in this case was born based on single-chip electronic clock. Keywords: SCM LCD1602 digital clock前⾔数字钟是采⽤数字电路实现对时,分,秒数字显⽰的计时装置,⼴泛⽤于个⼈家庭,车站, 码头办公室等公共场所,成为⼈们⽇常⽣活中不可少的必需品,由于数字集成电路的发展和⽯英晶体振荡器的⼴泛应⽤,使得数字钟的精度,远远超过⽼式钟表, 钟表的数字化给⼈们⽣产⽣活带来了极⼤的⽅便,⽽且⼤⼤地扩展了钟表原先的报时功能。

基于LCD的电子时钟实验_嵌入式_课程设计报告

基于LCD的电子时钟实验_嵌入式_课程设计报告

河海大学计算机及信息工程学院(常州)课程设计报告题目嵌入式系统项目设计专业、学号电信授课班号学生姓名指导教师完成时间2010/1/15课程设计(报告)任务书(理工科类)Ⅰ、课程设计(报告)题目:基于LCD的电子时钟实验Ⅱ、课程设计(论文)工作内容一、课程设计目标1、培养综合运用知识和独立开展实践创新的能力;2、培养学生的编程能力、用计算机解决实际问题的能力。

二、研究方法及手段应用1、将任务分成若干模块,查阅相关论文资料,分模块调试和完成任务;2、使用ads1.2编译汇编语言和C语言,连接生成Hex文件。

3、联合protues 7.4 仿真,选用arm7 lpc2104 芯片,导入Hex文件,实现模拟电子时钟。

三、课程设计预期效果1、完成实验环境搭建;2、分模块调试和编译;3、组合并完善程序。

4、联合仿真软件运行程序。

学生姓名:专业年级:目录前言 (3)第一章系统设计 (4)第一节课题目标及总体方案 (4)第二节元器件的选择和连线 (4)第三节程序和芯片的初始化 (5)第四节构建功能模块 (6)第五节实现信息的传递 (7)第二章实验(测试)结果及讨论 (8)第一节ads1.2 软件的编译,连接和运行 (8)第二节protues 7.4仿真软件的联合调试 (9)第三章结论 (10)心得体会 (11)参考文献 (12)附录 (13)源程序 (13)前言近年来,随着计算机技术及集成电路技术的发展,嵌入式技术日渐普及,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用。

嵌入式系统无疑成为当前最热门最有发展前途的IT应用领域之一。

实时时钟(RTC)器件是一种能提供日历/时钟、数据存储等功能的专用集成电路,常用作各种计算机系统的时钟信号源和参数设置存储电路。

RTC具有计时准确、耗电低和体积小等特点,特别适用于在各种嵌入式系统忠记录事件发生的时间和相关信息,尤其是在通信工程、电力自动化、工业控制等自动化程度较高领域的无人职守环境。

带日历时钟的实时温度检测系统设计

带日历时钟的实时温度检测系统设计

带日历时钟的实时温度检测系统设计0引言电子万年历的设计就是建立在单片机的基础上,它是一种应用非常广泛的日常计时工具,带实时日历时钟的温度检测系统的研究方法是通过单片机编写C语言程序去控制DS12C887、液晶、按键和DS18B20各个子模块,让当前环境温度和时间通过液晶显示出来,在指定时间到达时进行报警,通过按键对时间进行调节。

1设计原理与设计方案DS12C887是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,它能够自动产生世纪、年、月、日、时、分、秒等时间信息,DS12C887时钟芯片自带有128B的RAM,其中11个用来存储时间信息。

设定好闹钟时间后,当时间到达时,可以自动产生中断,因此也可采用DS12C887时钟芯片完成万年历的制作。

总体构成框图如图一所示:DS12C887中自带锂电池,同时内部还集成了32.768KHz的标准晶振,一旦设定好时间,即使外部带日历时钟的实时温度检测系统设计Design of a Real-time Temperature Detection System with Calendar Clock郑春来韩团军贾建科Zheng Chunlai HanTuanjun Jia Jianke(陕西理工学院,陕西汉中723000)(Shaanxi University of Technology,Shaanxi Hanzhong723000)摘要:电子万年历是单片机系统的一个应用,本设计由硬件和软件两部分组成,硬件由主控器、时钟电路、温度检测电路、显示电路、键盘接口5个模块组成,主控模块用AT89C52、时钟电路用时钟芯片DS12C887、显示模块用LCD、温度检测采用DS18B20温度传感器、键盘接口电路用普通按键完成;软件利用C语言编程实现,单片机通过时钟芯片DS12C887获取时间数据,DS18B20采集温度信号送给单片机处理,然后通过LCD显示阳历年、月、日、时、秒、闹钟、星期、温度。

LCD1602+液晶显示数字电子钟+报告书

LCD1602+液晶显示数字电子钟+报告书

LCD1602中文资料介绍用LCD1602 液晶显示数字电子钟,整点蜂鸣器提醒,时间可自行调整。

同时用一个功能键切换显示日期(也可更改调整)和秒表。

本设计有五个按键,第一个是功能键,切换三个功能,分别是日期、时间和秒表;第二个是调整键,按一下屏幕不会变化,只有当按调整加减键时,屏幕就会变化。

例如:一上电显示的是年月日,然后想调整,按一下调整键,屏幕无变化,按调整加减键,屏幕就会变化,date变成tzy,表示正在调整年。

年调整好后,再按一下第二个调整键,屏幕无变化,按调整加减键,屏幕就会变化,tzy变成tzm,表示正在调整月。

其他类似。

第三四个键是加减键;第五个是调整好后的确认键和秒表的确认键。

操作说明:比如要调整日期,先按一下调整p2.1键(左边数第二个键),然后按加1键p2.2或减1键p2.3,第一次是让调整年,年调整后再按调整p2.1键,这次是调整月。

调整后再按调整p2.1键,最后是调整日。

调整好后按确认键p2.4,这样年月日就设置好了。

年月日设置好后按功能切换键p2.0它会回到时间设置上,调整方法和调整年月日类似。

电路原理图:目录扉页答辩许可证毕业设计(论文)任务书中文摘要英文摘要目录文献综述一.选题的目的及意义二.研究领域概况三.文献分析四.研究思路及方案五.进度计划六.参考文献专题论文正文1.引言2.核心芯片简介2.1AT89S51的结构和特点2.1.1芯片引脚及结构特点2.1.2主要功能特性2.1.3AT89S51的新功能2.1.4单片机内部结构及说明2.2 1602液晶显示器的结构及工作原理2.2.1液晶显示器的引脚功能及内部结构图2.2.2CGROM和CGRAM中字符代码与图形对应关系2.2.3液晶模块内部控制器指令说明3.方案设计及论证4.硬件设计4.1.1芯片接口与显示设计4.2.1单片机复位电路设计4.2.2单片机晶振电路设计4.2.3单片机报时电路设计4.2.4单片机下载程序电路设计4.2.5按键功能描述及调试过程5.结论致谢参考文献实习报告外文中文论文缩写电路图§§§基于LCD1602的数字电子钟§§§购物从这里开始:/CD.asp此设计费用为:基本费用155+20(LCD1602)+1(蜂鸣器)+1(电位器)+3(6个12*12*6按键)=180元. 用LCD1602 液晶显示数字电子钟,整点蜂鸣器提醒,时间可自行调整。

时间显示设计实验报告

时间显示设计实验报告

一、实验目的1. 掌握时间显示的基本原理和设计方法。

2. 学习使用时间显示模块进行时间数据的读取和处理。

3. 提高实践操作能力,培养创新思维。

二、实验原理时间显示设计是指将时间数据以数字、字符等形式直观地展示给用户。

常见的显示方式有LED、LCD、OLED等。

本实验采用LED显示方式,通过单片机读取实时时间,并通过LED显示模块将时间信息显示出来。

三、实验仪器与材料1. 单片机(如51系列)2. LED显示模块3. 12MHz晶振4. 电阻、电容等元件5. 编程器、编程软件等四、实验步骤1. 准备工作(1)搭建实验电路,将单片机、LED显示模块、晶振等元件连接好。

(2)编写程序,实现时间数据的读取和处理。

2. 程序设计(1)初始化单片机端口,设置I/O口为输出模式。

(2)设置晶振频率,初始化定时器。

(3)读取实时时间,包括年、月、日、时、分、秒。

(4)将读取的时间数据转换为LED显示模块所需的编码。

(5)控制LED显示模块显示时间。

3. 程序实现(1)初始化```void init(void){TMOD = 0x01; // 设置定时器模式 TH0 = 0xFC; // 设置定时器初值 TL0 = 0x18;ET0 = 1; // 开启定时器中断 EA = 1; // 开启全局中断 TR0 = 1; // 启动定时器}```(2)读取时间```void read_time(void){// 读取实时时间,此处代码省略}```(3)转换编码```void encode_time(unsigned char time){// 将时间数据转换为LED显示模块所需的编码}```(4)显示时间```void display_time(void){unsigned char time_data[6];read_time(); // 读取实时时间encode_time(time_data); // 转换编码// 控制LED显示模块显示时间}```4. 实验调试(1)将编写好的程序烧录到单片机中。

LCD专业测试报告

LCD专业测试报告

LCD专业测试报告一、测试目的本测试旨在对液晶显示屏(LCD)进行全面而系统的功能和性能测试,以评估其质量和可靠性,为后续的质量改进工作提供依据。

二、测试内容1.显示效果测试:1.1对LCD进行按键输入测试,检查是否正常显示输入内容;1.2对LCD进行画面显示测试,包括图片、文字等内容;1.3对LCD进行亮度和色彩调整测试,检查是否能够正常调整和保持调整后的效果。

2.触摸屏测试:2.1对触摸屏进行触摸测试,检查是否能够准确捕捉并响应触摸操作;2.2对触摸屏进行滑动测试,检查是否能够准确识别滑动操作并响应;2.3对触摸屏进行多点触控测试,检查是否能够准确捕捉多点操作并响应。

3.显示屏幕测试:3.1对显示屏进行亮点测试,检查是否存在亮点、暗点等不良现象;3.2对显示屏进行坏点测试,检查是否存在坏点、亮点等不良现象;3.3对显示屏进行温度适应性测试,检查在不同温度环境下的显示效果和响应速度。

4.功能性测试:4.1对LCD进行电源适应性测试,检查在不同电源输入下的运行情况;4.2对LCD进行抗干扰性测试,检查在外部干扰下的运行情况;4.3对LCD进行耐压测试,检查是否能够正常工作并保持稳定的输出信号。

三、测试方法1.使用专业的LCD测试设备进行测试,如万用表、高低温测试仪、电源适配器等;2.开发测试程序和测试脚本,对液晶显示屏进行功能和性能测试,记录测试结果。

四、测试结果与分析1.显示效果测试:经测试,LCD能够正常显示输入内容,画面显示效果良好,亮度和色彩调整功能正常,能够准确调整和保持调整后的效果。

2.触摸屏测试:经测试,触摸屏能够准确捕捉并响应触摸操作,滑动操作也能够准确识别并响应,多点触控操作也正常,符合设计要求。

3.显示屏幕测试:经测试,显示屏不存在亮点、暗点等不良现象,也没有坏点、亮点等问题,温度适应性良好,能够在不同温度下正常显示和响应。

4.功能性测试:经测试,LCD在不同电源输入下能够正常工作,电源适应性良好;在外部干扰下也能够正常工作,抗干扰性良好;经耐压测试后,LCD仍能够正常工作并保持稳定的输出信号。

液晶数字钟实训报告摘要

液晶数字钟实训报告摘要

本实训报告针对液晶数字钟的设计与制作过程进行了详细的阐述。

通过本次实训,旨在提高学生对数字电子技术、单片机应用以及液晶显示技术的理解和掌握,同时锻炼学生的动手实践能力。

以下为报告的主要内容:一、引言随着科技的不断发展,液晶数字钟因其体积小、功耗低、显示清晰等特点,被广泛应用于家庭、办公、工厂等领域。

本实训项目旨在设计并制作一款具有以下功能的液晶数字钟:实时显示年、月、日、时、分、秒;具有闹钟功能;具有定时开关功能;具有时钟校准功能。

二、设计原理1. 液晶显示原理液晶显示技术是一种利用液晶分子在不同电压下具有不同光学性质来实现显示的技术。

当液晶分子受到电压作用时,液晶分子的排列会发生改变,从而改变光的透射和反射,实现图像显示。

2. 单片机控制原理本实训所使用的单片机为STC89C52,其具有丰富的片上资源,如定时器、计数器、中断系统等。

通过编写程序,实现对液晶显示模块的控制,从而实现时间显示、闹钟、定时开关等功能。

3. 时钟校准原理时钟校准功能主要通过外部晶振产生基准频率,通过单片机内部的定时器实现计数,从而实现时钟的精确计时。

同时,通过外部按键实现时钟的校准。

三、硬件设计1. 液晶显示模块本实训采用12864液晶显示模块,具有128列、64行显示能力,可显示汉字、英文字符以及图形。

通过编写程序,实现时间的显示、闹钟、定时开关等功能。

2. 单片机本实训采用STC89C52单片机,具有丰富的片上资源,如定时器、计数器、中断系统等。

通过编写程序,实现对液晶显示模块的控制,从而实现时间显示、闹钟、定时开关等功能。

3. 时钟电路时钟电路主要由晶振、电容、电阻等元件组成,产生基准频率。

通过单片机内部的定时器实现计数,从而实现时钟的精确计时。

4. 按键电路按键电路由按键和单片机引脚组成,通过按键实现时钟的校准、闹钟设置、定时开关等功能。

四、软件设计1. 主程序设计主程序主要负责初始化单片机各个模块,设置定时器中断,读取按键状态,控制液晶显示模块显示时间、闹钟、定时开关等功能。

lCD时钟日历设计报告

lCD时钟日历设计报告

需要显示,还是用显示功能更好的液晶显示器比 较好,它能显示更多的数据,用162液晶显示数 据有限,显示数据的可读性不好,用可以显示汉 字的12864液晶显示器还可以增加显示信息的可 读性,让人看起来会很方便。另外它们在价格上 差距很大,考虑成本我们首选162。所以选择方 案2。 2.4 报警系统的方案比较 方案1:用单片机板上长鸣的蜂鸣器实现定 时闹钟功能。 方案2:用喇叭加语音芯片实现定时闹钟功 能。 用喇叭加语音芯片成本很高,但声音还不 错,再有喇叭体积庞大。用用单片机板上蜂鸣 器,节约了成本和设计的时间。限于设计所需要 的功能,用蜂鸣器是最佳选择。所以我们采用方 案1. 2.5 键盘控制方案选择 方案1:采用矩阵键盘,采用矩阵形式连接。 方案2:采用单片机实验板上固有的按键作为 校时调整控制。 虽然矩阵键盘调整简单快速,考虑到程序设 计的便捷但我们觉得还是用方案2。 二、硬件系统方框图
/********************液晶初始化函数************************/ void LCD_init(void) { delay_nms(5); LCD_write_char(0x28,0); //4位显示 LCD_write_char(0x0c,0); //显示开 LCD_write_char(0x06,0); LCD_write_char(0x01,0); //清屏 } /********************液晶使能函数************************/ void LCD_en_write(void) { LCD_EN=0; delay_nus(2); LCD_EN=1; delay_nus(2); LCD_EN=0; } /*********************写命令或写数据函数*******************/ void LCD_write_data(unsigned char Data_command) { unsigned char temp; temp=Data_command; LCD_DATA_PORT&=0X0f; //LCD_DATA_PORT=LCD_DATA_PORT&0X0f LCD_DATA_PORT|=temp&0xf0; //写高四位 LCD_en_write(); temp=temp<<4; LCD_DATA_PORT&=0x0f; LCD_DATA_PORT|=temp&0xf0; //写低四位 LCD_en_write();

lcd实时日历时钟评测研究报告

lcd实时日历时钟评测研究报告

课程设计说明书课程名称:单片机原理及应用设计题目:LCD日历院系:学生姓名:学号:专业班级:2011年3月1日目录摘要错误!未定义书签。

b5E2R。

一.设计任务和要求4二.方案论证4三.核心元件地性能41.AT89C5141.1 功能特性概括:51.2 管脚说明:52.DS130272.1DS1302引脚功能72.2DS1302地控制字82.3 DS1302地寄存器92.4 DS1302地数据输入输出10p1Ean。

四.理论分析与计算9DXDiT。

五.电路与程序设计9RTCrp。

1.系统硬件设计95PCzV。

1.1系统总原理图9jLBHr。

1.2主控部分(单片机MCS-51)9xHAQX。

1.3 计时部分(实时时钟芯片DS1302)错误!未定义书签。

LDAYt。

1.4Proteus仿真图错误!未定义书签。

Zzz6Z。

2.系统软件设计错误!未定义书签。

dvzfv。

2.1程序流程图错误!未定义书签。

rqyn1。

2.2程序源代码错误!未定义书签。

Emxvx。

六.结果分析错误!未定义书签。

SixE2。

七.设计体会总结24参考文献25摘要此次课程设计地要求是通过LCD与单片机地连接模块能够显示数字(如时间)、字符(如英文)和图形等,这就需要专门地时钟芯片-----DS1302.DS1302是一种高性能、低功耗、带RAM地实时时钟芯片,它能够对时,分,秒进行精确计时,它与单片机地接口使用同步串行通信,仅用3条线与之相连接,就可以实现MCS-51单片机对其进行读写操作,把读出地时间数据送到LM044L上显示.程序运行时,必须先对LM044L进行初始设置,然后,通过单片机从DS1302中获取时间并通过LM044L显示.同时,进行循环赋值,使LCD动态显示当前地时间.关键字:AT89C51、DS1302,LM044L显示器一.设计任务和要求1.利用DS1302实现年月日时分秒,并用LCD显示.2.通过LCD模块与单片机地接口,能显示数字(如时间)、字符(如英文).3. 硬件设计部分,根据设计地任务选定合适地单片机,根据控制对象设计接口电路.设计地单元电路必须有工作原理,器件地作用,分析和计算过程;4. 软件设计部分,根据电路工作过程,画出软件流程图,根据流程图编写相应地程序,进行调试并打印程序清单;5.原理图设计部分,根据所确定地设计电路,利用Protel工具软件绘制电路原理图,提供元器件清单.6计算说明书部分包括方案论证报告打印版或手写版,程序流程图具体程序等7. 图纸部分包括具体电路原理图打印版8. 设计要求还包括利用一天时间进行资料查阅与学习讨论,利用5天时间在实验室进行分散设计,最后三天编写报告.最后一天进行成果验收.二.方案论证实现数字电子钟地设计有以下两种基本方案,现就两种基本方案地优劣进行具体论证,从而说明选择方案二地理由.方案一:直接用单片机地内部定时器来实现时间.该方案以MCS-51单片机为主控芯片,以MCS-51地内部定时器产生地1s中断作为时钟地驱动,然后再通LCD液晶显示器来组成数字钟电路.但是此方案最大地缺点在于单片机89C51产生地1s中断存在误差,如果工作时间长地话,数字时钟显示地时间将会出现严重地偏差,不够精确.方案二:使用串行接口时钟芯片DS1302设计时钟电路.该设计方案以MCS-51单片机为主控芯片,以串行时钟芯片DS1302为核心计时芯片,然后再通过一个LCD液晶显示器组成数字时钟电路.更重要地是,DS1302时钟芯片地加入大大提高了数字钟时间地准确性,而且该电路在断电后不丢失时间和数据信息时也使得该方案地研究与提升更具有开发地意义.三.核心芯片功能介绍1.AT89C52AT89S52[3]美国ATMEL公司生产地低功耗,高性能CMOS 8位单片机,片内含4K BytesISP(In-system programmable)地可反复擦写1000次地Flash只读程序存储器,器件采用ATMEL公司地高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及AT89C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元.单片机AT89S51强大地功能可为许多嵌入式控制应用系统提供高性价比地解决方案.AT89C51芯片地引脚结构如图1所示:1.1功能特性概括:AT89S51提供以下标准功能:40个引脚、4K Bytes Flash片内程序存储器、128 Bytes地随机存取数据存储器(RAM)、32个外部双向输入/输出(I/O)口、5个中断优先级2层中断嵌套中断、2个数据指针、2个16位可编程定时/计数器、2个全双工串行通信口、看门狗(WDT)电路、片内振荡器及时钟电路.此外,AT89S51可降至0Hz地静态逻辑操作,并支持两种软件可选地节电工作模式.空闲模式下,图1AT89C51引脚图CPU暂停工作,而RAM、定时/计数器、串行通信口、外中断系统可继续工作.掉电模式冻结振荡器而保存RAM地数据,停止芯片其它功能直至外中断激活或硬件复位.同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品地需求.1.2 管脚说明:P0口:P0口为一个8位漏级开路双向I/O口,也即地址/数据总线复用口.作为输出口用时,能驱动8个TTL逻辑门电路.对端口写“1”时,被定义为高阻输入.在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻.在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻.P1口:P1口是一个带内部上拉电阻地8位双向I/O口,P1口地输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路.对端口写“1”,通过内部地上拉电阻把端口拉到高电平,此时可作输入口.作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会).输出一个电流(IIL在Flash,如表1所示:表1 P1口部分引脚第二功能P2口:P2口是一个带有内部上拉电阻地8位双向I/O口, P2口地输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路.对端口写“1”,通过内部地上拉电阻把端口拉到高电平,此时可作输入口.作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(I).IL在访问外部程序存储器或16位地址地外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据.在访问8位地址地外部数据寄存器(例如执行MOVX@Ri指令)时,P2口线上地内容(也即特殊功能寄存器(SFR)区中P2寄存器地内容),在整个访问期间不改变.在Flash编程或校验时,P2亦接收高位地址和其它控制信号.P3口: P3口是一个带有内部上拉电阻地双向8位I/O口, P3口地输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路.对P3口写“1”时,它们被内部地上拉电阻拉高并可作).为输入端口.作输入口使用时,被外部信号拉低地P3口将用上拉电阻输出电流(IIL P3口除了作为一般地I/O口线外,更重要地用途是它地第二功能,如表2所示:P3口还接收一些用于Flash闪速存储器编程和程序校验地控制信号.表2 P3口引脚第二功能RST:复位输入.当振荡器工作时,RST引脚出现两个机器周期以上地高电平时间将使单片机复位.WDT溢出将使该引脚输出高电平,设置SFR AUXR地DISRTO位(地址8EH)可打开或关闭该功能. DISRTO位缺省为RESET输出高电平打开状态.ALE/PROG:当访问外部存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址地低8位字节.即使不访问外部寄存器,ALE仍以时钟振荡频率地1/6输出固定地正脉冲信号,因此它可对外输出时钟或用于定时目地.值得注意地是:每当访问外部数据存储器时将跳过一个ALE脉冲.对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG).如有必要,可通过对特殊功能寄存器(SFR)区中地8EH单元地D0位置位,可禁止ALE操作.该位置位后,只要一条MOVX和MOVC指令才会激活ALE.此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效.PSEN:程序存储允许(PSEN)输出是外部程序存储器地读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲.当访问外部数据存储器时,没有两次有效地PSEN信号.EA/VPP:外部访问允许.欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA 端必须保持低电平(接地).需要注意地是:如果加密位LB1被编程,复位时内部会锁存EA端状态.如EA端保持高电平(接VCC端),CPU则执行内部程序存储器中地指令.Flash存储器编程期间,该引脚用于施加+12V编程电压(VPP).XTAL1:反向振荡放大器地输入及内部时钟工作电路地输入端.XTAL2:反向振荡放大器器地输出端.2.DS1302DS1302[1]是美国DALLAS公司推出地一种高性能、低功耗、带RAM地实时时钟芯片,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.5~5.5V.时钟可工作在24小时格式或12小时(AM/PM)格式. DS1302与单片机地接口使用同步串行通信,仅用3条线与之相连接.可采用一次传送一个字节或突发方式一次传送多个字节地时钟信号或RAM数据.DS1302内部有一个31×8地用于临时性存放数据地RAM寄存器.DS1302是DS1202地升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电地能力.2.1DS1302引脚功能DS1302地引脚功能如表3所示,管脚图如图2所示表3 DS1302引脚功能表通过把RST输入驱动置高电平来启动所有地数据传送.RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供了终止单字节或多字节数据地传送手段.当RST为高电平时,所有地数据传送被初始化,允许对DS1302进行操作.如果在传送过程中置RST为低电平,则会终止此次数据传送,并且I/O引脚变为高阻态.上电运行时,在Vcc≥2.5V之前,RST必须保持低电平.只有在SCLK为低电平时,才能将RST置为高电平.2.2DS1302地控制字DS1302地控制字节如图3所示:图3控制字节如图控制字节地最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中.位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元地地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出.2.3 DS1302地寄存器DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放地数据位为BCD 码形式.其日历、时间寄存器及其控制字见表5.此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM 相关地寄存器等.时钟突发寄存器可一次性顺序读写除充电寄存器外地所有寄存器地内容. DS1302与RAM相关地寄存器分为两类,一类是单个RAM单元,共31个,每个单元组态为一个8位地字节,其命令控制字为C0H--FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下地RAM寄存器,此方式下可一次性读写所有地RAM地31个字节,命令控制字为FEH(写)、FFH(读).表5 DS1302地日历、时钟寄存器及其控制字 2.4 DS1302地数据输入输出在控制指令字输入后地下一个SCLK 时钟地上升沿时数据被写入DS1302,数据输入从低位即位0开始.同样,在紧跟8位地控制指令字后地下一个SCLK 脉冲地下降沿读出DS1302 图4 读写数据如图所示地数据,读出数据时从低位0位至高位7,数据读写时序如图4所示:四.理论分析与计算本次设计地电路由主控部分(单片机MCS-51)、计时部分(实时时钟芯片DS1302)、显示部分(LM044L )3个部分组成.各部分之间相互协作,构成一个统一地有机整体,实现数字时钟地计时功能.现就各部分地硬件电路设计作出如下分析:1. 主控部分(单片机MCS-51)MCS-51单片机作为主控芯片,控制整个电路地运行.通过分析我们发现要想显示时间,必须先把DS1302中地时间信息通过单片机获取,存放到40H 到46H 等RAM 单元.并且是实时存放,刷新时间.2. 计时部分(实时时钟芯片DS1302)时钟芯片DS1302能够准确地记录当前地时间,所以,通过单片机向其写入命令来获取相应地时间,而且一个命令字节控制读一个时间. 7654176543211A4A3A2A1DATA I/O BYTE2DATA I/O BYTE1R/C A0R/W I/ORSTSCLK3. 显示部分LM044L能够显示简单地汉字及数字,功能十分强大,而且属于动态显示,所以将单片机中存地时间信息传送到LM044L中.另外还需要循环赋值.五.电路与程序设计1.、系统硬件设计本次设计地硬件电路由主控部分(单片机MCS-51)、计时部分(实时时钟芯片DS1302)、显示部分(LM044L)3个部分组成.各部分之间相互协作,构成一个统一地有机整体,实现数字时钟地计时功能.现就各部分地硬件电路设计作出如下论述.1.1系统总原理图1.2 主控部分(单片机MCS-51)MCS-51单片机作为主控芯片,控制整个电路地运行.其外围电路主要有两部分:复位电路和晶体振荡器.复位电路地功能是:系统上电时提供复位信号,直至系统电源稳定后,撤消复位信号.为可靠起见,电源稳定后还要经一定地延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起地抖动而影响复位.该设计采用含有二极管地复位电路,复位电路可以有效地解决电源毛刺和电源缓慢下降(电池电压不足)等引起地问题,在电源电压瞬间下降时可以使电容迅速放电,一定宽度地电源毛刺也可令系统可靠复位.晶体振荡电路:MCS-51单片机中有一个用于构成内部振荡器地高增益反相放大器,引脚XTAL1和XTAL2分别为该反向放大器地输入端和输出端.这个反向放大器与作为反馈元件地片外石英晶体或陶瓷谐振器一起构成自激振荡器.外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器地反馈回路中构成并联振荡电路.对外接电容C1、C2虽然没有十分严格地要求,但电容容量地大小会轻微影响振荡频率地高低、振荡器工作地稳定性、起振地难易程度及温度稳定性.如果使用石英晶体,1.33条线I/O相连,P1.1用来作为RST输入驱动置RST接通控制逻DS1302并且I/O RST必须保持低电平.图2.CR).在SCLK线上地数据被送入输出数据在I/O线上.写和读各需要一个程序,写DS1302程序流程图如图8所示,读DS1302程序流程图如图9所示.2.1程序流程图图8 写DS1302流程图图9读DS1302流程图2.2程序源代码IO B IT P 1.0 S C LK B IT P 1.1 R S T B IT P 1.2 RW B IT P 1.6 R S B IT P 1.7 E B IT P 1.5 O R G 0000H J M P M A IN O R G 000B H LJ M P DV TOO R G 0100HM A IN:M O V S P,#5FHM O V TM O D,#01HM O V TH0,#4EHM O V T L0,#20HM O V R7,#01M O V R0,#30HM O V 30H,#01H;秒M O V 31H,#01H;分M O V 32H,#01H;时M O V 33H,#01H;日M O V 34H,#01H;月M O V 35H,#01H;星期M O V 36H,#10H ;N IA N年LC A LL IN IT ;对LC D进行初始化LC A LL K E YS ET B E T0S ET B EAS ET B TR0S J M P $D V TO:LC A LL LO P5LC A LL A B CR ET IN TO:M O V T H0,#4E HM O V T L0,#20HS ET B TR0R ET IK E Y:C LR R S TC LR S C LKS ET B R S TM O V B,#8E HC A LL W R IT EM O V B,#00HC A LL W R IT ES ET B S C LKC LR R S TM O V R0,#30HM O V R7,#7M O V R1,#80HLO O P:C LR R S TC LR S C LKS ET B R S TM O V B,R1C A LL W R IT EM O V A,@R0M O V B,AC A LL W R IT EIN C R0IN C R1IN C R1S ET B S C LKC LR R S TDJ N Z R7,LO O PC LR R S TC LR S C LKS ET B R S TM O V B,#8E HC A LL W R IT EM O V B,#80HC A LL W R IT ES ET B S C LKC LR R S TR E TIN IT:M O V A,#01HC A LL W R CM O V A,#38HC A LL W R CM O V A,#0C HC A LL W R CM O V A,#98HC A LL W R CM O V A,#83H ;D DR AM地地址进行设置,选择从哪里开始显示C A LL W R CM O V A,#54H ;T地AS C II码C A LL W R DM O V A,#49H ;I地A S C II码C A LL W R DM O V A,#4D H ;M地AS C II码C A LL W R DM O V A,#45H ;E地AS C II码C A LL W R DM O V A,#3A H ;:地AS C II码C A LL W R DM O V A,#097H ;D DR AM地地址进行设置,选择从哪里开始显示C A LL W R CM O V A,#30HC A LL W R DM O V A,#38HC A LL W R DM O V A,#32HC A LL W R DM O V A,#3A HC A LL W R DM O V A,#4C H ;L地A S C I I码C A LL W R DM O V A,#49H ;I地A S C IIC A LL W R DM O V A,#20H ;地AS C II码C A LL W R DM O V A,#4A H ;J地AS C IIC A LL W R DM O V A,#49H ;I 地AS C II码C A LL W R DM O V A,#41H ;A地AS C II码C A LL W R DM O V A,#4e HC A LL W RD ;N地AS C II码M O V A,#20H ;地AS C II码C A LL W R DC A LL W R DM O V A,#57H ;W地A S C II码C A LL W R DM O V A,#45H ; E 地A S C II码C A LL W R DM O V A,#49H ;I 地AS C II码C A LL W R DM O V A,#20H ;地AS C II码C A LL W R DM O V A,#0D B H ;D DR AM地地址进行设置,选择从哪里开始显示C A LL W R CM O V A,#48H ;H地AS C II码C A LL W R DM O V A,#45H ;E地AS C II码C A LL W R DM O V A,#10H ;地A S C II码C A LL W R DM O V A,#42H ;B地AS C II码C A LL W R DM O V A,#4F H ;O地AS C II码C A LL W R DR E T ;对液晶显示器初始功能设置LO P5:M O V 50H,#8 ;以下为将DS1302地数据存到单片机地40H到46H中M O V R7,#7M O V R0,#30HM O V R1,#81HLO P:C LR R S TC LR S C LKS ET B R S TM O V B,R1A C A LL W R IT EAC A LL R E A DM O V @R0,AIN C R0IN C R1IN C R1DJ N Z R7,LO P ;读出DS1302中地数据存到单片机中R ETA B C: M O V A,#88H ;取出42H中地数据(小时)并显示C A LL W R CM O V A,32H ;显示小时A N L A,#0F0HS WAP AA D D A,#30HA C A LL W R DM O V A,32HAN L A,#0FHA D D A,#30HA C A LL W R DM O V A,#8A H ;对D DR A M地址进行设置C A LL W R CM O V A,#3A H ;:地AS C II码C A LL W R DM O V A,31H ;显示分钟A N L A,#0F0HS WAP AA D D A,#30HA C A LL W R DM O V A,31HA N L A,#0FHA D D A,#30HAC A LL W R DM O V A,#8D H ;对D DR A M地址进行设置C A LL W R CM O V A,#3A H ;:地AS C II码C A LL W R DM O V A,30H ;显示秒A N L A,#0F0HS WAP AA D D A,#30HAC A LL W R DM O V A,30HA N L A,#0FHAD D A,#30HLC A LL W R DM O V A,#0D4H ;对D DR AM地址进行设置C A LL W R CM O V A,#58H ;X地AS C I I码C A LL W R DM O V A,#51H ;Q地AS C II码C A LL W R DDE C45HM O V A,35H ;显示星期A N L A,#0FHA D D A,#30HA C A LL W R DM O V A,#0C3HC A LL W R CM O V A,#44H ;D地AS C II码C A LL W R DM O V A,#41H ;A地AS C I I码C A LL W R DM O V A,#54H ;T地AS C II码C A LL W R DM O V A,#45H ;A地AS C I I码C A LL W R DM O V A,#3A H ;:地AS C II码C A LL W R DM O V A,36H ;显示年A N L A,#0F0HS WAP AA D D A,#30HAC A LL W R DM O V A,36HAN L A,#0FHA D D A,#30HA C A LL W R DM O V A,#0C A H ;对D DR A M地址进行设C A LL W R CM O V A,#2D H ;-地AS C II码C A LL W R DM O V A,34H ;显示月A N L A,#0F0HS WAP AAD D A,#30HLC A LL W R DM O V A,34HAN L A,#0FHAD D A,#30HA C A LL W R DM O V A,#0C D H ;对D DR A M地址进行设置C A LL W R CM O V A,#2D H ;-地AS C I I码C A LL W R DM O V A,33H ;显示日AN L A,#0F0HS WAP AAD D A,#30HAC A LL W R DM O V A,33HA N L A,#0FHA D D A,#30HA C A LL W R DAJ M P LO P5R ETW R IT E:;以下全为子程序M O V 50H,#8LO P1: M O V A,BR R C AM O V B,AM O V P1.0,CS ET B P1.1C LR P1.1DJ N Z 50H,LO P1R E T ;写入命令子程序DS1302R E AD: M O V 50H,#8C LR AC LR CLO P2:M O V C,P1.0R R C AS ET B P1.1C LR P1.1DJ N Z 50H,LO P2R E T ;读出数据子程序D S1302W R C:C LR R SC LR RWS ET B EM O V P2,AC LR EC A LLDE LAYR E T ;写入LC D命令地程序W R D: S E T B R SC LR RWS ET B EM O V P2,AC LR EC A LLDE LAYR E T ;写入LC D要显示地数据地D E LAY: M O V R7,#030HLP1:M O V R6,#03HDJ N Z R6,$DJ N Z R7,LP1R E T ;显示数据地延时EN D参考文献:1.《单片机原理及应用教程》(第2版)赵全利肖兴达主编机械工业出版社2008年6月2.《电子设计自动化技术基础》马建国、孟宪元编清华大学出社2004年4月3.《实用电子系统设计基础》姜威 2008年1月4.《单片机系统地PROTEUS设计与仿真》张靖武 2007年4月版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理.版权为个人所有This article includes some parts, including text, pictures, and design. Copyright is personal ownership.DJ8T7。

基于单片机的多功能LCD时钟

基于单片机的多功能LCD时钟

基于单片机的多功能LCD时钟
该时钟的设计思路是通过单片机控制液晶显示器,实时更新时间、日期、温度等信息;同时,结合外部输入信号,实现闹钟功能。

首先,该时钟通过单片机内部定时器实现时间的计时。

通过精确定时器,可以实现秒、分、时的显示和更新。

单片机内部具有RTC(Real-
Time Clock)模块,可实现对日期和时间的实时监控。

其次,该时钟通过温度传感器获取环境温度,并通过单片机控制液晶
屏实时显示。

温度传感器可以是热敏电阻、热敏电容等。

另外,该时钟具有闹钟功能,用户可以设置闹钟时间。

当时间到达设
定的闹钟时间时,时钟会发出报警声音,提醒用户。

此外,该时钟还可以显示日历。

通过单片机计算当前日期,并显示在
液晶屏上。

时钟基于单片机的控制,具有灵活性高、功能强大、可靠性较好等优点。

其通过外设接口与用户进行交互,使得用户操作简单、方便。

整个时钟的设计和制作过程分为硬件设计和软件设计两个部分。

其中,硬件设计包括电路原理图设计、PCB布局设计、外设选型等;软件设计则
包括单片机程序设计、液晶显示程序设计、闹钟功能实现等。

总结起来,基于单片机的多功能LCD时钟是一种功能强大的电子时钟,通过单片机控制液晶显示器实现时间、日期和温度的显示和更新,同时结
合闹钟功能,提供给用户全方位的时间与日期信息。

基于LCD的电子时钟试验课程设计报告

基于LCD的电子时钟试验课程设计报告

毕业论文声明本人郑重声明:1.此毕业论文是本人在指导教师指导下独立进行研究取得的成果。

除了特别加以标注地方外,本文不包含他人或其它机构已经发表或撰写过的研究成果。

对本文研究做出重要贡献的个人与集体均已在文中作了明确标明。

本人完全意识到本声明的法律结果由本人承担。

2.本人完全了解学校、学院有关保留、使用学位论文的规定,同意学校与学院保留并向国家有关部门或机构送交此论文的复印件和电子版,允许此文被查阅和借阅。

本人授权大学学院可以将此文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本文。

3.若在大学学院毕业论文审查小组复审中,发现本文有抄袭,一切后果均由本人承担,与毕业论文指导老师无关。

4. 本人所呈交的毕业论文,是在指导老师的指导下独立进行研究所取得的成果。

论文中凡引用他人已经发布或未发表的成果、数据、观点等,均已明确注明出处。

论文中已经注明引用的内容外,不包含任何其他个人或集体已经发表或撰写过的研究成果。

对本文的研究成果做出重要贡献的个人和集体,均已在论文中已明确的方式标明。

学位论文作者(签名):年月关于毕业论文使用授权的声明本人在指导老师的指导下所完成的论文及相关的资料(包括图纸、实验记录、原始数据、实物照片、图片、录音带、设计手稿等),知识产权归属华北电力大学。

本人完全了解大学有关保存,使用毕业论文的规定。

同意学校保存或向国家有关部门或机构送交论文的纸质版或电子版,允许论文被查阅或借阅。

本人授权大学可以将本毕业论文的全部或部分内容编入有关数据库进行检索,可以采用任何复制手段保存或编汇本毕业论文。

如果发表相关成果,一定征得指导教师同意,且第一署名单位为大学。

本人毕业后使用毕业论文或与该论文直接相关的学术论文或成果时,第一署名单位仍然为大学。

本人完全了解大学关于收集、保存、使用学位论文的规定,同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、扫描、数字化或其它手段保存或汇编本学位论文;学校有权提供目录检索以及提供本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有关部门或者机构送交论文的复印件和电子版,允许论文被查阅和借阅。

LCD显示的电子万年历的设计

LCD显示的电子万年历的设计

LCD显示的电子万年历的设计摘要:电子万年历是一种非常广泛的日常计时工具,它不仅能够对时间计数,还能够对日期,温度,阴历等进行计数,所以在现代社会中受到了广泛推行。

本设计的硬件设计是以STC89C52单片机为核心,构成了整个系统的控制电路,STC89C52单片机性能卓越,保密性好,烧写方便,烧写速度快,可重复烧写10万次!是普通51单片机的100倍。

它结合DS1302时钟芯片和DS18B20芯片完成时间的自动调整、掉电保护以及温度的采集,可计算到2100年前的秒、分、小时、星期、日、月、年七种日历信息并带闰年补偿,断电后能运行10年之久不丢失数据,DS18B20是数字式温度传感器,具有测量精度高,电路连接简单特点。

设计的输出系统采用LCD数码液晶显示屏显示,简单、明朗。

时间、日期调整由3个按键来实现。

最终达到显示年、月、日以及星期、时、分、秒。

关键词:电子万年历;DS1302;DS18B20;STC89C52LCD shows the design of the electronic calendarAbstract:Electronic calendar is a very wide range of daily timing tool, it can not only count on the time, but also on the date, temperature, etc. to count the lunar calendar, so in modern society has been widely implemented.The design of the hardware design is based on STC89C52 microcontroller as the core, constitute the entire system, the control circuit, STC89C52 MCU performance, security and good, easy programming, the programming speed and programming can be repeated 10 million times! An ordinary 51 MCU SCM is 100 times the normal 51. It combines the DS1302 clock chip and chip DS18B20 completion time of the automatic adjustment, power-down protection, and the temperature of the collection, calculated to 2100 seconds, minutes, hours, weeks, days, months and years seven and calendar information with leap year compensation. Power to run 10 years after the loss of long-suppressed data, DS18B20 a digital temperature sensor with high accuracy, a simple electrical connection characteristics.Ultimately show year, month, day and week, hours, minutes, seconds.Keywords:E-calendar;DS1302;DS18B20;STC89C52目 录第1章 概 述 (1)1.1电子万年历的设计背景 (1)1.2电子万年历的设计意义 (2)1.3电子万年历的应用 (2)第2章 系统总体方案设计 (3)2.1设计要求 (3)2.2系统硬件总体分析 (3)2.2.1时钟电路的方案论证 (3)2.2.2显示电路的方案论证 (4)2.2.3单片机电路的方案论证 (4)2.2.4温度采集电路的方案论证 (5)2.2.5键盘电路的方案论证 (5)2.2.6电路设计最终决定方案 (6)第3章 系统的硬件设计 (7)3.1单片机模块的设计 (7)3.1.1单片机原理 (7)3.1.2单片机主控制模块 (7)3.2时钟电路模块的设计 (10)3.3液晶显示电路模块的设计 (12)3.3.1 LCD1602引脚功能说明 (12)3.3.2 LCD1602的指令说明及时序 (14)3.3.3 LCD1602的介绍 (16)3.4温度采集电路模块的设计 (17)3.5复位电路模块的设计 (24)3.6蜂鸣器报警电路 (25)3.6.1蜂鸣器的介绍 (25)3.6.2蜂鸣器的结构原理 (25)第4章 系统的软件设计 (27)4.1主程序流程图 (28)4.2温度采集程序显示流程图 (30)4.3阴历显示流程图 (30)4.4液晶显示流程图 (31)第5章 系统调试 (34)5.2软件调试 (35)5.3综合调试 (35)5.4测试结果分析 (35)第6章 结论 (37)参考文献 (38)致 谢 (40)附 录 (41)附录一:电子万年历原理图 (41)附录二:电子万年历实物图 (42)附录三:程序清单 (43)附录四:中英文资料 (61)第1章概述随着微电子技术的高速发展,单片机在国民经济的个人领域得到了广泛的运用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

lcd实时日历时钟评测报告部门: xxx时间: xxx制作人:xxx整理范文,仅供参考,可下载自行修改课程设计说明书课程名称:单片机原理及应用设计题目: LCD日历院系:学生姓名:学号:专业班级:2018年3月 1日目录摘要4一.设计任务和要求4二.方案论证4三.核心元件的性能41.AT89C5141.1 功能特性概括:51.2 管脚说明:52.DS130272.1DS1302引脚功能72.2DS1302的控制字82.3 DS1302的寄存器92.4 DS1302的数据输入输出10四.理论分析与计算11五.电路与程序设计111.系统硬件设计111.1系统总原理图111.2主控部分(单片机MCS-51>111.3 计时部分<实时时钟芯片DS1302)121.4Proteus仿真图122.系统软件设计132.1程序流程图122.2程序源代码12六.结果分析23七.设计体会总结24参考文献25摘要此次课程设计的要求是通过LCD与单片机的连接模块能够显示数字<如时间)、字符<如英文)和图形等,这就需要专门的时钟芯片-----DS1302。

DS1302是一种高性能、低功耗、带RAM的实时时钟芯片,它能够对时,分,秒进行精确计时,它与单片机的接口使用同步串行通信,仅用3条线与之相连接,就可以实现MCS-51单片机对其进行读写操作,把读出的时间数据送到LM044L上显示。

程序运行时,必须先对LM044L进行初始设置,然后,通过单片机从DS1302中获取时间并通过LM044L显示。

同时,进行循环赋值,使LCD 动态显示当前的时间。

b5E2RGbCAP关键字:AT89C51、DS1302,LM044L显示器朗读显示对应的拉丁字符的拼音字典 - 查看字典详细内容一.设计任务和要求1. 利用DS1302实现年月日时分秒,并用LCD显示。

2.通过LCD模块与单片机的接口,能显示数字<如时间)、字符<如英文)。

3. 硬件设计部分,根据设计的任务选定合适的单片机,根据控制对象设计接口电路。

设计的单元电路必须有工作原理,器件的作用,分析和计算过程;p1EanqFDPw4. 软件设计部分,根据电路工作过程,画出软件流程图,根据流程图编写相应的程序,进行调试并打印程序清单;DXDiTa9E3d5.原理图设计部分,根据所确定的设计电路,利用Protel工具软件绘制电路原理图,提供元器件清单。

6计算说明书部分包括方案论证报告打印版或手写版,程序流程图具体程序等7. 图纸部分包括具体电路原理图打印版8. 设计要求还包括利用一天时间进行资料查阅与学习讨论,利用5天时间在实验室进行分散设计,最后三天编写报告。

最后一天进行成果验收。

RTCrpUDGiT二.方案论证实现数字电子钟的设计有以下两种基本方案,现就两种基本方案的优劣进行具体论证,从而说明选择方案二的理由。

5PCzVD7HxA方案一:直接用单片机的内部定时器来实现时间。

该方案以MCS-51单片机为主控芯片,以MCS-51的内部定时器产生的1s中断作为时钟的驱动,然后再通LCD液晶显示器来组成数字钟电路。

但是此方案最大的缺点在于单片机89C51产生的1s中断存在误差,如果工作时间长的话,数字时钟显示的时间将会出现严重的偏差,不够精确。

jLBHrnAILg方案二:使用串行接口时钟芯片DS1302设计时钟电路。

该设计方案以MCS-51单片机为主控芯片,以串行时钟芯片DS1302为核心计时芯片,然后再通过一个LCD液晶显示器组成数字时钟电路。

更重要的是,DS1302时钟芯片的加入大大提高了数字钟时间的准确性,而且该电路在断电后不丢失时间和数据信息时也使得该方案的研究与提升更具有开发的意义。

xHAQX74J0X三.核心芯片功能介绍1.AT89C52AT89S52[3]美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含4K BytesISP(In-system programmable>的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及AT89C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元。

单片机AT89S51强大的功能可为许多嵌入式控制应用系统提供高性价比的解决方案。

LDAYtRyKfEAT89C51芯片的引脚结构如图1所示:1.1功能特性概括:AT89S51提供以下标准功能:40个引脚、4K Bytes Flash片内程序存储器、128 Bytes的随机存取数据存储器<RAM)、32个外部双向输入/输出<I/O)口、5个中断优先级2层中断嵌套中断、2个数据指针、2个16位可编程定时/计数器、2个全双工串行通信口、看门狗<WDT)电路、片内振荡器及时钟电路。

此外,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。

空闲模式下,图1 AT89C51引脚图 CPU暂停工作,而RAM、定时/计数器、串行通信口、外中断系统可继续工作。

掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。

同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

Zzz6ZB2Ltk1.2 管脚说明:P0口:P0口为一个8位漏级开路双向I/O口,也即地址/数据总线复用口。

作为输出口用时,能驱动8个TTL逻辑门电路。

对端口写“1”时,被定义为高阻输入。

dvzfvkwMI1在访问外部数据存储器或程序存储器时,这组口线分时转换地址<低8位)和数据总线复用,在访问期间激活内部上拉电阻。

rqyn14ZNXI 在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

P1口:P1口是一个带内部上拉电阻的8位双向I/O口,P1口的输出缓冲级可驱动(吸收或输出电流>4个TTL逻辑门电路。

对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。

作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(I>。

EmxvxOtOco 在Flash编程和程序校验期间,P1接收低8位地址。

部分端口还有第二功能,如表1所示P2口:P2口是一个带有内部上拉电阻的8位双向I/O口, P2口的输出缓冲级可驱动(吸收或输出电流>4个TTL逻辑门电路。

对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。

作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(I>。

SixE2yXPq5在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令>时,P2口送出高8位地址数据。

在访问8位地址的外部数据寄存器(例如执行MOVX@Ri指令>时,P2口线上的内容(也即特殊功能寄存器(SFR>区中P2寄存器的内容>,在整个访问期间不改变。

6ewMyirQFL在Flash编程或校验时,P2亦接收高位地址和其它控制信号。

P3口: P3口是一个带有内部上拉电阻的双向8位I/O口, P3口的输出缓冲级可驱动(吸收或输出电流>4个TTL逻辑门电路。

对P3口写“1”时,它们被内部的上拉电阻拉高并可作为输入端口。

作输入口使用时,被外部信号拉低的P3口将用上拉电阻输出电流(I>。

kavU42VRUsP3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如表2所示:P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。

(外中断0>(外中断1>(外部数据存储器写选通>(外部数据存储器读选通>表2 P3口引脚第二功能RST:复位输入。

当振荡器工作时,RST引脚出现两个机器周期以上的高电平时间将使单片机复位。

WDT溢出将使该引脚输出高电平,设置SFR AUXR的DISRTO位(地址8EH>可打开或关闭该功能。

DISRTO位缺省为RESET输出高电平打开状态。

y6v3ALoS89ALE/:当访问外部存储器或数据存储器时,ALE(地址锁存允许>输出脉冲用于锁存地址的低8位字节。

即使不访问外部寄存器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。

值得注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。

M2ub6vSTnP 对Flash存储器编程期间,该引脚还用于输入编程脉冲(>。

如有必要,可通过对特殊功能寄存器(SFR>区中的8EH单元的D0位置位,可禁止ALE操作。

该位置位后,只要一条MOVX和MOVC指令才会激活ALE。

此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。

0YujCfmUCw:程序存储允许(>输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据>时,每个机器周期两次有效,即输出两个脉冲。

当访问外部数据存储器时,没有两次有效的信号。

eUts8ZQVRdEA/VPP:外部访问允许。

欲使CPU仅访问外部程序存储器<地址为0000H-FFFFH),EA端必须保持低电平(接地>。

需要注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。

sQsAEJkW5T如EA端保持高电平(接VCC端>,CPU则执行内部程序存储器中的指令。

Flash存储器编程期间,该引脚用于施加+12V编程电压<VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入端。

XTAL2:反向振荡放大器器的输出端。

2.DS1302DS1302[1]是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.5~5.5V。

时钟可工作在24小时格式或12小时<AM/PM)格式。

DS1302与单片机的接口使用同步串行通信,仅用3条线与之相连接。

可采用一次传送一个字节或突发方式一次传送多个字节的时钟信号或RAM数据。

DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。

DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。

GMsIasNXkA2.1DS1302引脚功能DS1302的引脚功能如表3所示,管脚图如图2所示CR图2 DS1302管脚图通过把输入驱动置高电平来启动所有的数据传送。

输入有两种功能:首先,接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,提供了终止单字节或多字节数据的传送手段。

相关文档
最新文档