导航:首页 > 编程语言 > at24c04程序流程图

at24c04程序流程图

发布时间:2023-09-10 00:02:50

Ⅰ 怎样制作简易24CXX存储器读写工具

抄1、先买一个电脑打印机的打印线(两端有插头);

Ⅱ 急求《单片机C语言程序设计实训100例——基于8051+Proteus仿真》第三部分综合设计C语言源代码

这本书一共5章节,你说第三部分指的哪里?
第五章才是综合设计部分啊,而且这部分有好多例程,也不知道你要哪部分?
第1章 8051单片机C语言程序设计概述 1
1.1 8051单片机引脚 1
1.2 数据与程序内存 5
1.3 特殊功能寄存器 6
1.4 外部中断、定时器/计数器及串口应用 8
1.5 有符号与无符号数应用、数位分解、位操作 9
1.6 变量、存储类型与存储模式 11
1.7 关于C语言运算符的优先级 13
1.8 字符编码 15
1.9 数组、字符串与指针 16
1.10 流程控制 18
1.11 可重入函数和中断函数 19
1.12 C语言在单片机系统开发中的优势 20
第2章 Proteus操作基础 21
2.1 Proteus操作界面简介 21
2.2 仿真电路原理图设计 22
2.3 元件选择 25
2.4 调试仿真 29
2.5 Proteus与Vision 3的联合调试 29
2.6 Proteus在8051单片机应用系统开发的优势 30
第3章 基础程序设计 32
3.1 闪烁的LED 32
3.2 双向来回的流水灯 34
3.3 花样流水灯 36
3.4 LED模拟交通灯 38
3.5 分立式数码管循环显示0~9 40
3.6 集成式数码管动态扫描显示 41
3.7 按键调节数码管闪烁增减显示 44
3.8 数码管显示4×4键盘矩阵按键 46
3.9 普通开关与拨码开关应用 49
3.10 继电器及双向可控硅控制照明设备 51
3.11 INT0中断计数 53
3.12 INT0及INT1中断计数 55
3.13 TIMER0控制单只LED闪烁 58
3.14 TIMER0控制数码管动态管显示 62
3.15 TIMER0控制8×8LED点阵屏显示数字 65
3.16 TIMER0控制门铃声音输出 68
3.17 定时器控制交通指示灯 70
3.18 TIMER1控制音阶演奏 72
3.19 TIMER0、TIMER1及TIMER2实现外部信号计数与显示 75
3.20 TIMER0、TIMER1及INT0控制报警器与旋转灯 77
3.21 按键控制定时器选播多段音乐 79
3.22 键控看门狗 82
3.23 双机串口双向通信 84
3.24 PC与单片机双向通信 90
3.25 单片机内置EEPROM读/写测试 95
第4章 硬件应用 99
4.1 74HC138译码器与反向缓冲器控制数码管显示 100
4.2 串入并出芯片74HC595控制数码管显示四位数字 103
4.3 用74HC164驱动多只数码管显示 106
4.4 并串转换器74HC165应用 110
4.5 用74HC148扩展中断 112
4.6 串口发送数据到2片8×8点阵屏滚动显示 115
4.7 数码管BCD解码驱动器CD4511与DM7447应用 117
4.8 62256RAM扩展内存 119
4.9 用8255实现接口扩展 121
4.10 可编程接口芯片8155应用 124
4.11 串行共阴显示驱动器控制4+2+2集成式数码管显示 129
4.12 14段与16段数码管演示 133
4.13 16键解码芯片74C922应用 136
4.14 1602字符液晶工作于8位模式直接驱动显示 139
4.15 1602液晶显示DS1302实时时钟 148
4.16 1602液晶屏工作于8位模式由74LS373控制显示 153
4.17 1602液晶屏工作于4位模式实时显示当前时间 155
4.18 1602液晶屏显示DS12887实时时钟 159
4.19 时钟日历芯片PCF8583应用 167
4.20 2×20串行字符液晶屏显示 174
4.21 LGM12864液晶屏显示程序 177
4.22 TG126410液晶屏串行模式显示 184
4.23 Nokia7110液晶屏菜单控制程序 192
4.24 T6963C液晶屏图文演示 199
4.25 ADC0832 A/D转换与LCD显示 211
4.26 用DAC0832生成锯齿波 215
4.27 ADC0808 PWM实验 217
4.28 ADC0809 A/D转换与显示 220
4.29 用DAC0808实现数字调压 221
4.30 16位A/D转换芯片LTC1864应用 223
4.31 I2C接口存储器AT24C04读/写与显示 225
4.32 I2C存储器设计的中文硬件字库应用 233
4.33 I2C接口4通道A/D与单通道D/A转换器PCF8591应用 237
4.34 I2C接口DS1621温度传感器测试 241
4.35 用兼容I2C接口的MAX6953驱动4片5×7点阵显示器 246
4.36 用I2C接口控制MAX6955驱动16段数码管显示 250
4.37 I2C接口数字电位器AD5242应用 254
4.38 SPI接口存储器AT25F1024读/写与显示 257
4.39 SPI接口温度传感器TC72应用测试 264
4.40 温度传感器LM35全量程应用测试 268
4.41 SHT75温湿度传感器测试 272
4.42 直流电机正、反转及PWM调速控制 278
4.43 正反转可控的步进电机 281
4.44 ULN2803驱动点阵屏仿电梯数字滚动显示 284
4.45 液晶显示MPX4250压力值 286
4.46 12864LCD显示24C08保存的开机画面 289
4.47 用M145026与M145027设计的无线收发系统 293
4.48 DS18B20温度传感器测试 296
4.49 1-Wire式可寻址开关DS2405应用测试 303
4.50 MMC存储卡测试 307
第5章 综合设计 316
5.1 带日历时钟及温度显示的电子万年历 316
5.2 用8051+1601LCD设计的整型计算器 321
5.3 电子秤仿真设计 328
5.4 1602液晶屏显示仿手机键盘按键字符 332
5.5 用24C04与1602液晶屏设计的简易加密电子锁 336
5.6 1-Wire总线器件ROM搜索与多点温度监测 341
5.7 高仿真数码管电子钟设计 356
5.8 用DS1302与12864LCD设计的可调式中文电子日历 360
5.9 用T6963C液晶屏设计的指针式电子钟 366
5.10 T6963C液晶屏中文显示温度与时间 370
5.11 T6963C液晶屏曲线显示ADC0832两路A/D转换结果 372
5.12 温度控制直流电机转速 374
5.13 用74LS595与74LS154设计的16×16点阵屏 377
5.14 用8255与74LS154设计的16×16点阵屏 379
5.15 红外遥控收发仿真 381
5.16 GP2D12红外测距传感器应用 388
5.17 三端可调正稳压器LM317应用测试 395
5.18 数码管显示的K型热电偶温度计 399
5.19 交流电压检测与数字显示仿真 403
5.20 用MCP3421与RTD-PT100设计的铂电阻温度计 407
5.21 可接收串口信息的带中英文硬字库的80×16 LED点阵屏 414
5.22 模拟射击训练游戏 422
5.23 GPS仿真 427
5.24 温室监控系统仿真 431
5.25 基于Modbus总线的数据采集与开关控制系统设计仿真 437

