资源简介

利用单片机设计电子时钟,编程用c语言,秒表、时钟计时器要求用液晶1602显示时、分、秒。使用按键开关可实现时分调整、秒表/时钟功能

资源截图

代码片段和文件信息

/**************************
//项目名称:可调电子时钟(液晶1602显示)
//程序编写:廖
//程序状态:OK
//设计日期:2018-1-20
**************************/
#if 1
#include  //单片机头文件
#include 

//宏定义
typedef unsigned char uint8;
typedef unsigned int uint16;
typedef bit BOOL ; 

//位声明
sbit rs = P3^5;
sbit rw = P3^6;
sbit ep = P3^4;
sbit S1 = P3^0;
sbit S2 = P3^1;
sbit S3 = P3^2;

//定义全局变量
uint8 S1num;
uint8 secminhour;

//函数声明
void ScanKey(void);
void DelayMs(uint8 ms);
BOOL lcd_bz();
void WriteCom(uint8 cmd);
void WriteDate(uint8 dat);
void LcdInit();
void TimerInit(void);
void WritePos(uint8 xuint8 y);
void PrintString(uint8*str);
void Write_hms(uint8 adduint8 date);

//主函数
void main()
{
LcdInit(); // 初始化LCD
DelayMs(10);
TimerInit();

WritePos(03); //设定要显示的位置
PrintString(“I LOVE YOU“); //设定要显示的内容
WritePos(14); //设定要显示的位置
PrintString(“20:20:20“); //设定要显示的内容

while(1) //循环
{
ScanKey();
}
}

// 延时子程序函数
void DelayMs(uint8 ms)
{
uint8 i;
while(ms--)
{
for(i = 0; i< 250; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}

// 测试LCD忙碌状态
BOOL lcd_bz()
{
BOOL result;
rs = 0;
rw = 1;
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
result = (BOOL)(P0 & 0x80);
ep = 0;
return result;
}

// 写入指令数据到LCD
void WriteCom(uint8 cmd)
{
while(lcd_bz());
rs = 0;
rw = 0;
ep = 0;
_nop_();
_nop_();
P0 = cmd;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}

//void lcd_pos(uint8 pos)
//{ //设定显示位置
// WriteCom(pos | 0x80);
//}

//写入字符显示数据到LCD
void WriteDate(uint8 dat)
{
while(lcd_bz());
rs = 1;
rw = 0;
ep = 0;
P0 = dat;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}

//LCD初始化设定
void LcdInit()
{
WriteCom(0x38);
DelayMs(1);
WriteCom(0x0c);
DelayMs(1);
WriteCom(0x06);
DelayMs(1);
WriteCom(0x01);                 //清除LCD的显示内容
DelayMs(1);


}

//显示位置函数
void WritePos(uint8 xuint8 y)
{
if(x == 1)
{
WriteCom(y + 0xc0);
}
else
{
WriteCom(y + 0x80);
}
}

//显示字符串函数
void PrintString(uint8*str)

评论

共有 条评论