资源简介
本代码是用在51单片机上的,材料有51单片机,DS1302芯片,四位数码管。程序可以完美运行。
代码片段和文件信息
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit IO=P2^2; //数据输入输出线
sbit RST=P2^3; //复位信号线
sbit SCLK=P2^1; //时钟信号线
sbit key=P1^5;
sbit chushikey=P1^4;
sbit dp=P2^7;
uchar code write_addr[]={0x800x820x840x860x880x8a0x8c}; //写的地址
uchar code read_addr[]={0x810x830x850x870x890x8b0x8d}; //读的地址
//---存储顺序是秒分时日月周年存储格式是用BCD码---//
uchar time[7]={00x490x080x060x060x030x18}; //初始化的时间为2015年12月12日12:00
//变量定义:
unsigned char table[]=
{0xc00xf90xa40xb00x990x920x820xf80x800x900xbf};
//表:共阳数码管 0-9
//引脚定义:
sbit SMG_q = P1^0; //定义数码管阳级控制脚(千位)
sbit SMG_b = P1^1; //定义数码管阳级控制脚(百位)
sbit SMG_s = P1^2; //定义数码管阳级控制脚(十位)
sbit SMG_g = P1^3; //定义数码管阳级控制脚(个位)
void delay_1(int i)
{
while(i--);
}
//延时子函数短暂延时
void delay(void){
unsigned char i=10;
while(i--);
}
//写字节
void write(uchar addruchar dat)
{
uchar ij;
SCLK=0;
_nop_();
RST=0;
_nop_();
RST=1; //拉高,准备写地址写数据
_nop_();
_nop_();
for(i=0;i<8;i++) //传送8位地址,往哪里写
{
SCLK=0; //再置为低,以便实现上升沿
_nop_();
IO=addr&0x01; //先传送最低位
addr>>=1; //向右移位,把8位数据依次写入
SCLK=1; //数据在上升沿时,写入数据
_nop_();
}
for(j=0;j<8;j++) //写入8位数据
{
SCLK=0; //置为低,以便实现上升沿
_nop_();
IO=dat&0x01; //先传送最低位
dat>>=1; //向右移位,把8位数据依次写入
SCLK=1; //数据在上升沿时,写入数据
_nop_();
}
RST=0; //释放
_nop_();
}
//读字节
uchar read(uchar addr)
{
uchar idat=0;
SCLK=0;
_nop_();
RST=0;
_nop_();
RST=1; //拉高,准备写地址读数据
_nop_();
_nop_();
for(i=0;i<8;i++) //传送8位地址,从哪里读
{
SCLK=0; //置为低,以便实现上升沿
_nop_();
IO=addr&0x01; //先传送最低位
addr>>=1; //向右移位,把8位数据依次写入
SCLK=1; //数据在上升沿时,写入数据
_nop_();
}
_nop_();
for(i=0;i<8;i++) //读出8位数据
{
SCLK=1; //置为低,以便实现下降沿
_nop_();
dat>>=1; //向右移位,把8位数据依次读出
// if(IO==1)
// dat=dat|0x80;
SCLK=0; //读数据时,下降沿有效
if(IO==1)
dat=dat|0x80;
_nop_();
}
RST=0; //复位
_nop_();
SCLK = 1;
_nop_();
IO = 0;
_nop_();
IO = 1;
_nop_();
return dat; //返回读到的数据
}
//读时间
//void read_time()
//{
// uchar n;
// // for(n=0;n<7;n++)
// time[0]=read(read_addr[0]); //读取分秒时日月周年
// time[6]=read(read_addr[6]); //读取分秒时日月周年
//}
void ds1302_init()
{
uchar k;
write(0x8e0x00); //禁止写保护,即允许数据写入
for(k=0;k<8;k++) //写入7个字节的时钟信号:分秒时日月周年
{
write(write_addr[k]time[k]);
}
write(0x8e0x80); //打开写保护
}
void dingshi()
{
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
// EA=1;
ET0=1;
TR0=1;
}
int h=0;
void main()
{
char
- 上一篇:数控直流电压源
- 下一篇:stc89c51AD库
相关资源
- BC28+51单片机的原理图
- 51单片机控制电机的转速转向以及启停
- 51单片机双机通信
- 51开发板密码锁
- 基于51单片机的心形流水灯仿真
- 51单片机控制CS5463程序
- 51单片机最小系统原理图.SchDoc
- 51单片机红外遥控器程序
- 遗传算法实现求PID参数控制电压的代
- 基于51单片机的智能窗帘系统全套资料
- 51单片机控制步进电机电路图
- 51单片机读取DS18b20数据加1602显示+pr
- 基于51单片机寻光小车
- c51单片机数码管显示60s倒计时
- 51单片机控制DS18b20,在数码管上显示
- AT89C51单片机--CC1101无线接收程序经本
- 51单片机+DS18B20+NRF24L01+LCD1602=无线温度
- 基于AT89C51单片机的智能脉搏测试仪设
- 51单片机驱动K型热电偶数字转换器M
- 基于51单片机的24l01程序
- 51单片机Protues,仿真DS18b20温度传感器
- 51单片机Protues,仿真交通灯。程序+仿
- 51单片机Protues,通过ADC0809芯片仿真
- 基于RFID的同学签到系统的设计
- 51单片机寄存器详解
- 基于51单片机电炉丝加热控制仿真ke
- 基于51单片机仓库温度监控系统仿真设
- 基于51单片机多传感器楼道照明控制系
- 基于51单片机简易信号发生器仿真设计
- 51单片机Protues点阵广告屏仿真及实现
评论
共有 条评论