第10章 用LCD1602显示的秒表设计
1602lcd显示的秒表(1)

目录1概述 (1)1.1课题的研究意义和目的 (1)2方案论证 (1)2.1STC89C52主要功能特性 (1)2.2系统分析 (4)3硬件系统的设计 (4)3.1硬件介绍 (4)3.2部分硬件原理图 (5)3.3最小单片机系统 (6)4系统的软件设计 (7)5软硬件联调................................................................................错误!未定义书签。
5.1正面图..................................................................................错误!未定义书签。
5.2反面接线..............................................................................错误!未定义书签。
5.3测试结果..............................................................................错误!未定义书签。
结束语.. (8)参考文献.......................................................................................错误!未定义书签。
附录...............................................................................................错误!未定义书签。
附录1protel原理图. (9)附录2PCB图 (10)附录3pr otues仿真图 (11)附录4程序清单 (11)附录5元器件清单 (20)盐城工学院课程设计说明书(2011)1概述1.1课题的研究意义和目的1、通过本实验的设计初步了解单片机工作原理和各功能端口的相关设置;2、掌握PROTEUS软件的安装和配置过程;3、学会绘制电路原理图;4、了解装载程序和调试;5、PROTEUS VSM与uVision3的联调;6、用单片机仿真软件,并进行调试;7、掌握单片机相应的编程步骤,了解秒表相关的工作流程;8、熟悉KEIL\PROTEUS等相关软件的使用。
1602lcd显示的秒表

目录1 概述 01.1 1602LCD研究的历史背景和意义 01.2 1602LCD研究的发展和现状 02 课题方案设计 02.1系统设计目的 02.2系统结构模块论证 (1)2.2.1 显示部分 (1)3 系统硬件设计 (1)3.1 总体设计 (1)3.2 单片机运行的最小系统 (2)3.2.1 电源电路 (2)3.2.2晶振电路 (2)3.2.3复位电路 (3)3.3 显示电路 (4)3.3.1引脚说明: (4)3.4 单片机STC89C52 (5)3.4.1主要特性 (5)3.4.2功能特性概述 (6)3.4.3主要引脚及芯片基本工作条件说明 (6)4 系统软件设计 (7)4.1 总流程图 (7)4.2 最小系统检测电路程序 (8)4.3 编程调试界面 (9)4.4 Proteus仿真结果 (9)5软硬件联调及调试结果 (10)5.1 实物图 (10)5.2 调试结果 (11)结束语 (12)参考文献 (12)附录2 1602LCD设计的秒表PCB图 (14)附录3 1602LCD设计的秒表Proteus仿真图 (15)附录4 1602LCD设计的秒表C语言程序清单 (15)附录5 基于单片机的1602LCD设计的秒表元器件目录表 (21)1 概述1.1 1602LCD研究的历史背景和意义LCD1602是16字乘以2行的字符型液晶模板。
其特点是:(1)位数多,可显示32位。
(2)显示内容丰富,可显示所有数字、字母、符号等192种ASCII码对应的字符。
(3)程序简单1.2 1602LCD研究的发展和现状液晶显示模块具有体积小、功耗低、显示内容丰富、超薄轻巧等优点,在袖珍式仪表和低功耗应用系统中得到广泛的应用。
目前字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件。
LCD1602液晶显示模块,它可以显示两行,每行16个字符,采用单+SV电源供电,外围电路配置简单,价格便宜,具有很高的性价比。
1602LCD显示的秒表 C语言程序

