基于STC15单片机电子时钟液晶1602串口显示-proteus仿真-源程序

一、系统方案

1、本设计采用STC15单片机作为主控器。

2、液晶1602显示电子时钟。

3、串口显示电子时钟。

4、按键控制开启暂停清零。

二、硬件设计

原理图如下:

三、单片机软件设计

1、首先是系统初始化

uint count=0;

uint8 strPhoto[8];
uint wendu=0;

P3M0 = 0x00;

P3M1 = 0x00;

lcd_init(); //LCD1602初始化

delay_ms(10); //初始化后延时

DisplayListChar(0, 0, table1); //在LCD1602屏第一行显示table1内容

EA = 1; //开总中断

TMOD = 0X21; //定时器0、工作方式1

ET0 = 1; //开定时器0中断

TR0 = 0; //允许定时器0定时

TH0 = 0X3C;
TL0 = 0XB0;	   //50ms

2、液晶显示程序

/**************************************

功能描述:LCD1602写命令函数

入口参数int8 com

返回值:无

***************************************/

void lcd_wcom(uint8 com)

{

lcd1602_rs=0; //选择指令寄存器

lcd1602_rw=0; //选择写

P0=com; //把命令字送入P0

delay_ms(1); //延时一小会儿,让1602准备接收数据

lcd1602_en=1; //使能线电平变化,命令送入1602的8位数据口

lcd1602_en=0;

}

/**************************************

功能描述:LCD1602写数据函数

入口参数:uint8 dat

返回值:无

***************************************/

void lcd_wdat(uint8 dat)

{

lcd1602_rs=1; //选择数据寄存器

lcd1602_rw=0; //选择写

P0=dat; //把要显示的数据送入P0

delay_ms(1); //延时一小会儿,让1602准备接收数据

lcd1602_en=1; //使能线电平变化,数据送入1602的8位数据口

lcd1602_en=0;

}

/**************************************

功能描述:LCD1602初始化函数

入口参数:无

返回值:无

**************************************/
void lcd_init(void)
{
lcd_wcom(0x38); //8位数据,双列,5
7字形

lcd_wcom(0x0c); //开启显示屏,关光标,光标不闪烁

lcd_wcom(0x06); //显示地址递增,即写一个数据后,显示位置右移一位

lcd_wcom(0x01); //清屏

}

/**************************************

功能描述:LCD1602按指定位置显示一个字符

入口参数:uint8 X, uint8 Y, uint8 DData

返回值:无

***************************************/

void DisplayOneChar(uint8 X, uint8 Y, uint8 DData)

{

Y &= 0x1;

X &= 0xF; //限制X不能大于15,Y不能大于1

if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;

X |= 0x80; //算出指令码

lcd_wcom(X); //发命令字

lcd_wdat(DData); //发数据

}

/**************************************

功能描述:LCD1602按指定位置显示一串字符

入口参数:uint8 X, uint8 Y, uint8 DData X代表第X+1列,Y代表第Y+1行

返回值:无

***************************************/

void DisplayListChar(uint8 X, uint8 Y, uint8 code *DData)

{

uint8 ListLength;

ListLength = 0;

Y &= 0x1;

X &= 0xF; //限制X不能大于15,Y不能大于1

while (DData[ListLength]>0x19) //若到达字串尾则退出

{

if (X <= 0xF) //X坐标应小于0xF

{

DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符

ListLength++;

X++;

}

}

}

3、按键程序

void key() //键盘扫描函数

{

if(key10)
{
delay_ms(10);
if(key10)

{

while(!key1);

TR0=1;

}

}

if(key20)
{
delay_ms(10);
if(key20)

{

while(!key2);

TR0=0;

}

}

if(key30)
{
delay_ms(10);
if(key30)

{

while(!key3);

TR0=0;hour=0;minute=0;second=0;

}

}

}

4、核心算法程序

/定时器0中断程序 ***/

void time0() interrupt 1

{

TH0 = 0X3C;

TL0 = 0XB0; //50ms

count++	;   
  if(count==20)                                                         //20次50毫秒即一秒
    {
            count=0;
            second++;
            if(second==60)                                                  //秒加到60时分进位
            {
                    second=0;
                    minute++;
                    if(minute==60)                                                  //分加到60时时进位
                    {
                            minute=0;
                            hour++;
                            if(hour==24)                                                //时加到24时清0
                            {
                                    hour=0;
                            }      
                        
                    }
                 
            }
                   
    }

}

四、 proteus仿真设计

Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。

相关推荐
7yewh11 分钟前
嵌入式硬件实战提升篇(一)-泰山派RK3566制作多功能小手机
linux·arm开发·驱动开发·嵌入式硬件·物联网·智能手机·硬件架构
@晓凡1 小时前
STM32编程遇到的问题随笔【一】
stm32·单片机·嵌入式硬件
DevinLGT3 小时前
6Pin Type-C Pin脚定义:【图文讲解】
人工智能·单片机·嵌入式硬件
小A1593 小时前
STM32完全学习——系统时钟设置
stm32·嵌入式硬件·学习
CoderBob4 小时前
【EmbeddedGUI】脏矩阵设计说明
c语言·单片机
陌夏微秋5 小时前
51单片机基础02 动态数码管显示-并串转换
arm开发·单片机·嵌入式硬件·51单片机·硬件工程·信息与通信·信号处理
面包板扎5 小时前
51单片机应用开发---LCD1602显示应用
单片机·嵌入式硬件·51单片机
面包板扎5 小时前
51单片机应用开发(进阶)---定时器应用(电子时钟)
单片机
好想有猫猫5 小时前
【51单片机】LCD1602液晶显示屏
c语言·单片机·嵌入式硬件·51单片机·1024程序员节
陌夏微秋6 小时前
51单片机基础01 单片机最小系统
单片机·嵌入式硬件·51单片机·硬件工程·信息与通信