搜档网
当前位置:搜档网 › LCD1602液晶电子时钟

LCD1602液晶电子时钟

LCD1602液晶电子时钟
LCD1602液晶电子时钟

物理与电子信息学院课程设计报告书

姓名:

班级:

学号:

时间:2010年11月

图七时钟流程图图八 PROTUES仿真图

附录二:程序

#include

#define uint unsigned int

#define uchar unsigned char

sbit rs=P2^0;

sbit rw=P2^1;

sbit en=P2^2;

sbit s1=P3^0;

sbit s2=P3^1;

sbit s3=P3^2;

uchar shi,fen,miao,ri,yue,nin;

ucharcodetable[]={"SUNCONGRONG TIME"};

uchar code table1[]={" 23:59:56 "};

uchar num,num1,count;

uint i,sh,ge,s,g;

void delay(uchar time)

{

uint j;

for(;time>0;time--)

for(j=0;j<125;j++);

}

void write_com(uchar com)

{

en=0;

rs=0;

delay(5);

P1=com;

delay(5);

en=1;

delay(5);

en=0;

}

void write_data(uchar dat)

{

en=0;

rs=1;

delay(5);

P1=dat;

delay(5);

en=1;

delay(5);

en=0; }

void init()

{

en=0;

rw=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

for(i=0;i<16;i++)

{

write_com(0x80+i);

write_data(table[i]);

}

for(i=0;i<16;i++)

{

write_com(0x80+0x40+i);

write_data(table1[i]);

}

miao=56;

fen=59;

shi=23;

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

}

void write_sfm(uchar add,uchar num) {

sh=num/10;

ge=num%10;

write_com(0x80+0x40+add);

write_data(0x30+sh);

write_data(0x30+ge);

}

void write_nyr(uchar add1,uchar x) {

sh=x/10;

ge=x%10;

write_com(0x80+add1);

write_data(0x30+sh);

write_data(0x30+ge);

}

void timer0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

count++;

if(count==20)

{

count=0;

miao++;

if(miao==60)

{

miao=0;

fen++;

if(fen==60)

{

fen=0;

shi++;

if(shi==24)

{

shi=0;

write_sfm(4,shi);

}

write_sfm(7,fen);

}

write_sfm(10,miao);

}

}

void keyscan()

{

if(s1==0)

{

delay(5);

if(s1==0)

{

num1++;

while(!s1)

if(num1==1)

{

TR0=0;

write_com(0x0e);

write_com(0x80+0x40+0x0b);

write_com(0x0f);

}

if(num1==2)

{

write_com(0x80+0x40+0x08);

}

if(num1==3)

{

write_com(0x80+0x40+0x05);

}

if(num1==4)

{

num1=0;

write_com(0x0c);

TR0=1;

}

}

}

if(num1!=0)

{

if(s2==0)

{

delay(5);

if(s2==0)

{

while(!s2)

while(!s2)

if(num1==1)

{

delay(20);

miao++;

if(miao==60)

miao=0;

write_sfm(10,miao);

write_com(0x80+0x40+0x0a);

}

if(num1==2)

{

fen++;

if(fen==60)

fen=0;

write_sfm(7,fen);

write_com(0x80+0x40+0x07);

}

if(num1==3)

{

shi++;

if(shi==24)

shi=0;

write_sfm(4,shi);

write_com(0x80+0x40+0x04);

}

}

}

}

if(num1!=0)

if(s3==0)

{

delay(5);

if(s3==0)

{

while(!s3)

if(num1==1)

{

delay(20);

miao--;

if(miao==-1)

miao=59;

write_sfm(10,miao);

write_com(0x80+0x40+0x0a);

}

if(num1==2)

{

fen--;

if(fen==-1)

fen=59;

write_sfm(7,fen);

write_com(0x80+0x40+0x07);

}

if(num1==3)

{

shi--;

if(shi==-1)

shi=23;

write_sfm(4,shi);

write_com(0x80+0x40+0x04);

}

}

}

}

void main()

{

init();

while(1)

{

keyscan();

}

}

基于stc51单片机的LCD1602显示时间_的电子万年历(显示当前温度)

1 课设所需软件简介 1.1 Keil uVision4的简要介绍 2009年2月发布Keil μVision4,Keil μVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。新版本支持更多最新的ARM芯片,还添加了一些其他新功能。 2011年3月ARM公司发布最新集成开发环境RealView MDK开发工具中集成了最新版本的Keil uVision4,其编译器、调试工具实现与ARM器件的最完美匹配。 Keil C51开发系统基本知识Keil C51开发系统基本知识 1. 系统概述 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。 2. Keil C51单片机软件开发系统的整体结构 C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。

