资源简介
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
相关资源
- 基于Multisim 12.0的数字时钟高级版
- 关于QT的数字时钟含闹钟
- vhdl数字时钟,音乐闹钟《粉刷匠》,
- 包含六个经典的仿真 流水灯 走马灯
- 带中文字库的12864LCD显示程序
- LPC1768 带LCD显示AD转换例程
- QT数字时钟,简单程序,适合练习
- 用51单片机实现小车循迹和LCD显示
- 六位数字时钟原理图
- 多功能数字时钟FPGA 实现含代码.zip
- VH语言多功能数字时钟
- 可LCD显示计算价格的电子秤proteus仿真
- 1602LCD显示仿手机键盘按键字符
- protues仿真 数字时钟的课程设计
- 9——数字时钟.DSN
- mini2440实现采集摄像头数据在开发板的
- 基于lpc2136的数字时钟
- Proteus数字时钟电路仿真.rar
- 数字逻辑课设:数字时钟logisim文件
- VHDL多功能数字万年历
- 嵌入式系统多功能数字时钟的设计(
- 51单片机数字时钟-proteus仿真文件及
- 基于51单片机定时器实现的数字时钟
- 用FPGA控制LCD显示字符,汉字
- 数字钟仿真+源程序.zip
- STM32的TFTLCD显示程序,亲测能用
- v4l2采集视频并保存和lcd显示
- PCF8591 ad转换及lcd显示
- Qt模拟时钟+数字时钟+万年历的程序
- Keil5下的STM32F103Cx例程超值,含PWM输出
评论
共有 条评论