基于51单片机的24C64驱动程序
基于51单片机的公交,智能收费系统

设计的基本思想:一有Mifare1射频卡距离射频天线100mm内时,读写器就能够获取到卡中的数据信息。然后单片机把读取得数据进行处理,条件符合,蜂呜器就响一声。然后把数据跟当时的时间同时储存在单片机EEPROM内.接着在LED上显示所读数据。然而当无卡在其工作范围时,就会在LED上显示此刻的时间。如果读卡出错,则显示出错的标志。在和上位机通讯时,把单片机里EEPROM存入的信息发向上位机。
然而TYPE A标准。则是目前运用较多的一种标准MIFARE标准。TYPE B与A的主要不同是卡跟读写器的调制方式的差异。而TYPE A采用的则是间断的调制原理,信息“1”为时,即有信号传到卡,信息显示是“0”时,则就无信号传到卡,并且时间的间隔非常短暂,基本不会影响到卡的正常工作。用这种方式信息区量到非接触卡的时候,能量会有几率发生波动。
Technology and methods of the research of this design not only for bus intelligent charging system plays an important role, but also in other fields such as campus card, attendance card also has extensive application value。
1.2 本文的内容
此设计研究的是公交智能收费系统(B)标准,其重点进行卡的读写程序设计,它是以非接触式通信为技术基础。
本课题设计是以射频技术为基础,铺以单片机编程来控制MF RC500的读写卡操作,然后卡里的内容跟时钟信息一起存放在存储器里,然后显示模块显示卡的扣除费用金额等,同时蜂鸣器在操作无误时就响一声。而DS1232为控制芯片,能解决程序跑飞的问题。然而在存储器存储的信息到顶时,就会通过TC232和上位机相接,然后把信息发给PC机。
基于单片机的简易收款机的设计 (3)

XXXXX大学本科毕业设计基于单片机的简易收款机的设计学生姓名所在系专业名称班级学号指导教师基于单片机的简易收款机的设计学生:指导教师:内容摘要:随着全球信息化的发展,人们的生活水平也不断在提高,人们所需要的商品也越来越多,各大规模的超市也随之涌现,超市里的商品品种和数量数不胜数,以致于不可能完全依靠人来管理。
本设计正是基于此,解决超市人工收款任务不方便的问题.本设计是基于Atmel公司AT89C51的简易超市收款机控制的设计。
通过4X4矩阵键盘,液晶显示器(字符型1602),串行铁电存贮器(24C64),串行通讯口和单片机(AT89C51)的配合,以程控的方式完成收款的目的,系统采用Atmel公司1989年生产的AT89C51单片机为核心控制器,完成简易超市收款机的基本功能。
通过矩阵键盘输入商品号,系统经过一系列的分析处理,输出商品号,数量,单价和总价等基本信息.关键词:矩阵键盘字符型液晶显示铁电存贮I2CSimple cash register based on single-design Abstract:With the development of global information, people's living standards have also continued to improve, people need more and more merchandise, the large-scale supermarkets also the emergence of the supermarket variety and quantity of merchandise just to name a few that do not may completely rely on to manage people. The design is based on this, the settlement of receivables design artificial supermarket. through the 4X4 matrix keyboard, liquid crystal display (character 1602), serial ferroelectric memory (24C64), using Atmel Corporation 1989 production AT89C51 single-chip microcomputer as the core controller, complete the summary of the basic functions of supermarket cash registers, through the matrix keyboard input No. merchandise, the system through a series of analytical processing, the output of goods number, quantity, unit price, total price of such basic information. Key words:Matrix keyboard character LCD ferroelectric memory I2C目录一、引言 (1)(一)本设计的背景 (1)(二)本设计的目的和意义 (1)二、总体方案设计 (2)(一)方案设计 (2)(二)方案论证与选择 (2)三、系统硬件电路设计 (4)(一)单片机及其外围电路设计 (4)(二)键盘电路的设计 (5)(三)、显示电路的设计 (6)(四)存储器电路的设计 (10)(五)串行通信接口电路的设计 (12)四、系统软件程序设计 (14)(一)单片机内部数据处理程序 (14)(二)键盘处理程序 (15)(三)LCD液晶显示程序 (16)(四)串口通信程序 (17)(五)存储器程序 (18)五、设计总结 (19)六、致谢 (19)附录 (20)附录一硬件原理图 (20)附录二硬件PCB图 (21)附录三原程序代码 (22)参考文献 (30)一、引言(一)本设计的背景当前,单片机被广泛地应用于人们生活的各个领域。
24c02读写程序大全

CLR SCLK24
CALL START24;启动
MOV A,#0A0H
CALL SHIFT8;移位
CALL ACK;响应
POP ACC
>SETB;应答毕,SDA置1
>RET
>程序中多处调用了DELAY子程序(仅两条NOP指令),这是为了满足I2C总线上数据传
送速率的要求,只有当SDA数据线上的数据稳定下来之后才能进行读写(即SCL线发出正
脉冲)。另外,在读最后一数据字节时,置应答信号为“1”,表示读操作即将完成。
>
>下面是本人编写的源程序,已经调试成功,下载就可以使用,程序编写的不是很规范
>ACALL SUBS
>MORE: ACALL SUBR
>MOV@R1,A
>INCR1
>DJNZ R7,MORE
>CLR
>ACALL DELAY
>SETB
>ACALL DELAY
>SETB;送停止信号
>RET
>SUBR: MOVR0,#08H ;接受单字节子程序
>LOOP2: SETB
>ACALL DELAY
TT2:MOV30H,A
MOVCA,@A+DPTR
CLR;开数码管
MOVP0,A;送显示
MOVA,30H
INCA
MOVB,A
MOVA,#00H
LCALLWT24
AJMP$
TAB:DB28H,7EH,0A2H,62H,74H,61H,21H,7AH,20H,60H
RD24: PUSH ACC;读24C02子程序。
北工大电子工程设计基于温控系统的打印机应用(电信实验班版)

电子工程设计报告温度控制系统的定时测量、定时控制、数据记录专业:电子信息工程小组:04B 组姓名学号: xxxx指导教师:高新完成日期:2015-4-21本项目是为使闭环温度控制系统更加适应使用环境,提高产品的市场竞争力,在已经完成的闭环温度控制系统的基础上增加新功能。
新增功能主要包括三个方面:时钟系统、定时温度打印、数据记录。
时钟系统为整个新型闭环温控系统提供精准始终,帮助完成设定、显示实时时间和定时功能;定时温度打印实现存储时间点及当时温度数据并定时打印存储的数据的功能;数据记录可以实现实时温度变化曲线打印功能,可自由设定监测数据数量,直观观察环境温度变化。
中文摘要一、项目背景二、需求分析(一)主要功能(二)关键技术难点三、方案设计(一)实时时钟方案(二)非易失存储方案(三)微型打印机方案四、电路设计(一)实时时钟(二)非易失存储(三)微型打印机(四)单片机补充五、软件设计(一)实时时钟模块(二)非易失存储(三)微型打印机模块六、调试和问题(一)实时时钟调试1、调试原理2、调试步骤3、现象和解决(二)非易失存储器调试1、调试原理2、调试步骤3、现象和解决(三)微型打印机调试1、调试原理2、调试步骤3、现象和解决七、致谢八、参考文献九、体会建议附录:照片和程序项目背景小型温度控制系统具有测温和控温功能,对于室内、车间、库房等需要恒温和控温的环境起到了重要作用。
此系统可以通过传感器测量温度,通过单片机对测量温度进行读取和显示,并通过人机交互单元可以实现手动设定和控温等功能。
为了使本系统更加适应实际场地使用要求,提高产品市场竞争力,本项目主要实现设置及显示系统时间、掉电不丢失存储时间和温度并定时打印数据、实时打印温度曲线等功能。
为此,我们设计并实现了实时时钟电路模块,非易始存储电路模块以及微型打印机电路模块并精心编写相应的功能模块程序。
需求分析(一)主要功能本项目需要在已经完成的闭环温度控制系统上增加一些新的功能。
51单片机+19264程序

#include <reg52.h>#include"zifuku.h"#define uint unsigned int#define uchar unsigned char#define disp_off 0x3e#define disp_on 0x3f#define disp_x 0xb8#define disp_z 0xc0#define disp_y 0x40#define comm 0#define dat 1#define data_ora P1 //MCU 2<------> LCM#define data P1 /////////////数据传输口////sbit di=P2^0; ///////////////////////////sbit rw=P2^1; ////////////////////读写///sbit e=P2^2; //////使能,高电平有效/////sbit cs1=P2^3; /////////////////////////sbit cs2=P2^4; ///片选端///////////////sbit cs3=P2^5; ///////////////////////sbit rst=P2^6; ////////////复位///////*---------------延时子程序----------------*/void delay (uint us){while(us--);}void delay1 (uint ms){uint i,j;for(i=0;i<ms;i++)for(j=0;j<1000;j++);}/*------------写数据或命令到LCD--------------*/void wr_lcd (uchar dat_comm,uchar content){di=dat_comm;rw=0;data_ora=content;e=1;;e=0;}/*--------------写点阵------------------*/void lat_disp (uchar data1,uchar data2){uchar i,j;cs1=1;cs2=1;cs3=1;wr_lcd (comm,disp_on);for(j=0;j<8;j++){wr_lcd (comm,disp_x+j);wr_lcd (comm,disp_z);wr_lcd (comm,disp_y);for(i=0;i<64;i++){wr_lcd (dat,data1);wr_lcd (dat,data2);}}}void vshowcustomrow(uchar ucpage,uchar ucline,uchar width,uchar *uca) {uchar count;if(ucline<64){cs1=1;cs2=0;cs3=0;wr_lcd(comm,0xb8+ucpage);wr_lcd(comm,0x40+ucline);for(count=0;count<width;count++) wr_lcd(dat,*(uca+count));}else{cs1=0;cs2=1;cs3=0;wr_lcd(comm,0xb8+ucpage);wr_lcd(comm,0x40+ucline-64);for(count=0;count<width;count++) wr_lcd(dat,*(uca+count)); }if(ucline>127){cs1=0;cs2=0;cs3=1;wr_lcd(comm,0xb8+ucpage);wr_lcd(comm,0x40+ucline-128);for(count=0;count<width;count++) wr_lcd(dat,*(uca+count)); }}void vshowonechin(uchar ucpage,uchar ucline,uchar *uca){vshowcustomrow(ucpage,ucline ,16,uca);vshowcustomrow(ucpage+1,ucline,16,uca+16);}void vshowonechar(uchar ucpage,uchar ucline,uchar *uca){vshowcustomrow(ucpage,ucline,8,uca);vshowcustomrow(ucpage+1,ucline,8,uca+8);}/*------------------初始化-----------------*/void init_lcd (void){rst=0;delay(50);rst=1;cs1=1;cs2=1;cs3=1;wr_lcd (comm,disp_off);wr_lcd (comm,disp_on);}/*---------------显示1-----------------*/void disp1 (void){lat_disp(0x00,0x00);vshowonechin(0,0,uca_fan);vshowonechin(0,16,uca_bei);vshowonechin(0,32,uca_ke);vshowonechin(0,48,uca_ji);vshowonechin(0,64,uca_you); vshowonechin(0,80,uca_xian); vshowonechin(0,96,uca_gong); vshowonechin(0,112,uca_si); vshowonechin(0,128,uca_chen); vshowonechin(0,144,uca_li); vshowonechin(0,160,uca_li); vshowonechin(0,176,uca_zuo);vshowonechin(2,0,uca_da); vshowonechin(2,16,uca_bei); vshowonechin(2,32,uca_pai); vshowonechin(2,48,uca_ye); vshowonechin(2,64,uca_jing); vshowonechin(2,80,uca_xian1); vshowonechin(2,96,uca_shi); vshowonechin(2,112,uca_ping);vshowonechin(4,16,uca_huan); vshowonechin(4,32,uca_ying); vshowonechin(4,48,uca_ni); vshowonechin(4,64,uca_de); vshowonechin(4,80,uca_jia); vshowonechin(4,96,uca_meng);vshowonechar(6,0,uca_T); vshowonechar(6,8,uca_E); vshowonechar(6,16,uca_L); vshowonechar(6,24,uca_maohao);vshowonechar(6,32,uca_yi); vshowonechar(6,40,uca_san); vshowonechar(6,48,uca_ba); vshowonechar(6,56,uca_er); vshowonechar(6,64,uca_zero); vshowonechar(6,72,uca_er); vshowonechar(6,80,uca_ba); vshowonechar(6,88,uca_s); vshowonechar(6,96,uca_qi); vshowonechar(6,104,uca_san); vshowonechar(6,112,uca_liu);}/*------------------主程序--------------------*/void main (){init_lcd ();while (1){disp1();delay1(4000);}}#include<reg52.h>unsigned char code uca_fan[]={/*-- 文字: 樊--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x80,0x48,0x28,0xFF,0x28,0x02,0xAC,0x44,0xAA,0x00,0x48,0x28,0xFF,0x28,0x48,0x00, 0x02,0x42,0x42,0x23,0x22,0x12,0x0A,0x07,0x0A,0x12,0x22,0x62,0xC3,0x42,0x02,0x00, };unsigned char code uca_bei[]={/*-- 文字: 贝--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0xF2,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00, 0x00,0x40,0x40,0x27,0x20,0x10,0x08,0x07,0x08,0x10,0x10,0x27,0x60,0x00,0x00,0x00, };unsigned char code uca_ke[]={/*-- 文字: 科--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x10,0x12,0x92,0x72,0xFE,0x51,0x91,0x00,0x22,0xCC,0x00,0x00,0xFF,0x00,0x00,0x00, 0x04,0x02,0x01,0x00,0xFF,0x00,0x04,0x04,0x04,0x02,0x02,0x02,0xFF,0x01,0x01,0x00, };unsigned char code uca_ji[]={/*-- 文字: 技--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x08,0x08,0x88,0xFF,0x48,0x28,0x00,0xC8,0x48,0x48,0x7F,0x48,0xC8,0x48,0x08,0x00,0x01,0x41,0x80,0x7F,0x00,0x40,0x40,0x20,0x13,0x0C,0x0C,0x12,0x21,0x60,0x20,0x00, };unsigned char code uca_you[]={/*-- 文字: 有--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x04,0x84,0x44,0xE4,0x34,0x2C,0x27,0x24,0x24,0x24,0xE4,0x04,0x04,0x04,0x00,0x02,0x01,0x00,0x00,0xFF,0x09,0x09,0x09,0x29,0x49,0xC9,0x7F,0x00,0x00,0x00,0x00, };unsigned char code uca_xian[]={/*-- 文字: 限--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0xFE,0x02,0x32,0x4E,0x82,0x00,0xFE,0x4A,0xCA,0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00, 0xFF,0x00,0x02,0x04,0x03,0x00,0xFF,0x40,0x20,0x03,0x0C,0x12,0x21,0x60,0x20,0x00, };unsigned char code uca_gong[]={/*-- 文字: 公--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x80,0x40,0x30,0x0E,0x84,0x00,0x00,0x0E,0x10,0x60,0xC0,0x80,0x80,0x00,0x00,0x01,0x20,0x70,0x28,0x24,0x23,0x31,0x10,0x10,0x14,0x78,0x30,0x01,0x00,0x00, };unsigned char code uca_si[]={/*-- 文字: 司--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x10,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x12,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x1F,0x04,0x04,0x04,0x04,0x04,0x04,0x0F,0x00,0x20,0x40,0x3F,0x00,0x00, };unsigned char code uca_da[]={/*-- 文字: 大--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,0xA0,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x01,0x06,0x08,0x30,0x60,0xC0,0x40,0x00, };unsigned char code uca_pai[]={/*-- 文字: 牌--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0xFE,0x90,0x90,0x9F,0x10,0x00,0xFE,0x92,0xD3,0xBE,0x92,0x92,0xFE,0x00,0x00, 0x40,0x3F,0x00,0x00,0x7F,0x04,0x04,0x06,0x05,0x04,0xFF,0x04,0x04,0x05,0x04,0x00, };unsigned char code uca_ye[]={/*-- 文字: 液--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x10,0x61,0x06,0xE0,0x18,0x84,0xE4,0x1C,0x84,0x65,0xBE,0x24,0xA4,0x64,0x04,0x00, 0x04,0x04,0xFF,0x00,0x01,0x00,0xFF,0x41,0x21,0x12,0x0C,0x1B,0x61,0xC0,0x40,0x00, };unsigned char code uca_jing[]={/*-- 文字: 晶--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0x00,0x7E,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x7E,0x00,0x00,0x00,0x00, 0x00,0x7F,0x25,0x25,0x25,0x25,0x7F,0x00,0x00,0x7F,0x25,0x25,0x25,0x25,0x7F,0x00, };unsigned char code uca_xian1[]={/*-- 文字: 显--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0x3E,0x2A,0xEA,0x2A,0x2A,0x2A,0xEA,0x2A,0x3E,0x00,0x00,0x00,0x00, 0x20,0x21,0x22,0x2C,0x20,0x3F,0x20,0x20,0x20,0x3F,0x28,0x24,0x23,0x20,0x20,0x00, };unsigned char code uca_shi[]={/*-- 文字: 示--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x20,0x20,0x22,0x22,0x22,0x22,0xE2,0x22,0x22,0x22,0x22,0x22,0x20,0x20,0x00,0x10,0x08,0x04,0x03,0x00,0x40,0x80,0x7F,0x00,0x00,0x01,0x02,0x0C,0x18,0x00,0x00, };unsigned char code uca_ping[]={/*-- 文字: 屏--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0xFF,0x09,0x49,0x59,0xE9,0x49,0x49,0x49,0xE9,0x59,0x49,0x4F,0x00,0x00, 0x40,0x30,0x0F,0x82,0x42,0x32,0x0F,0x02,0x02,0x02,0xFF,0x02,0x02,0x02,0x02,0x00, };unsigned char code uca_huan[]={/*-- 文字: 欢--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x14,0x24,0x44,0x84,0x64,0x1C,0x20,0x18,0x0F,0xE8,0x08,0x08,0x28,0x18,0x08,0x00, 0x20,0x10,0x4C,0x43,0x43,0x2C,0x20,0x10,0x0C,0x03,0x06,0x18,0x30,0x60,0x20,0x00, };unsigned char code uca_ying[]={/*-- 文字: 迎--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x40,0x41,0xCE,0x04,0x00,0xFC,0x04,0x02,0x02,0xFC,0x04,0x04,0x04,0xFC,0x00,0x00, 0x40,0x20,0x1F,0x20,0x40,0x47,0x42,0x41,0x40,0x5F,0x40,0x42,0x44,0x43,0x40,0x00, };unsigned char code uca_ni[]={/*-- 文字: 你--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x80,0x40,0xF0,0x2C,0x43,0x20,0x98,0x0F,0x0A,0xE8,0x08,0x88,0x28,0x1C,0x08,0x00, 0x00,0x00,0x7F,0x00,0x10,0x0C,0x03,0x21,0x40,0x3F,0x00,0x00,0x03,0x1C,0x08,0x00, };unsigned char code uca_de[]={/*-- 文字: 的--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0xF8,0x8C,0x8B,0x88,0xF8,0x40,0x30,0x8F,0x08,0x08,0x08,0x08,0xF8,0x00,0x00, 0x00,0x7F,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x03,0x26,0x40,0x20,0x1F,0x00,0x00, };unsigned char code uca_jia[]={/*-- 文字: 加--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x08,0x08,0x08,0xFF,0x08,0x08,0xF8,0x00,0xF8,0x08,0x08,0x08,0xF8,0x00,0x00, 0x40,0x20,0x18,0x07,0x00,0x20,0x40,0x3F,0x00,0x7F,0x10,0x10,0x10,0x3F,0x00,0x00, };unsigned char code uca_meng[]={/*-- 文字: 盟--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0xFE,0x92,0x92,0x92,0xFE,0x00,0x80,0x7E,0x2A,0x2A,0x2A,0x2A,0xFE,0x00,0x00, 0x40,0x40,0x7C,0x44,0x44,0x7C,0x46,0x45,0x44,0x7C,0x44,0x45,0x7E,0x41,0x40,0x00, };unsigned char code uca_chen[]={/*-- 文字: 陈--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0xFE,0x22,0x52,0x8E,0x00,0xC4,0xB4,0x8C,0xE7,0x84,0x84,0x84,0x84,0x04,0x00, 0x00,0xFF,0x02,0x04,0x23,0x10,0x0C,0x40,0x80,0x7F,0x00,0x02,0x04,0x18,0x30,0x00, };unsigned char code uca_li[]={/*-- 文字: 莉--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x82,0x92,0x92,0x92,0xFF,0x92,0x92,0x82,0x02,0xEF,0x02,0x02,0xFA,0x02,0x00,0x20,0x10,0x08,0x04,0x03,0xFF,0x02,0x1C,0x08,0x00,0x1F,0x40,0x80,0x7F,0x00,0x00, };unsigned char code uca_zuo[]={/*-- 文字: 做--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x40,0x20,0xF8,0x07,0x8A,0x88,0xFF,0x88,0xC8,0x30,0xFF,0x12,0xF0,0x10,0x10,0x00, 0x00,0x00,0x7F,0x00,0x3F,0x08,0x08,0x48,0x5F,0x20,0x13,0x0C,0x13,0x70,0x20,0x00, };unsigned char code uca_T[]={/*-- 文字: T --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00, };unsigned char code uca_E[]={/*-- 文字: E --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00, };unsigned char code uca_L[]={/*-- 文字: L --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00, };unsigned char code uca_maohao[]={/*-- 文字: : --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00, };unsigned char code uca_zero[]={/*-- 文字: 0 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00, };unsigned char code uca_yi[]={/*-- 文字: 1 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00, };unsigned char code uca_er[]={/*-- 文字: 2 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00, };unsigned char code uca_san[]={/*-- 文字: 3 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00, };unsigned char code uca_s[]={/*-- 文字: 4 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00, };unsigned char code uca_wu[]={/*-- 文字: 5 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00, };unsigned char code uca_liu[]={/*-- 文字: 6 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00, };unsigned char code uca_qi[]={/*-- 文字: 7 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00, };unsigned char code uca_ba[]={/*-- 文字: 8 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00, };unsigned char code uca_qiu[]={/*-- 文字: 9 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00, };。
芯片24C64中文资料