源程序代码://名称:用1602LCD设计的秒表//说明:首先按下K1键时开始计时,自此按下时暂停,第三次按下时继续累积计时,再次按下时停止计时,K2键用于清零秒表。
//#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define delayNOP ( ) ﹛_nop_( ); _nop_( ); _nop_( ); _nop_( );﹜//LCD控制函数void LCD_Initialize( );void LCD_Set_POS(uchar);void LCD_Write_Date(uchar);void Display_String(uchar﹡,uchar);sbit K1 = P1^0;sbit K2 = P1^1;sbit BEEP = P3^0;sbit LCD_RS = P2^0;sbit LCD_RW = P2^1;sbit LCD_EN = P2^2;uchar KeyCount = 0;uchar code msg1[] = ﹛〞Second Watch 0 〞﹜;uchar code msg2[] = ﹛〞>>>> 0 〞﹜;uchar code Prompts[] [16] ={﹛〞:: 1- - - - > 〞﹜,﹛〞:: 1- - - - > ::2 〞﹜,﹛〞:: 1 - >2 ::3- - > 〞﹜,﹛〞:: 1 - >2 ::3- - >4 〞﹜};// 计时缓冲与显示缓冲uchar Time_Buffer[] ={0,0,0,0};uchar LCD_Display_Buffer[]={〞00: 00: 00:00〞}; //// 蜂鸣器//void Beep ()﹛uchar i,j = 70;for (i = 0;i< 180;i++ )﹛while(--j);BEEP = ~BEEP;﹜BEEP = 0;﹜//// 延时//void DelayX(uint ms){uchar i;while(ms--) for (i= 0;i< 120;i++);﹜//// 显示计时//void Show_Second( ){uchar i;LCD_Set_POS(0x45); //设置LCD显示起点for(i = 3;i != 0xff ;i--);{//将两位整数的1/100s,秒,分,时转换为8位数字字符LCD_Display_Buffer[2﹡i+1] = Time_Buffer[i] / 10 + ˊ0 ˊ;LCD_Display_Buffer[2﹡i] = Time_Buffer[i] % 10 + ˊ0 ˊ;//在 = 3,2,1,0时分别显示时,分,秒,1/100sLCD_Writer_Date(LCD_Display_Buffer[2﹡i+1])LCD_Writer_Date(LCD_Display_Buffer[2﹡i])LCD_Writer_Date(ˊ: ˊ)}}//// Time0中断//Void Time0( ) interrupt 1 using 0{THO = -10000 / 256;TLO = -10000 % 256;Time_Buffer[0] ++if(Time_Buffer[0] == 100){Time_Buffer[0] = 0; Time_Buffer[1]++;}if(Time_Buffer[1] == 60) //秒{Time_Buffer[1] = 0; Time_Buffer[2]++;}if(Time_Buffer[2] == 60) //分{Time_Buffer[2] = 0; Time_Buffer[3]++;}if(Time_Buffer[3] == 24) //时Time_Buffer[3] = 0;}////主函数//void main( ){uchar i;IE = 0x82;TMOD = 0x01;THO = -10000 / 256;TLO = -10000 % 256;LCD_Initialize( );Display_String(msg1,0x00);Display_String(msg2,0x40);While(1){if(k1 == 0){DelayX(100);i = ++KeyCount;switch (i){case 1:case 3: TRO = 1;Display_String(Prompts[i-1],0);Break;case 2:case 4: TRO = 0;Display_String(Prompts[i-1],0);break;default:TRO = 0;break;}While (K1 == 0); // 等待释放K1键Beep( );}elseif(K2 == 0){TRO = 0;KeyCount = 0;for(i = 0;i < 4; i++)Time_Buffer [i] = 0; // 清零计数缓冲Display_String(msg1,0);Beep( );DelayX(100);while (K2 == 0); // 等待释放K2键}Show_Second( );}}//// 1602LCD显示驱动函数//#include 〈reg51.h〉#include 〈intrins.h〉#define uchar unsigned char#define uint unsigned int#define DellayNOP( )﹛_nop_( ); _nop_( ); _nop_( ); _nop_( );﹜sbit LCD_RS = P2^0;sbit LCD_RW = P2^1;sbit LCD_EN = P2^2;bit LCD_Busy_Check( );void LCD_Initialize( );void LCD_Set_POS(uchar);void LCD_Write_Command(uchar);void LCD_Write_ Date(uchar);//// 延时//void DelayMS(uint ms){uchar t;while(ms--) for (t =0;t < 120;t++);}//// LCD忙检查//bit LCD_Busy_Check( );{bit Rsult;LCD_RS = 0; LCD_RW = 1; LCD_EN = 1;DelayNOP( );Result = (bit)(p0 ﹠ 0x80);LCD_EN = 0return Result;}//// 向LCD写指令//void LCD_Write_Command(uchar cmd);{while(LCD_Busy_Check() );LCD_RS = 0; LCD_RW = 0; LCD_EN = 0;_nop_( ); _nop_( );pO = cmd; DelayNOP( );LCD_EN = 1;DelayNOP( );LCD_EN = 0;}//// 向LCD写数据//void LCD_Write_Date(uchar str);{while(LCD_Busy_Check() );LCD_RS = 1; LCD_RW = 0; LCD_EN = 0;pO = str; DelayNOP( ); LCD_EN = 1;DelayNOP( );LCD_EN = 0;}//// 初始化LCD//void LCD_Initialize( );{DelayMS(5); LCD_Write_Command(0x38);DelayMS(5); LCD_Write_Command(0x0c);DelayMS(5); LCD_Write_Command(0x06);DelayMS(5); LCD_Write_Command(0x01);DelayMS(5);}//// 设置显示位置//void LCD_Set_POS(uchar Poition){LCD_Write_Command(Position ︱ 0x80);}////显示函数,在LCD指定行上显示字符串//void Display_String(uchar﹡str,uchar LineNO) {uchar k;LCD_Set_POS(LineNO);for (k = 0;k < 16;k++) LCD_Write_Date(str[k]) }。
单片机LCD1602A秒表程序

