当前位置: 首页 > news >正文

建设部政务网站网站建设实训室

建设部政务网站,网站建设实训室,安徽建设工程信息网官网优秀中项网,word版免费个人简历模板一、IIC协议 1、IIC协议概述 1.1、概述#xff1a;IIC全称Inter-Integrated Circuit (集成电路总线) 是由PHILIPS公司在80年代开发的两线式串行总线#xff0c;用于连接微控制器及其外围设备。IIC属于半双 工同步通信方式 1.2、特点#xff1a;简单性和有效性。 由于接口直…一、IIC协议 1、IIC协议概述 1.1、概述IIC全称Inter-Integrated Circuit (集成电路总线) 是由PHILIPS公司在80年代开发的两线式串行总线用于连接微控制器及其外围设备。IIC属于半双 工同步通信方式 1.2、特点简单性和有效性。 由于接口直接在组件之上因此IIC总线占用的空间非常小减少了电路板的空间和芯片管脚的数量降 低了互联成本。总线的长度可高达25英尺并且能够以10Kbps的最大传输速率支持40个组件 多主控(multimastering) 其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当 然在任何时间点上只能有一个主控。 1.3、构成IIC串行总线一般有两根信号线一根是双向的数据线SDA另一根是时钟线SCL其时钟信号是由主控 器件产生。所有接到IIC总线设备上的串行数据SDA都接到总线的SDA上各设备的时钟线SCL接到总线 的SCL上。对于并联在一条总线上的每个IC都有唯一的地址。   2、时序分析 IIC总线在传输数据的过程中一共有三种类型信号分别为开始信号、结束信号和应答信号。 起始信号 void IIC_Start() {scl 0;sda 1;scl 1;_nop_();sda 0;_nop_(); }终止信号 void IIC_Stop() {sda 0;scl 1;_nop_();sda 1;_nop_(); }应答信号 发送器每发送一个字节8个bit就在时钟脉冲9期间释放数据线由接收器反馈一个应答信号。 应答信号为低电平时规定为有效应答位ACK简称应答位表示接收器已经成功地接收了该字 节 应答信号为高电平时规定为非应答位NACK一般表示接收器接收该字节没有成功 char IIC_ACK() {char flag;sda 1;//就在时钟脉冲9期间释放数据线_nop_();scl 1;_nop_();flag sda;_nop_();scl 0;_nop_();return flag; } 数据发送 void IIC_Send_Byte(char dataSend) {int i;for(i 0;i8;i){scl 0;//scl拉低让sda做好数据准备sda dataSend 0x80;//1000 0000获得dataSend的最高位给sda_nop_();//发送数据建立时间scl 1;//scl拉高开始发送_nop_();//数据发送时间scl 0;//发送完毕拉低_nop_();//dataSend dataSend 1; } }二、oled屏 1、OLED写命令 写命令/数据的代码逻辑思路 1. start() 2. 写入 b0111 1000 0x78 3. ACK 4. cotrol byte: (0)(0)000000 写入命令 (0)(1)000000写入数据 5. ACK 6. 写入指令/数据 7. ACK 8. STOP void Oled_Write_Cmd(char dataCmd) { // 1. start()IIC_Start(); // 2. 写入从机地址 b0111 1000 0x78IIC_Send_Byte(0x78); // 3. ACKIIC_ACK(); // 4. cotrol byte: (0)(0)000000 写入命令 (0)(1)000000写入数据IIC_Send_Byte(0x00); // 5. ACKIIC_ACK(); //6. 写入指令/数据IIC_Send_Byte(dataCmd); //7. ACKIIC_ACK(); //8. STOPIIC_Stop(); } void Oled_Write_Data(char dataData) { // 1. start()IIC_Start(); // 2. 写入从机地址 b0111 1000 0x78IIC_Send_Byte(0x78); // 3. ACKIIC_ACK(); // 4. cotrol byte: (0)(0)000000 写入命令 (0)(1)000000写入数据IIC_Send_Byte(0x00); // 5. ACKIIC_ACK(); ///6. 写入指令/数据IIC_Send_Byte(dataData); //7. ACKIIC_ACK(); //8. STOPIIC_Stop(); } 2、OLED的寻址模式 如何显示一个点 有三种寻址模式分别位页地址模式水平地址模式和垂直地址模式可以通过一下表格进行配置 内存管理 页地址模式  水平地址模式  垂直地址模式   列地址选择 如果写入0x08b00001000会显示什么呢 一个字节负责一个Page的一列显示 三、代码实现 #include reg52.h #include intrins.hsbit sclP0^1; sbit sdaP0^3;void IIC_start() {scl0;//防止雪花sda1;scl1;_nop_();sda0;_nop_();} void IIC_stop() {scl0;sda0;scl1;_nop_();sda1;_nop_();}char IIC_ACK() {char flag;sda1;//就在时钟脉冲9期间释放数据线_nop_();scl1;_nop_();flagsda;_nop_();scl0;_nop_();return flag; }void IIC_Send_Byte(char dataSend) {int i;for(i0;i8;i){scl0;//scl拉低做好数据准备sdadataSend 0x80; //1000 0000获得dataSend的最高位给sda_nop_();//发送数据建立时间scl1;//scl拉高开始传数据_nop_();scl0;//发送完毕拉低_nop_();dataSend dataSend 1;} }void Oled_Write_Data(char dataData) {//1.startIIC_start();//2.写入从机地址 0x78IIC_Send_Byte(0x78);//3.ACKIIC_ACK();//4.control byte: 0000 0000 写入命令 0100 0000 写入数据IIC_Send_Byte(0x40);//5.ACKIIC_ACK();//6.写入指令或数据IIC_Send_Byte(dataData);//7.ACKIIC_ACK();//8.STOPIIC_stop(); }void Oled_Write_Cmd(char dataCmd) {//1.startIIC_start();//2.写入从机地址 0x78IIC_Send_Byte(0x78);//3.ACKIIC_ACK();//4.control byte: 0000 0000 写入命令 0100 0000 写入数据IIC_Send_Byte(0x00);//5.ACKIIC_ACK();//6.写入指令或数据IIC_Send_Byte(dataCmd);//7.ACKIIC_ACK();//8.STOPIIC_stop(); }void Oled_Init(void){Oled_Write_Cmd(0xAE);//--display offOled_Write_Cmd(0x00);//---set low column addressOled_Write_Cmd(0x10);//---set high column addressOled_Write_Cmd(0x40);//--set start line address Oled_Write_Cmd(0xB0);//--set page addressOled_Write_Cmd(0x81); // contract controlOled_Write_Cmd(0xFF);//--128 Oled_Write_Cmd(0xA1);//set segment remap Oled_Write_Cmd(0xA6);//--normal / reverseOled_Write_Cmd(0xA8);//--set multiplex ratio(1 to 64)Oled_Write_Cmd(0x3F);//--1/32 dutyOled_Write_Cmd(0xC8);//Com scan directionOled_Write_Cmd(0xD3);//-set display offsetOled_Write_Cmd(0x00);//Oled_Write_Cmd(0xD5);//set osc divisionOled_Write_Cmd(0x80);//Oled_Write_Cmd(0xD8);//set area color mode offOled_Write_Cmd(0x05);//Oled_Write_Cmd(0xD9);//Set Pre-Charge PeriodOled_Write_Cmd(0xF1);//Oled_Write_Cmd(0xDA);//set com pin configuartionOled_Write_Cmd(0x12);//Oled_Write_Cmd(0xDB);//set VcomhOled_Write_Cmd(0x30);//Oled_Write_Cmd(0x8D);//set charge pump enableOled_Write_Cmd(0x14);//Oled_Write_Cmd(0xAF);//--turn on oled panel }void Oled_Clear() //清屏函数 {int i;int j;for(i0;i8;i){Oled_Write_Cmd(0xB0 i);//page0--page7//每个page从0列Oled_Write_Cmd(0x00);Oled_Write_Cmd(0x10);//到127列依次写入0每写入数据列地址自动偏移for(j0;j128;j){Oled_Write_Data(0); }}}void Oled_Show_Image(unsigned char *image)//显示一张图 {unsigned int i;unsigned int j;for(i0;i8;i){Oled_Write_Cmd(0xB0 i);//page0--page7//每个page从0列Oled_Write_Cmd(0x00);Oled_Write_Cmd(0x10);//到127列依次写入0每写入数据列地址自动偏移for(j128*i;j128 * (i1);j){Oled_Write_Data(image[j]);}}}void main() {//1.OLED初始化Oled_Init();//2.选择一个位置//2.1确认页寻址模式Oled_Write_Cmd(0x20);Oled_Write_Cmd(0x02);Oled_Clear();//清屏函数//显示一条线Oled_Write_Data(0x08);Oled_Write_Data(0x08);Oled_Write_Data(0x08);Oled_Write_Data(0x08);Oled_Write_Data(0x08);Oled_Write_Data(0x08);Oled_Write_Data(0x08);while(1);//不让程序退出 }
http://www.w-s-a.com/news/673168/

