1、基于AT89C52、LCD1602的电子计时器proteus仿真设计

一、仿真原理图:

二、仿真效果:

三、相关代码:

1)、系统配置:

复制代码
void SystemInit(void)
{
	TMOD = 0x01;                
	TH0 = (65536 - 46083) / 256;    
	TL0 = (65536 - 46083) % 256;    
	EA = 1;                     
	ET0 = 1;                    
	TR0 = 1;
}

2)、LCD1602液晶相关驱动代码:

核查是否busy?

复制代码
unsigned char BusyCheck(void)
{
	bit result;
	
	RS = 0;       
	RW = 1;
	E = 1;  
	
	_nop_();   
	_nop_();
	_nop_(); 
	_nop_(); 
  	
	result = BF;  
	E = 0;         
	
	return result;
}

写入指令:

复制代码
void WriteInstruct(unsigned char instruct)
{   
	while(BusyCheck() == 1); 
	RS = 0;                  
	RW = 0;   
	E = 0;  
	
	_nop_();
	_nop_(); 				 
	_nop_();
	_nop_(); 
	
	P0 = instruct;    
	
	_nop_();
	_nop_();
	_nop_();
	_nop_();  
	
	E = 1;    
	
	_nop_();
	_nop_();
	_nop_();
	_nop_();   
	
	E = 0;                  
 }

写入数据:

复制代码
void WriteData(unsigned char datas)
{
	while(BusyCheck() == 1);  
	RS = 1;           
	RW = 0;
	E = 0;            
				   
	P0 = datas;           
	_nop_();
	_nop_();
	_nop_();
	_nop_();  
	
	E = 1;   
	 
	_nop_();
	_nop_();
	_nop_();
	_nop_(); 

	E = 0;            
}

LCD1602初始化:

显示时、分、秒:

复制代码
void DisplayHour()
{
	unsigned char i,j;
	
	i = hour / 10;                
	j = hour % 10;                
	WriteAddress(0x44);   
	WriteData(digit[i]);  
	WriteData(digit[j]);  
     
 }
void DisplayMinute()
{
	unsigned char i,j;

	i = minute / 10;                
	j = minute % 10;                
	WriteAddress(0x47);   
	WriteData(digit[i]);  
	WriteData(digit[j]);  
     
 }
void DisplaySecond()
{
	unsigned char i,j;
	
	i = second / 10;                
	j = second % 10;                
	WriteAddress(0x4a);   
	WriteData(digit[i]);  
	WriteData(digit[j]);  
 }

3)、main函数:

相关推荐
happygrilclh11 小时前
STM32,串口单字节中断接受,每次上电后,会收到一个0x00的解决办法。
单片机·嵌入式硬件
智闲电子设计12 小时前
STM32 独立看门狗 IWDG 实战:系统跑飞,它来兜底复位
stm32·单片机·嵌入式硬件
嵌入式阿蔡15 小时前
HAL库 vs LL库 vs 寄存器:到底用哪个?
c语言·stm32·单片机·嵌入式硬件·嵌入式实时数据库
天空'之城16 小时前
单片机基础核心知识点汇总(三)
单片机·嵌入式硬件
嵌入式阿蔡17 小时前
CAN总线入门:从协议帧到STM32实战
c语言·stm32·单片机·嵌入式硬件·嵌入式实时数据库
离凌寒18 小时前
一、对stm32mp157配置freertos后,任务挂掉无法启动问题总结
stm32·单片机·嵌入式硬件
消失的旧时光-194320 小时前
7-fix补充篇:机器人为什么需要多级控制仲裁?Cloud、Linux 与 MCU 分别管什么
linux·单片机·机器人·仲裁机制·安全保护机制
Hello_Damon_Nikola20 小时前
CH573从入门到精通
c语言·开发语言·单片机·嵌入式硬件
oshan201220 小时前
华大小华HC32F460单片机在线烧录
单片机·嵌入式硬件
LCG元21 小时前
STM32 USB HID 自定义免驱设备开发:从报告描述符到上位机 64 字节收发实战
stm32·单片机·嵌入式硬件