去哪里找唐雨柔门禁项目啊

您好,欢迎来到中国报告大厅!
中国首选市场研究报告门户
您当前的位置: >>
>> 自助银行专用门禁机调研报告:年中国自助银行专用门禁机项目行业市场深度调研及投资战略研究分析报告
年中国自助银行专用门禁机项目行业市场深度调研及投资战略研究分析报告
()字号:T|T
推荐报告:
细分报告:
报告导读:本报告从国际自助银行专用门禁机发展、国内自助银行专用门禁机政策环境及发展、研发动态、进出口情况、重点生产企业、存在的问题及对策等多方面多角度阐述了自助银行专用门禁机市场的发展,并在此基础上对自助银行专用门禁机的发展前景做出了科学的预测,最后对自助银行专用门禁机投资潜力进行了分析。
郑重声明:本报告由中国报告大厅出版发行,报告著作权归宇博智业所有。本报告是宇博智业的研究与统计成果,有偿提供给购买报告的客户使用。未获得宇博智业书面授权,任何网站或媒体不得转载或引用,否则宇博智业有权依法追究其法律责任。如需订阅研究报告,请直接联系本网站,以便获得全程优质完善服务。
宇博智业业务:
宇博智业实力:   
报告最新目录');}">查看全部>>
第一章 自助专用门禁机行业发展概述
第一节自助银行专用门禁机行业定义
一、自助银行专用门禁机定义
二、自助银行专用门禁机应用
第二节自助银行专用门禁机行业发展概况
一、全球自助银行专用门禁机行业发展概况
二、自助银行专用门禁机国内行业现状阐述
第二章 年中国自助银行专用门禁机行业市场规模分析
第一节 年中国自助银行专用门禁机行业市场规模分析
第二节 年中国自助银行专用门禁机行业基本特点分析
第三节 年中国自助银行专用门禁机行业销售收入分析
第四节 年中国自助银行专用门禁机行业市场集中度分析
第五节 年中国自助银行专用门禁机行业市场占有率分析
第六节 年中国自助银行专用门禁机行业市场规模预测
第三章 中国自助银行专用门禁机结构分析
第一节 中国自助银行专用门禁机产业链结构
一、产业链概况
第二节中国自助银行专用门禁机产业链演进趋势
一、产业链生命周期分析
二、产业链价值流动分析
三、演进路径与趋势
第三节 中国自助银行专用门禁机产业链竞争分析
第四章 中国自助银行专用门禁机行业区域
第一节 2014年华北地区自助银行专用门禁机行业分析
一、2014年行业发展现状分析
二、2014年市场规模情况分析
三、年市场需求情况分析
四、年行业发展前景预测
第二节 2014年东北地区自助银行专用门禁机行业分析
一、2014年行业发展现状分析
二、2014年市场规模情况分析
三、年市场需求情况分析
四、年行业发展前景预测
第三节 2014年华东地区自助银行专用门禁机行业分析
一、2014年行业发展现状分析
二、2014年市场规模情况分析
三、年市场需求情况分析
四、年行业发展前景预测
第四节 2014年华南地区自助银行专用门禁机行业分析
一、2014年行业发展现状分析
二、2014年市场规模情况分析
三、年市场需求情况分析
四、年行业发展前景预测
第五节 2014年华中地区自助银行专用门禁机行业分析
一、2014年行业发展现状分析
二、2014年市场规模情况分析
三、年市场需求情况分析
四、年行业发展前景预测
第六节 2014年西南地区自助银行专用门禁机行业分析
一、2014年行业发展现状分析
二、2014年市场规模情况分析
三、年市场需求情况分析
四、年行业发展前景预测
第七节 2014年西北地区自助银行专用门禁机行业分析
一、2014年行业发展现状分析
二、2014年市场规模情况分析
三、年市场需求情况分析
四、年行业发展前景预测
第五章 中国自助银行专用门禁机制造行业成本费用分析
第一节年自助银行专用门禁机制造行业产品销售成本分析
一、年行业销售成本总额分析
二、不同规模企业销售成本比较分析
三、不同所有制企业销售成本比较分析
第二节年自助银行专用门禁机制造行业销售费用分析
一、年行业销售费用总额分析
二、不同规模企业销售费用比较分析
三、不同所有制企业销售费用比较分析
第三节年自助银行专用门禁机制造行业管理费用分析
一、年行业管理费用总额分析
二、不同规模企业管理费用比较分析
三、不同所有制企业管理费用比较分析
第四节年自助银行专用门禁机制造行业财务费用分析
一、年行业财务费用总额分析
二、不同规模企业财务费用比较分析
三、不同所有制企业财务费用比较分析
第六章 中国自助银行专用门禁机市场需求
第一节 年自助银行专用门禁机产能分析
一、年中国自助银行专用门禁机产能
二、年中国自助银行专用门禁机产能利用率分析
第二节 年自助银行专用门禁机产量分析
一、年中国自助银行专用门禁机产量
三、年中国自助银行专用门禁机增长率
第三节 年自助银行专用门禁机市场需求
一、年中国自助银行专用门禁机市场供应分析
二、年中国自助银行专用门禁机市场需求量预测
第七章年自助银行专用门禁机行业相关行业市场运行综合分析
第一节年自助银行专用门禁机行业上游运行分析
一、自助银行专用门禁机行业上游介绍
二、自助银行专用门禁机行业上游发展状况分析
三、自助银行专用门禁机行业上游对自助银行专用门禁机行业影响力分析
第二节年自助银行专用门禁机行业下游运行分析
一、自助银行专用门禁机行业下游介绍
二、自助银行专用门禁机行业下游发展状况分析
三、自助银行专用门禁机行业下游对自助银行专用门禁机行业影响力分析
第八章 中国自助银行专用门禁机产品价格分析
第一节 中国自助银行专用门禁机历年价格回顾
第二节 中国自助银行专用门禁机当前市场价格
一、产品当前价格分析
二、产品未来价格预测
第三节 中国自助银行专用门禁机价格影响因素分析
一、全球危机影响
二、人民币汇率变化影响
第九章 中国自助银行专用门禁机分析
第一节 自助银行专用门禁机近年进出口概况
第二节 分国别进出口概况
第三节 中国自助银行专用门禁机行业历史进出口总量变化
一、年自助银行专用门禁机行业进口总量变化
二、年自助银行专用门禁机行业出口总量变化
三、年自助银行专用门禁机进出口差量变动情况
第四节 中国自助银行专用门禁机行业历史进出口结构变化
一、年自助银行专用门禁机行业进口来源情况分析
二、年自助银行专用门禁机行业出口去向分析
第五节 中国自助银行专用门禁机行业进出口态势展望
一、中国自助银行专用门禁机进出口的主要影响因素分析
二、年中国自助银行专用门禁机行业进口态势展望
三、年中国自助银行专用门禁机行业出口态势展望
第十章 自助银行专用门禁机行业竞争格局分析
第一节 自助银行专用门禁机行业集中度分析
一、自助银行专用门禁机市场集中度分析
二、自助银行专用门禁机企业集中度分析
三、自助银行专用门禁机区域集中度分析
第二节 自助银行专用门禁机行业竞争格局分析
一、2014年自助银行专用门禁机行业竞争分析
二、2014年中外自助银行专用门禁机产品竞争分析
三、2014年国内外自助银行专用门禁机竞争分析
四、2014年我国自助银行专用门禁机市场竞争分析
五、2014年我国自助银行专用门禁机市场集中度分析
六、年国内主要自助银行专用门禁机企业动向
第十一章 重点企业经营状况分析
第一节 公司一
1、公司主营业务
2、公司经营状况
(一)企业的偿债能力分析
(二)企业运营能力分析
(三)企业盈利能力分析
3、公司优劣势分析
4、公司发展前景
二、公司二
1、公司主营业务
2、公司经营状况
(一)企业的偿债能力分析
(二)企业运营能力分析
(三)企业盈利能力分析
3、公司优劣势分析
4、公司发展前景
三、公司三
1、公司主营业务
2、公司经营状况
(一)企业的偿债能力分析
(二)企业运营能力分析
(三)企业盈利能力分析
3、公司优劣势分析
4、公司发展前景
四、公司四
1、公司主营业务
2、公司经营状况
(一)企业的偿债能力分析
(二)企业运营能力分析
(三)企业盈利能力分析
3、公司优劣势分析
4、公司发展前景
五、公司五
1、公司主营业务
2、公司经营状况
(一)企业的偿债能力分析
(二)企业运营能力分析
(三)企业盈利能力分析
3、公司优劣势分析
4、公司发展前景
第十二章年中国自助银行专用门禁机行业发展预测分析
第一节 年中国自助银行专用门禁机产业宏观预测
一、年中国自助银行专用门禁机行业宏观预测
二、年中国自助银行专用门禁机工业发展展望
三、中国自助银行专用门禁机业发展状况预测分析
第二节年中国自助银行专用门禁机市场形势分析
一、年中国自助银行专用门禁机生产形势分析预测
二、影响中国自助银行专用门禁机市场运行的因素分析
第三节 年中国自助银行专用门禁机市场趋势分析
一、年中国自助银行专用门禁机市场发展总结
二、年中国自助银行专用门禁机发展趋势分析
三、年中国自助银行专用门禁机市场发展空间
四、年中国自助银行专用门禁机产业政策趋向
第十三章 年中国自助银行专用门禁机行业投资风险及战略研究
第一节 自助银行专用门禁机投资现状分析
一、年总体投资及结构
二、年投资规模情况
三、年投资增速情况
四、年分行业投资分析
五、年分地区投资分析
六、年情况
第二节 自助银行专用门禁机行业投资效益分析
一、年自助银行专用门禁机行业投资状况分析
二、年自助银行专用门禁机行业投资效益分析
三、年自助银行专用门禁机行业投资趋势预测
四、年自助银行专用门禁机行业的投资方向
五、年自助银行专用门禁机行业投资的建议
<div class="viewall showfull" style="cursor: " onclick="if($$('div.bgcon').getStyle('height')=='1300px') {$$('div.bgcon').setStyle('height', 'auto');$$('.showfull').set('html','<>');}">查看全部>>
报告标题:自助银行专用门禁机调研报告:年中国自助银行专用门禁机项目行业市场深度调研及投资战略研究分析报告
本文地址:
相关研究报告
商业专用设备报告
中国报告大厅简介
中国报告大厅(/)成立于2002年10月,是由宇博智业机构开通并运营的一家大型专业化市场研究网站,提供针对企业用户的各类信息,如深度研究报告、市场调查、统计数据等。
为了满足企业对原始数据的需求,也为了能给企业提供更为全面和客观的研究报告,中国报告大厅与国内各大数据源(包括政府机构、行业协会、图书馆、信息中心等权威机构)建立起战略合作关系。
经过多年的努力,中国报告大厅与国内100多家最优质研究公司建立良好的合作关系,推出超过50000份有价值的研究报告,中国报告大厅目标是打造一个真正的一站式服务的多用户报告平台。中国报告大厅汇聚全国各大市场研究信息生产商的研究成果,正是依托独有的资源优势,为客户提供最准确、最及时、最权威、最专业的研究报告。
最新研究报告
甲级工程咨询单位资格证书
涉外调查许可证
甲级工程咨询单位资格证书
企业法人营业执照
团体会员证书
电信与信息服务业务经营许可证
山东星科智能科技有限公司
辽宁省石油化工规划设计院有限公司
四川久大制盐有限责任公司
全国免费服务热线:400-817-8000
北京客户服务专线:010-
厦门客户服务专线:
商业计划书:010-
专项调研报告:010-
个性定制报告:010-
报告合作专线:010-
传真:010-92-5337137
个性定制小提示:勾选提交定制
勾选要了解的自助银行专用门禁机报告定制需求
基础调研市场调研供应商调研竞厂竞品调研消费者调研渠道调研深度研究需求深度研究竞争深度研究企业深度研究市场策略研究行业风险分析新品上市研究行业发展前景分析可行性研究商业计划书解决方案融资IPO培训服务IT服务咨询品牌策划
热门搜索:
手机二维码扫一扫
A. 电话订购:400-817-8000
B. 邮件订购:
C. 网上订购:
D. 直接到我公司上门购买:
温馨提示:
1、购买报告请认准“中国报告大厅”网站,公司从未通过第三方代理,请来电购买。
2、中国报告大厅欢迎广大客户上门洽谈购买。
我们的优势
我们的优势丰富的信息资源
 宇博智业依托国家发展改革委和国家信息中心系统丰富的数据资源,以及国内其他各大数据源(包括行业协会、图书馆、相关研究机构等)建立的战略合作关系,建成了独具特色和覆盖全面的产业监测体系。