相关文章:

  • 有建设网站的软件吗长沙做网站的公司对比
  • 网站的外链接数中铝长城建设有限公司网站
  • 北京建设网站公司网站建设费用 无形资产
  • 适合seo的建站系统如何建立网页
  • 我想自己建立一个网站给大家分享个永久免费的云服务器
  • 怎样做网站和网站的友情链接官网优化 报价
  • 购买网站空间大小聊城网站空间公司
  • 做像美团淘宝平台网站多少钱开发网站企业
  • 网站建设前期费用二手购物网站策划书
  • dede学校网站百度联盟是什么
  • 献县网站建设网站开发专业定制
  • 龙华做网站yihe kj安徽六安彩礼一般给多少
  • flash网站建设公司我的小程序在哪里找
  • 建网站需要数据库吗如何制作简单的网页链接
  • 杭州设计企业网站高端公司上虞做网站公司
  • 做网站能赚钱么用wordpress搭建知名网站
  • 阿里云服务器网站开发青岛做网站找哪家
  • 凡科做的网站为什么打不开织梦cms仿某作文网站整站源码(带采集)安装数据库
  • 免费h5模板网站模板汽车报价网址
  • 蔡甸网站建设烟台网站建设yt
  • 最流行的网站开发新开的网页游戏平台
  • 暴富建站wordpress 标签分类
  • 搞笑网站源码百度快照替代
  • 重庆网站建设哪家公司哪家好关键词是怎么排名的
  • 青县网站建设今天国际大事新闻
  • 深圳正规网站制作哪里好怎样优化网络
  • 米拓网站建设教程dw成品网站成品视频教学
  • 用jsp做的网站源代码天门网站网站建设
  • 百度如何把网站做链接地址有没有资源可以在线观看
  • 淮安做网站找哪家好电子商务网站建设规划书的内容