建议你到脚本之家网站去搜索一下看看有没有这本书的电子档。

Ⅲ 求解51单片机I2C对24c02读写汇编程序

ORG 0000H
LJMP MAIN

SCL BIT P2.1
SDA BIT P2.0
TEMP EQU 30H
BYTE_ADDR EQU 31H
;---------------I2C通讯程序----------------
;------------------------------------------
;---------------读取I2C数据----------------
;读取一个字节
;输入:BYTE_ADDR,读取字节地址
;输出:A
;------------------------------------------
I2CREAD:
LCALL I2C_START ;起始
MOV A,#0A0H
LCALL I2C_TXBYTE ;发送芯片地址数据+写信号
LCALL I2C_RXACK ;接收ACK
MOV A,BYTE_ADDR
LCALL I2C_TXBYTE ;发送RAM地址数据
LCALL I2C_RXACK ;接收ACK
LCALL I2C_START ;起始
MOV A,#0A1H
LCALL I2C_TXBYTE ;发送地址数据+读信号
LCALL I2C_RXACK ;接收ACK
LCALL I2C_RXBYTE ;接收数据
SETB C ;读一个字节C=1
LCALL I2C_TXACK ;发送NAK
LCALL I2C_STOP ;读取完成
RET
;----------------------------
;R4=读出字节数
;BYTE_ADDR=读出初始地址
;R1=数据指针
;----------------------------
I2C_PAGE_RD:
LCALL I2C_START ;起始
MOV A,#0A0H
LCALL I2C_TXBYTE ;发送芯片地址数据+写信号
LCALL I2C_RXACK ;接收ACK
MOV A,BYTE_ADDR
LCALL I2C_TXBYTE ;发送RAM地址数据
LCALL I2C_RXACK ;接收ACK
LCALL I2C_START ;起始
MOV A,#0A1H
LCALL I2C_TXBYTE ;发送地址数据+读信号
LCALL I2C_RXACK ;接收ACK
NXT_BYTE:
LCALL I2C_RXBYTE ;接收数据
MOV @R1,A
INC R1
CLR C ;连续读C=0
LCALL I2C_TXACK ;发送NAK
LCALL I2C_DELAY
DJNZ R4,NXT_BYTE
LCALL I2C_NOACK ;NOACK
LCALL I2C_STOP ;读取完成
RET
;----------------写一字节I2C数据------------
;写入一个字节
;输入:BYTE_ADDR,写入字节地址;A=写入数据
;输出:无
;------------------------------------------
I2CWRITE:
PUSH ACC
LCALL I2C_START ;开始写
MOV A,#0A0H
LCALL I2C_TXBYTE ;发送地址数据+写信号
LCALL I2C_RXACK ;接收ACK
MOV A,BYTE_ADDR
LCALL I2C_TXBYTE ;发送RAM地址数据
LCALL I2C_RXACK ;接收ACK
POP ACC
LCALL I2C_TXBYTE ;写数据
LCALL I2C_RXACK ;接收ACK
LCALL I2C_STOP ;写完成
LCALL I2C_DLYMS ;延时1ms
RET
;----------------------------
;R4=写入字节数
;BYTE_ADDR=写入初始地址
;R1=数据指针
;----------------------------
I2C_PAGE_WR:
LCALL I2C_START ;开始写
MOV A,#0A0H
LCALL I2C_TXBYTE ;发送地址数据+写信号
LCALL I2C_RXACK ;接收ACK
MOV A,BYTE_ADDR
LCALL I2C_TXBYTE ;发送RAM地址数据
LCALL I2C_RXACK ;接收ACK
NEXT_DATA: ;WRITE 16 BYTES TO
MOV A,@R1 ;EEPROM
LCALL I2C_TXBYTE ;写数据
LCALL I2C_RXACK ;接收ACK
INC R1
DJNZ R4,NEXT_DATA
LCALL I2C_STOP ;写完成
LCALL I2C_DLYMS ;延时1ms
RET
;----------------------------
;发送I2C起始信号
;----------------------------
I2C_START:
SETB SCL ;时钟高电平时数据下降沿为启动信号
LCALL I2C_DELAY
SETB SDA
LCALL I2C_DELAY
CLR SDA ;数据线下降沿
LCALL I2C_DELAY ;延时
CLR SCL ;时钟->低
LCALL I2C_DELAY ;延时
RET
;----------------------------
;发送I2C停止信号
;----------------------------
I2C_STOP:
CLR SDA
LCALL I2C_DELAY ;延时
SETB SCL ;时钟->高
LCALL I2C_DELAY ;延时
SETB SDA ;数据线上升沿
LCALL I2C_DELAY ;延时
CLR SCL
RET
;----------------------------
;发送ACK/NAK信号
;----------------------------
I2C_TXACK:
MOV SDA,C ;送ACK数据
LCALL I2C_DELAY ;延时
SETB SCL ;时钟->高
LCALL I2C_DELAY ;延时
CLR SCL ;时钟->低
LCALL I2C_DELAY ;延时
SETB SDA ;发送完成
RET
;----------------------------
;接收ACK/NAK信号
;----------------------------
I2C_RXACK:
SETB SDA ;准备读数据
LCALL I2C_DELAY ;延时
SETB SCL ;时钟->高
LCALL I2C_DELAY ;延时
MOV C,SDA ;读取ACK信号
CLR SCL ;时钟->低
LCALL I2C_DELAY ;延时
RET
;----------------------------
I2C_NOACK:
SETB SDA ;NO ACKNOWLEDGE
LCALL I2C_DELAY
SETB SCL
LCALL I2C_DELAY
CLR SCL
LCALL I2C_DELAY
RET
;----------------------------
;发送一字节数据
;----------------------------
I2C_TXBYTE:
MOV R7,#8 ;8位计数
TXNEXT:
RLC A ;移出数据位
MOV SDA,C ;数据送数据口
SETB SCL ;时钟->高
LCALL I2C_DELAY ;延时
CLR SCL ;时钟->低
LCALL I2C_DELAY ;延时
DJNZ R7,TXNEXT ;送下一位
RET
;----------------------------
;接收一字节数据
;----------------------------
I2C_RXBYTE:
MOV R7,#8 ;8位计数
RXNEXT:
SETB SCL ;时钟->高
LCALL I2C_DELAY ;延时
MOV C,SDA
RLC A
CLR SCL ;时钟->低
LCALL I2C_DELAY ;延时
DJNZ R7,RXNEXT ;收下一位
RET
;----------------------------
I2C_DELAY: ;
NOP
NOP
RET ;
;----------------------------
I2C_DLYMS:
PUSH 0
PUSH 1
MOV R1,#2
I2CDL:
MOV R0,#248
DJNZ R0,$
DJNZ R1,I2CDL
POP 1
POP 0
RET
;----------------------------
MAIN:
MOV SP,#60H
MOV A,#0AAH
MOV BYTE_ADDR,#0
LCALL I2CWRITE
LCALL I2CREAD
MOV P1,A
SJMP $
END
;----------------------------