ORG 0030H
MAIN:
ACALL SET_LCD
;LCD 初始化设置子程序
TOOP:
ACALL WR_THL ACALL RESET_18B20
;将报警上下线写入暂存寄存器 ;18B20 复位子程序
JNB FLAG,TOOP1
;18B20 不存在
ACALL MEU_OK
;显示"OK"菜单
ACALL RE_THL
6
嵌入式应用软件园,版权所有,请勿转载/销售。
第 2 章 程序功能
1.1 程序功能 程序中包含 LCM 用到的所有函数:初始化、写指令、写数据、判
忙碌、清屏幕。 在单片机的 P1 端口上接有 LCD 模块,用来显示计时时间。P3.3、
P3.4 端口分别接有按键 K1、K2,做秒表的计时控制按钮。 K1:暂停和起动秒表。只能暂停和起动二次。 K2:重新开始计时,计时值从 0 开始。
1.2 操作方法 1. 按一下 K2 键,准备计时。 2. 按一下 K1 键,计时开始。 3. 按一下 K1 键,暂停计时。 4. 按一下 K1 键,计时开始,在第 2 步的基础上累计时。 5. 按一下 K1 键,暂停计时。 6. 重复第 1~5 步,循环使用秒表。
7
1.3 原理图
嵌入式应用软件园,版权所有,请勿转载/销售。
MOV A,#0CCH
;跳过 ROM 匹配
ACALL WRITE_18B20
;调写入子程序
MOV A,#44H
;发出温度转换命令
ACALL WRITE_18B20
;调写入子程序
ACALL RESET_18B20
;调复位子程序
MOV A,#0CCH
;跳过 ROM 匹配
1602lcd显示的秒表(1)

目录1概述 (1)1.1课题的研究意义和目的 (1)2方案论证 (1)2.1 STC89C52主要功能特性 (1)2.2系统分析 (3)3硬件系统的设计 (3)3.1硬件介绍 (3)3.2部分硬件原理图 (4)3.3最小单片机系统 (5)4系统的软件设计 (5)5软硬件联调 (7)5.1正面图 (7)5.2反面接线 (8)5.3测试结果 (8)结束语 (9)参考文献 (9)附录 (10)附录1 protel原理图 (10)附录2 PCB图 (11)附录3 protues仿真图 (12)附录4 程序清单 (12)附录5元器件清单 (17)1概述1.1课题的研究意义和目的1、通过本实验的设计初步了解单片机工作原理和各功能端口的相关设置;2、掌握PROTEUS软件的安装和配置过程;3、学会绘制电路原理图;4、了解装载程序和调试;5、PROTEUS VSM 与uVision3的联调;6、用单片机仿真软件,并进行调试;7、掌握单片机相应的编程步骤,了解秒表相关的工作流程;8、熟悉KEIL\PROTEUS等相关软件的使用。
2方案论证2.1 STC89C52主要功能特性1、兼容MCS51指令系统2、8k可反复擦写(大于1000次)Flash ROM;3、32个双向I/O口;4、256x8bit部RAM;5、3个16位可编程定时/计数器中断;6、时钟频率0-24MHz;7、2个串行中断,可编程UART串行通道;8、2个外部中断源,共8个中断源;9、2个读写中断口线,3级加密位;10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。
STC89C52为8 位通用微处理器,采用工业标准的C51核,在部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。
功能包括对会聚主IC 部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。
LCD1602显示的倒计时装置设计

