单片机控制LCD显示时间
- 格式:doc
- 大小:440.50 KB
- 文档页数:13
LCD显示电路#include<reg51.h>sbit RS=P3^7; //寄存器选择位,将RS位定义为P2.0引脚sbit RW=P3^6; //读写选择位,将RW位定义为P2.1引脚sbit E=P2^7; //使能信号位,将E位定义为P2.2引脚sbit BF=P0^7; //忙碌标志位,将BF位定义为P0.7引脚#define Lcd_Data P0#include <string.h>#include<intrins.h> //包含_nop_()函数定义的头文件unsigned char code string1[ ]={0x77,0x75,0x20,0x79,0x61,0x6E,0x67,0x20,0x79,0x61,0x6E,0x67,0x20,0x20,0x20,0x20}; //第一行显示的字符void Lcd_delay1ms() // 函数功能:延时1ms//注:不同单片机不同晶振需要对此函数进行修改{ unsigned char i,j;for(i=0;i<90;i++)for(j=0;j<33;j++);}void Lcd_delay(unsigned int n) // 函数功能:延时若干毫秒,入口参数:n{ unsigned int i;for(i=0;i<n;i++)Lcd_delay1ms();}/*****************************************************函数功能:判断液晶模块的忙碌状态返回值:result。
result=1,忙碌;result=0,不忙***************************************************/bit Lcd_BusyTest(void)bit result;RS=0; //根据规定,RS为低电平,RW为高电平时,可以读状态RW=1;E=1; //E=1,才允许读写_nop_(); //空操作_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间result=BF; //将忙碌标志电平赋给resultE=0;return result;}/*****************************************************函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate***************************************************/void Lcd_WriteCom (unsigned char dictate){ while(Lcd_BusyTest()==1); //如果忙就等待RS=0; //根据规定,RS和R/W同时为低电平时,可以写入指令RW=0;E=0; //E置低电平(写指令时就是让E从0到1发生正跳变,所以应先置ぜ? _nop_();_nop_(); //空操作两个机器周期,给硬件反应时间Lcd_Data=dictate; //将数据送入P0口,即写入指令或地址_nop_();_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间E=1; //E置高电平_nop_();_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令}/*****************************************************函数功能:指定字符显示的实际地址x入口参数:注:此函数已经加上了0x80,故只需写上实际地址就行***************************************************/void Lcd_WriteAddress(unsigned char x){ Lcd_WriteCom(x|0x80); //显示位置的确定方法规定为80H+地址码x/*****************************************************函数功能:将数据(字符的标准ASCII码)写入液晶模块入口参数:y(为字符常量)***************************************************/void Lcd_WriteData(unsigned char y){while(Lcd_BusyTest()==1);RS=1; //RS为高电平,RW为低电平时,可以写入数据RW=0;E=0; //E置低电平(写指令时就是让E从0到1发生正跳变所以应先置ぜ?Lcd_Data=y; //将数据送入P0口,即将数据写入液晶模块_nop_();_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间E=1; //E置高电平_nop_();_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令}/*****************************************************函数功能:对LCD的显示模式进行初始化设置***************************************************/void Lcd_Int(void){Lcd_delay(15); //延时15ms,首次写指令时应给LCD一段较长的反应时间Lcd_WriteCom(0x38); //显示模式设置:16×2显示,5×7点阵,8位数据接口Lcd_delay(5); //延时5msLcd_WriteCom(0x38); //9次写设置模式Lcd_delay(5);Lcd_WriteCom(0x38); //9次写设置模式Lcd_delay(5);Lcd_WriteCom(0x38); //9次写设置模式Lcd_delay(5);Lcd_WriteCom(0x38); //9次写设置模式Lcd_delay(5);设置模式次写9// Lcd_WriteCom(0x38);Lcd_delay(5);Lcd_WriteCom(0x38); //9次写设置模式Lcd_delay(5);Lcd_WriteCom(0x38); //9次写设置模式Lcd_delay(5);Lcd_WriteCom(0x38); //9次写设置模式Lcd_delay(5);Lcd_WriteCom(0x38); //9次写设置模式Lcd_delay(5);Lcd_WriteCom(0x38); //9次写设置模式Lcd_delay(5);Lcd_WriteCom(0x38); //9次写设置模式Lcd_delay(5);Lcd_WriteCom(0x0C); //显示模式设置:显示开,有光标,光标闪烁Lcd_delay(5);Lcd_WriteCom(0x06); //显示模式设置:光标右移,字符不移Lcd_delay(5);Lcd_WriteCom(0x01); //清屏幕指令,将以前的显示内容清零Lcd_delay(5); }void hanying_show(void){unsigned char Lcd_i;Lcd_WriteCom(0x01);//清显示:清屏幕指令Lcd_delay(2);Lcd_WriteAddress(0x00); // 设置显示位置为最左侧Lcd_delay(2);Lcd_i=0;while(string1[Lcd_i]!='\0') //'\0'是数组结束标志需先将字符存入{Lcd_WriteData(string1[Lcd_i]); // 显示字符Lcd_i++;Lcd_delay(4);}}void main(){Lcd_Int(); //1602初始化while(1){hanying_show();}}。
基于51单片机的简易电子钟设计一、设计目的现代社会对于时间的要求越来越精确,电子钟成为家庭和办公场所不可缺少的设备之一、本设计基于51单片机,旨在实现一个简易的电子钟,可以显示当前的时间,并且能够通过按键进行时间的调整和设置闹钟。
二、设计原理本设计主要涉及到51单片机的IO口、定时器、中断、LCD显示技术等方面知识。
1.时钟模块时钟模块采用定时器0的中断进行时间的累加和更新。
以1秒为一个时间单位,每当定时器0中断发生,就将时间加1,并判断是否需要更新小时、分钟和秒的显示。
同时,根据用户按键的操作,可以调整时间的设定。
2.显示模块显示模块采用16x2字符LCD显示屏,通过51单片机的IO口与LCD连接。
可以显示当前时间和设置的闹钟时间。
初次上电或者重置后,LCD显示时间为00:00:00,通过定时器中断和键盘操作,实现时间的更新和设定闹钟功能。
3.键盘模块键盘模块采用矩阵键盘连接到51单片机的IO口上,用于用户进行时间的调整和设置闹钟。
通过查询键盘的按键状态,根据按键的不同操作,实现时间的调整和闹钟设定功能。
4.中断模块中断模块采用定时器0的中断,用于1秒的定时更新时间。
同时可以添加外部中断用于响应用户按键操作。
三、主要功能和实现步骤1.系统初始化。
2.设置定时器,每1秒产生一次中断。
3.初始化LCD显示屏,显示初始时间00:00:00。
4.查询键盘状态,判断是否有按键按下。
5.如果按键被按下,根据不同按键的功能进行相应的操作:-功能键:设置、调整、确认。
-数字键:根据键入的数字进行时间的调整和闹钟设定。
6.根据定时器的中断,更新时间的显示。
7.判断当前时间是否与闹钟设定时间相同,如果相同,则触发闹钟,进行提示。
8.循环执行步骤4-7,实现连续的时间显示和按键操作。
四、系统总结和改进使用51单片机设计的简易电子钟可以显示当前时间,并且实现时间的调整和闹钟设定功能。
但是由于硬件资源有限,只能实现基本的功能,不能进行其他高级功能的扩展,例如闹铃的音乐播放、温度、湿度的显示等。
功能完整的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前⾔数字钟是采⽤数字电路实现对时,分,秒数字显⽰的计时装置,⼴泛⽤于个⼈家庭,车站, 码头办公室等公共场所,成为⼈们⽇常⽣活中不可少的必需品,由于数字集成电路的发展和⽯英晶体振荡器的⼴泛应⽤,使得数字钟的精度,远远超过⽼式钟表, 钟表的数字化给⼈们⽣产⽣活带来了极⼤的⽅便,⽽且⼤⼤地扩展了钟表原先的报时功能。
基于单片机的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液晶显示屏。
学士学位毕业论文(设计)题目:基于单片机的12864时钟显示摘要电子时钟是一种非常广泛日常计时工具,给人们的带来了很大的方便,在社会上越来越流行。
它可以对年、月、日、星期、时、分、秒进行计时,采用直观的数字显示,可以同时显示年月日时分秒等信息,还有时间校准等功能。
该电子时钟主要采用STC89C52单片机作为主控核心,用DS1302时钟芯片作为时钟、液晶12864显示屏显示。
STC89C52单片机是由深圳宏晶科技公司推出的,功耗小,电压可选用4~6V电压供电;DS1302时钟芯片是美国DALLAS公司推出的具有细电流充电功能的低功耗实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小;数字显示是采用的12864液晶显示屏来显示,可以同时显示年、月、日、星期、时、分、秒等信息。
此外,该电子时钟还具有时间校准等功能。
关键词:STC89C51单片机,DS1302时钟芯片,液晶12864AbstractElectronic clock is a very extensive daily timing tool, to the people has brought great convenience, more and more popular in the community. It can be the year, month, date, day, hour, minute, second for a time, using intuitive digital display, can display information such as year, month, day, hour, and time alignment functions. The electronic clock is used mainly as a master STC89C52 microcontroller core, with theDS1302 clock chip as a clock, LCD display12864. STC89C52 SCM is a Shenzhen Hong Crystal Technology has introduced, power consumption, voltage can be selected 4 ~ 6V voltage power supply; DS1302 clock chip is American DALLAS company launched with a fine current charging low-power real-time clock chip, it can year, month, date, day, hour, minute, second for a time, also has a leap year compensation and other functions, DS1302 and long life, small error; 12864 LCD digital display isused to display that can display year, month, date, day, hour, minute, second and so on. In addition, the electronic clock also has a time calibration function.Key Words:STC89C51 microcontroller, DS1302 clock chip, LCD 12864目录1绪论 (3)1.1时钟发展史 (3)1.2 目前的研究现状 (4)1.3研究目的及意义 (4)2 总体方案设计 (5)2.1 方案的选择 (5)2.1.1设计要求 (5)2.1.2方案的选择 (5)2.2总体方案组成框图 (6)3系统硬件设计 (6)3. 1主芯片模块 (6)3.1.1 中断系统 (8)3.1.2常用寄存器 (8)3.2晶振和复位电路 (10)3.2.1晶振电路 (10)3.2.2复位电路 (11)3.3 DS1302时钟芯片电路 (11)3.3.1 DS1302引脚图 (11)3.3.2 DS1302寄存器 (12)3.3.3 DS1302外围电路 (13)3.4 LCD12864显示模块 (13)3.4.1 LCD12864引脚功能 (13)3.4.2 LCD12864指令说明 (14)3.4.3 LCD12864电路接线 (15)3.5 红外遥控模块 (16)4 系统软件设计 (17)4.1 主程序设计 (17)4.2 LCD12864驱动程序 (19)4.3 DS1302驱动程序 (21)4.4 红外遥控程序 (24)5 调试结果 (25)5.1 正常显示日期时间画面 (26)5.2 进入调整时间日期画面 (26)5.3图片显示画面 (26)6总结 (27)致谢 (28)参考文献 (29)附录一 (31)附录二 (32)1绪论1.1时钟发展史很早以前,人类主要是利用天文现象和流动物质的连续运动来计时。
51单片机秒表程序设计1. 简介秒表是一种用于测量时间间隔的计时器,常见于体育比赛、实验室实验等场合。
本文将介绍如何使用51单片机设计一个简单的秒表程序。
2. 硬件准备•51单片机开发板•LCD液晶显示屏•按键开关•连接线3. 程序流程3.1 初始化设置1.设置LCD液晶显示屏为8位数据总线模式。
2.初始化LCD液晶显示屏。
3.设置按键开关为输入模式。
3.2 主程序循环1.显示初始界面,包括“00:00:00”表示计时器初始值。
2.等待用户按下开始/暂停按钮。
3.如果用户按下开始按钮,则开始计时,进入计时状态。
4.如果用户按下暂停按钮,则暂停计时,进入暂停状态。
5.在计时状态下,每隔1毫秒更新计时器的数值,并在LCD液晶显示屏上显示出来。
6.在暂停状态下,不更新计时器的数值,并保持显示当前数值。
3.3 计时器控制1.定义一个变量time用于存储当前的计时器数值,单位为毫秒。
2.定义一个变量running用于标记计时器的状态,0表示暂停,1表示运行。
3.定义一个变量start_time用于存储计时器开始的时间点。
4.定义一个变量pause_time用于存储计时器暂停的时间点。
5.在计时状态下,每隔1毫秒更新time的值为当前时间与start_time的差值,并将其转换为小时、分钟、秒的表示形式。
6.在暂停状态下,保持time的值不变。
3.4 按键检测1.检测按键开关是否被按下。
2.如果按键被按下,判断是开始/暂停按钮还是复位按钮。
3.如果是开始/暂停按钮,并且当前处于计时状态,则将计时状态设置为暂停状态,并记录暂停时间点为pause_time;如果当前处于暂停状态,则将计时状态设置为运行状态,并记录开始时间点为当前时间减去暂停时间的差值。
4.如果是复位按钮,则将计时器数值重置为0,并将计时状态设置为暂停。
4. 程序代码示例#include <reg51.h>// 定义LCD控制端口和数据端口sbit LCD_RS = P1^0;sbit LCD_RW = P1^1;sbit LCD_EN = P1^2;sbit LCD_D4 = P1^3;sbit LCD_D5 = P1^4;sbit LCD_D6 = P1^5;sbit LCD_D7 = P1^6;// 定义按键开关端口sbit START_PAUSE_BTN = P2^0;sbit RESET_BTN = P2^1;// 定义全局变量unsigned int time = 0; // 计时器数值,单位为毫秒bit running = 0; // 计时器状态,0表示暂停,1表示运行unsigned long start_time = 0; // 开始时间点unsigned long pause_time = 0; // 暂停时间点// 函数声明void delay(unsigned int ms);void lcd_init();void lcd_command(unsigned char cmd);void lcd_data(unsigned char dat);void lcd_string(unsigned char *str);void lcd_clear();void lcd_gotoxy(unsigned char x, unsigned char y);// 主函数void main() {// 初始化设置lcd_init();while (1) {// 显示初始界面lcd_clear();lcd_gotoxy(0, 0);lcd_string("00:00:00");// 等待用户按下开始/暂停按钮while (!START_PAUSE_BTN && !RESET_BTN);// 判断按钮类型并处理计时器状态if (START_PAUSE_BTN) {if (running) { // 当前处于计时状态,按下按钮将进入暂停状态 running = 0;pause_time = time;} else { // 当前处于暂停状态,按下按钮将进入计时状态running = 1;start_time = get_current_time() - pause_time;}} else if (RESET_BTN) { // 复位按钮按下,重置计时器time = 0;running = 0;}}}// 毫秒级延时函数void delay(unsigned int ms) {unsigned int i, j;for (i = ms; i > 0; i--) {for (j = 110; j > 0; j--);}}// LCD初始化函数void lcd_init() {lcd_command(0x38); // 设置8位数据总线模式lcd_command(0x0C); // 显示开,光标关闭lcd_command(0x06); // 光标右移,不移动显示器lcd_command(0x01); // 清屏}// 向LCD发送指令函数void lcd_command(unsigned char cmd) {LCD_RS = 0;LCD_RW = 0;LCD_EN = 1;LCD_D4 = cmd >> 4 & 1;LCD_D5 = cmd >> 5 & 1;LCD_D6 = cmd >> 6 & 1;LCD_D7 = cmd >> 7 & 1;delay(1);LCD_EN = 0;LCD_D4 = cmd >> 0 & 1;LCD_D5 = cmd >> 1 & 1;LCD_D6 = cmd >> 2 & 1;LCD_D7 = cmd >> 3 & 1;delay(1);LCD_EN = 0;}// 向LCD发送数据函数void lcd_data(unsigned char dat) { LCD_RS = 1;LCD_RW = 0;LCD_EN = 1;LCD_D4 = dat >> 4 & 1;LCD_D5 = dat >> 5 & 1;LCD_D6 = dat >> 6 & 1;LCD_D7 = dat >> 7 & 1;delay(1);LCD_EN = 0;LCD_D4 = dat >> 0 & 1;LCD_D5 = dat >> 1 & 1;LCD_D6 = dat >> 2 & 1;LCD_D7 = dat >> 3 & 1;delay(1);LCD_EN = 0;}// 向LCD发送字符串函数void lcd_string(unsigned char *str) {while (*str) {lcd_data(*str++);delay(5);}}// 清屏函数void lcd_clear() {lcd_command(0x01);}// 设置光标位置函数void lcd_gotoxy(unsigned char x, unsigned char y) {unsigned char addr;if (y == 0)addr = x | (0x80 + y);else if (y == 1)addr = x | (0xC0 + y);lcd_command(addr);}5. 总结本文介绍了使用51单片机设计一个简单的秒表程序。
用51单片机和1602液晶做的数字钟数字钟是人们日常生活中常见的时间显示设备,它能够精确显示当前的时间,并且兼具简约和实用性。
本文将介绍使用51单片机和1602液晶屏幕制作自己的数字钟的方法。
所需材料在开始制作之前,我们需要准备以下材料: - 51单片机开发板 - 1602液晶屏幕 - 数字时钟芯片RTC(Real-Time Clock) - 面包板和导线 - 电阻和电容 - 编程器和烧录器硬件连接首先,我们需要将51单片机、1602液晶屏幕和RTC芯片连接起来。
根据硬件接口的定义和引脚功能的规定,我们可以进行以下连接: - 将51单片机的VCC 引脚连接到1602液晶屏幕的VCC引脚,用于提供电源。
- 将51单片机的GND引脚连接到1602液晶屏幕的GND引脚,用于地线连接。
- 将51单片机的P0口连接到1602液晶屏幕的数据线D0-D7,用于数据传输。
- 将51单片机的P2口连接到1602液晶屏幕的RS引脚,用于选择数据和命令传输。
- 将51单片机的P3口连接到1602液晶屏幕的EN引脚,用于启用LCD。
此外,还需要将RTC芯片连接到51单片机上,以实现时间的准确显示。
具体的连接方式可以参考RTC芯片的规格说明书。
软件编程完成硬件连接后,我们需要进行软件编程,以便控制51单片机、1602液晶屏幕和RTC芯片的功能。
初始化首先,我们需要对51单片机和1602液晶屏幕进行初始化设置。
这包括设置引脚的功能模式、初始化1602液晶屏幕的显示模式和清空显示区域。
读取时间接下来,我们需要通过RTC芯片来读取当前的时间。
这通常包括读取RTC芯片存储的年、月、日、时、分和秒的数据。
显示时间读取时间后,我们可以将其显示在1602液晶屏幕上。
这可以通过更新特定的LCD显示区域来实现。
我们可以在指定的位置、特定的行和列上显示时间。
更新时间为了实现实时的时间显示,我们需要定期更新显示的时间。
可以使用定时器中断来定期更新时间,并根据需要刷新液晶屏幕上的显示。
东北石油大学课程设计课程单片机课程设计题目单片机控制的LCD时钟设计院系电气信息工程学院测控系专业班级学生姓名学生学号指导教师2011年4月6日东北石油大学课程设计任务书课程单片机课程设计题目单片机控制的LCD时钟设计专业姓名学号一、任务设计一款基于STC89C52RC单片机的LCD数字时钟,实现显示当前时间以及具有调整日期与时间的功能。
二、设计要求[1] 使用集成数字电路或单片机作为主控制芯片。
[2] 使用LCD来显示现在的时间,显示格式为:上行显示:年-月-日;下行显示:时时:分分:秒秒。
[3] 使用时钟芯片DS1302实现时钟定时。
[4]具有调整日期与时间的功能。
[5] 写出详细的设计报告。
[6] 给出全部电路和源程序。
三、参考资料[1] 求是科技. 单片机典型模块设计实例导航. 北京:人民邮电出版社. 2005.8[2] 徐淑华, 程退安等.单片微型机原理及应用. 哈尔滨:哈尔滨工业大学出版社. 2005.1[3] 孙余凯. 精选实用电子电路260例. 北京:电子工业出版社. 2007.6[4] 殷春浩, 崔亦飞. 电磁测量原理及应用. 徐州:中国矿业大学出版社. 2003.7[5] 《LCD1602A数据手册》[6] 《DS1302数据手册》完成期限2011.3.28至2011.4.8指导教师专业负责人2011年3月28 日目录第1章绪论....................................................31.1 STC89C52RC单片机概述...............................................31.2 LCD概述............................................................31.3 DL1302简介.........................................................41.4 本设计任务.........................................................4 第2章总体方案论证与设计......................................52.1显示部分...........................................................52.2数字时钟...........................................................52.3温度采集...........................................................62.4总体硬件组成框图...................................................6 第3章系统硬件设计............................................73.1 STC89C52RC单片机最小系统...........................................73.2 温度测量模块.......................................................73.3 时钟模块...........................................................83.4 LCD液晶显示模块....................................................83.5 键盘模块...........................................................93.6 整体电路...........................................................9 第4章系统的软件设计.........................................114.1主程序设计........................................................114.2时间设定程序流程..................................................114.3温度测量流程图..............................................12 第5章系统调试与测试结果分析.................................145.1 使用的仪器仪表....................................................145.2 系统调试..........................................................145.3 测试结果..........................................................14 结论..........................................................15参考文献......................................................16 附录1 程序....................................................17附录2 仿真效果图..............................................27第1章绪论在新的世纪我们已经步入了第二个十年,随着全球经济的复苏和发展,由于在世界范围内人类需求的巨大释放,以及消费结构的升级,同时传统能源的稀缺以及带来的环境的破坏,都将带来新一轮的科技革命的巨变。
毕业设计报告(论文)报告(论文)题目:基于单片机的LCM1602液晶控制——温度与万年历显示设计作者所在系部:电子工程系作者所在专业:作者所在班级:作者姓名:作者学号:指导教师姓名:完成时间: 2011年 6 月 9 日院教务处制电子工程系毕业设计(论文)任务书指导教师:教研室主任:系主任:摘要论文的研究工作是以液晶屏显示技术为背景展开的,并且详细介绍了通过MCS-51单片机控制LCM1602液晶的显示情况,以软件形式对系统进行控制,使得系统控制更具灵活与方便。
本文在深入分析LCD显示技术的基础上,重点解析了LCM显示的单片机控制技术,以及LCD显示在各种电子显示中的优势,同时阐述了其在日常显示系统中的应用;并且以Proteus与Keil uVision4软件为基础,编写了MCS-51单片机对LCM1602显示控制的软件,绘制其原理图,并使用Proteus软件与Keil uVision4软件建立联合仿真。
论文主要论述了原理图各个模块的作用,控制软件的各个模块的编程。
关键词液晶显示技术LCM1602 MCS-51单片机Proteus Keil uVision4目录第1章绪论 (1)1.1课题背景及主要技术国内外研究概况 (1)1.2LCM1602显示控制系统简介 (2)1.3课题的建立以及本文完成的主要工作 (3)第2章开发工具软件简介 (4)2.1K EIL U V ISION4软件简介 (4)2.2P ROTEUS软件简介 (4)2.3K EIL U V ISION4与P ROTEUS软件联合仿真 (5)2.4小结 (5)第3章 LCD显示控制技术 (6)3.1LCD显示技术的发展 (6)3.2LCM1602显示控制技术及其体系结构 (7)3.2.1 LCM1602模块简介 (8)3.2.2 LCM1602模块内部结构 (9)3.2.3 LCM1602控制指令 (10)3.3小结 (12)第4章系统硬件概况 (13)4.1系统概况 (13)4.2功能模块 (13)4.2.1 MCS-51单片机最小系统模块 (14)4.2.2 温度采集模块 (14)4.2.3 蜂鸣器报警模块 (15)4.2.4 万年历调节设置模块 (16)4.2.5 LCM1602显示模块 (16)4.2.6 电源模块 (17)3.3小结 (17)第5章软件控制系统概况 (18)5.1程序流程概况 (18)5.2万年历显示控制模块 (18)5.2.1 流程图 (18)5.2.2 源程序代码 (19)5.3温度显示控制模块 (19)5.3.1 程序流程 (19)5.3.2 源程序代码 (19)5.3.3 主程序 (19)5.4小结 (20)第6章课题特点 (21)6.1LCM模块的应用 (21)6.2程序结构化与模块化设计 (21)6.3抗干扰技术 (21)第7章结论 (23)7.1调试联合仿真 (23)7.2仿真结果 (23)7.3小结 (23)致谢 (24)参考文献 (25)附录 (26)基于单片机的LCM1602液晶控制——温度与万年历显示设计第1章绪论1.1 课题背景及主要技术国内外研究概况自20世纪80年代起,显示设备经历着传统工艺的改良、新工艺的发展、成熟的优胜劣汰。
基于单片机的电子时钟控制系统
电子时钟控制系统是一种利用单片机技术来实现时间的
显示和控制的电子设备。
电子时钟控制系统主要由单片机、时钟芯片、LCD液晶
显示屏、按键等组成。
其中单片机作为系统的核心控制器,时钟芯片提供准确的时间信号,LCD液晶显示屏显示时间信息,按键用于修改时间和控制系统。
系统的具体实现流程
如下:
1. 时钟芯片提供时钟信号并进行预处理,将时钟信号
转换为单片机所需要的信号格式;
2. 单片机初始化,配置I/O口、时钟、中断等相关参数;
3. 单片机通过时钟芯片获取当前时间,并将时间信息
显示在LCD液晶显示屏上;
4. 按键操作时,单片机根据按键输入的信号对时间进
行修改或者对系统进行控制;
5. 单片机不断更新时间,保证系统的时间显示准确性;
6. 单片机在系统启动时同步时间信息,保证系统时间
的一致性;
7. 单片机可以通过外部接口与计算机进行数据通信,
从而实现系统的远程监测和控制。
电子时钟控制系统广泛应用于各种场合,如家庭、学校、车站等。
具有结构简单、使用可靠、精度高、显示清晰、
易于维护等优点。
电子时钟控制系统在使用过程中需要注意以下几点:
1. 系统使用的时钟芯片应该具有高精度和可靠性,避免时间误差和系统故障;
2. 系统应该具有防止电源干扰和防雷击的措施,保证系统的安全性;
3. 系统应该具有较好的抗干扰性,避免外部干扰对系统正常运行的影响;
4. 系统的硬件、软件设计应该符合相关标准和规范,保证系统的稳定性和可靠性。
总之,电子时钟控制系统是一种应用广泛的电子设备,在实际应用中具有重要的意义和价值。
计算机科学与工程系实验报告实验题目:制作一个采用LCD1602显示的电子钟班级:姓名:学号:日期:一、实验目的掌握单片机使用定时器/计数器控制字符型液晶显示器LCD1602的设计与软件编程二、实验要求在LCD上显示当前的时间。
显示格式为“时时:分分:秒秒”。
设有4个功能键k1~k4,功能如下:(1)k1——进入时间修改。
(2)k2——修改小时,按一下k2,当前小时增1。
(3)k3——修改分钟,按一下k3,当前分钟增1。
(4)k4——确认修改完成,电子钟按修改后的时间运行显示。
三、实验要求提交的实验报告中应包括:电路原理图、实验设计思路、C51源程序(含注释语句)、运行效果(含运行截图与说明)、实验小结三、硬件电路原理图的设计四、编程思路及C51源程序编程思路:1、实现当按下K1之后,使中断T0停止计数2、实现当按下K2之后,使小时加一3、实现当按下K3之后,使分钟加一4、实现当按下K4之后,使中断T0恢复计数源程序:#include<reg51.h>#ifndef LCD_CHAR_1602_2005_4_9#define LCD_CHAR_1602_2005_4_9#define uchar unsigned char#define uint unsigned intsbit lcdrs = P2^0;sbit lcdrw = P2^1;sbit lcden = P2^2;void delay(uint z)//延时函数,此处使用晶振为11.0592MHz {uint x,y;for(x=z;x>0;x--){for(y=110;y>0;y--){;}}}void write_com(uchar com) //写入指令数据到lcd{lcdrw=0;lcdrs=0;P3=com;delay(5);lcden=1;delay(5);lcden=0;}void write_data(uchar date) //写入字符显示数据到lcd{lcdrw=0;lcdrs=1;P3=date;delay(5);lcden=1;delay(5);lcden=0;}void init1602()//1602液晶初始化设定{lcdrw=0;lcden=0;write_com(0x3C);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);}/*void write_string(uchar *pp,uint n)//采用指针的方法输入字符,n为字符数目{int i;for(i=0;i<n;i++)write_data(pp[i]);}*/void write_sfm(uchar add,uchar date)//向指定地址写入数据{uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+add);write_data(0x30+shi);write_data(0x30+ge);}#endif#define uchar unsigned char#define uint unsigned intsbit Key1 = P1^0;sbit Key2 = P1^1;sbit Key3 = P1^2;sbit Key4 = P1^3;uchar int_time;//定义中断次数计数变量uchar second;//秒计数变量uchar minute;//分钟计数变量uchar hour;//小时计数变量uchar code date[]=" H.I.T. CHINA ";//LCD第1行显示的内容uchar code time[]=" TIME 23:59:55 ";//LCD第2行显示的内容uchar second=55,minute=59,hour=23;void clock_init(){uchar i,j;for(i=0;i<16;i++){write_data(date[i]);}write_com(0x80+0x40);for(j=0;j<16;j++){write_data(time[j]);}}void clock_write( uint s, uint m, uint h){write_sfm(0x47,h);write_sfm(0x4a,m);write_sfm(0x4d,s);}void Keyscan1(){if(Key1==0) {delay(10);if(Key1==0) while(!Key1); TR0=0;}if(Key4==0) {delay(10);if(Key4==0) while(!Key4); TR0=1;}if(Key3==0){delay(10);if(Key3==0)while(!Key3);minute++;if(minute==60)minute=0;} if(Key2==0){delay(10);if(Key2==0)while(!Key2);hour++;if(hour==24)hour=0;}}void main(){init1602();//LCD初始化clock_init();//时钟初始化TMOD=0x01;//设置定时器T0为方式1定时EA=1; // 总中断开ET0=1; // 允许T0中断TH0=(65536-46483)/256;//给T0装初值TL0=(65536-46483)%256;TR0=1;int_time=0;//中断次数、秒、分、时单元清0second=55;minute=59;hour=23;while(1){clock_write(second ,minute, hour);Keyscan1();}}void T0_interserve(void) interrupt 1 using 1 //T0中断服务子程序{int_time++;//中断次数加1if(int_time==20) //若中断次数计满20次{int_time=0; //中断次数变量清0second++;//秒计数变量加1}if(second==60)//若计满60s{second=0; //秒计数变量清0minute ++;//分计数变量加1}if(minute==60)//若计满60分{minute=0;//分计数变量清0hour ++;//小时计数变量加1}if(hour==24){hour=0;//小时计数计满24,将小时计数变量清0 }TH0=(65536-46083)/256;//定时器T0重新赋值TL0=(65536-46083)%256;}五、仿真运行效果展示仿真初始状态按下k1键,进入修改模式六、实验小结通过本次实验,我掌握了LCD1602编程的方法,将所学知识运用到实践中,这是一件慢慢的过程,首先要把理论知识理解透彻,然后就是例题看懂,弄懂举一反三。
基于单片机的多功能LCD时钟
该时钟的设计思路是通过单片机控制液晶显示器,实时更新时间、日期、温度等信息;同时,结合外部输入信号,实现闹钟功能。
首先,该时钟通过单片机内部定时器实现时间的计时。
通过精确定时器,可以实现秒、分、时的显示和更新。
单片机内部具有RTC(Real-
Time Clock)模块,可实现对日期和时间的实时监控。
其次,该时钟通过温度传感器获取环境温度,并通过单片机控制液晶
屏实时显示。
温度传感器可以是热敏电阻、热敏电容等。
另外,该时钟具有闹钟功能,用户可以设置闹钟时间。
当时间到达设
定的闹钟时间时,时钟会发出报警声音,提醒用户。
此外,该时钟还可以显示日历。
通过单片机计算当前日期,并显示在
液晶屏上。
时钟基于单片机的控制,具有灵活性高、功能强大、可靠性较好等优点。
其通过外设接口与用户进行交互,使得用户操作简单、方便。
整个时钟的设计和制作过程分为硬件设计和软件设计两个部分。
其中,硬件设计包括电路原理图设计、PCB布局设计、外设选型等;软件设计则
包括单片机程序设计、液晶显示程序设计、闹钟功能实现等。
总结起来,基于单片机的多功能LCD时钟是一种功能强大的电子时钟,通过单片机控制液晶显示器实现时间、日期和温度的显示和更新,同时结
合闹钟功能,提供给用户全方位的时间与日期信息。
单片机LCD液晶显示单片机是一种高性能、低成本、低功耗的微型计算机系统,广泛应用于各个领域。
其中,液晶显示是一种常见的输出方式之一,可以用来显示各种文字、图像等信息。
本文将介绍单片机的LCD液晶显示原理、应用和优势。
一、LCD液晶显示原理液晶显示器是利用液晶分子的光学特性来显示图像的一种技术。
其中,LCD液晶显示的原理主要包括:1. 液晶分子的定向控制:液晶分子可以通过电场的作用来改变其排列状态,从而改变透光性。
利用这一性质,可以控制液晶显示器的亮度和透明度。
2. 像素的构成:液晶显示器由若干个像素组成,每个像素由一个液晶分子及其周围的电极组成。
通过控制电极之间的电场,可以控制像素的亮度和透明度,从而显示出不同的图像。
3. 背光源的应用:为了使得液晶显示器能够在暗环境下显示清晰的图像,通常会在显示器背后加上一个背光源,来提供光线。
二、单片机对LCD液晶显示的控制单片机可以通过其IO口来控制LCD液晶显示,具体步骤如下:1. 初始化:在使用LCD液晶显示之前,需要对其进行初始化。
包括设置显示模式、清除显示屏幕等操作。
2. 显示数据的写入:单片机可以通过IO口向LCD液晶显示写入数据,包括需要显示的文字、图像等信息。
在写入数据时,需要将数据分为若干个字节,每次只能写入一个字节。
3. 控制信号的发出:在写入数据之前,需要设置一些控制信号,包括读/写信号、使能信号等。
这些信号可以通过IO口来控制。
4. 延时操作:在进行写入数据、设置控制信号等操作时,需要进行一定的延时操作。
这是因为液晶分子的排列状态变化需要一定的时间,延时操作可以确保显示效果的稳定性。
三、LCD液晶显示的应用LCD液晶显示器广泛应用于各个领域,包括家电、通信、工业等。
以下是几个常见的应用示例:1. 手机屏幕:目前,大部分手机都采用LCD液晶显示屏,可以显示丰富多彩的图像和文字。
2. 电视显示器:LCD液晶显示器也是现代电视的主要显示方式之一,可以提供高清、真实的图像效果。
单片机时钟模块的作用单片机时钟模块是单片机中一个非常重要的模块,主要是为单片机提供精确的计时和计数功能。
它可以产生周期性的事件并能够记录时间。
时钟模块通常由晶振、计数器和控制逻辑三部分组成。
下面我们一起来了解一下单片机时钟模块的作用和应用。
1. 实时时间与日期显示单片机时钟模块可以显示实时时间和日期,这是它最常见的应用之一。
我们通常将实时时间、日期等数据通过LCD或数码管等显示出来。
而时钟模块可通过RTC(实时时钟)芯片实现。
在实际应用中,我们一般需要根据时钟模块所产生的时间与日期来控制其他模块的运行。
2. 定时器单片机在很多应用场合需要进行定时操作,例如控制开关、调整电子设备等。
在这些应用中,单片机时钟模块可以充当定时器的角色。
设置好特定的计数时间后,时钟模块会根据预设的时间自动触发其他模块进行相应的操作。
在实际生产和工业控制中,我们常常需要计算和控制运行时间。
单片机时钟模块可以同时作为计时器,记录开关或其他设备的运行时间或故障发生时间。
一旦出现异常,我们可以快速定位故障并进行维修。
4. 存储数据时钟模块还可以用于存储数据。
在数据采集中,我们将数据通过单片机时钟模块记录下来,并存储到EEPROM(可擦写可编程存储器)中。
这样,即使单片机断电重启,数据也不会丢失。
5. 节能单片机时钟模块可以在电源节能方面发挥很大的作用。
如果没有时钟模块,单片机需要一直保持高速运行,这会耗费很多电能。
而有了时钟模块后,单片机可以进入睡眠模式,只有到了预定的定时和计时时刻,才会自动唤醒。
总之,单片机时钟模块在各种应用场合都发挥着重要作用,并且这一模块将会在越来越多的单片机应用中成为基础模块。
单片机实现LCD液晶显示器控制原理LCD液晶显示器是一种广泛应用于电子产品中的显示设备,其通过控制液晶分子的排列来实现图像的显示。
单片机作为一种集成电路,可以通过控制LCD液晶显示器来实现对图像的显示和控制。
1.单片机与LCD液晶显示器的连接:单片机通过GPIO(通用输入输出)口与LCD液晶显示器进行连接,其中包括控制线和数据线。
控制线包括使能端(EN)、读写选择端(RW)、数据/命令选择端(RS)、复位端(RST)、以及其他一些信号线。
数据线用于传输显示图像的数据。
2.液晶分子的排列:LCD液晶显示器是通过控制液晶分子的排列来实现图像显示的。
液晶分子的排列方式有平行排列和垂直排列两种。
平行排列时,液晶分子与两块玻璃之间的基板平行排列;垂直排列时,液晶分子与两块玻璃之间的基板垂直排列。
3.显示数据的发送和控制信号的设置:单片机通过数据线向LCD液晶显示器发送显示数据,同时通过控制线发送相应的控制信号。
其中,使能端(EN)用于控制液晶显示器是否接受数据;读写选择端(RW)用于选择是读取显示数据,还是向液晶显示器写入数据;数据/命令选择端(RS)用于选择发送的是显示数据还是控制命令;复位端(RST)用于复位液晶显示器。
4.显示数据的处理和刷新:单片机通过程序对显示数据进行处理和刷新,使其能够正确显示在LCD液晶显示器上。
液晶显示器的显示图像是由像素点组成的,单片机程序需要将要显示的图像转换为相应的像素点,并将其通过数据线发送到液晶显示器上显示出来。
5.功能控制和处理:单片机还可以通过控制LCD液晶显示器的功能,实现其它的一些显示和操作功能。
例如,可以通过程序控制液晶显示器的亮度、对比度、背光等参数;还可以实现触摸屏幕的控制,以及与其它设备的通信等功能。
综上所述,单片机实现LCD液晶显示器控制的原理主要包括与液晶显示器的连接、液晶分子的排列、显示数据的发送和控制信号的设置、显示数据的处理和刷新,以及功能控制和处理等方面。
第二章系统设计方案
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位双向数据线
第15~16脚:空脚
1602显示屏的时序图如图2.5。
图2.5 1602时序图
1602液晶显示屏与单片机的连线图如图2.6所示。
图2.6 1602与单片机连线图
第三章程序设计及其调试3.1 程序设计
程序设计如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcdrs=P2^0;
sbit lcswr=P2^1;
sbit lcden=P2^2;
sbit s1=P1^0;
sbit s2=P1^1;
sbit s3=P1^2;
sbit rd=P3^7;
uchar count,s1num;
char miao,shi,fen;
uchar code table[]=" 2011-6-14 TUN"; uchar code table1[]=" 00:00:00"; void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0;
lcswr=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_date(uchar date)
{
lcdrs=1;
lcden=0;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
uchar num;
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(num=0;num<15;num++)
{
write_date(table[num]);
delay(5);
}
write_com(0x80+0x40);
for(num=0;num<12;num++)
{
write_date(table1[num]);
delay(5);
}
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void write_sfm(uchar add,uchar date) {
uchar shi,ge;
shi=date/10;
ge=date%10;
write_com(0x80+0x40+add);
write_date(0x30+shi);
write_date(0x30+ge);
}
void keyscan()
{
rd=0;
if(s1==0)
{
delay(5);
if(s1==0)
{ s1num++;
while(!s1);
if(s1num==1)
{
TR0=0;
write_com(0x80+0x40+10);
write_com(0x0f);
}
}
if(s1num==2)
{
write_com(0x80+0x40+7);
}
if(s1num==3)
{
write_com(0x80+0x40+4);
}
if(s1num==4)
{
s1num=0;
write_com(0x0c);
TR0=1;
}
}
if(s1num!=0)
{
if(s2==0)
{
delay(5);
if(s2==0)
{
while(!s2);
if(s1num==1)
{
miao++;
if(miao==60)
miao=0;
write_sfm(10,miao);
write_com(0x80+0x40+10);
}
if(s1num==2)
{
fen++;
if(fen==60)
fen=0;
write_sfm(7,fen);
write_com(0x80+0x40+7);
}
if(s1num==3)
{
shi++;
if(shi==24)
shi=0;
write_sfm(4,shi);
write_com(0x80+0x40+4);
}
}
}
if(s3==0)
{
delay(5);
if(s3==0)
{
while(!s3);
if(s1num==1)
miao--;
if(miao==-1)
miao=59;
write_sfm(10,miao);
write_com(0x80+0x40+10);
}
if(s1num==2)
{
fen--;
if(fen==-1)
fen=59;
write_sfm(7,fen);
write_com(0x80+0x40+7);
}
if(s1num==3)
{
shi--;
if(shi==-1)
shi=23;
write_sfm(4,shi);
write_com(0x80+0x40+4);
}
}
}
}
}
void main()
{
init();
while(1)
{
keyscan();
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if(count==18)
{
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);
}
}
3.2 实验调试
实验过程中出现了很多的问题,经过反复的程序修改和调试,最终完成了本设计的要求,实现了电子时钟功能。
在电路焊接前,通过protues单片机仿真软件多次调试和仿真,得出了正确的实验结果。
Protues仿真图如图3.1所示。
图3.1 protues仿真图。