Ⅳ 流量积算仪 定量控制

AT89C55WD在智能流量积算仪中的应用

ATMEL公司推出的带有看门狗功能的单片机AT89C55WD带有20K的程序存储器,是8051系列中一款较为先进的产品,其看门狗功能可以大大提高产品的稳定性,大容量的内部程序存储器可以容纳功能丰富的软件。下面简要介绍以A51为开发工具,以AT89C55WD单片机为核心,开发流量积算控制仪的设计和实现方法。
一、流量积算控制仪总体布局

流量积算仪有5个输入通道:分别为流量L、压力补偿P、热电偶TC、热电阻Pt100、频率F。由通道开关控制。流量积算仪的基本工作原理是:通过输入信号电路把各种模拟信号经通道开关送入A/D转换器,转换成数字信号(频率信号直接由微处理器进行计数),微处理器根据采样的结果和数字设定内容进行计算比较后显示及控制输出。

(图1)原理方框图

(图2)总体功能图

二、系统电路构成

流量积算控制仪电路由单片机AT89C55WD、5+8位LED显示电路、通道开关TC4052电路、A/D采集电路、数据存储电路AT24C04、电源管理电路IMP708、变送输出电路TLC465、AD694、开关量输出电路、键盘和电源及馈电输出等电路组成,下面简要介绍各个组成部分。

1.单片机AT89C55WD及电路组成

单片机AT89C55WD通过P0.0~P0.3驱动3D1显示驱动芯片HD7279,再去驱动5位数码管,显示瞬时流量PV值;同时驱动5个按键和8个LED指示灯。通过P0.4~P0.7驱动3D2显示驱动芯片HD7279,再去驱动8位数码管,显示流量累积值SV。通过P1.0~P1.3控制CS5523 A/D转换器采集数据。将采集到的数据通过一系列的运算处理,如图3所示,并将运算结果通过显窗口分别将瞬时值和积算值显示出来,同时点亮相应的指示灯。由于突发事件停电,会造成数据丢失。为了避免数据丢失,我们采用了IMP708芯片进行掉电保护,当电压下降到708阀值(如4.6伏)时,将相关数据存入AT24C04中,电源恢复后,重新加载这些数据。另外键盘数据和流量积算值等也存储在AT24C04中。

2.显示和键盘电路

在积算仪中使用LED 数码管显示器,瞬时流量值的显示采用2只四联LG3641AG共阴数码管,积算流量值的显示采用1只四联LG5641AG和一只LG5611共阴数码管。其驱动芯片是2支HD7279,既解决了13位数码管的驱动,同时又解决了5个按键、8个指示灯的驱动。HD7279是一款LED数码管和键盘接口芯片: 可驱动8位LED数码管和64键键盘,SPI接口,外围元件非常少。与单片机接口采用SPI串行接口方式,方便实用。

3. A/D采集电路

A/D采集电路主要由16-bit的CS5523构成,该芯片是SPI串行接口,具有片选端。而4个通道的输入则选用了TC4052进行控制。

4.看门狗电路

AT89C55WD与MCS-51相兼容,可对内核进行1000次的电擦写,其电压、电流和功耗都比较小,带有20K的可重写快闪存储器和硬件看门狗定时器。
看门狗定时器是在系统软件崩溃后进行恢复的一种方法,WDT由13位计数器和看门狗复位特殊功能寄存器(WDTRST SFR)组成,在缺省设置下,系统复位时即关闭。要使WDT有效,用户必须向0A6H单元的WDTRST SFR顺序写入01EH和0E1H。当WDT有效,计数器每经过一个机器周期后加1,除了硬件或WDT溢出复位,没有任何方法可使WDT无效。当计数器溢出,WDT就在RST引脚产生一个复位的高脉冲。
要使WDT持续有效,就必须每隔一定时间往WDTRST写入01EH和0E1H来避免WDT溢出。当WDT的13位计数器计数至8191(1FFFH)时,计数器便溢出,引起设备的复位。这就意味着用户必须至少每8191个机器周期复位WDT一次。使WDT复位,必须向只写寄存器WDTRST写入01EH和0E1H。当WDT溢出时在RST引脚产生一个复位的高电平脉冲,持续时间为:98×TOSC ,TOSC=1/FOSC。为了充分利用WDT,在要求防止WDT溢出复位时,应每隔一定周期写WDTRST一次。

