资源简介
在这个实验中,数码管的读数是经过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
相关资源
- proteus仿真--播放音乐
- FM收音机proteus
- FPGA通过IIC协议驱动24LC32EEPROM
- 基于IIC通信的EEPROM读/写Verilog/VHDL程序
- 4×4矩阵键盘原理及其在单片机中的简
- 很好的步进电机仿真
- 8086交通灯_基于Proteus仿真.rar
- Proteus中单片机89C51在LCD12864显示
- 两片单片机之间的串行通信(proteus仿
- proteus仿真车速
- STM32 MPU6050-DMP-欧拉角串口输出 滤波
- Proteus仿真AT89C52——计数
- 汽车尾灯控制电路.zip
- proteus arduino仿真库
- 基于8086的proteus电子时钟系统
- 汇编流水灯 8253+8255+8259.rar
- 51流水灯仿真加代码
- 数字时钟课程设计报告
- 51单片机实现密码锁(带proteus仿真)
- 基于Proteus的温度传感器串口通信仿真
- proteus实验\\数字时钟电路设计proteus仿
- 微机原理PROTUES仿真实现秒表
- 51单片机测量方波频率proteus仿真
- Proteus_H型电机驱动
- 数字逻辑课程设计四路抢答器Proteus设
- 基于8086的交通灯.zip
- C51智能时钟以及Proteus电路图
- proteus8253实验
- MSP430G2553使用IIC协议控制OLED显示屏
- emeu8086+proteus音乐发声器
评论
共有 条评论