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函数:

相关推荐
知识噬元兽1 小时前
【工具使用】STM32CubeMX-FreeRTOS操作系统-信号标志、互斥锁、信号量篇
stm32·单片机·嵌入式硬件
Flag- L2 小时前
STM32标准库-TIM定时器
stm32·单片机·嵌入式硬件
2301_775602383 小时前
STM32什么是寄存器
stm32·单片机·嵌入式硬件
双古6 小时前
步进电机调试记录(先让我的步进电机转起来)
单片机·嵌入式硬件
程序员JerrySUN7 小时前
全面理解 Linux 内核性能问题:分类、实战与调优策略
java·linux·运维·服务器·单片机
学习噢学个屁7 小时前
基于STM32语音识别柔光台灯
c语言·stm32·单片机·嵌入式硬件·语音识别
欢乐熊嵌入式编程9 小时前
欢乐熊大话蓝牙知识14:用 STM32 或 EFR32 实现 BLE 通信模块:从0到蓝牙,你也能搞!
stm32·单片机·嵌入式硬件
傍晚冰川9 小时前
FreeRTOS任务调度过程vTaskStartScheduler()&任务设计和划分
开发语言·笔记·stm32·单片机·嵌入式硬件·学习
Lester_110113 小时前
嵌入式学习笔记 - freeRTOS xTaskResumeAll( )函数解析
笔记·stm32·单片机·学习·freertos
章鱼哥嵌入式开发18 小时前
# STM32F103 SD卡读写程序
stm32·单片机