第二次优化代码,增加闹钟、蜂鸣器功能。

This commit is contained in:
Andy0613
2026-07-07 09:12:08 +08:00
parent 971abf1cd8
commit 6c23af74d4
13 changed files with 4896 additions and 0 deletions
+135
View File
@@ -0,0 +1,135 @@
#include"lcd.h"
/*******************************************************************************
* �� �� �� : Lcd1602_Delay1ms
* �������� : ��ʱ��������ʱ1ms
* �� �� : c
* �� �� : ��
* ˵ �� : �ú�������12MHZ�����£�12��Ƶ��Ƭ������ʱ��
*******************************************************************************/
void Lcd1602_Delay1ms(uint c) //��� 0us
{
uchar a,b;
for (; c>0; c--)
{
for (b=199;b>0;b--)
{
for(a=1;a>0;a--);
}
}
}
/*******************************************************************************
* �� �� �� : LcdWriteCom
* �������� : ��LCDд��һ���ֽڵ�����
* �� �� : com
* �� �� : ��
*******************************************************************************/
#ifndef LCD1602_4PINS //��û�ж������LCD1602_4PINSʱ
void LcdWriteCom(uchar com) //�����
{
LCD1602_E = 0; //ʹ��
LCD1602_RS = 0; //ѡ��������
LCD1602_RW = 0; //ѡ��д��
LCD1602_DATAPINS = com; //��������
Lcd1602_Delay1ms(1); //�ȴ������ȶ�
LCD1602_E = 1; //д��ʱ��
Lcd1602_Delay1ms(5); //����ʱ��
LCD1602_E = 0;
}
#else
void LcdWriteCom(uchar com)
{
LCD1602_E = 0;
LCD1602_RS = 0;
LCD1602_RW = 0;
LCD1602_DATAPINS = com;
Lcd1602_Delay1ms(1);
LCD1602_E = 1;
Lcd1602_Delay1ms(1);
LCD1602_E = 0;
Lcd1602_Delay1ms(1);
LCD1602_DATAPINS = com << 4;
Lcd1602_Delay1ms(1);
LCD1602_E = 1;
Lcd1602_Delay1ms(1);
LCD1602_E = 0;
}
#endif
/*******************************************************************************
* �� �� �� : LcdWriteData
* �������� : ��LCDд��һ���ֽڵ�����
* �� �� : dat
* �� �� : ��
*******************************************************************************/
#ifndef LCD1602_4PINS
void LcdWriteData(uchar dat) //�����
{
LCD1602_E = 0; //ʹ������
LCD1602_RS = 1; //ѡ����������
LCD1602_RW = 0; //ѡ��д��
LCD1602_DATAPINS = dat; //�����
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //д��ʱ��
Lcd1602_Delay1ms(5); //����ʱ��
LCD1602_E = 0;
}
#else
void LcdWriteData(uchar dat)
{
LCD1602_E = 0;
LCD1602_RS = 1;
LCD1602_RW = 0;
LCD1602_DATAPINS = dat;
Lcd1602_Delay1ms(1);
LCD1602_E = 1;
Lcd1602_Delay1ms(1);
LCD1602_E = 0;
Lcd1602_Delay1ms(1);
LCD1602_DATAPINS = dat << 4;
Lcd1602_Delay1ms(1);
LCD1602_E = 1;
Lcd1602_Delay1ms(1);
LCD1602_E = 0;
}
#endif
/*******************************************************************************
* �� �� �� : LcdInit()
* �������� : ��ʼ��LCD��
* �� �� : ��
* �� �� : ��
*******************************************************************************/
#ifndef LCD1602_4PINS
void LcdInit() //LCD��ʼ���ӳ���
{
LcdWriteCom(0x38); //����ʾ
LcdWriteCom(0x0c); //����ʾ����ʾ���
LcdWriteCom(0x06); //дһ��ָ���1
LcdWriteCom(0x01); //����
LcdWriteCom(0x80); //��������ָ�����
}
#else
void LcdInit() //LCD��ʼ���ӳ���
{
LcdWriteCom(0x32); //��8λ����תΪ4λ����
LcdWriteCom(0x28); //����λ���µij�ʼ��
LcdWriteCom(0x0c); //����ʾ����ʾ���
LcdWriteCom(0x06); //дһ��ָ���1
LcdWriteCom(0x01); //����
LcdWriteCom(0x80); //��������ָ�����
}
#endif