课程设计名称:单片机原理及接口技术设计题目: LCD1602显示的倒计时装置设计完成期限:自2014 年 1 月 6 日至2014 年 1 月17 日共 2 周设计依据、要求及主要内容:一.设计的目的1.进一步熟悉和掌握单片机系统设计和编程原理。
2.掌握单片机的接口技术及相关外围芯片的外特性、控制方法。
3.通过设计,掌握以单片机核心的电路设计的基本方法和技术。
4.通过实际程序设计和调试,掌握模块化程序设计方法和调试技术。
5.通过完成一个包括电路设计和程序开发的完整过程,了解开发单片机应用系统的全过程,为今后从事相应开发打下基础。
二.设计的基本要求1.认真认识设计的意义,掌握设计工作程序,学会使用工具书和技术参考资料,并培养科学的设计思想和良好的设计作风。
2.提高模型建立和设计能力,学会应用相关设计资料进行设计计算的方法。
3.提高独立分析、解决问题的能力,逐步增强实际应用训练。
4.设计的说明书要求简洁、通顺,电路图内容完整、清楚、规范。
三.设计主要内容a) 设计实现功能STC12C5A60S2(引脚排序及基本功能同AT89S51)作为主控芯片,设计利用LCD1602显示时间和倒计时时间(最大99:59:59)的装置。
一是扩展DS12C887时钟电路设计;二是利用LCD1602显示时间和倒计时剩余时间;三是在倒计时时间减为零以后,进行加1时间显示;四是设计启动、暂停、停止按键。
b) 原理图设计1.原理图设计要符合项目的工作原理,连线要正确。
2.图中所使用的元器件要合理选用,电阻、电容等器件的参数要正确标明。
3.原理图要完整,CPU、外围器件、外扩接口、输入/输出装置要一应俱全。
c) 程序调计1.根据要求,将总体功能分解成若干个子功能模块,每个功能模块完成一个特定的功能。
2.根据总体要求及分解的功能模块,确定各功能模块之间的关系,设计出完整的程序流程图。
d) 程序调试1.编写相关程序,并进行仿真。
2.将程序下载到单片机,进行运行调试。
1602LCD显示的秒表单片机课程设计

单片机课程设计题目:1602LCD显示的秒表目录1 单片机原理 (3)2 课程设计的任务与要求 (3)3 课程设计目的 (4)4 芯片资料 (5)4.1 AT89C51 (5)4.2 1602LCD (8)5 电路分析 (16)6 代码分析 (21)7 设计分析 (29)8 调试成功与否 (31)9 参考文献 (36)10 附录1602LCD秒表的显示源代码 (37)1602LCD秒表的显示原理图 (43)一、单片机原理单片机控制秒表是集于单片机技术、模拟电子技术、数字技术为一体的机电一体化高科技产品,具有功耗低,安全性高,使用方便等优点。
它是一种在线式实时控制计算机,需要有较强的抗干扰能力,较低的成本。
本次设计内容为以8051单片机为核心的秒表,采用数码管显示,单片机技术控制。
利用单片机的定时器/计数器定时和技术的原理,用集成电路芯片、LCD数码管以及按键来设计计时器。
将软、硬件有机地结合起来,使它拥有正确的计时、暂停、清零、并同时可以用数码管显示,在现实生活中应用广泛。
二、课程设计的任务与要求设计任务:利用AT89C51单片机结合1602LCD显示器设计一个秒表设计要求:1.本设计实现一个1602LCD显示秒表2. 利用AT89C51控制整个电路来实现秒表的显示。
大体上可以讲1602LCD秒表的显示主要包括硬件和软件两部分。
重点就是各部分硬件的连接设计以及程序的编写。
本章讲述的就是系统硬件的设计,其中包括各模块的器件选择和电路设计。
三、课程设计目的《MCS-51单片机原理及应用》课的课程设计是四个学生一组完成一个老师给的一个题目,叫1602LCD显示的秒表。
为了让我们能够综合运用自己学的课程的基本知识,能够进行单片机的应用,掌握单片机程序设计调试和应用电路设计、分析及调试检测。
通过这个实验:1.、使我们增进对单片机知识的进一步认识,也同时加深对单片机理论知识的理解。
2、使我们掌握单片机的内部功能模块的应用,3、使我们了解和掌握单片机应用系统的软硬件设计过程,方法即实现,为了以后设计和实现单片机应用系统打下基础。
基于89c52单片机数字秒表程序设计(LCD1602)

