|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
DS1302在Protes下的仿真 |
作者:zzz正 栏目:单片机 |
/************************************************/ /*Project:控制课程设计 */ /*File NAME:ds1302.C */ /*Language:Keil C51 */ /*MCU:AT89C51 */ /*Author:zzz */ /*Date of Begin:2005.11.11 */ /*Date of Acomplish:2005.11.15 */ /*Version:1.0 */ /***********************************************/ //这个程序是初始化1302后,再把当前的时间读出来,时间设定可通过数组set_time设定 //发现的技巧:1.初始化时要先把控制寄存器的最高位(wp)置0,才能允许读写1302,初始化后再置1,禁止读写,防止干扰 // 2.初始化退出前一定要把秒寄存器的最高位(ch)标志位置0,否则时钟不走 // 3.还有充电器也要注意设置(问题解决是.是掉电时脉冲干扰问题.用个100微法的电容滤波一下就好了) #include<reg51.h> #include<absacc.h> #define uCHAR unsigned CHAR #define uint unsigned int sbit sda=P1^0; sbit sclk=P1^1; sbit reset=P1^2; uCHAR code LED[11]= { 0x3f,0x06,0x5b,0x4f,0x66,0x6d, 0x7d,0x07,0x7f,0x6f}; uCHAR code set_time[8]={0x80,0x13,0x18,0x1,0x01,0x01,0x06}; //2005年11月26日15:00:00,当前时间格式为: 秒 分 时 日 月 星期 年 uCHAR code select_led[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uCHAR data time_buf[8]; #define A_8255 XBYTE[0x7CFF] #define B_8255 XBYTE[0x7DFF] #define C_8255 XBYTE[0x7EFF] #define COM_8255 XBYTE[0x7FFF] void init_mcu(void); void DISPLAY(void); void init_1302(void); void read_time(void); uCHAR RD_1302(uCHAR commond); void WR_1302(uCHAR commond,uCHAR data1); void main() { init_mcu(); init_1302(); while(1) { read_time(); DISPLAY(); } } /**********子程序开始****************/ /***********mcu初始化函数************/ void init_mcu(void) { P1=0x00; COM_8255=0x89; } /********显示子程序,参数为扫描路数*******/ void DISPLAY(void) { uCHAR i,temp1,temp2,temp3=0x00; uCHAR data time_current[7]; for(i=4;i<7;i++) { temp1=time_buf[i]; temp2=temp1&0x0f; time_current[temp3]=temp2; temp3++; temp1=temp1>>4; time_current[temp3]=temp1; temp3++; } for(i=0;i<6;i++) { B_8255=select_led[i]; temp1=time_current[i]; temp1=LED[temp1]; A_8255=temp1; temp2=250; temp3=250; while(--temp2); while(--temp3); } } /*****1302初始化程序,设定时间为:*/ void init_1302(void) { uCHAR temp1,temp2=0x80; WR_1302(0x8e,0x00); //允许读写WP=0 for(temp1=0;temp1<7;temp1++) { WR_1302(temp2,set_time[temp1]); temp2+=2; } WR_1302(0x90,0xa5); //充电器设置,禁止充电 WR_1302(0x80,0x00); WR_1302(0x8e,0x80); //禁止写WP=1,write protect } /*********************读当前时间*************/ //当前时间格式为: 秒 分 时 日 月 星期 年 void read_time(void) { uCHAR temp1,temp2,adder |
2楼: | >>参与讨论 |
作者: zzz正 于 2006/1/3 22:05:00 发布:
郁闷 上传图片没搞好,第一次搞这个 |
3楼: | >>参与讨论 |
作者: eldiy 于 2006/1/4 8:06:00 发布:
收藏! 收藏了! |
4楼: | >>参与讨论 |
作者: XZHENGGEN 于 2006/1/4 9:18:00 发布:
不错,好贴,收藏一下! |
5楼: | >>参与讨论 |
作者: zzz正 于 2006/1/4 18:30:00 发布:
谢谢各位 |
6楼: | >>参与讨论 |
作者: zzz正 于 2006/1/4 18:35:00 发布:
驻各位新年快乐 由于我所在的学校不是很好,才刚开始自学C51,不足之处请大家多多指教 同时我还在自学ucOSII,在别人的基础上调试好了移植程序,以后会陆续上传,希望大家多多支持我哦!!!! |
7楼: | >>参与讨论 |
作者: zzz正 于 2006/1/5 9:04:00 发布:
怎么没人顶啊 怎么没人顶啊怎么没人顶啊怎么没人顶啊 |
8楼: | >>参与讨论 |
作者: armko 于 2006/1/7 12:39:00 发布:
好贴 我现在做的项目都用DS1302仿真,只是不知道如何用DS1302仿真掉电DS1302ram的保存。 |
9楼: | >>参与讨论 |
作者: huang4911 于 2006/1/14 21:12:00 发布:
各器件的仿真参数怎么设置啊? |
10楼: | >>参与讨论 |
作者: flydesk 于 2006/1/14 21:44:00 发布:
这个什么软件??? 这个什么软件???大家能告诉我吗?? |
11楼: | >>参与讨论 |
作者: zhaoyanwen 于 2006/1/14 23:05:00 发布:
我也是刚学的我学的汇编语言的 厉害 |
12楼: | >>参与讨论 |
作者: flydesk 于 2006/1/14 23:22:00 发布:
这个什么软件??? 这个什么软件??? 用什么仿真的???大家能告诉我吗?? |
13楼: | >>参与讨论 |
作者: dadodo 于 2006/1/15 3:29:00 发布:
楼主都说了是protes啦 |
14楼: | >>参与讨论 |
作者: lpf336 于 2006/1/15 10:45:00 发布:
好帖,顶 楼主的PROTEUS是哪个版本? |
15楼: | >>参与讨论 |
作者: wanggaowei 于 2006/1/15 14:59:00 发布:
顶 好贴 |
16楼: | >>参与讨论 |
作者: Bingoes 于 2006/1/15 20:29:00 发布:
问一个问题 Proteus是个什么东西? 能仿真器件么?这么厉害?怎么用的? 哪位大侠能简单介绍一下么? |
17楼: | >>参与讨论 |
作者: zzz正 于 2006/2/6 9:02:00 发布:
谢谢大家的支持,希望大家新年快乐 我认为这个软件可以仿真DS1302掉电时DS1302ram的保存,这个软件可以查看1302中的RAM,你可以通过一个开关连接P1口,你的程序中通过判断开关的开闭来模拟掉电这种情况,由于我现在在东莞找工作,没有哪个软件,不然我可以仿真给你看。 同时我的软件版本是6.7的,用了几次,以前用的是6.1的。由于刚下载几天就要考试了,所以没有看的太多,只仿真了几个程序,是温度传感器DS1620,以后有时间在上传,希望大家多多支持我哦。不过我看过6.1版本的帮助文件,不懂的可以去那里看看,也可以去看看里面的例子哦。同时我推荐大家可以在里面仿真以下有关I2C、SPI、一总线的器件。我就仿真了I2C、SPI的EEPROM存储芯片,还有一总线芯片等等哦,自己找找吧,也可以去一些好的论坛看看别人是怎么搞的哦。再次的谢谢大家的支持!!!! |
18楼: | >>参与讨论 |
作者: zhangdage 于 2006/2/6 10:54:00 发布:
下面的地址有下载 http://blog.21ic.com/more.asp?NAME=zhangdage&id=8645 |
19楼: | >>参与讨论 |
作者: zzz正 于 2006/2/16 19:36:00 发布:
大家好 不知大家找到工作没有? 我在东莞这边找工作找的好愚昧,大都不要应届生。 现在终于在上海广达电脑城找到工作了,大家有在广达LCD TV部门工作的吗? 给我点意见哦,在这里希望大家都找到一份理想的工作哦!!! |
20楼: | >>参与讨论 |
作者: baipengwei 于 2006/2/17 11:47:00 发布:
??、、、 这好像是一个叫蒋正平的网友做的吧。。。。 |
21楼: | >>参与讨论 |
作者: zzz正 于 2006/2/27 17:42:00 发布:
绝对是我做的 |
22楼: | >>参与讨论 |
作者: zzz正 于 2006/2/27 17:47:00 发布:
绝对是我做的 可能网上有很多写DS1302的程序,但是这个是我做的 其实程序并不难写,主要是我的可以仿真功能,我这里只是给大家一个启发,可以的话也用一下这个软件,可以验证我们写的程序. 还有大家千万不要来广达电脑公司,象我就被骗进来了,欲哭无泪啊. 来到这里不能搞开发. |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |