资源简介
protues仿真完好通过,程序代码适合初学者,lcd采用1602,对于学习液晶和DS1302有很好的帮助

代码片段和文件信息
/***************************************************/
#include //包含单片机寄存器的头文件
#include //包含_nop_()函数定义的头文件
#define uchar unsigned char
#define uint unsigned int
uchar tempcount=0;
/***********************************************************************
以下是DS1302芯片的操作程序
************************************************************************/
uchar code digit[10]={“0123456789“}; //定义字符数组显示数字
uchar *digit1[]={“SUN““MON““TUS““WEN““THU““FRI““SAT“}; //周日,周一到周六
sbit DATA=P3^7; //位定义1302芯片的接口,数据输出端定义在P1.1引脚
sbit RST=P3^5; //位定义1302芯片的接口,复位端口定义在P1.1引脚
sbit SCLK=P3^6; //位定义1302芯片的接口,时钟输出端口定义在P1.1引脚
sbit key1=P3^0; //停止按钮
sbit key2=P3^1; //开始按钮
sbit add=P2^4; //加值
sbit subtract=P2^5;//减值
sbit tiaoshi=P3^4; //定位
/*****************************************************
函数功能:延时若干微秒
入口参数:n
***************************************************/
void delaynus(uchar n)
{
uchar i;
for(i=0;i ;
}
/*****************************************************
函数功能:向1302写一个字节数据
入口参数:x
***************************************************/
void Write1302(uchar dat)
{
uchar i;
SCLK=0; //拉低SCLK,为脉冲上升沿写入数据做好准备
delaynus(2); //稍微等待,使硬件做好准备
for(i=0;i<8;i++) //连续写8个二进制位数据
{
DATA=dat&0x01; //取出dat的第0位数据写入1302
delaynus(2); //稍微等待,使硬件做好准备
SCLK=1; //上升沿写入数据
delaynus(2); //稍微等待,使硬件做好准备
SCLK=0; //重新拉低SCLK,形成脉冲
dat>>=1; //将dat的各数据位右移1位,准备写入下一个数据位
}
}
/*****************************************************
函数功能:根据命令字,向1302写一个字节数据
入口参数:Cmd,储存命令字;dat,储存待写的数据
***************************************************/
void WriteSet1302(uchar Cmduchar dat)
{
RST=0; //禁止数据传递
SCLK=0; //确保写数居前SCLK被拉低
RST=1; //启动数据传输
delaynus(2); //稍微等待,使硬件做好准备
Write1302(Cmd); //写入命令字
Write1302(dat); //写数据
SCLK=1; //将时钟电平置于已知状态
RST=0; //禁止数据传递
}
/*****************************************************
函数功能:从1302读一个字节数据
入口参数:x
***************************************************/
uchar Read1302(void)
{
uchar idat;
delaynus(2); //稍微等待,使硬件做好准备
for(i=0;i<8;i++) //连续读8个二进制位数据
{
dat>>=1; //将dat的各数据位右移1位,因为先读出的是字节的最低位
if(DATA==1) //如果读出的数据是1
dat|=0x80; //将1取出,写在dat的最高位
SCLK=1; //将SCLK置于高电平,为下降沿读出
delaynus(2); //稍微等待
SCLK=0; //拉低SCLK,形成脉冲下降沿
delaynus(2); //稍微等待
}
return dat; //将读出的数据返回
}
/*****************************************************
函数功能:根据命令字,从1302读取一个字节数据
入口参数:Cmd
***************************************************/
uchar ReadSet1302(uchar Cmd)
{
uchar dat;
RST=0; //拉低RST
SCLK=0; //确保写数居前SCLK被拉低
RST=1; //启动数据传输
Write1302(Cmd); //写入命令字
dat=Read1302(); //读出数据
SCLK=1; //将时钟电平置于已知状态
RST=0; //禁止数据传递
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-03-30 13:27 LCD数字时钟\
文件 94333 2013-03-29 14:55 LCD数字时钟\Last Loaded lcd数字时钟.DBK
文件 17303 2013-03-30 13:27 LCD数字时钟\LCDtimer.c
文件 28353 2013-03-30 13:25 LCD数字时钟\LCDtimer.LST
文件 25469 2013-03-30 13:25 LCD数字时钟\LCDtimer.OBJ
文件 97607 2013-03-30 13:27 LCD数字时钟\lcd数字时钟.DSN
文件 935 2013-03-30 13:27 LCD数字时钟\lcd数字时钟.PWI
文件 21555 2013-03-30 13:25 LCD数字时钟\数字时钟
文件 5183 2013-03-30 13:25 LCD数字时钟\数字时钟.hex
文件 48 2013-03-30 13:25 LCD数字时钟\数字时钟.lnp
文件 30721 2013-03-30 13:25 LCD数字时钟\数字时钟.M51
文件 9072 2013-03-30 13:25 LCD数字时钟\数字时钟.plg
文件 56284 2013-03-30 13:27 LCD数字时钟\数字时钟.uvopt
文件 13253 2013-03-29 13:53 LCD数字时钟\数字时钟.uvproj
文件 55777 2013-03-29 14:55 LCD数字时钟\数字时钟_uvopt.bak
文件 0 2013-03-29 10:04 LCD数字时钟\数字时钟_uvproj.bak
相关资源
- STM32F103RC+ADC+DMA多通道采样LCD显示
- LCD显示温度+串口接收温度.rar
- 基于c8051f020的AD转换程序及LCD显示程序
- 单片机数字时钟包附电路图 源程序
- 基于STM32F4x9的LCD显示
- 基于ARM7的LCD显示电压示波系统的设计
- STM32F4基于HAL库的LCD显示实验
- HC-SR04超声波模块(包含基于51stm32配套
- 基于ISE的基本数字时钟工程
- 基于STC89C52单片机的数字时钟
- 单片机波形发生器 lcd显示出来
- 基于单片机的数字时钟系统设计
- stm32 控制 数码管显示以及LCD显示
- 正点原子 OV7725 蓝牙小车+摄像头LCD显
- stm32f4模拟时序驱动LCD显示
- 数电课程设计-数字时钟multisim
- STM32-UCOSIII实战-----RTC+DHT11+按键+LCD显示
- EDA 数字时钟课程设计 Quartus II 闹钟
- 12/24小时数字时钟设计
- 74ls90十进制数字24小时时钟设计图
- FPGA驱动摄像头采集图像实现LCD显示
- 数字时钟微机原理课程设计
- 基于单片机的数字时钟
- gy906 90614 STM32F1读取温度lcd显示 串口和
- ALIENTEK MINISTM32 实验10 TFTLCD显示实验
- 南京理工大学 2018研究生电类综合实验
- verilog编写的数字时钟、万年历、闹钟
- 基于verilog的数字时钟设计
- 数字时钟原理图+pcb
- 基于nexys4 ddr的数字时钟
评论
共有 条评论