以 AT89C51 单片机为核心,制作一个 LCD 显示的智能电子钟

作者&投稿:茹茜 (若有异议请与网页底部的电邮联系)
以AT89C51单片机为核心,如何制作一个LCD显示的智能电子钟~

这个网上查资料呗,一个模块一个模块分开处理,最后调试通过了再综合到一起

会用ds1302芯片最好~

#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; //由于4位的接线是接到P0口的高四位,所以传送高四位不用改
Lcd1602_Delay1ms(1);

LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;

// Lcd1602_Delay1ms(1);
LCD1602_DATAPINS = com << 4; //发送低四位
Lcd1602_Delay1ms(1);

LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
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; //由于4位的接线是接到P0口的高四位,所以传送高四位不用改
Lcd1602_Delay1ms(1);

LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;

LCD1602_DATAPINS = dat << 4; //写入低四位
Lcd1602_Delay1ms(1);

LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
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); //在四位线下的初始化
LcdWriteCom(0x0c); //开显示不显示光标
LcdWriteCom(0x06); //写一个指针加1
LcdWriteCom(0x01); //清屏
LcdWriteCom(0x80); //设置数据指针起点
}
#endif


景德镇市18744698723: 题目:电子时钟 1.任务 以AT89C51单片机为核心的时钟,在LED显示器上显示当前的时间. -
年肥障眼: #include<reg52.h> //#include<intrins.h> #define uint unsigned int #define uchar unsigned char sbit key1=P3^4;//按键1 sbit key2=P3^5;//按键2 sbit key3=P3^6;//按键3 sbit key4=P3^7;//按键4 sbit dula=P2^2; //取段 sbit wela=P2^3; //取位 ...

景德镇市18744698723: (=以AT89C51单片机为核心,制作一个LED显示的智能电子钟计时:秒、分、时 -
年肥障眼: 六个数码管,晶振计时,到点移位,输出就好了么

景德镇市18744698723: 求C语言程序,AT89C51单片机为核心,DS18B20测温度,实时用4位LED显示温度,并且用单片机控制继电器 -
年肥障眼: #include // 试试#define uchar unsigned char #define uint unsigned int sbit DQ=P1^4; //ds18b20与单片机连接口 unsigned char code str[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40} ; //共阴数码管字码表 unsigned char code ...

景德镇市18744698723: AT89C51单片机为核心的PWM直流电机的调速系统 在现实中的作用 有什么用
年肥障眼: 这个问题啊?这个用途很广呢~~~ 一时半载很难回答,那我就说说比较常用的吧~~~ 第一,可以用于控制传送带的运转速度,有时候传送带运转的时候,带动货物不能过快 第二,可以用于搅拌机,可调速的搅拌机在化学工业上应用很广,你想象...

景德镇市18744698723: 以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间. -
年肥障眼: 答案在 http://www.doc88.com/p-997990628553.html里

景德镇市18744698723: 基于单片机的电子时钟 -
年肥障眼: 去百度文库,查看完整内容> 内容来自用户:啊宝1688 绪论 单片机在多功能数字电子钟中的应用已是非常普遍,人们对电子时钟的功能及工作顺序都已非常熟悉了,但是却很少知道它的内部结构以及工作原理.由单片机作为电子时钟的核心控...

景德镇市18744698723: 英语翻译本论文介绍了基于AT89C51单片机为核心的、以ADC0808数模转换芯片采样、以LCD1602液晶屏显示的具有电压测量功能的具有一定精度的数字电... -
年肥障眼:[答案] This paper introduces the based on AT89C51 as the core,to ADC0808 analog-to-digital conversion chip sampling,to LCD1602 LCD shows with voltage measurement function has some of the accuracy of the digi...

景德镇市18744698723: 基于AT89C51的电饭煲控制系统设计 -
年肥障眼: 本设计主要由硬件电路设计和软件编程两大部分来实现, 以AT89C51单片机为核心,配备显示模块、定时信息等, 能通过数码管进行显示计时.备有按键,以便人工定时与修改当前时间.用户可以通过按键修改时间,以便达到用户所要实现的...

景德镇市18744698723: 求一个自动化或电子方向专业毕业设计题目 -
年肥障眼: :MCS51系列的单片机没有那么强大的功能(主要是可扩展的存储器有限), 如果真要使用的话,可能要用好几片. 2:现在的电梯都是PLC(可编程逻辑控制器)控制,或者是专用微机板控制,就我了解到的,已经有用4片64位CPU控制的电梯...

景德镇市18744698723: 怎样用单片机控制步进电动机完成直线运动? -
年肥障眼: 步进电机最少要4线制的,不知你的电机是几线的,我就以4线为例说一下,用万用表把步进电机相连的线区分出来,分别以A,B为一对,C,D为另一对,接到单片机上,然后单片机就分别使电流流向,A->B,A->B C->D,C->D,C->D B->A,B->A,B->A D->C,D->C,D->C A->B,共8个节拍.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网