专业的研究团队
 公司人员拥有不同背景和资历的研究人员,每份报告都由多年从事相关行业的资深研究员撰写,他们长期专门从事行业研究,掌握着大量的第一手资料;同时,为保证研究成果的前瞻性,我们与国内众多研究机构和专家有着密切的合作关系。
 ①宇博智业创立于2002年,中国最早的市场研究机构之一;②公司拥有强大的调研团队,能为报告的撰写提供可靠的一手资料。③研究人员根据对中国文化的深刻理解,实现国际领先研究方法与本土实践经验巧妙结合。
售前售后服务
 公司拥有一批专业的业务人员,将根据您的需求,为您提供详细的解答并提供相符合的报告目录;报告售出后,我们的研究人员将会为您提供全程的后续修改及补充服务。
赠送增值服务
 购买我们研究报告可获赠报告大厅数据中心会员资格,全方面了解行业动态。
& 2015 中国报告大厅(),首选市场研究报告门户,提供海量的行业报告及市场前景研究报告。
服务热线:北京:010-- 传真:010- E-mail:
福建: &&&&传真:
中文域名:.com
中国报告大厅—宇博智业市场研究中心主办,旗下网站
京ICP备号-2&&京公网安备802(客服热线)
<a title="<@64917:河南航盛导航...客服热线:(028) 信息发布:028-
本网公告:
&&●热烈欢迎四川本草堂药业有限公司、成都晨越建设项目管理股份有限公司、成都盛合科技有限公司、四川省创世亚中医疗仪器有限责任公司、四川朋丰电力工程有限公司、成都龙士达科技有限公司、成都图绅服饰有限公司、中豪律师集团(四川)事务所、成都慧安注册安全工程师事务所、四川中安电梯有限责任公司、成都市双虎实业有限公司、凉山州现代农林开发有限公司、成都康威医疗器械有限公司、四川京川服饰有限责任公司、温江实业建筑有限责任公司、上海熊猫机械(集团)有限公司成都分公司、四川胜任力人力资源测评咨询有限公司、成都中科数据信息有限公司、德阳银行股份有限公司、成都市东方电力线路构件厂、四川公共安全产业有限公司、四川泰兴建设管理有限责任公司本周加入中国西部招标采购供方数据库。
招投标动态
当前位置:四川招投标网 ->
中国石油化工股份有限公司巴陵分公司巴陵石化综合事务管理系统项目一卡通管理系统含门禁考勤餐饮等招标公告
四川省巴中市
所属行业:
截止时间:
=招标代理:中国石化国际事业有限公司招标人:中国石油化工股份有限公司巴陵分公司中国石化国际事业有限公司受中国石油化工股份有限公司巴陵分公司委托,对巴陵石化综合事务管理系统项目 所需一卡通管理系统含门禁考勤餐饮等进行公开招标。今发布公告,请符合条件的投标人报名参加。1.招标编号: WZ1-235-B1特别提示:详细信息,请登录查看!
您暂时只能查看部分信息,如果您是本网会员请登陆后查阅全部信息。
如果您需要解决登录及其他问题,请您与四川招投标网客户中心联系:
客服热线:028-传真号码:028-电子邮件:
&&&&&&&&&&&&&&&&
四川招投标网()是由中国西部10省、直辖市、自治区招标局(招标集团、招标中心)协作指导的西部招投标领域门户网站,它是四川省招投标领域对外展示的窗口,也是加速企业信息化建设,推动企业与政府、企业与企业进行全方位的双向、多向沟通的电子商务平台。
立足川陕渝 服务大西部 欢迎加盟四川招投标网
诚征西部招投标合作伙伴:028-
友情链接:
协作指导:西部10省、直辖市、自治区招标局&《四川省政府采购指南》编辑委员会
运营维护:&&网站地址:成都市青羊区槐树街75号
本网常年法律顾问:北京市惠诚(成都)律师事务所
Copyright (c) 2010 . All rights reserved.
四川招投标网技术支持电话:(8:30-18:00)028- 四川招投标网值班电话:
官方微信订阅号
四川招投标家园
用微信 查标讯
四川招投标网
新浪官方微博门禁系统项目驱动程序(51单片机)
单片机&嵌入式
单片机应用
嵌入式操作系统
学习工具&教程
学习和开发单片机的必备工具
(有问必答)
(带你轻松入门)
电子元件&电路模块
当前位置: >>
>> 浏览文章
门禁系统项目驱动程序(51单片机)
/*****************************************************************************
&&&门禁系统项目驱动程序
&(1)晶振 11.0592MHZ
&(2)芯片 DS1302,AT24C64,HEF4053BP
&(3)ZIMO21.EXE纵向、字节倒序取字模
(4)完整代码下载(包含头文件):
*****************************************************************************/
#include &reg51.h&
#include &intrins.h&
#include &7041_Door.h&&&&//字模
#define LCD_DATA P1&//液晶屏数据输入
#define EEAddr EAddr.All&//AT24C64片内地址
#define EAddrH EAddr.array[0]
#define EAddrL EAddr.array[1]
#define uchar unsigned char
#define uint unsigned int
union Add{&&&&& //定义EEPROM地址
&&&&&&& uint A
&&&&&&& uchar array[2];
uchar Sto = 1,Del = 0;
uint DelC&&//定时器中断中用于延时的变量DelCount
uchar Function = 0;&//按键功能变量Function
uchar SCount = 0;&//串行中断中用于计数卡号信息的循环变量
bit TimeDisFlag = 0,KEndFlag = 0,StoreFlag = 0,DeleteFlag = 0,SwitchFlag = 0,WXFlag = 0,NSK12Flag = 0;&//控制时间显示标志位TimeDisFlag,14位卡号接收完的标志KEndFlag
uchar CardNo[14] = {0},GetTime[7],RD24C64[32] = 0,CardMax = 0,CardNum = 0;//存储读到的卡号CardNo[14],存储从1302读到的时间GetTime[7],存入卡的个数CardMax
/*---------------------------------定义P口-----------------------------------*/
sbit LCD_RS = P2^7;& //LCD12864
sbit LCD_RW = P2^6;
sbit LCD_E = P2^5;
sbit LCD_CS1 = P2^4;
sbit LCD_CS2 = P2^3;
sbit Busy = P1^7;
sbit Motor2 = P3^7;
sbit Motor1 = P3^6;
sbit SDA_24C64 = P3^5;&//AT24C64
sbit SCL_24C64 = P3^4;
sbit CLK_1302 = P2^2;&//DS1302
sbit IO_1302 = P2^1;
sbit RST_1302 = P2^0;
sbit RS_485 = P3^2;&//485R/S,其为1时允许发送,为0时允许接收
sbit CON_4053 = P3^3;&//通信控制,其为1时读卡,为0时485通信
sbit KEY1 = P0^0;&//定义按键
sbit KEY2 = P0^1;
sbit KEY3 = P0^2;
sbit KEY4 = P0^3;
/***************************液晶屏驱动程序*********************************/
void LCD_BusyCheck(bit BCS){&//检测忙子程序
&LCD_DATA = 0&//LCD_RS = 0,LCD_RW = 1,LCD_E = 高电平。
&LCD_RS = 0;
&LCD_RW = 1;
&if(BCS){&&//检测片1忙状态
&&LCD_CS1 = 1;
&&LCD_E = 1;
&&while(Busy);
&&LCD_E = 0;
&&LCD_CS1 = 0;
&else{&&&//检测片2忙状态
&&LCD_CS2 = 1;
&&LCD_E = 1;
&&while(Busy);
&&LCD_E = 0;
&&LCD_CS2 = 0;
void LCD_Write_Code(uchar WCode,bit CS){//写指令子程序
&LCD_BusyCheck(CS);&&//调用忙检测子程序:写前检测
&LCD_DATA = WC
&LCD_RS = 0;&//LCD_RS = 0,LCD_RW = 0,LCD_E = 高脉冲。
&LCD_RW = 0;
&if(CS){&&&//检测片1忙状态
&&LCD_CS1 = 1;
&&LCD_E = 1;
&&_nop_();
&&LCD_E = 0;
&&LCD_CS1 = 0;
&else{&&&//检测片2忙状态
&&LCD_CS2 = 1;
&&LCD_E = 1;
&&_nop_();
&&LCD_E = 0;
&&LCD_CS2 = 0;
void LCD_Write_Data(uchar WData,uchar CS){&//写数据子程序
&LCD_BusyCheck(CS);&&//调用忙检测子程序:写前忙状态检测
&LCD_DATA = WD
&LCD_RS = 1;&//LCD_RS = 1,LCD_RW = 0,LCD_E = 高脉冲。
&LCD_RW = 0;
&if(CS){&&&//检测片1忙状态
&&LCD_CS1 = 1;
&&LCD_E = 1;
&&_nop_();
&&LCD_E = 0;
&&LCD_CS1 = 0;
&else{&&&//检测片2忙状态
&&LCD_CS2 = 1;
&&LCD_E = 1;
&&_nop_();
&&LCD_E = 0;
&&LCD_CS2 = 0;
void LCD_Write(uchar xpos,uchar ypos,uchar WData){//写屏子(地址转换)程序
&uchar WCS;
&if(xpos & 64)&WCS = 1;&//判断将要操作片1或片2:WCS = 1操作LCD_CS1
&else &WCS = 0;&&//WCS = 2 操作LCD_CS2
&ypos &= 0x07;&&&//页地址转换
&ypos |= 0xb8;
&LCD_Write_Code(ypos,WCS);&//写入页地址到对应片
&xpos &= 0x3f;&&&//列地址转换
&xpos |= 0x40;
&LCD_Write_Code(xpos,WCS);&//写入列地址到对应片
&LCD_Write_Data(WData,WCS);&//写入数据到对应片
void LCD_Data_DisWord(uchar xpos,uchar ypos,uchar array[]){//汉字显示子程序:12*16
&uchar Cnt = 0,x = 0,y = 0;
&for(y =y & ypos + 2;y ++){
&&for(x =x & xpos + 12;x ++,Cnt ++)
&&&LCD_Write(x,y,array[Cnt]);&//调用写屏子程序:在对应的地址上写入要显示的内容
void LCD_Data_DisNum(uchar xpos,uchar ypos,uchar array[]){//数字及符号显示子程序:6*16
&uchar Cnt = 0,x = 0,y = 0;
&for(y =y & ypos + 2;y ++){
&&for(x =x & xpos + 6;x ++,Cnt ++)
&&&LCD_Write(x,y,array[Cnt]);&//调用写屏子程序:在对应的地址上写入要显示的内容
void LCD_All_Clear(void){//清屏子程序:全屏清0
&uchar x,y;
&for(y = 0;y & 8;y ++)
&&for(x = 0;x & 128;x ++)
&&&LCD_Write(x,y,0x00);&//调用写屏子程序:全屏写0
void LCD_Page_Clear(uchar yPage){//清屏子程序:清除以所给页坐标为起始的两页的内容
&uchar x,y;
&for(y = yPy & yPage + 2;y ++)
&&for(x = 0;x & 128;x ++)
&&&LCD_Write(x,y,0x00);&//调用写屏子程序:以所给页坐标为起始的两页写0
void LCD_Reset(void){//液晶屏初始化设置
&LCD_E = 0;
&LCD_Write_Code(0x3f,1);&&//开片1显示
&LCD_Write_Code(0x3f,0);&&//开片2显示
&LCD_Write_Code(0xc0,1);&&//设片1起始行显示
&LCD_Write_Code(0xc0,0);&&//设片2起始行显示
/******************************DS1302时钟程序*******************************/
void DS1302_WriteByte(uchar WData){&&& //写入一个字节
&& &for(Cnt=0;Cnt&8;Cnt++){
&&&&&& &&WData &&= 1;&//写入数据时先写低位再写高位(D0---D7)
&&&&&&&& CLK_1302 = 0;
&&&&&&&& IO_1302 = CY;
&&CLK_1302 = 1;& //上升沿将数据写入1302
uchar DS1302_ReadByte(){&&&&&& //读出一个字节
&& &uchar Cnt,RData = 0;
&&&&&&& for(Cnt = 0;Cnt & 8;Cnt ++){
&&RData &&= 1;&//读数据时先读低位再读高位(D0---D7)
&&&&&&&&&&&&&&& CLK_1302 = 1;
&&&&&&&& CLK_1302 = 0;& //下降沿将数据读出来
&&&&&&&& if(IO_1302)
&&&RData |= 0x80;
&&else&RData &= 0x7f;
&return RD
void DS1302_WriteData(uchar Waddr,uchar Wdata){& //向某地址中写入一个字节的数据
&RST_1302 = 0;
&CLK_1302 = 0;
&RST_1302 = 1;
&DS1302_WriteByte(Waddr);//写入地址
&DS1302_WriteByte(Wdata);//写入数据
&CLK_1302 = 0;
&RST_1302 = 0;
uchar DS1302_ReadData(uchar RAddr){&& //读取1302某地址中一个字节的数据
&&& &uchar R
&RST_1302 = 0;
&CLK_1302 = 0;
&RST_1302 = 1;
&DS1302_WriteByte(RAddr);&//写入读取数据的地址
&Rdata = DS1302_ReadByte();&//读取数据
&RST_1302 = 0;
&IO_1302 = 1;
&return(Rdata);
void DS1302_SetTime(){&&&&& //设置1302时间
&&&& &uchar Cnt,Add = 0x80;//秒 寄存器的写地址0x80
&&&& &&&// 秒&& 分&& 时&& 日&& 月 星期 年
&uchar STime[7] = {0x00,0x19,0x14,0x18,0x07,5,0x08};
&&&& &DS1302_WriteData(0x8e,0x00);&//禁止写保护(可写入数据)
&&&& &for(Cnt = 0;Cnt & 7;Cnt ++,Add += 2)//循环写入秒,分,时,日,月,星期,年
&&&& &&DS1302_WriteData(Add,STime[Cnt]);
&&& &DS1302_WriteData(0x8e,0x80);&//写保护(不能写入数据)
void DS1302_GetTime(){&&& //读取1302中当前时间
&uchar Cnt,Addr = 0x81;//秒 寄存器的读地址0x81
& &for(Cnt = 0;Cnt & 7;Cnt ++,Addr += 2)//循环读取秒,分,时,日,月,星期,年
& &&GetTime[Cnt] = DS1302_ReadData(Addr);
/**************************液晶屏显示程序******************************/
void LCD_DisTime(){&&//显示从1302读取的时间
&DS1302_GetTime();
&LCD_Data_DisNum(32,0,num[GetTime[6] && 4]);&//年(由1302循环读出显示)
&LCD_Data_DisNum(38,0,num[GetTime[6] & 0x0f]);
&&&&&&& LCD_Data_DisNum(50,0,num[GetTime[4] && 4]);&//月
&LCD_Data_DisNum(56,0,num[GetTime[4] & 0x0f]);
&LCD_Data_DisNum(68,0,num[GetTime[3] && 4]);&//日
&&&&&&& LCD_Data_DisNum(74,0,num[GetTime[3] & 0x0f]);
&LCD_Data_DisNum(122,0,num[GetTime[5]]);&//星期
&LCD_Data_DisNum(32,2,num[GetTime[2] && 4]);&//时
&LCD_Data_DisNum(38,2,num[GetTime[2] & 0x0f]);
&&&&&&& LCD_Data_DisNum(50,2,num[GetTime[1] && 4]);&//分
&LCD_Data_DisNum(56,2,num[GetTime[1] & 0x0f]);
&LCD_Data_DisNum(68,2,num[GetTime[0] && 4]);&//秒
&&&&&&& LCD_Data_DisNum(74,2,num[GetTime[0] & 0x0f]);
void LCD_DisCell(){//显示固定不变的内容(日期,时间等汉字及符号的显示)(图1~4)
&LCD_Data_DisWord(2,0,ri);
&LCD_Data_DisWord(14,0,qi);
&&&&&&& LCD_Data_DisNum(26,0,maohao);
&&&&&&& LCD_Data_DisNum(44,0,heng);
&&&&&&& LCD_Data_DisNum(62,0,heng);
&&&&&&& LCD_Data_DisWord(92,0,xing);
&LCD_Data_DisWord(104,0,qi);
&LCD_Data_DisNum(116,0,maohao);
&&&&&&& LCD_Data_DisWord(2,2,shi);
&LCD_Data_DisWord(14,2,jian);
&&&&&&& LCD_Data_DisNum(26,2,maohao);
&&&&&&& LCD_Data_DisNum(44,2,heng);
&&&&&&& LCD_Data_DisNum(62,2,heng);
void LCD_Display1(){&&//无操作状态时显示内容
&LCD_DisCell();
&&&&&&& LCD_Data_DisWord(34,4,wu);&//无操作状态
&LCD_Data_DisWord(46,4,cao);
&LCD_Data_DisWord(58,4,zuo);
&LCD_Data_DisWord(70,4,zhuang);
&LCD_Data_DisWord(82,4,tai);
void LCD_Display2(){&//刷卡后显示此卡有效或无效
&&&&&&& LCD_Data_DisWord(2,4,ka);&//显示刷卡后的卡号
&LCD_Data_DisWord(14,4,hao);
&LCD_Data_DisNum(26,4,maohao);
void LCD_Display3(){&//显示电机状态:打开或关闭
&//LCD_DisCell();&&//显示固定不变的内容
&&&&&&& LCD_Data_DisWord(2,4,dian);&//电机状态
&LCD_Data_DisWord(14,4,ji);
&LCD_Data_DisWord(26,4,zhuang);
&LCD_Data_DisWord(38,4,tai);
&LCD_Data_DisNum(50,4,maohao);
void LCD_Display4(){&&//显示数据上传过程:上传成功或失败
&&&&&&& LCD_Data_DisWord(2,4,shu);&//数据上传
&LCD_Data_DisWord(14,4,ju);
&LCD_Data_DisWord(26,4,shang);
&LCD_Data_DisWord(38,4,chuan);
&LCD_Data_DisNum(50,4,maohao);
&LCD_Data_DisWord(56,4,kuang1);
&LCD_Data_DisWord(68,4,kuang1);
&LCD_Data_DisWord(80,4,kuang1);
&LCD_Data_DisWord(92,4,kuang1);
&LCD_Data_DisWord(104,4,kuang1);
&LCD_Data_DisWord(116,4,kuang1);
&&LCD_Data_DisWord(35,6,cheng);
&&LCD_Data_DisWord(47,6,gong);
&&LCD_Data_DisWord(75,6,shibai);
&&LCD_Data_DisWord(87,6,bai);
void LCD_Display5(){&&//显示存卡过程:存入或取消存储
&&&&&&& LCD_Data_DisWord(2,0,cun);&//存卡
&LCD_Data_DisWord(14,0,ka);
&LCD_Data_DisWord(2,2,ka);&//卡号
&LCD_Data_DisWord(14,2,hao);
&LCD_Data_DisNum(26,2,maohao);
void LCD_Display6(){&&//显示卡号删除过程:确认删除或取消删除
&&&&&&& LCD_Data_DisWord(2,0,liu);&//浏览卡号
&LCD_Data_DisWord(14,0,lan);
&LCD_Data_DisWord(26,0,ka);
&LCD_Data_DisWord(38,0,hao);
&LCD_Data_DisWord(2,2,ka);&//卡号显示
&LCD_Data_DisWord(14,2,hao);
&LCD_Data_DisNum(26,2,maohao);
&LCD_Data_DisWord(35,4,shan);
&LCD_Data_DisWord(47,4,chu);
&LCD_Data_DisWord(75,4,qu);
&LCD_Data_DisWord(87,4,quxiao);
/******************************AT24C64存储程序*******************************/
void I2C_Start(void){&//I2C总线启动
&SCL_24C64 = 1;
&SDA_24C64 = 1;
&SDA_24C64 = 0;
void I2C_Stop(void){&//I2C总线通信结束
&SCL_24C64 = 0;
&SDA_24C64 = 0;
&SCL_24C64 = 1;
&SDA_24C64 = 1;
void I2C_ACK_Send(bit ack){//发送返回帧
&SDA_24C64 =
&SCL_24C64 = 1;
&SCL_24C64 = 0;
&SDA_24C64 = 1;&//释放总线
bit I2C_ACK_Receive(){//接收返回帧
&bit ACKR;
&SDA_24C64 = 1;&//释放总线
&SCL_24C64 = 1;
&ACKR = SDA_24C64;
&&&&&&& SCL_24C64 = 0;
&return ACKR;
void I2C_SendByte(uchar WData){&//写入一个字节的数据
&SCL_24C64 = 0;
&for(Count = 0;Count & 8;Count ++){
&&WData &&= 1;
&&SDA_24C64 = CY;
&&SCL_24C64 = 1;&//下降沿写入数据
&&_nop_();
&&SCL_24C64 = 0;
uchar I2C_ReceiveByte(){&//读出一个字节的数据
&uchar Count,RD
&SCL_24C64 = 0;
&for(Count = 0;Count & 8;Count ++){
&&RData &&= 1;
&&SCL_24C64 = 1;&//高电平读出数据
&&_nop_();
&&if(SDA_24C64)
&&&RData |= 0x01;
&&else&RData &= 0
&&SCL_24C64 = 0;
&return RD
void I2C_Write_AT24C64(uchar WAddrH,uchar WAddrL,uchar *Point,uchar WNum){//向WAddrH,WAddrL为首地址的页中写入WNum个字节
&bit ACK;uchar C
&&I2C_Start();&//启动通信
&&&I2C_SendByte(0xa0);&//AT24C64的写地址
&&& &&&& &ACK = I2C_ACK_Receive();
&}while(ACK);
&&&I2C_SendByte(WAddrH); //写字节高地址
&&&& &&& &ACK = I2C_ACK_Receive();
&&&& &}while(ACK);
&&I2C_SendByte(WAddrL); //写字节低地址
&&&& &ACK = I2C_ACK_Receive();
&}while(ACK);
&for(Cnt = 0;Cnt & WNCnt ++,Point ++){&//循环写入WNum个字节
&&I2C_SendByte(*Point);& //写的内容
&&&&&&&& ACK = I2C_ACK_Receive();
&&}while(ACK);
&I2C_Stop();&& &//通信结束
uchar I2C_Read_AT24C64(uchar WAddrH,uchar WAddrL,uchar RNum){&//从WAddrH,WAddrL为首地址的页中读取RNum个字节
&uchar C&//一页最多32个字节
&&I2C_Start();&//启动通信
&&&I2C_SendByte(0xa0);//AT24C64的写地址
&&&&&&&&&&& &ACK = I2C_ACK_Receive();
&&&&&&& }while(ACK);
&&I2C_SendByte(WAddrH);&//写入地址的高5位
&&&& &ACK = I2C_ACK_Receive();
&}while(ACK);
&&I2C_SendByte(WAddrL);&//写入地址的低8位
&&&& &ACK = I2C_ACK_Receive();
&}while(ACK);
&I2C_Start();&//再次启动通信
&&I2C_SendByte(0xa1);&//AT24C64的读地址
&&&& &ACK = I2C_ACK_Receive();
&}while(ACK);
&for(Cnt = 0;Cnt & RNCnt ++){&//循环读取RNum个字节
&&RD24C64[Cnt] = I2C_ReceiveByte();
&&if(Cnt != RNum - 1)
&&&I2C_ACK_Send(0);
&I2C_ACK_Send(1);&//读取最后一个字节的数据后的返回帧
&I2C_Stop();&//通信结束
void AT24C64Init(){&//24C64初始化
&//I2C_Write_AT24C64(0x00,0x1f,&CardMax,1);&//将存储卡的最大数目初始化为0
&//I2C_Write_AT24C64(0x00,0x1e,&CardNum,1);&//将存储卡的数目初始化为0
&I2C_Read_AT24C64(0x00,0x1f,1);&//读取0x00,0x1f地址中的内容,其为存储卡过程中曾存卡的最多个数
&CardMax = RD24C64[0];&//将读取的数据存入卡数目最大值变量CardMax中
&I2C_Read_AT24C64(0x00,0x1e,1);&//读取0x00,0x1e地址中的内容,其为存储卡的数目
&CardNum = RD24C64[0];&//将读取的数据存入卡数目变量CardNum中
&EEAddr = 0x0000;&//将24C64的地址初始化到首地址
/******************************按键控制程序*********************************/
void KeyScan(){&&//按键扫描
&if(!KEY1){
&&DelCount = 0;
&&while(DelCount & 2);
&&if(!KEY1){
&&&while(!KEY1);
&&&Function = 1;
&if(!KEY2){
&&DelCount = 0;
&&while(DelCount & 2);
&&if(!KEY2){
&&&while(!KEY2);
&&&Function = 2;
&if(!KEY3){
&&DelCount = 0;
&&while(DelCount & 2);
&&if(!KEY3){
&&&while(!KEY3);
&&&Function = 3;
&if(!KEY4){
&&DelCount = 0;
&&while(DelCount & 2);
&&if(!KEY4){
&&&while(!KEY4);
&&&Function = 4;
void KeyFunc(){&&//按键功能分配
&uchar Cnt = 0;
&bit CFlag = 0;&//待存入的卡与EEPROM中的卡号比较标志位
&switch(Function){&//具体按键功能分配程序
&&case 1:&if(!SwitchFlag){//切换标志位,用于存卡及浏览卡号时上翻
&&&&TimeDisFlag = 1;//存储卡号期间主函数运行时不再显示时间
&&&&KEndFlag = 0;&//确认在进入存卡系统后刷卡有效,否则无效
&&&&WXFlag = 1;&//按下KEY1后,接着按key2无效
&&&&StoreFlag = 1;&//存储标志位,0为无效,1为存储
&&&&LCD_All_Clear();&//清全屏
&&&&LCD_Display5();&//显示存卡界面
&&&&while(!KEndFlag);//等待刷卡后读取卡信息结束
&&&&&&&&&&&&&&&&&&&&&&&& KEndFlag = 0;&//确认在进入存卡系统后刷卡有效,否则无效
&&&&&&&& &&for(Cnt = 1;Cnt & 11;Cnt ++){&//显示读取的卡号
&&&&&&&& &&&if(CardNo[Cnt] &= 0x40)
&&&&&&&& &&&&LCD_Data_DisNum(32 + Cnt * 6,2,num[CardNo[Cnt]-0x40+10]);
&&&&&&&& &&&else&LCD_Data_DisNum(32 + Cnt * 6,2,num[CardNo[Cnt]-0x30]);
&&&&&&&& &&}
&&&&LCD_Data_DisWord(35,4,cun);&//显示汉字&存入&&取消&
&&&&LCD_Data_DisWord(47,4,ru);
&&&&LCD_Data_DisWord(75,4,qu);
&&&&LCD_Data_DisWord(87,4,quxiao);
&&&if(SwitchFlag){&//浏览卡号时上翻功能
&&&&if(!NSK12Flag){
&&&&&while(1){
&&&&&&if(EEAddr == 0x0000)
&&&&&&&EEAddr = 0x0000 + (CardMax - 1) * 0x20;
&&&&&&else&EEAddr -= 0x20;&//24C64存储时一页存储一张卡号
&&&&&&I2C_Read_AT24C64(EAddrH,EAddrL,12);&//读取24C64中存储的卡号
&&&&&&&&& &&&if(RD24C64[0] == 1){&//从24C64EEAddr地址中读取的卡号有效
&&&&&&&&& &&&&for(Cnt = 2;Cnt & 12;Cnt ++){&//显示读取的卡号
&&&&&&&&&&& &&&if(RD24C64[Cnt] &= 0x40)
&&&&&&&&&&& &&&&LCD_Data_DisNum(32 + (Cnt - 1) * 6,2,num[RD24C64[Cnt]-0x40+10]);
&&&&&&&&&&& &&&else&LCD_Data_DisNum(32 + (Cnt - 1) * 6,2,num[RD24C64[Cnt]-0x30]);
&&&&&&&&&&& &&}
&&&&&&&&&&& &&&//显示一个有效的卡号后退出
&&&&&&&&& &&&}
&&case 2:&if(!WXFlag){
&&&&if(SwitchFlag){&//浏览卡号时下翻功能
&&&&&if(!NSK12Flag){
&&&&&&while(1){
&&&&&&&EEAddr += 0x20;&//往下翻页
&&&&&&&if(EEAddr == 0x0000 + CardMax * 0x20)
&&&&&&&&EEAddr = 0x0000;
&&&&&&&I2C_Read_AT24C64(EAddrH,EAddrL,12);
&&&&&&&&&& &&&if(RD24C64[0] == 1){&//读取的卡号有效
&&&&&&&&&& &&&&for(Cnt = 2;Cnt & 12;Cnt ++){&//显示读取的卡号
&&&&&&&&&&&& &&&if(RD24C64[Cnt] &= 0x40)
&&&&&&&&&&&& &&&&LCD_Data_DisNum(32 + (Cnt - 1) * 6,2,num[RD24C64[Cnt]-0x40+10]);
&&&&&&&&&&&& &&&else&LCD_Data_DisNum(32 + (Cnt - 1) * 6,2,num[RD24C64[Cnt]-0x30]);
&&&&&&&&&&&& &&}
&&&&&&&&&&&& &&
&&&&&&&&&& &&&}
&&&&if(!SwitchFlag){&//删除卡号
&&&&&TimeDisFlag = 1;//删除卡号期间主函数运行时不再显示时间
&&&&&DeleteFlag = 1;&//删除标志位,0为无效,1为存储
&&&&&SwitchFlag = 1;
&&&&&LCD_All_Clear();&//清全屏
&&&&&I2C_Read_AT24C64(0x00,0x1e,1);
&&&&&&&& &&&CardNum = RD24C64[0];
&&&&&&&& &&&if(CardNum == 0)NSK12Flag = 1;
&&&&&for(EEAddr = 0x0000;EEAddr & 0x0000 + CardMax * 0x20;EEAddr += 0x20){//读出卡号和存储器中的卡号进行比较
&&&&&&&&& &&&I2C_Read_AT24C64(EAddrH,EAddrL,12);
&&&&&&&&& &&&if(RD24C64[0] == 1){
&&&&&&&&& &&&&for(Cnt = 2;Cnt & 12;Cnt ++){&//显示读取的卡号
&&&&&&&&&&& &&&if(RD24C64[Cnt] &= 0x40)
&&&&&&&&&&& &&&&LCD_Data_DisNum(32 + (Cnt - 1) * 6,2,num[RD24C64[Cnt]-0x40+10]);
&&&&&&&&&&& &&&else&LCD_Data_DisNum(32 + (Cnt - 1) * 6,2,num[RD24C64[Cnt]-0x30]);
&&&&&&&&&&& &&}
&&&&&&&&&&& &&
&&&&&&&&& &&&}
&&&&&&&&& &&}
&&&&&LCD_Display6();&//显示存卡界面
&&case 3:&if(StoreFlag){&//存储卡号
&&&&Cnt = 0;
&&&&for(EEAddr = 0x0000;EEAddr & 0x0000 + CardMax * 0x20;EEAddr += 0x20){//读出卡号和存储器中的卡号进行比较
&&&&&&&& &&&I2C_Read_AT24C64(EAddrH,EAddrL,12);
&&&&&&&& &&&if(RD24C64[0] == 1){
&&&&&&&&& &&&for(Cnt = 0;Cnt & 11;Cnt ++){&//11位卡号进行比较
&&&&&&&&& &&&&if(CardNo[Cnt] != RD24C64[Cnt + 1])&//比较过程中有不相等的就读下一内存
&&&&&&&&& &&&&&
&&&&&&&&& &&&}
&&&&&&&&& &&}
&&&&&&&& &&&if(Cnt == 11){&//一组数据比较过程中全部相等时,此卡已存在
&&&&&&&& &&&&CFlag = 1;
&&&&&&&& &&&&LCD_Page_Clear(4);//清除4,5页的显示内容
&&&&&&&& &&&&LCD_Data_DisWord(34,4,ci);&//显示&此卡已存在&
&&&&&&LCD_Data_DisWord(46,4,ka);
&&&&&&LCD_Data_DisWord(58,4,yi);
&&&&&&LCD_Data_DisWord(70,4,cun);
&&&&&&LCD_Data_DisWord(82,4,zai);
&&&&&&&& &&&}
&&&&&&& &&&}
&&&&&&&& &&if(!CFlag){
&&&&&&&& &&&I2C_Read_AT24C64(0x00,0x1e,1);
&&&&&&&& &&&CardNum = RD24C64[0];
&&&&&&&& &&&I2C_Read_AT24C64(0x00,0x1f,1);
&&&&&&&& &&&CardMax = RD24C64[0];
&&&&&&&& &&&if(CardNum == CardMax){&//往后边空间存储
&&&&&&&& &&&&EEAddr = 0x0000 + CardMax * 0x20;
&&&&&&I2C_Write_AT24C64(EAddrH,EAddrL,&Sto,1);//存入标志位,表示此页已存入卡号
&&&&&&DelCount = 0;&//延时10ms
&&&&&&while(DelCount & 2);
&&&&&&I2C_Write_AT24C64(EAddrH,EAddrL + 1,CardNo,11);&//存入11位卡号
&&&&&&DelCount = 0;&//延时10ms
&&&&&&while(DelCount & 2);
&&&&&&CardMax ++;
&&&&&&CardNum ++;
&&&&&&I2C_Write_AT24C64(0x00,0x1f,&CardMax,1);
&&&&&&DelCount = 0;&//延时10ms
&&&&&&while(DelCount & 2);
&&&&&&I2C_Write_AT24C64(0x00,0x1e,&CardNum,1);
&&&&&&&& &&&}
&&&&&&&& &&&else if(CardMax & CardNum){&//在CardMax范围内找空间存储
&&&&&&&& &&&&for(EEAddr = 0x0000;EEAddr & 0x0000 + CardMax * 0x20;EEAddr += 0x20){//读出卡号和存储器中的卡号进行比较
&&&&&&&&&& &&&I2C_Read_AT24C64(EAddrH,EAddrL,12);
&&&&&&&&&& &&&if(RD24C64[0] == 0){
&&&&&&&&&& &&&&I2C_Write_AT24C64(EAddrH,EAddrL,&Sto,1);//存入标志位,表示此页已存入卡号
&&&&&&&&DelCount = 0;&//延时10ms
&&&&&&&&while(DelCount & 2);
&&&&&&&&I2C_Write_AT24C64(EAddrH,EAddrL + 1,CardNo,11);&//存入11位卡号
&&&&&&&&&&& &&&CardNum ++;
&&&&&&&&&&& &&&DelCount = 0;&//延时10ms
&&&&&&&&while(DelCount & 2);
&&&&&&&&I2C_Write_AT24C64(0x00,0x1e,&CardNum,1);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&& &&}
&&&&&&&&& &&&}
&&&&&&&& &&&}
&&&&&LCD_Page_Clear(4);//清除4,5页的显示内容
&&&&&LCD_Data_DisWord(34,4,cun);&//显示&存入成功&
&&&&&LCD_Data_DisWord(46,4,ru);
&&&&&LCD_Data_DisWord(58,4,cheng);
&&&&&LCD_Data_DisWord(70,4,gong);
&&&&&&&& &&}
&&&&&&&& &&DelCount = 0;&//延时2s
&&&&&&&& &&StoreFlag = 0;
&&&&&&&& &&TimeDisFlag = 0;//返回后继续显示时间,时间显示标志为清零
&&&&while(DelCount & 400);
&&&&LCD_All_Clear();&//清全屏
&&&if(DeleteFlag){&//删除
&&&&I2C_Read_AT24C64(0x00,0x1e,1);
&&&&&&&& &&CardNum = RD24C64[0];
&&&&&&&& &&if(CardNum != 0){
&&&&&I2C_Write_AT24C64(EAddrH,EAddrL,&Del,1);
&&&&&DelCount = 0;&//延时10ms
&&&&&while(DelCount & 2);
&&&&&CardNum --;&//删除一张卡后卡的数量减1
&&&&&I2C_Write_AT24C64(0x00,0x1e,&CardNum,1);//存入标志位,表示此页已存入卡号
&&&&&LCD_Page_Clear(4);//清除4,5页的显示内容
&&&&&LCD_Data_DisWord(34,4,shan);&//显示&删除成功&
&&&&&LCD_Data_DisWord(46,4,chu);
&&&&&LCD_Data_DisWord(58,4,cheng);
&&&&&LCD_Data_DisWord(70,4,gong);
&&&&&DelCount = 0;&//延时2s
&&&&&while(DelCount & 400);
&&&&DeleteFlag = 0;
&&&&SwitchFlag = 0;
&&&&TimeDisFlag = 0;//返回后继续显示时间,时间显示标志为清零
&&&&LCD_All_Clear();&//清全屏
&&&NSK12Flag = 0;
&&&WXFlag = 0;
&&case 4:&if(StoreFlag || DeleteFlag){
&&&&TimeDisFlag = 0;//推出存储或删除,显示时间
&&&&StoreFlag = 0;
&&&&WXFlag = 0;
&&&&DeleteFlag = 0;
&&&&NSK12Flag = 0;
&&&&SwitchFlag = 0;
&&&&LCD_All_Clear();&//清全屏
&&default:
&Function = 0;
void TimeInit(void){&//定时器,串口初始化(定时器1作为波特率发生器[9600BPS],定时器0作为程序中的延时)
&TMOD = 0x21;&//定时器0,工作方式1,定时器1,工作方式2
&TH0 = 0&//定时器赋初值:5ms
&TL0 = 0x78;
&TR0 = 1;&//启动定时器0
&ET0 = 1;&//开定时器0中断
&TH1 = 0&//波特率发生器:9600BPS
&SCON = 0x50;&//串行工作方式1,允许接收
&PCON = 0x00;&//SMOD = 0
&ES = 1;&&//开串行通信中断
&EA = 1;&&//开中断总开关
/***************************主程序******************************/
&bit ComFlag = 0;
&CON_4053 = 1;//允许读卡
&Motor1 = 1;&//电机正转停止
&Motor2 = 1;&//电机反转停止
&TimeInit();&&//定时器,串口初始化
&LCD_Reset();&&//液晶屏初始化设置
&LCD_All_Clear();&//清全屏
&DS1302_SetTime();&//1302设置初始时间
&AT24C64Init();&//24C64初始化
&while(1){
&&if(!TimeDisFlag){
&&&LCD_Display1();
&&&&&&& &&LCD_DisTime();
&&&&&&& &KeyScan();&//按键扫描
&&&&&&& &KeyFunc();&//按键功能分配
&&&&&&& &if(KEndFlag){&&//卡号接收完毕
&&&&&&& &&//KEndFlag = 0;
&&&&&&& &&LCD_Page_Clear(4);//清除4,5页的显示内容
&&&&&&& &&LCD_Display2();
&&&&&&& &&for(Cnt = 1;Cnt & 11;Cnt ++){&//显示读取的卡号
&&&&&&& &&&if(CardNo[Cnt] &= 0x40)
&&&&&&& &&&&LCD_Data_DisNum(32 + Cnt * 6,4,num[CardNo[Cnt]-0x40+10]);
&&&&&&& &&&else&LCD_Data_DisNum(32 + Cnt * 6,4,num[CardNo[Cnt]-0x30]);
&&&&&&& &&}
&&&&&&&&&&&&&&&&&&&&&&& Cnt = 0;//显示卡号后Cnt已经是11,故先清零,以便下边比较卡号时使用Cnt == 11
&&&&&&& &&for(EEAddr = 0x0000;EEAddr & 0x0000 + CardMax * 0x20;EEAddr += 0x20){//读出卡号和存储器中的卡号进行比较
&&&&&&& &&&I2C_Read_AT24C64(EAddrH,EAddrL,12);
&&&&&&& &&&if(RD24C64[0] == 1){
&&&&&&& &&&&for(Cnt = 0;Cnt & 11;Cnt ++){&//11位卡号进行比较
&&&&&&& &&&&if(CardNo[Cnt] != RD24C64[Cnt + 1])&//比较过程中有不相等的就读下一内存
&&&&&&& &&&&&
&&&&&&& &&&&}
&&&&&&& &&&}
&&&&&&& &&&if(Cnt == 11){&//一组数据比较过程中全部相等时,显示有效并推出比较
&&&&&&& &&&&ComFlag = 1;//比较后的卡号相同
&&&&&&& &&&&LCD_Data_DisWord(70,6,you);&//显示&有效&
&&&&&LCD_Data_DisWord(82,6,xiao);
&&&&&DelCount = 0;&//延时100ms
&&&&&while(DelCount & 20);
&&&&&LCD_Page_Clear(4);//清除4,5页的显示内容
&&&&&LCD_Page_Clear(6);//清除6,7页的显示内容
&&&&&&& &&&}
&&&&&&& &&}
&&&&&&& &&LCD_DisTime();&//若比较卡号时耗时较长,及时读取时间显示
&&&&&&& &&if(!ComFlag){&//比较无此卡号时显示&无效&
&&&&LCD_Data_DisWord(100,6,wu);
&&&&LCD_Data_DisWord(112,6,xiao);
&&&&DelCount = 0;
&&&&&&&& &&while(1){
&&&&&&&& &&&LCD_DisTime();&//读取时间显示
&&&&&&&& &&&if(DelCount & 400){
&&&&&&&& &&&&LCD_Page_Clear(4);//清除4,5页的显示内容
&&&&&&&& &&&&LCD_Page_Clear(6);//清除6,7页的显示内容
&&&&&&&& &&&&
&&&&&&&& &&&}
&&&&&&&& &&}
&&&&&&& &&}
&&&&&&& &&if(ComFlag){
&&&&&&& &&&LCD_Display3();
&&&&LCD_Data_DisWord(60,4,da);
&&&&LCD_Data_DisWord(72,4,kai);
&&&&Motor1 = 0;&//电机正转
&&&&DelCount = 0;
&&&&while(1){&//电机正转中
&&&&&LCD_DisTime();&//时间显示
&&&&&if(DelCount & 600)
&&&&Motor1 = 1;&//电机正转停止
&&&&LCD_Data_DisWord(60,4,guan);
&&&&LCD_Data_DisWord(72,4,bi);
&&&&DelCount = 0;
&&&&while(1){&//等待人过去
&&&&&LCD_DisTime();&//时间显示
&&&&&if(DelCount & 600)
&&&&Motor2 = 0;&//电机反转
&&&&LCD_Data_DisWord(60,4,da);
&&&&LCD_Data_DisWord(72,4,kai);
&&&&DelCount = 0;
&&&&while(1){&//电机反转中
&&&&&LCD_DisTime();&//时间显示
&&&&&if(DelCount & 600)
&&&&Motor2 = 1;&//电机反转停止
&&&&DelCount = 0;
&&&&LCD_Data_DisWord(60,4,guan);
&&&&LCD_Data_DisWord(72,4,bi);
&&&&while(1){&//门关上上后延时2s
&&&&&LCD_DisTime();&//时间显示
&&&&&if(DelCount & 400)
&&&&LCD_Page_Clear(4);
&&&&LCD_Page_Clear(6);
&&&&&&& &&}
&&&&&&& &&ComFlag = 0;
&&&&&&& &&KEndFlag = 0;
&&&&&&& &}
void Serial() interrupt 4{&//串行中断入口地址
&&CardNo[SCount] = SBUF;
&&SCount ++;
&&if(SCount == 14){
&&&KEndFlag = 1;
&&&SCount = 0;
void Time0() interrupt 1{&//定时器0入口地址
&TH0 = 0&// 5ms
&TL0 = 0x78;
&DelCount ++;
【】【】【】【】
上一篇:下一篇:
CopyRight @
单片机教程网
, All Rights Reserved}

我要回帖

更多关于 去哪里找唐雨柔 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信