求推荐 io口比较多 程序包java.io不存在比较好写的单片机型号

通过按键控制IO口操作
单片机&嵌入式
单片机应用
嵌入式操作系统
学习工具&教程
学习和开发单片机的必备工具
(有问必答)
(带你轻松入门)
电子元件&电路模块
当前位置: >>
>> 浏览文章
通过按键控制IO口操作
今天对单片机按键有了一定的认识,单片机分为独立式键盘和矩阵式键盘,独立式占用IO口资源比较大,适合按键少的控制操作,其优点是设计编程一目了然,比较简单,矩阵式占用IO口比较少,适合对按键要求比较高而IO口资源比较宝贵的操作,这两者各有其优点和缺点,以后应用时要根据需要进行设计,特别是矩阵式的要利用行线,和列线的高低电平检测和处理数据信息的原理要记住。
下面把今天学的一个简单的通过按键控制IO口LED灯工作的程序写一下,呵呵,可以加深我对按键操作(ELSE语句)的理解。
#include&reg52.h&
#define uint unsigned int
#define uchar unsigned char
sbit DIPswitch1=P3^0;
sbit DIPswitch2=P3^1;
sbit redLED1=P1^0;
sbit blueLED1=P1^1;
sbit greenLED1=P1^2;
sbit yellowLED1=P1^3;
sbit redLED2=P1^4;
sbit blueLED2=P1^5;
sbit greenLED2=P1^6;
sbit yellowLED2=P1^7;
void delay(void)
&for(i=0;i&35530;i++);
void main(void)
&&P1=0XFF;
&&P3=0XFF;//置位
&&if(DIPswitch1==0)
&&redLED1=~redLED1;
&&yellowLED2=~yellowLED2;//判断按钮1是否为低电平,如果是的话,实现P0口的1脚和7脚按位取反
&&delay();}//延时操作
&&else if(DIPswitch2==0)
&&P1=~P1;//按键2取低时,P0口所有位按位取反闪烁
&&P1=0X00;//如果按键1VS2都为高,则所有灯亮
工作原理是当按键1为低电平时,P1口的1脚和7脚按位取反,实现LED灯的闪烁。当按键2为低电平的时候,P1口所有的灯实现按位取反功能,所有灯闪烁。当按键1和2都为高电平时,P1口为低电平,所有灯亮。
这个硬件电路是P3^0和P3^1控制按键1和2;P1口控制八个LED灯。
呵呵,数码管的动态和静态还在学习当中,现在基本的静态控制应该是会了,动态的争取这两天把它学完。加油。
由于时间关系,在这就不写上单片机的工作系统了。
有了这个程序和原理图,我们也可以根据需要适当得改写程序,达到我们想要的目的。
【】【】【】【】
上一篇:下一篇:
CopyRight @
单片机教程网
, All Rights Reserved503 Service Temporarily Unavailable
503 Service Temporarily Unavailable
openresty/1.9.7.4网站已改版,请使用新地址访问:
IO--SPI 单片机IO口模拟SPI程序, 简单好用,适合初学SPI的学员 SCM 开发 238万源代码下载-
&文件名称: IO--SPI
& & & & &&]
&&所属分类:
&&开发工具: C-C++
&&文件大小: 5 KB
&&上传时间:
&&下载次数: 10
&&提 供 者:
&详细说明:单片机IO口模拟SPI程序,程序简单好用,适合初学SPI的学员-Single-chip IO simulation SPI program, the program is simple and easy to use, suitable for beginners SPI trainees
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&IO--SPI&&.......\IO--SPI.doc
&近期下载过的用户:
&相关搜索:
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - STC单片机IO口模拟SPI程序,每隔50ms,从模拟SPI发送32个字节数据.
&[] - 详细介绍单片机IO口模拟SPI总线的用法,更容易掌握模拟SPI的编程。
&[] - STC芯片――12C5A60S2的自编简要串口调试程序
&[] - AVR单片机实现SPI双击通信,经测试好用
&[] - 单片机 模拟 SPI 总线 很基础 适合初学者
&[] - 运用单片机的4个IO口来模拟SPI的功能,以此解决串口通信的问题。
&[] - 51单片机SPI通讯协议的编写事例。便于移植和开发
&[] - delphi控件 spcom for d2007.rar
&[] - FPGA,VHDL,入门程序,可以在LED上面显示hello
&[] - stc读写
数据类型转化51单片机普通IO口模拟IIC总线的程序实现
51单片机普通IO口模拟IIC总线的程序实现
发布: | 作者: | 来源:
| 查看:97次 | 用户关注:
IIC是由Philips公司发明的一种串行数据通信协议,仅使用两根信号线:SerialClock(简称SCL)和SerialData(简称SDA)。IIC是总线结构,1个Master,1个或多个Slave,各Slave设备以7位地址区分,地址后面再跟1位读写位,表示读(=1)或者写(=0),所以我们有时也可看到8位形式的设备地址,此时每个设备有读、写两个地址,高7位地址其实是相同的。IIC数据格式
IIC是由Philips公司发明的一种串行数据通信协议,仅使用两根信号线:SerialClock(简称SCL)和SerialData(简称SDA)。IIC是总线结构,1个Master,1个或多个Slave,各Slave设备以7位地址区分,地址后面再跟1位读写位,表示读(=1)或者写(=0),所以我们有时也可看到8位形式的设备地址,此时每个设备有读、写两个地址,高7位地址其实是相同的。IIC数据格式如下:无数据:SCL=1,SDA=1;开始位(Start):当SCL=1时,SDA由1向0跳变;停止位(Stop):当SCL=1时,SDA由0向1跳变;数据位:当SCL由0向1跳变时,由发送方控制SDA,此时SDA为有效数据,不可随意改变SDA;当SCL保持为0时,SDA上的数据可随意改变;地址位:定义同数据位,但只由Master发给Slave;应答位(ACK):当发送方传送完8位时,发送方释放SDA,由接收方控制SDA,且SDA=0;否应答位(NACK):当发送方传送完8位时,发送方释放SDA,由接收方控制SDA,且SDA=1。当数据为单字节传送时,格式为:开始位,8位地址位(含1位读写位),应答,8位数据,应答,停止位。当数据为一串字节传送时,格式为:开始位,8位地址位(含1位读写位),应答,8位数据,应答,8位数据,应答,&&,8位数据,应答,停止位。需要注意的是:1、SCL一直由Master控制,SDA依照数据传送的方向,读数据时由Slave控制SDA,写数据时由Master控制SDA。当8位数据传送完毕之后,应答位或者否应答位的SDA控制权与数据位传送时相反。2、开始位&Start&和停止位&Stop&,只能由Master来发出。3、地址的8位传送完毕后,成功配置地址的Slave设备必须发送&ACK&。否则否则一定时间之后Master视为超时,将放弃数据传送,发送&Stop&。4、当写数据的时候,Master每发送完8个数据位,Slave设备如果还有空间接受下一个字节应该回答&ACK&,Slave设备如果没有空间接受更多的字节应该回答&NACK&,Master当收到&NACK&或者一定时间之后没收到任何数据将视为超时,此时Master放弃数据传送,发送&Stop&。5、当读数据的时候,Slave设备每发送完8个数据位,如果Master希望继续读下一个字节,Master应该回答&ACK&以提示Slave准备下一个数据,如果Master不希望读取更多字节,Master应该回答&NACK&以提示Slave设备准备接收Stop信号。6、当Master速度过快Slave端来不及处理时,Slave设备可以拉低SCL不放(SCL=0将发生&线与&)以阻止Master发送更多的数据。此时Master将视情况减慢或结束数据传送。下面是本人编写的单片机普通IO口模拟IIC总线的程序源代码:/*Fuction:GPIO模拟iic bus,实现与AT24C02的数据通信PS:该源代码是以STC89C52为平台编写的,可通过修改包含的头文件以适用于所有51系列单片机SD:Jason*/#include #include sbit sda = P2^0;sbit scl = P2^1;unsigned char table1[11]={0,1,2,3,4,5,6,7,8,9};unsigned char table2[11];void init();void somenop();void delay(unsigned char);void start();void stop();void send_ack(unsigned char);unsigned char rec_ack();void write_byte(unsigned char);unsigned char read_byte();unsigned char write_add(unsigned char,unsigned char *,unsigned char);unsigned char read_add(unsigned char,unsigned char *,unsigned char);void main(){init();write_add(0x10,table1,10);delay(100);read_add(0x10,table2,10);while(1);}//端口初始化void init(){memset(table2,0,sizeof(table2));sda = 1;scl = 1;somenop();}//起始信号void start(){sda = 1;somenop();scl = 1;somenop();sda = 0;somenop();}//终止信号void stop(){sda = 0;somenop();scl = 1;somenop();sda = 1;somenop();}//主机发送应答信号void send_ack(unsigned char ack){scl = 0;somenop();sda =somenop();scl = 1;somenop();scl = 0;somenop();sda = 1;somenop();}//主机接收应答信号unsigned char rec_ack(){scl = 1;somenop();if(sda == 1){scl = 0;delay(1);scl = 1;if(sda == 1)return 1;}elsereturn 0;}//写一个字节void write_byte(unsigned char dat){unsigned char i,a;a =for(i=0;i<8;i++){a = a<<1;scl = 0;somenop();sda = CY;somenop();scl = 1;somenop();}scl = 0;somenop();sda = 1;somenop();}//读一个字节unsigned char read_byte(){unsigned char i,a;scl = 0;somenop();sda = 1;somenop();for(i=0;i<8;i++){scl = 1;somenop();a = (a<<1)|scl = 0;somenop();}}//向add地址写入len长度的dat数据unsigned char write_add(unsigned char add,unsigned char *dat,unsigned char len){unsigned char flag,i;start();write_byte(0xa0);if(rec_ack() == 0){write_byte(add);if(rec_ack() == 0){for(i=0;i<i++){write_byte(dat[i]);if(rec_ack() == 1){i = 0;}}if(i == len)flag = 1;}}stop();}//从add地址读出len长度的数据给datunsigned char read_add(unsigned char add,unsigned char *dat,unsigned char len){unsigned char flag,i;start();write_byte(0xa0);if(rec_ack() == 0){write_byte(add);if(rec_ack() == 0){start();write_byte(0xa1);if(rec_ack() == 0){for(i=0;i0;y--)for(z=110;z>0;z--);}
本页面信息由华强电子网用户提供,如果涉嫌侵权,请与我们客服联系,我们核实后将及时处理。
应用与方案分类
这段时间,巨头高通似乎有些“点背”。苹果欠的专利费不给还}

我要回帖

更多关于 程序包java.io不存在 的文章

更多推荐

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

点击添加站长微信