【proteus仿真】基于51单片机的秒表设计
资料获取在文章结尾处!
更多资料获取链接:
https://docs.qq.com/sheet/DTExIc2dPUUJ5enZZ?tab=BB08J2
1.资料内容
- 源码
 - proteus仿真图
 
演示视频:
【proteus仿真】基于51单片机的秒表设计_哔哩哔哩_bilibili
2.总体设计
本设计是采用AT89C51单片机为中心,利用其定时器/计数器定时和记数的原理,结合显示电路、电源电路、LCD1602液晶以及键盘电路来设计计时器。将软、硬件有机的结合起来,使得系统能够实现四位LCD显示,最大显示时间为09:59:99,有开始/暂停、复位、记录和查看功能,并设有每秒提醒功能。
此次的设计是采用定时器进行计时并且在LCD1602上显示时间,先要基本了解硬件内在结构,确定用P0并行端口进行LCD1602控制输入,使用P2.0、P2.1、P2.2控制LCD的RE、RW、EN端口。P1.0控制蜂鸣器、P1.1控制开始/暂停、P1.2、P1.3控制查看上一条、控制每秒提醒
 
3.部分电路展示
-  
按键控制电路
 -  
LCD显示电路
 
4.部分代码
//函数声明
void LCD1602_WriteCom(unsigned char com); 			//1602部分
void LCD1602_WriteData(unsigned char Data); 
void LCD1602_Clear(void);
void LCD1602_PutString(unsigned char x,unsigned char y,unsigned char *s);
void LCD1602_PutChar(unsigned char x,unsigned char y,unsigned char Data);
void LCD1602_Init(void);
void LCD1602_Delay(unsigned int t);
 
void delay_ms(unsigned int t);
void IniTC0(void) ;						//初始化定时计数器0
void KeyWork(void);						//按键扫描以及按键功能动作
void DisplayCountTime(void);	//显示计时的时间
 
void main()
{
	IniTC0();
	LCD1602_Init();
	Beep = 1;
	LCD1602_PutString(4,0,"Well Come");	
	LCD1602_PutString(2,1,"  Stopwatch   ");
	delay_ms(1000);
	LCD1602_Clear();
	while(1)
	{
		DisplayCountTime();
		KeyWork();
	}
}
/*------------------------------------------------
              写入命令函数
------------------------------------------------*/
void LCD1602_WriteCom(unsigned char com) 
{
	LCD1602_Delay(5);
	RS_CLR; 
	RW_CLR; 
	EN_SET; 
	DataPort= com; 
	_nop_(); 
	EN_CLR;
}
/*------------------------------------------------
              写入数据函数
------------------------------------------------*/
void LCD1602_WriteData(unsigned char Data) 
{ 
	LCD1602_Delay(5);
	RS_SET; 
	RW_CLR; 
	EN_SET; 
	DataPort= Data; 
	_nop_();
	EN_CLR;
}
 
资料请在下面公众回复 51秒表



