基于51单片机1602液晶显示简易计算器设计

#include #include #define uint unsigned int #define uchar unsigned char #define PI 3.141592 sbit RS = P2^0; sbit RW = P2^1; sbit EN = P2^2; sbit led=P2^4; sbit speek=P3^7; uchar table0[]={"Welcome to use"}; uchar table1[]={"made by Ms. Li"}; uchar table2[]={"error"}; uchar count; void main(void) { uchar error=0,i,first=0,dot1,dot2,dot1_num,dot2_num,minus1,minus2;//错误标志、第一次清屏标志、小数点标志以及小数点个数负号标志、负号个数 uchar Sin,Cos,Tan,ln; uchar Key_num,last_key_num; //键号 uchar flag=0,equal_flag; //运算符、等于符 double num1=0,num2=0,num=0,result=0,save_result; //第一个数、第二个 数、计算结果

uchar first_num=0,Ans=0,second_num=0; InitLcd(); EA=1; ET0=1; TMOD=0X01; TH0=(65536-500)/256; TL0=(65536-500)%256; write_com(0x80+0x40+15); write_Dat('0'); write_com(0x80); while(1) { while(key_scan()==0xff); TR0=1; if(first==0) { first=1; write_com(0x01); } Key_num=key_scan(); switch(key_scan()) { case 1: if(last_key_num!=Key_num) { write_Dat('l'); write_Dat('n'); ln=1; }break; case 2: if(last_key_num!=Key_num) { write_Dat('s'); write_Dat('i'); write_Dat('n'); Sin=1; }break; case 3: if(last_key_num!=Key_num) { write_Dat('c'); write_Dat('o'); write_Dat('s'); Cos=1;

基于LCD1602电子时钟

信息与电子工程学院课程设计报告

录目 一、课程设计概 述 (3) 1.1 课程设计背 景 (3) 1.2 课程设计内 容 (3) 1.3 课程设计技术指 标 (3) 二、方案的选择及确 定 (3) 2.1 单片机芯片的选 择 (3) 2.2 显示模块的选 择 (4) 2.3 实时时间计算模块的选择.4 2.4 实时环境温度采集模块选 择 (4) 2.5 电路设计最终方案决 定 (5) 三、系统硬件设 计 (5) 3.1 主控模 块 (5) 3.2LCD显示模块设 计 (6) 3.3 时间计算模块设 计 (6) 3.4 实时环境温度检测模 块 (7) 3.5 报警模 块 (7) 3.6 设置模 块 (8) 3.7 电源接口部

分 (8) 四、系统软件设 计 (8) 4.1 主函 数 (8) 4.2 设置模 块 (9) 4.31602 液晶 屏 (10) 4.4 软件原理 图 (11) 五、系统调试过 程 (11) 5.1 软件调 试 (11) 5.2 硬件调 试 (12) 六、结 论 .................................. 12 七、遇到的问题及解决方法和总 结 (12) 7.1 硬件方 面 (12) 7.2 软件方 面 (13) 7.3 总 结 (13) 1 八、参考文 献 (13) 九、附 录 (14)

课程设计概述 1.1 课程设计背景随着微电子技术的高速发展,单片机在国民经济的个人领域得到了广泛的运用。单片机以体积小、功能全、性价比高等诸多优点,在工业控制、家用电器、通信设备、信息处理、尖端武器等各种测控领域的应用中独占鳌头,单片机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。 而电子万年历作为电子类小设计不仅是市场上的宠儿,也是是单片机实验中一个很常用的题目。因为它有很好的开放性和可发挥性,因此对作者的要求比较高,不仅考察了对单片机的掌握能力更加强调了对单片机扩展的应用。而且在操作的设计上要力求简洁,功能上尽量齐全,显示界面也要出色。 1.2 课程设计内容 利用单片机、时钟芯片DS1302温度传感器DS18B20 16O2液晶屏等实现日期、时间、温度的显示,即是一个电子时钟。具体的功能如下: (1)通过DS1302能够准确的计时,时间可调并在液晶屏上显示出来。 (2)通过DS18B2C能够实时、准确的检测当前环境温度。 (3)利用程序控制单片机实现闹钟功能。 1.3 课程设计技术指标 (1)LCD液晶每行刷新显示。 (2)实时时钟可提供年、月、日、时、分和秒,每月的天数可以自动调整,且具有闰年补偿功能。 (3)时间是24小时制;年限2000年~2099年。 (4)测量温度范围为0 C ~+ 60 C,误差为土0.5 ° C。

基于单片机的lcd1602的多功能计算器

单片机原理与应用技术 课程设计 基于51单片机的多功能计算器 院系:机电工程学院 专业(班级):电子信息工程1班 姓名: 学号: 20134081006 指导教师:邵海龙 职称:讲师 完成日期:2015 年9月22日

评定成绩: 关键词:单片机;液晶显示;计算器; 目录 引言 (3) 1 单片机及其应用……………………………………………………………………...3. 1.1单片机介绍 (3) 1.2单片机的应用 (4) 1.3 STC89C52单片机 (4) 2 液晶屏LCD1602原理及应用 (5) 2.1液晶屏LCD1602介绍及工作原理 (5) 2.2 液晶屏LCD1602的功能及应用 (5) 3 设计思路、仿真及调试 (7) 3.1设计方法 (7) 3.2硬件设计............................................................................... . (7) 3.2.1复位电路 (7) 3.2.2 液晶屏LCD1602显示电路 (8) 3.2.3 4*4键盘的设计 (9) 3.2.5 多功能计算器的总电路 (10) 3.3软件设计 (10) 3.4软件仿真 (17) 3.5硬件调试 (18) 4 结束语.............................................................. .. (18) 谢辞 (18) 参考文献 (19) 1 单片机及其应用 1.1单片机介绍

单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能 1.2单片机的应用 STC89C52 是STC公司推出的一款超强抗干扰,加密性强,在线可编程,高速,低功耗CMOS 8位单片机。片内含 8k bytes 的可反复擦写Flash只读程序存储器和256 bytes 的随机数据存储器(RAM),器件采用STC公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash 存储单元,功能强大的STC89C52单片机适合于许多较为复杂控制应用场合。 1.3 STC89C52单片机 3.2 STC89C52外部结构及特性 其外形封装有两种方式:双列直插式40脚封装(DIP)和方形44脚封装(PLCC),直插式40 脚封装(DIP)和外部总线结构如图2和图3所示:

基于单片机的lcd1602电子时钟设计

基于单片机的LCD1602电子时钟设计 一、设计任务和目的 1.1、设计任务 (1):用单片机设计基于LCD1602的电子时钟,显示时间和日期; (2):误差精度控制在1s/天; (3):具有时间和日期的校准功能; (4):能区分某年是闰年或平年,并对应显示2月份的天数; (5):根据月份的不同显示不同的最大日数; (6):搭建仿真电路图,模拟单片机要实现的功能; (7):焊接单片机开发板; (8):编写程序,下载并调试,实现要求的功能。 1.2、设计目的 (1):熟练掌握KEIL软件的使用方法; (2):熟练掌握PROTEUS软件的使用方法; (3):掌握单片机I/O接口的工作原理; (4):掌握LCD显示器的工作原理及编程方法; (5):掌握独立式键盘的工作原理及编程使用方法; (6):掌握单片机的下载使用方法。 二、设计思路和方案论证 2.1、设计思路 电路总体上分为控制和显示部分。以单片机最小系统作为核心控制电路,控制LCD显示,具体显示内容及方式由软件来完成;由于有时钟和日期的调节功能需要校准电路和基本的复位电路,复位电路采用按键复位,调节键、加1键、减1键三个按键完成,共需四个按键;计时功能由固定频率的晶振完成(采用11.0592MHz);显示部分主要采用LCD1602作为显示。 2.2、方案论证 (1):时钟芯片的选择和论证 方案一:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、月、年以及闰年补偿的年进行计数,精度也较高,工作电压2.5V~5.5V范围内,功耗也较低,但价格比较贵。 方案二:直接采用单片机定时计数器提供秒信号,使用程序实现秒、分、时、日、月、年计数。采用此方案实现虽然有一定的时间误差,但可减少芯片的使用,节约成本,易于实现,符合现实选用,所以采用此种作为时钟信号发生器。 (2):显示模块选择方案和论证: 方案一:采用点阵式图形LCD12864液晶显示屏,液晶显示屏的显示功能强大,可显示文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用点阵式图形LCD12864液晶显示屏。 方案二:采用点阵式字符型LCD1602液晶显示屏,LCD1602是专门用于显示字母、数字、符号等的点阵型液晶显示模块,分4位和8位数据传输方式。提供“5×7点阵+光标”和“5×10点阵+光标”的显示模式。价格现对便宜,所以用此种作为显示。

1602液晶显示计算器电路图及程序

#include #include #include #include unsigned char code Error[]={"error"}; unsigned char code Systemerror[]={"system error"}; unsigned char code Lcd[]={"lcd calculate"}; char str[16]; sbit RS=P2^0; sbit RW=P2^1; sbit E=P2^2; sbit BF=P0^7; /*********************** 函数功能:延时1ms ***********************/ void delay1ms() { unsigned char i,j; for (i=0;i<10;i++) for (j=0;j<33;j++) ; } /************************ 函数功能:延时n毫秒 入口参数:n ************************/ void delaynms(unsigned char n) { unsigned char i; for (i=0;i

Lcd1602简易计算器

Lcd1602显示实现千位数加减乘除用4*4矩阵按键输入0~9 +,-,*,/,=,和清除建 #include #define temp P3 sbit RS=P0^0; sbit RW=P0^1; sbit E =P0^2; unsigned char key_num; unsigned char lcd_tab3[16]=" "; unsigned char code lcd_tab4[]="0123456789+-*/="; unsigned char lcd_tab5[16]=" "; unsigned char lcd_tab6[]=" "; unsigned char lcd_tab7[]="."; int a,b,c,d,m,i; void decide(); long int key_cnt=0,key_number,key_number1; unsigned char flag1=0,flag2=0,flag3=0,flag4=0,flag5=0; long int result, result1, result2, result3, result4,result5, result6, result7, result8; int decimal0,decimal1; delay_nms(unsigned int i) { unsigned int j; for(;i!=0;i--) { for(j=0;j<61;j++); }

} key_scan(void) { unsigned char a; temp=0xf0; if(temp!=0xf0) { delay_nms(10); { if(temp!=0xf0) switch(temp) { case 0xe0 :key_num= 0; break; case 0xd0 :key_num= 1; break; case 0xb0 :key_num= 2; break; case 0x70 :key_num= 3; break; } temp=0x0f; switch(temp) { case 0x0e :key_num=key_num; break; case 0x0d :key_num= key_num+4; break; case 0x0b :key_num= key_num+8; break; case 0x07 : key_num=key_num+12; break; default :break; } while((a<50)&&( temp!=0x0f)) { delay_nms(1); a++; } temp=0xf0; } } return (key_num); } void write_com(char cod) { E=0; RS=0; RW=0; E=1; delay_nms(1); P2=cod;

基于c51功能最全的电子钟程序lcd1602

功能最全的电子钟 【单片机】c51数字时钟(带年月日显 示) 摘要:本设计以单片机为核心,lcd1602显示。采用独立键盘输入能任意修改当前时间日期和设定闹钟时间。具有显示年月日(区分闰年和二月),闹钟报警和整点报时功能 主程序: /**************************************************************************************** ********** ***************************************************************************************** ********** ********************** lcd1602电子钟*************************************************** ***************************************************************************************** ********** ***************************************************************************************** **********/

# include # include "lcd16024.h" sbit key1 = P2^0; //调整 sbit key2 = P2^1; //加1 sbit key3 = P2^2; //减1 sbit speaker = P2^3; //蜂鸣器 sbit key4 = P2^4; //闹钟设计 bit cal_year = 1; //进入判断闰年标志位bit leap_year; //闰年标志位 bit calculate = 0; //日加一标记 bit run = 0; //闹钟标志 bit beep = 0; //整点报时标志//uint8 num = 0; //调整是给的脉冲uint8 code str1[] = "D: "; uint8 code str2[] = "T: "; uint8 code str3[] = "Wek"; uint8 daystr[]="2013-07-29 "; //年月日格式uint8 timestr[]="21:30:59 N"; //时分秒格式 uint8 daystr1[]="2013-07-29 "; //闹钟年月日格式uint8 timestr1[]="21:30:59 N"; //闹钟时分秒格式uint8 numweek = 0; //星期加1标记char week = 1; //星期 char sec = 53; //秒 char min = 50; //分 char hour = 23; //时 uint8 day = 30; // 日 uint8 month = 9; //月 uint16 year = 2013; //年 char week1 = 1; //闹钟星期 char sec1 = 58; //闹钟秒 char min1 = 50; //闹钟分 char hour1 = 23; //闹钟时uint8 day1 = 30; //闹钟日 uint8 month1 = 9; //闹钟月 uint16 year1 = 2013; //闹钟年 uint8 WeekData1; //闹钟星期标记uint8 number = 0; //定时 uint8 WeekData; //星期标记uint8 speaker_num; //整点报时次数

单片机计算器

#include "reg52.h" #include "math.h" //#include "lcd1602_8.h" #define uint unsigned int #define uchar unsigned char uint temp , num; //键盘扫描数值 uchar keynum1=0,keynum2=0,sign=0,i=0,j=0; //按键计数,符号标示uchar num1[8]={0},num2[8]={0}; //按键存储数组 float ans1=0,ans2=0,ans=0,point=0; //运算数据 bit conflag=0; //继续运算标志位 bit newcalc=0; //新运算标志位 bit ac=0; //清零标志,1为清零 bit beepflag=0; //蜂鸣器标志位 bit sqrtflag1=0; //开方1标志位 bit sqrtflag2=0; //开方2标志位 sbit keybeep=P3^3; //蜂鸣器开关按键 sbit beep=P2^7; //蜂鸣器控制口 sbit keysqrt=P3^4; //开方按键 sbit keypow=P3^5; //任意次方按键 sbit LCDRS=P2^0; sbit LCDRW=P2^1; sbit LCDEN=P2^2; uchar keyscan(); void maininit(void); //附4:LCD1602显示程序 //#include //#include"lcd1602_8.h" //#include //延时1ms程序 void delayms(uint x) //12M延时1ms { unsigned int TempMS=x*110; while(TempMS--); } //写命令 void lcdwrite_com(uchar i) { P0=i; LCDRS=0; LCDRW=0; LCDEN=0;

基于51单片机LCD1602数字钟

基于51单片机的数字时钟 实训单位: 南耕科技 系别: 工程技术系 专业: 姓名:

摘要 本文介绍了基于AT89C51单片机的数字式时钟的设计,详细叙述了系统硬件、软件的具体实现过程。本文在硬件、软件设计上均采用模块化的方法,使得在设计和调试方面取得很大的方便。软件同样采用模块化的设计,包括中断模块、时间调整模块等设计,并采用简单流通性强的C语言编写实现。本设计实现了时、分、秒的显示和时间修改的功能。通过对比实际的时钟,查找出误差的来源,确定调整误差的方法,尽可能的减少误差,使得系统可以达到实际数字钟的允许误差范围内。 关键字:AT89C51单片机;数字钟;模块化;

目录 1 绪论 (1) 1.1 课题背景 (1) 1.2 课题意义 (2) 1.3 数字式时钟的应用 (2) 1.4 本章小结 (3) 2 单片机简介 (3) 2.1 单片机的选择 (3) 2.1.1 单片机的特点 (5) 2.1.2 单片机的应用领域 (5) 2.2 AT89C51单片机的基本结构 (6) 2.3 本章小结 (11) 3 数字式时钟的硬件设计 (12) 3.1 最小系统设计 (13) 3.2 数字式时钟的外围电路设计 (14) 3.3 本章小结 (19) 4 数字式时钟的软件设计 (19) 4.1 系统软件设计内容 (19) 4.2主程序 (20) 4.3时钟设置子程序 (22) 4.4中断子程序 (24) 4.5 LCD显示子程序 (24) 4.6 本章小结 (26) 5 数字式时钟的Protues软件仿真 (26) 5.1 Protues软件的概述 (26) 5.2 Protues软件的功能特点 (27) 5.3 Protues软件具有4大功能模块 (27) 5.4 数字式时钟的Proteus软件仿真 (29) 5.5 本章小结 (35) 结论 (36) 致谢 (37) 单片机介绍 (37) 附录 (41)

DS1302与液晶1602简单时钟

《单片机原理实验》 考 试 报 告 题目:DS1302和1602时钟 姓名: 学号: 班级: 专业:电子信息工程 指导老师: 提交时间:

DS1302和1602时钟 *** (**学院电子信息工程 ***班 **********) 摘要: 关键词:DS1302 ,液晶1602,89C51。 1.引言 我们在日常生活中常常用到时钟来记录时间,有时候还不能准确的记录下时间, 这就要用到芯片DS1302了。时间还远远不够,因为人性化的设计自然是要清楚的显示年、月、日、星期、时间。 而在此用到的DS1302非常好的与时间进行同步,并且在掉电时不会对时间有影响,较理 的考虑到了人们的思维模式,从而简单的控制了时钟,结合了常理的理论。 2.原理 DS1302引脚 X1 X2 32.768KHz 晶振管脚 GND 地 CE 复位脚 I/O 数据输入/输出引脚 SCLK 串行时钟

Vcc1,Vcc2 电源供电管脚 各引脚的功能为: Vcc1:主电源;Vcc2:备份电源。当Vcc2>Vcc1+0.2V时,由Vcc2 向DS1302供电,当Vcc2< Vcc1时,由Vcc1向DS1302供电。 SCLK:串行时钟,输入,控制数据的输入与输出; I/O:三线接口时的双向数据线; CE:输入信号,在读、写数据期间,必须为高。该引脚有两个功能: 第一,CE开始控制字访问移位寄存器的控制逻辑;其次, CE提供结束单字节或多字节数据传输的方法。 DS1302控制字: 控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。 位6:如果为0,则表示存取日历时钟数据,为1表示存取RAM数据; 位5至位1(A4~A0):指示操作单元的地址; 位0(最低有效位):如为0,表示要进行写操作,为1表示进行读操作。 控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位。 DS1302时序:

51单片机实现电子时钟功能_1602液晶显示

第一章 设计要求及系统组成 1.1 设计要求 利用单片机最小系统设计一个电子时钟,显示方式为**:**:**,并且可以任意修改时间。 1.2系统组成 原理框图如图1.1 图1.1 系统原理框图 第二章 系统设计方案 2.1 系统设计方案 电路原理图如图2.1所示

图2.1 电路原理图 2.2 电路模块组成及其工作原理 2.2.1 时钟电路 系统时钟源由内部时钟方式产生,时钟电路由12MH晶振和两个30PF瓷片电容组成,构成自激振荡,形成振荡源提供给单片机。电容可在5PF到30PF 之间选择,电容的大小对振荡频率有微小影响,可起频率微调作用。 时钟电路如图2.2所示 图2.2 时钟电路 2.2.2 复位电路 单片机复位有上电复位和手动复位两种方式,上电复位是接通电源后利用

RC充电来实现复位。手动复位是通过人为干预,强制系统复位。 复位电路如图2.3所示,可以实现上电复位和手动复位功能。 图2.3 复位电路 2.2.3 按键电路 在单片机的P1.0、P1.1、P1.2三个I/O口接三个简易按键,通过不断检测按键状态,识别按键的按下顺序和次数即可实现时间的任意修改。 按键电路如图2.4所示。 2.2.4 1602液晶显示模块电路 本设计是通过对1602液晶显示屏的控制来实现时间的显示。 1602液晶显示模块的驱动如下所述:

图2.4 1602液晶屏实物图 1602采用标准的16脚接口,其中: 第1脚:VSS为地电源 第2脚:VDD接5V正电源 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度 第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第7~14脚:D0~D7为8位双向数据线

计算器1602设计

89C51单片机和1602做的简易计算器(软件设计部分)① 2009-05-15 16:19 经过几天的整理,现在把它放这里与大家一起分享! 第3章项目实现:简易计算器的设计 3.1 硬件连接 图3-1所示为简易计算器的电路原理图。P3口用于键盘输入,接4*4矩阵键盘, 键值与键盘的对应表如表----所示,p0口和p2口用于显示,p2口用于显示数值的高位,po口用于显示数值的低位。

图3-1 简易计算器电路原理图 键值与功能对应表 键值0 1 2 3 4 5 6 7 8 9 + - ×/ = ON/C

功能0 1 2 3 4 5 6 7 8 9 + - ×÷= 清零 表3-1 3.2 计算器的软件设计 #include //头文件 #define uint unsigned int // #define uchar unsigned char sbit lcden=P2^3; //定义引脚 sbit rs=P2^4; sbit rw=P2^0; sbit busy=P0^7; char i,j,temp,num,num_1; long a,b,c; //a,第一个数b,第二个数c,得数 float a_c,b_c; uchar flag,fuhao;//flag表示是否有符号键按下,fuhao表征按下的是哪个符号 uchar code table[]={ 7,8,9,0, 4,5,6,0, 1,2,3,0, 0,0,0,0}; uchar code table1[]={

7,8,9,0x2f-0x30, 4,5,6,0x2a-0x30, 1,2,3,0x2d-0x30, 0x01-0x30,0,0x3d-0x30,0x2b-0x30}; void delay(uchar z) // 延迟函数 { uchar y; for(z;z>0;z--) for(y=0;y<110;y++); } void check() // 判断忙或空闲 { do{ P0=0xFF; rs=0; //指令 rw=1; //读 lcden=0; //禁止读写 delay(1); //等待,液晶显示器处理数据 lcden=1; //允许读写 }while(busy==1); //判断是否为空闲,1为忙,0为空闲}

基于51单片机的LCD1602简单数字时钟

原理图: 源程序: /*************************************************************** 标题:LCD1602时钟 效果:在LCD1602屏上显示时分秒,能调节时间 作者:皖绩小挺 说明:RS:P1.0 RW:P1.1 E:P1.3 数据端口:P0 key1:P3.7 key2:P3.6 key3:P3.5 key4:P3.6 key5;P3.3 ******************************************************************/ #include #define uchar unsigned char //宏定义 #define uint unsigned int sbit lcdrs=P1^0; //定义LCD1602端口 sbit lcdrw=P1^1; sbit lcden=P1^2; sbit key1=P3^7; //定义按键端口 sbit key2=P3^6; sbit key3=P3^5; sbit key4=P3^4;

sbit key5=P3^3; uchar tt; //设置全局变量 uchar hour,minute,second; uchar table[]="HELLO WORLD" ; //第一行字符(11个) uchar table1[]="00:00:00"; //第二行字符(8个) /******************************************************* 延时函数 *******************************************************/ void delay(uint z) //delay(1)约1ms { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /******************************************************* LCD1602写命令 *******************************************************/ void write_lcdcom(uchar lcd_com) { lcdrs=0; //rs低电平为选择指令寄存器 lcdrw=0; //rw低电平进行写操作 P0=lcd_com; delay(5); lcden=1; delay(5); lcden=0; } /******************************************************* LCD1602写数据 *******************************************************/ void write_lcddata(uchar lcd_data) { lcdrs=1; //rs高电平为选择数据寄存器 lcdrw=0; P0=lcd_data; delay(5); lcden=1; delay(5); lcden=0; } /*******************************************************

基于单片机的LCD1602电子时钟设计

基于单片机的LCD1602 电子时钟设计 、设计任务和目的 1.1、设计任务 (1):用单片机设计基于LCD1602 的电子时钟,显示时间和日期; (2):误差精度控制在1s/天; (3):具有时间和日期的校准功能; (4):能区分某年是闰年或平年,并对应显示 2 月份的天数; (5):根据月份的不同显示不同的最大日数; (6):搭建仿真电路图,模拟单片机要实现的功能; (7):焊接单片机开发板; (8):编写程序,下载并调试,实现要求的功能。 1.2、设计目的 (1):熟练掌握KEIL 软件的使用方法; (2):熟练掌握PROTEUS 软件的使用方法; (3):掌握单片机I/O 接口的工作原理; (4):掌握LCD 显示器的工作原理及编程方法; (5):掌握独立式键盘的工作原理及编程使用方法; (6):掌握单片机的下载使用方法。 二、设计思路和方案论证 2.1、设计思路 电路总体上分为控制和显示部分。以单片机最小系统作为核心控制电路,控制LCD 显示,具体显示内容及方式由软件来完成;由于有时钟和日期的调节功能需要校准电路和基本的复位电路,复位电路采用按键复位,调节键、加 1 键、减 1 键三个按键完成,共需四个按键;计时功能由固定频率的晶振完成(采用11.0592MHz);显示部分主要采用LCD1602 作为显示。 2.2、方案论证 (1):时钟芯片的选择和论证 方案一:采用DS1302 时钟芯片实现时钟,DS1302 芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、月、年以及闰年补偿的年进行计数,精度也较高,工作电压 2.5V~5.5V 范围内,功耗也较低,但价格比较贵。 方案二:直接采用单片机定时计数器提供秒信号,使用程序实现秒、分、时、日、月、年计数。采用此方案实现虽然有一定的时间误差,但可减少芯片的使用,节约成本,易于实现,符合现实选用,所以采用此种作为时钟信号发生器。 (2):显示模块选择方案和论证: 方案一:采用点阵式图形LCD12864 液晶显示屏,液晶显示屏的显示功能强大,可显示文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用点阵式图形LCD12864 液晶显示屏。 方案二:采用点阵式字符型LCD1602 液晶显示屏,LCD1602 是专门用于显示字母、数字、符号等的点阵型液晶显示模块,分 4 位和8 位数据传输

定时器lcd1602单片机课程设计

烟台南山学院 单片机课程设计 实训报告 题目 姓名: XXX 所在学院:电子工程学院 所学专业:__ _电子信息工程 班级: 08电子信息工程(1)班 学号: 2007120034 指导教师: 完成时间: 2010年11月07日

摘要 (这里用宋体,四号字,只写中文摘要!) 随着时代的进步和发展,单片机技术已经和我们的生活息息相关,其中涉及到生活,工作,科研,等各个领域,现在已经成为一个比较成熟的技术。单片计算机即单片机微型计算机。是CPU 、RAM、ROM、定时、计数和多接口于一体的微型控制器。他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。其中51系列单片机是其中最为有代表性的一种。 通过单片机AT89C51和lcd 1602 液晶显示器,显示电子时钟的年、月、日、星期、时、分、秒。更为形象,更为直观。通过软件,和硬件的结合,在仿真电路的仿真实现,数字时钟的走时,通过51 C 语言编程实现,秒、分、时、星期、日、月、年的显示自动校正,以及平年闰年的判断,通过和实际的时钟进行对比,查找误差,减少误差的来源,达到和实际时钟的误差无限减小。 关键字:AT89C51单片机、1602LCM模块、数字时钟

目录 第1章概述 (4) 1.1课题背景 .............................................................4 1.2课题意义 .............................................................4 第2章设计要求 (6) 第3章总体方案设计与分析 (10) 3.1整体方案框图 .........................................................10 3.2单片机的选择 .........................................................11 3.2驱动电路的选择 .......................................................11 3.3壁障传感器的选择 .....................................................12 3.4 显示模块的选择 .......................................................14 第4章硬件电路设计 (20) 4.1单片机最小系统模块 ...................................................20 4.2驱动电路模块 .........................................................20 4.3红外探头模块 .........................................................21 4.4显示模块 .............................................................21

单片机课程设计 计算器

课程设计说明书 课程设计名称:单片机课程设计 课程设计题目:四位数加法计算器的设计学院名称:电气信息学院 专业班级: 学生学号: 学生姓名: 学生成绩: 指导教师: 课程设计时间:2017.10.30 至2017.11.5

格式说明(打印版格式,手写版不做要求) (1)任务书三项的内容用小四号宋体,1.5倍行距。 (2)目录(黑体,四号,居中,中间空四格),内容自动生成,宋体小四号。 (3)章的标题用四号黑体加粗(居中排)。 (4)章以下的标题用小四号宋体加粗(顶格排)。 (5)正文用小四号宋体,1.5倍行距;段落两端对齐,每个段落首行缩进两个字。 (6)图和表中文字用五号宋体,图名和表名分别置于图的下方和表的上方,用五号宋体(居中排)。(7)页眉中的文字采用五号宋体,居中排。页眉统一为:武汉工程大学本科课程设计。 (8)页码:封面、扉页不占页码;目录采用希腊字母Ⅰ、Ⅱ、Ⅲ…排列,正文采用阿拉伯数字1、2、3…排列;页码位于页脚,居中位置。 (9)标题编号应统一,如:第一章,1,1.1,……;论文中的表、图和公式按章编号,如:表1.1、表1.2……;图1.2、图1.2……;公式(1.1)、公式(1.2)。

课程设计任务书 一、课程设计的任务和基本要求 (一)设计任务(从“单片机课程设计题目”汇总文档中任选1题,根 据所选课题的具体设计要求来填写此栏) 1. 系统通过4x4的矩阵键盘输入数字及运算符。 2. 可以进行4位十进制数以内的加法运算,如果计算结果超过4位十进制数,则屏幕显示E。 3. 可以进行加法以外的计算(乘、除、减)。 4. 创新部分:使用LCD1602液晶显示屏进行显示,有开机欢迎界面,计算数据与结果分两行显示,支持小数运算。 (二)基本要求 1.有硬件结构图、电路图及文字说明; 2.有程序设计的分析、思路说明; 3.有程序流程框图、程序代码及注释说明; 4.完成系统调试(硬件系统可以借助实验装置实现,也可在Proteus 软件中仿真模拟); 5.有程序运行结果的截屏图片。

相关主题