main.c#include<reg52.h>#include "lcd.h"typedef unsigned char uint8;typedef unsigned int uint16;uint8 a[]="LCD Design of Tm"; //要显示的字符uint8 num[]="0123456789";uint8 b[8],shi,fen,miao;void delay(uint16 i){while(i--);}void wrc(uint8 c) //写命令{LcdWriteCom(c);}void wrd(uint8 dat) //写数据{LcdWriteData(dat);}void lcd_init(){LcdInit();}void time0init(){TMOD=0X01;TH0=0XFC;TL0=0X18; //1msTR0=1;ET0=1;EA=1;}void timepros(){b[0]=num[shi/10];b[1]=num[shi%10];b[2]=0x3a;b[3]=num[fen/10];b[4]=num[fen%10];b[5]=0x3a;b[6]=num[miao/10];b[7]=num[miao%10]; }void display(){uint8 i;timepros();wrc(0x00+0x80);for(i=0;i<16;i++){wrd(a[i]);}wrc(0x44+0x80);wrd(b[0]);wrd(b[1]);wrd(b[2]);wrd(b[3]);wrd(b[4]);wrd(b[5]);wrd(b[6]);wrd(b[7]);}void main(){lcd_init();time0init();while(1){display();}}void tim0() interrupt 1 {static uint16 n;TH0=0XFC;TL0=0X18;//1msn++;if(n==1000){n=0;miao++;if(miao==60){miao=0;fen++;if(fen==60){fen=0;shi++;if(shi==60){shi=0;miao=0;fen=0;}}}}// display();}LCD1602#include "lcd.h"/******************************************************************************* * 函数名: Lcd1602_Delay1ms* 函数功能: 延时函数,延时1ms* 输入: c* 输出: 无* 说名: 该函数是在12MHZ晶振下,12分频单片机的延时。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10.2 硬件设计
图10-2 用LCD1602显示的秒表电路原理图
3
10.3 程序设计
开始 初始化 初始显示
按键1是否按下? N
Y
按键1次数加1
按键1次数等于1、3
按键1次数等于2、4
开定时器
关定时器
显示第1次(或第3次) 按下的提示信息
显示第2次(或第4次) 按下的提示信息
break
break
秒计数单元=60? N
分计数单元=60? N
时计数单元=24? N
中断返回
Y 秒计数器清零,分加1
Y 分计数器清零,时加1
Y 时计数器清零
图10-4 定时器中断程序
5
10.4 仿真与实验结果
图10-5 1602LCD显示的秒表Proteus仿真电路
6
10.4 仿真与实验结果
图10-6 多孔板实验结果
第10章用LCD1602显示的秒表设计
10.1 项目任务 10.2 硬件设计 10.3 程序设计 10.4 仿真与实验结果
1
ቤተ መጻሕፍቲ ባይዱ
10.1 项目任务
用STC89C52单片机与LCD1602液晶显示器设计并制作一个秒 表,实现秒表的计时、暂停与清零等基本功能,每秒自动加1, 至59秒后再回到00,如此循环。运用“开始”、“暂停”、 “复位”按键实现对秒表计时的控制。
7
按键2是否按下? N
Y
关定时器
清零计时缓冲单元
显示清零提示信息
执行beep子程序
执行beep子程序
显示秒信息
图10-3 1602LCD显示的秒表主程序流程图
程序清单见课程设计指导书或配套仿真软件
4
10.3 程序设计
开始
重新设置计数初值 百分之一秒计数单元加1
百分之一秒计 数单元=100?
N
Y
百分之一秒计数单元 清0,秒加1