芯片24C64中文资料I2C总线I2C总线(Inter Integrated Circuit内部集成电路总线)是两线式串行总线,仅需要时钟和数据两根线就能够进行数据传输,仅需要占用微处理器的2个IO引脚,使用时十分方便。
I2C总线还能够在同一总线上挂多个器件,每个器件能够有自己的器件地址,读写操作时需要先发送器件地址,该地址的器件得到确认后便执行相应的操作,而在同一总线上的其它器件不做响应,称之为器件寻址,那个原理就像我们打的原理相当。
I2C总线产生80年代,由PHLIPS公司开发,早期多用于音频和视频设备,现在I2C总线的器件和设备已多不胜数。
最常见的采纳I2C总线的EEPROM也已被广泛使用于各种家电、工业及通信设备中,要紧用于储存设备所需要的配置数据、采集数据及程序等。
生产I2C总线EEPROM的厂商专门多,如ATMEL、Microchip公司,它们差不多上以24来开头命名芯片型号,最常用确实是24C系列。
24C系列从24C01到24C512,C后面的数字代表该型号的芯片有多少K 的储备位。
如ATMEL的24C64,储备位是64K位,也确实是说能够储备8K(8192)字节,它支持1.8V到5V电源,能够擦写1百万次,数据能够保持100年,使用5V电源时时钟能够达到400KHz,同时有多种封装可供选择。
我们能够专门容易的在周围的电器设备中发觉它们的身影,如电视中用于储存频道信息,电脑内存条中储存内存大小等相关信息,汽车里用于储存里程信息等等。
图一确实是ATMEL24C64芯片的PID封装和用于内存条SPD(Serial Presence Detect)上的24芯片。
图1图2图二是ATMEL公司24C64的引脚定义图。
A0-A2用于设置芯片的器件地址,在同一总线上有多个器件时,能够通过设置A0-A2引脚来确定器件地址。
SDA是串行数据引脚,用于在芯片读写时输入或输出数据、地址等,那个引脚是双向引脚,它是漏极开路的,使用时需要加上一个上拉电阻。
AT24C512驱动程序

AT24C512驱动程序2008-06-27 09:09 AT24C512驱动#include#include#include#include#define BAUDRATE 9600#define SYSCLK 11059200#define uchar unsigned char#define uint unsigned int#define _Nop() _nop_(),_nop_(),_nop_(),_nop_() /*定义空指令*/uchar save_buf[7];sbit WP =P1^0;sbit SCL =P1^1;sbit SDA =P1^2;sbit led =P3^5;void IICpwrite(unsigned char highaddress,unsigned char lowaddress,unsigned char *psr);void IICpread(unsigned char highaddress,unsigned char lowaddress,unsigned char *dst);void ByteWrite(unsigned char bytedata,unsigned char highaddress,unsigned char lowaddress);uchar ByteRead(unsigned char highaddress,unsigned char lowaddress);void IICWriteByte(unsigned char sendbyte);void IICWriteByte(unsigned char sendbyte);uchar IICReadByte(void);void IICStart(void);void IICStop(void);void IICAck(void);void Noack(void);void main(){WP=0;_Nop();_Nop();_Nop();_Nop();_Nop();_Nop();_Nop();_N op();led=0;save_buf[0]=1;save_buf[1]=2;save_buf[3]=3;IICpread(0x00,0x00,save_buf);// IICpwrite(0x00,0x00,save_buf);// save_buf[0]=ByteRead(0x00,0x00);// ByteWrite(save_buf[0],0x00,0x02);while(1);} /*******************页面写数据*********************/ void IICpwrite(unsigned char highaddress,unsigned char lowaddress,unsigned char *psr){int i;// WP=0;_nop_();_nop_();_nop_();_nop_();IICStart();IICWriteByte(0xa0);IICWriteByte(highaddress);IICWriteByte(lowaddress);for(i=0;i<5;i++){ IICWriteByte(*psr++); }IICStop();// WP=1;}/*******************页面读数据********************/void IICpread(unsigned char highaddress,unsigned char lowaddress,unsigned char *dst){int i;//WP=0;IICStart();IICWriteByte(0xa0);IICWriteByte(highaddress);IICWriteByte(lowaddress);IICStart();IICWriteByte(0xa1);for(i=0;i<5;i++){*dst++=IICReadByte();if(i<4) IICAck();else Noack();}IICStop();// WP=1;}/*******************随机写数据*********************/void ByteWrite(unsigned char bytedata,unsigned char highaddress,unsigned char lowaddress){IICStart();IICWriteByte(0xa0);IICWriteByte(highaddress);IICWriteByte(lowaddress);IICWriteByte(bytedata);IICStop();// Delay2(10000);}/**********************随机读数据**********/uchar ByteRead(unsigned char highaddress,unsigned char lowaddress)unsigned char ReadByte;IICStart();IICWriteByte(0xa0);IICWriteByte(highaddress);IICWriteByte(lowaddress);IICStart();IICWriteByte(0xa1);ReadByte=IICReadByte();IICStop();return(ReadByte);}/*******************向IIC总线写数据*********************/void IICWriteByte(unsigned char sendbyte){unsigned char j;// SCL=0;for(j=8;j>0;j--){sendbyte<<=1; //无论C51怎样实现这个操作,始终会使CY=sendbyte^7;SDA=CY;SCL=1;SCL=0; }SDA=1;SCL=1;while(SDA);SCL=0;}/**********************从IIC总线上读数据子程序**********/uchar IICReadByte(void){uchar receivebyte=0,i=8;// SCL=0;SDA=1;for(i=0;i<8;i++){receivebyte=(receivebyte<<1)|SDA;SCL=1;SCL=0;}SDA=1;SCL=0;return(receivebyte);}/*****************启动总线**********************/ void IICStart(void){SDA=1; /*发送起始条件的数据信号*/_Nop();SCL=1;_Nop(); /*起始条件建立时间大于4.7us,延时*/_Nop();_Nop();_Nop();_Nop();SDA=0; /*发送起始信号*/_Nop(); /* 起始条件锁定时间大于4μs*/_Nop();_Nop();_Nop();_Nop();SCL=0; /*钳住I2C总线,准备发送或接收数据 */ _Nop();_Nop();_Nop();_Nop();}/*****************停止IIC总线****************/ void IICStop(void){SDA=0; /*发送结束条件的数据信号*/_Nop(); /*发送结束条件的时钟信号*/SCL=1; /*结束条件建立时间大于4μs*/_Nop();_Nop();_Nop();_Nop();_Nop();SDA=1; /*发送I2C总线结束信号*/_Nop();_Nop();_Nop();_Nop();}void IICAck(void){SDA=0;_Nop();_Nop();_Nop();_Nop();SCL=1;_Nop();_Nop();_Nop();_Nop();_Nop(); SCL=0;_Nop();_Nop();// SDA=1;_nop_();}void Noack(void){SDA=1;_Nop();_Nop();_Nop();_Nop();SCL=1;_Nop();_Nop();_Nop();_Nop();_Nop(); SCL=0;_Nop();_Nop();}。
8051模拟i2C总线24c02读写源代码C语言

WriteI2CByte(0xa0);
acktemp=Check_Acknowledge();
WriteI2CByte(addr);/*address*/
acktemp=Check_Acknowledge();
I2C_Start();
WriteI2CByte(addr);/*address*/
acktemp=Check_Acknowledge();
WriteI2CByte(thedata);/*thedata*/
acktemp=Check_Acknowledge();
I2C_Stop();
实例1
/* 51系列单片机在使用时,有时需要模拟I2C总线_nbsp; */
/* 这里举出一个实例(读写串行EEPROM芯片at24C02_nbsp; */
/************************************************************************/
Write_A_Page(myarray2,0x18);
mybyte=Read_One_Byte(0x20);
Read_N_Bytes(rdarray,16,0x10);
}
实例2
/********************************** I2C总线驱动 *************************************
}
void SEND_1(void)
{
/*发逿,在SCL为高电平时使SDA信号为高*/
SDA=1;
SCL=1;
DELAY(DELAY_TIME);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作者: 李雪川 时间: 2009-7-30 说明: 24c64 存储芯片使用,I2C 通讯协议 版本: V1 注意: **************************************************************************** *****************/
void i2c_stop() {
delay_10us(); I2C_SDA = 0; delay_10us(); I2C_SCL = 1; delay_10us(); I2C_SDA = 1; }
/*************************************************************************** ****************
#endif
/************************24c64.c******************************************** **************************
作者: 李雪川 时间: 2009-7-30 说明: 24c64 存储芯片使用,I2C 通讯协议 版本: V1 注意: **************************************************************************** *****************/
/* 24C64.C */
#include"24c64.h"
bit ACK = 1; /* 应答标志 */
/*************************************************************************** ****************
延时 10us **************************************************************************** *****************/ void delay_10us() {
uchar i, temp = 0;
delay_5us(); I2C_SDA = 1;
/* 确保延时 */ /* 读数据时候先拉高 SDA 电平 */
for (i = 0; i < 8; i++) {
for (j = 124; j > 0; j--); } }
/*************************************************************************** ****************
函数名: bit i2c_start() 说明: 启动成功返回 1, 启动失败还回 0 **************************************************************************** ****************/ bit i2c_start() {
/*************************************************************************** ****************
函数名: void i2c_stop() 说明: I2C 停止信号 **************************************************************************** ****************/
uchar i = 10; while (i--); } /*************************************************************************** **************** 延时 5us **************************************************************************** *****************/ void delay_5us() { uchar i = 5; while(i--); } /*************************************************************************** **************** 延时 10ms
/*************************************************************************** *****************/
void at24c64_wr(void *dat, uint address, uint cont);
/*************************************************************************** ****************
#define uchar unsigned char #define uint unsigned short int
#define uint8 unsigned char #define uint16 unsigned long int
#define BYTE unsigned char #define UINT8 unsigned char #define UINT16 unsigned long int
函数名: bit i2c_sentbyte(uchar byt) 说明: 发送数据,还回 1: 发送成功 0;发送失败 **************************************************************************** ****************/ bit i2c_sentbyte(uchar byt) {
#define int8 char #define int16 long int
#define INT8 char #define INT16 long int
#endif
/***************************24c64.h***************************************** **************************
delay_10us(); I2C_SCL = 1; delay_10us(); I2C_SDA = 1; delay_10us(); if (I2C_SCL & I2C_SDA) /* 确保为高电平 */ {
I2C_SDA = 0; /* 启动 I2C 总线 */ delay_10us(); I2C_SCL = 0; /* 拉低时钟线以备用 */ delay_10us(); return 1; } else { return 0; } }
/* 24C64.H */
#ifndef _24C64_H #define _24C64_H
#include"reg52.h" #include"compile.h" #include"intrins.h"
sbit I2C_SDA = P3^2; sbit I2C_SCL = P3^3;
extern bit ACK; /* 应答标志 */
函数名: void at24c64_rd(void *dat, uint address, uint cont) 说明: 读数据操作(主机读到数据存放指针, 读数据首地址, 读数据个数) ** 对 24c64 进行连续读操作时候地址指针在整个数据内(8K 字节内)自加 /*?????????????????在使用 32k 以下存储器时候只发送一次地 址???????????????????????????????????*/ /*************************************************************************** *****************/ void at24c64_rd(void *dat, uint address, uint cont);
/* 拉低时钟线以备用 */
byt <<= 1; } delay_5us(); /* 在第 9 个周期响应 ACK,读 24c64 发送出的应答信号 ACK 拉 SDA */ I2C_SDA = 1; delay_5us();
I2C_SCL = 1; delay_5us(); ACK = I2C_SDA; /* 读应答信号 */ I2C_SCL = 0;
基于 51 单片机的 24C64 驱动程序 2010-04-01 11:34/************************************************************************** ************************
** 文 件 名:Compile.h ** 作 者: 李雪川 版本: v01 编写日期: 2009-7-24 完成日期: 2009-7-24 ** 功能描述: 编译类型关键词定义 ** 修改时间:2010-4-1 **************************************************************************** *************************/ #ifndef _COMPILE_ #define _COMPILE_H