下面给出一个例程:
将看门狗定时器放在T1中,每中断一次,需50ms,当计数器,计满1秒给R19加1。当主程序或子程序在10秒之内还未对R19清0,说明程序可能“跑飞”,此时看门狗使能,将AT89C55WD复位,从地址0000H处开始执行。
R19 DATA 13H ;
R23 DATA 17H ;ms计数器

T1int: ;定时(计时)器
MOV TH1, #4CH
MOV TL1, #00H ;计满重装初值(约50ms)
INC R23 ;(20次*50ms)=1000ms=1s
MOV A,R23
CJNE A,#20,T1int_01 ;计满1s向下
INC R19 ;用于看门狗定时
MOV A,R19
CLR C
SUBB A,#10
JC T1int_01 ;10秒到向下,复位
CLR EA
MOV WDTRST,#01EH ;WDT使能,13bit
MOV WDTRST,#0E1H ;TOSC=1/FOSC.
JMP $
T1int_01: RETI

三、系统软件部分

系统软件采用A51汇编语言编程。

1.编程语言

本系统采用Keil公司V7.0的C51编译器。A51是一个有通用特性机用法的重定位宏汇编器,能很好地与INTEL公司的MASM51宏汇编兼容,支持模块化编程,可以方便地与高级语言接口。

2. 数学模型与程序设计

流量积算仪的数学模型很复杂,涉及到几十个公式,但基本公式为:
(1)质量流量 (2)标准体积流量

(3)密度运算公式

式中:ρ—工况密度,ρ20—标况密度,T0—为273.15℃,T—温度补偿输入信号(单位:℃),P—压力补偿输入信号,P0—设计压力(标况=0.10133MPa),PA—仪表工作点的大气压力。

(图3)基本数学模型与程序分支结构

3.工作过程

由于整个系统较复杂,几个流程图很难表述清楚整个软件的运算过程。这里给出一个粗略的流程图,来表述流量积算仪的简单的工作流程。详见图4所示。

(图4)程序流程图

四、程序

整个源程序(含注释)265KB,把占用空间较大的饱和蒸汽、过热蒸汽、Pt100、K分度、E分度热电偶表格也放在了程序存储器上。汇编后的HEX文件约16KB,仅用了20KB程序存储器的五分之四,剩下的4K可留给将来添加新功能。 结束语 在研制流量积算控制仪的过程中,我们采用A51编程进行软件开发,以AT24C04作为控制参数和积算值等存储器,同时设置了看门狗,程序“跑飞”的现象几乎不存在。加上有电源管理芯片IMP807,由于掉电而引起的数据丢失现象不存在。

我们研制的流量积算控制仪的智能化程度相当高,如:
温度T或压力P补偿出现异常时(无温压补偿除外),同时差压ΔP大于0,温度或压力指示灯闪烁,用以提示温度或压力补偿出现了异常。密度ρ取最近一次的值。断电后密度值不保持,重新上电密度值取ρ=1,有差压ΔP就有流量L,但此时流量值为近似值。待故障排除后,流量积算值恢复正常。
http://www.c51.cn/Article/mcuzh/200604/4105.html

阅读全文

与at24c04程序流程图相关的资料

热点内容
linux连接ftp 浏览:512
es文件浏览器视频笔记 浏览:874
mac无法打开描述文件 浏览:134
什么软件打文件 浏览:53
数据库无数据变成0 浏览:899
名企笔试如何刷编程题 浏览:49
js跳到页面某地 浏览:550
jsp展示clob字段 浏览:779
nyx在网络上是什么意思 浏览:145
乐播农业app是什么 浏览:530
编程框架如何开发 浏览:136
金庸群侠传3修改代码 浏览:712
检察院的文件类别有哪些 浏览:793
怎么把九游残留数据删除 浏览:828
有什么女生主动聊天的app 浏览:436
有哪些可以督促自己的app 浏览:244
用USB传输视频文件夹显示为空 浏览:710
恢复文件软件免费版手机 浏览:648
lg怎么隐藏文件 浏览:836
苹果免费读书app推荐 浏览:497

友情链接