资源简介
在这个实验中,数码管的读数是经过IIC总线,从型号为24C02C的EPROM中读取出来的,该数字每累加一次,也会把累加后的数值保存到24C02C中,当单片机复位或断电时,该数值就不会丢失,当复位后或再上电时,数码管就能显示刚才的读数并在此基础上继续累加下去。
为了证明单片机的复位电路正常,该实验中还设置了流水灯,这是一个8位LED灯轮流点亮的装置,当复位按键被按下后,流水灯就被复位,它会从第一盏灯亮起,但数码管的读数不受影响。

代码片段和文件信息
#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit sda = P2^0;
sbit scl = P2^1;
uchar a;
void start() //开始信号
{
sda = 1;
scl = 1;
_nop_();
sda = 0;//SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号
}
void stop() //停止
{
sda = 0;
scl = 1;
_nop_();
sda = 1;//SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号
}
void respons() //应答
{
uchar i;
while((sda == 1) && (i < 10))i ++;//10个机器周期后默认为收到
scl = 1;
_nop_();
scl = 0;
}
void write_byte(uchar date) //写一个字节
{
uchar itemp;
temp = date;
for(i = 0;i < 8;i ++)
{
temp = temp << 1;//左移一位,先把最高位移入CY
scl = 0;
// _nop_();
sda = CY;//程序状态寄存器PSW的第7位CY
// _nop_();
scl = 1;
// _nop_();
}
scl = 0;
}
uchar read_byte() //读一个字节
{
uchar ik;
scl = 0;
_nop_();
sda = 1;
_nop_();
for(i = 0;i < 8;i ++)
{
scl = 1;
_nop_();
k=(k << 1) | sda;
scl = 0;
_nop_();
}
return k;
}
void write_add(uchar deviceuchar addressuchar date) //写数据(器件、地址、数据)
{
start();
write_byte(device);//1010***0(连接:写)
respons();
write_byte(address);
respons();
write_byte(date);
respons();
stop();
}
uchar read_add(uchar deviceuchar address) //读数据(器件、地址)
{
uchar date;
start();
write_byte(device);//1010***0(连接:写)
respons();
write_byte(address);//伪写(器件内地址)
respons();
start();
write_byte(device + 1);//1010***1(连接:读)
respons();
date = read_byte();
stop();
return date;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 19 2012-04-20 21:24 ReadNum\ExtDll.iex
文件 466446 2012-05-10 23:35 ReadNum\Last Loaded ReadNum.DBK
文件 410302 2012-05-11 17:31 ReadNum\ReadNum.DSN
文件 885 2012-05-11 17:32 ReadNum\ReadNum.PWI
文件 1628 2012-04-20 21:28 ReadNum\read_IIC.c
文件 4402 2012-04-20 21:42 ReadNum\read_IIC.LST
文件 5837 2012-04-20 21:42 ReadNum\read_IIC.OBJ
文件 9930 2012-04-20 21:42 ReadNum\read_num
文件 1516 2012-04-22 15:31 ReadNum\read_num.c
文件 1672 2012-04-20 21:42 ReadNum\read_num.hex
文件 65 2012-04-20 21:42 ReadNum\read_num.lnp
文件 4253 2012-04-20 21:42 ReadNum\read_num.LST
文件 12830 2012-04-20 21:42 ReadNum\read_num.M51
文件 5354 2012-04-20 21:42 ReadNum\read_num.OBJ
文件 203 2012-05-11 17:30 ReadNum\read_num.plg
....... 277213 2012-05-11 17:30 ReadNum\read_num.uvgui.Administrator
....... 276348 2012-04-22 15:31 ReadNum\read_num.uvgui_Administrator.bak
....... 8320 2012-05-11 17:30 ReadNum\read_num.uvopt
文件 13449 2012-04-20 17:00 ReadNum\read_num.uvproj
....... 8320 2012-04-22 15:31 ReadNum\read_num_uvopt.bak
文件 13279 2012-04-20 16:02 ReadNum\read_num_uvproj.bak
文件 103936 2012-05-11 17:33 ReadNum\操作说明.doc
目录 0 2012-05-11 17:33 ReadNum
----------- --------- ---------- ----- ----
1626207 23
相关资源
- 51单片机PWM程序,占空比、周期可调整
- proteus仿真 AT89C51输出各种波形
- 00
- DAS1302蜂鸣 独立按键 闹钟设定 IIC存储
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- proteus_24C08—有注释(proteus里面使用的
- DS18B20分布式多点测温的Proteus仿真
- 基于proteus的单片机仿真--交通灯控制
- 带时间温度显示的室内灯光控制系统
- 51多机通信(内附Proteus及.hex文件)
- STM32 DS3231驱动.zip
- IIC proteus仿真实验
- 8086交通灯 Proteus原理图及程序
- 单片机仿真软件proteus6.7免安装绿色版
- 关于proteus仿真arm7出现错误的问题
- 基于PROTEUS的ARM7显示系统设计与仿真实
- STM32F030从机中断接收的iic代码,附带
- STM32+1602液晶proteus仿真.zip
- AT89C51+ADC0808 PROTEUS仿真
- 单片机驱动4相步进电机proteus仿真
- proteus元件库对照表 (整理清晰)
- 微机原理 十字路口交通灯控制 prot
- 中央空调室内智能温控器设计论文、
- 基于51单片机的交通灯设计
- 基于AT89C51的十字路口交通灯设计pro
- Proteus单片机仿真大全几百个part4
- Proteus升压电路仿真
- keil调试仿真技巧-从入门到精通
- 十字路口交通灯.pdsprj
评论
共有 条评论