版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、任务二:I2C存储器读写(计数器,并能断电存储)实验原理1)I2C总线概述I2C总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。 2)I2C信号线I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。图 3 I2C总线框图3)I2C总线的数据传送 a)数据位的有效性规定 I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在
2、时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。图 4 SDA与SCL的工作时序图b) 起始和终止信号SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。1 / 24c) I2C总线的数据传送速率 I2C总线的通信速率受主机控制,能快能慢,最高速率限制为100Kb/s d) I2C总线的数据传送格式 主机向从机发送数据 从机向主机发送数据图 5 I2C总线的数据传送格式S:起始位 SA:
3、 从机地址,7位W/:写标志位,1位 R:读标志位,1位A:应答位,1位 A/:非应答位,1位D:数据,8位 P:停止位阴影:主机产生的信号 无阴影:从机产生的信号4)总线的寻址 I2C总线协议有明确的规定:采用7位的寻址字节(寻址字节是起始信号后的第一个字节)。寻址字节的位定义 D7D1位组成从机的地址。D0位是数据传送方向位,为“0”时表示主机向从机写数据,为“1”时表示主机由从机读数据。主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,如果相同,则认为自己正被主机寻址,根据R/位将自己确定为发送器或接收器。从机的地址由固定部分和可编程部分组成。在一个系统中可能希望接入
4、多个相同的从机,从机地址中可编程部分决定了可接入总线该类器件的最大数目。如一个从机的7位寻址位有4位是固定位,3位是可编程位,这时仅能寻址8个同样的器件,即可以有8个同样的器件接入到该I2C总线系统中。任务三:要求:设计一个简单系统,每10S进行温度采集(结合电路与程序,分析指标),在液晶屏上显示当前温度和前一状态的温度,并将结果存入存储器,具备可将温度的存储结果与PC机通讯和数据发送功能,可以使用键盘设定温度高低限制值,达到限制值时报警。 一、 实验设计思路二、实验内容1、 蜂鸣器工作原理蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单
5、片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。原理图见图:如图所示,蜂鸣器的负极经电阻R3接地,蜂鸣器的正极接到三极管的集电极C,三极管的基级B经过限流电阻R2后由单片机的P1.3引脚控制,当P1.3输出高电平时,三极管Q1截止,没有电流流过线圈,蜂鸣器不发声;当P1.3输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制P1.3脚的电平来使蜂鸣器发出声音和关闭。程序中改变单片机P1.3引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。另外,改变P1.3输出电平的高低电平占空
6、比,则可以控制蜂鸣器的声音大小。2、 SP2键盘控制数据格式1个起始位总是逻辑08个数据位(LSB)低位在前1个奇偶校验位奇校验1个停止位总是逻辑11个应答位仅用在主机对设备的通讯中数据发送时序一个键盘发送值的例子: 通码和断码是以什么样的序列发送到你的计算机从而使得字符G 出现在你的字处理软件里的呢?因为这是一个大写字母,需要发生这样的事件次序:按下Shift 键-按下G键-释放G 键-释放Shift 键。与这些时间相关的扫描码如下:Shift 键的通码12h,G 键的通码34h ,G 键的断码F0h 34h ,Shift 键的断码
7、F0h 12h 。因此发送到你的计算机的数据应该是:12h 34h F0h 34h F0h 12h3、 DS18B20温度传感器DS18B20工作原理及应用: DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。在讲解其工作流程之前我们有必要了解18B20的内部存储器资源。18B20共有三种形态的存储器资源,它们分别是: ROM 只读存储器,用于存放DS18B20ID编码,其前8位是单线系列编码(DS18B20的编码是19H),后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。数据在出产时设
8、置不由用户更改。DS18B20共64位ROM。 RAM 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EEPROM(常用于温度报警值储存)的镜像。在上电复位时其值将被刷新。第5个字节则是用户第3个EEPROM的镜像。第6、7、8个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第9个字节为前8个字节的CRC码。EEPROM 非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EEPROM,并
9、在RAM都存在镜像,以方便用户操作。4、 LCD1602液晶显示读写操作时序如图所示图三:读操作时序图四:写操作时序附录一:(任务二程序)#include <p18f452.h>#include <i2c.h>#define uint unsigned int #define uchar unsigned char#define e PORTBbits.RB3/液晶屏e端接RB3#define rw PORTBbits.RB4/液晶屏rw端接RB4#define rs PORTBbits.RB5/液晶屏rs端接RB5void disp(uchar num1,uchar
10、num2,uchar num3);void delay(uint z);void disp_init(void); /液晶屏初始化void write_com(uchar com);/对液晶屏写指令void write_data(uchar dat);/写数据void main(void) unsigned int lednum=0,x,tt=0; /lednum显示的数据,x 24c02读到的数据,tt时间累加 unsigned int a1=0,a2=0,a3=0; /显示位数个十百 disp_init();/1602的初始化 OpenI2C(MASTER, SLEW_ON);/I2C的初
11、始化 SSPADD = 9; /频率为400KHZ T0CONbits.TMR0ON=0;/关闭TIMER0 T0CONbits.T08BIT=0;/配置为16位计数模式 T0CONbits.T0CS=0;/选择内部时钟源即定时模式 TMR0H=(65536-10000)/256;/定时5us TMR0L=(65536-10000)%256; INTCONbits.TMR0IF=0;/清TIMER0溢出中断标志位 T0CONbits.TMR0ON=1;/使能TIMER0 while(1) x = EERandomRead(0xA0,0x03);/读数据,0XA0为器件地址 0X03为存储地址
12、if(INTCONbits.TMR0IF=1) /TIMER0溢出中断标志位为1 INTCONbits.TMR0IF=0;/清TIMER0溢出中断标志位 TMR0H=(65536-10000)/256;/5us*10000=50ms TMR0L=(65536-10000)%256; tt+; if(tt=20)/1s tt=0; x+; if(x=256) x=0; EEByteWrite(0xA0, 0x03,x); /写数据 EEAckPolling(0xA0);/应答 lednum = EERandomRead(0xA0,0x03);/防止断电遗失 a1=lednum/100;/百位上的
13、数字 a2=lednum%100/10;/十位上的数字 a3=lednum%10;/个位上的数字 disp(a1,a2,a3);/显示void write_com(uchar com)/LED1602控制字输入TRISB=0b000000000; /TRISB=0b00010000;TRISD=0;e=0;rw=0;rs=0; /写指令:RS=L,RW=L,D0D7=指令码,E=高脉冲PORTD=com; /写指令到液晶delay(5);e=1;delay(5);e=0;void write_data(uchar dat)/LCD1602数据输入TRISD=0;e=0;rw=0;rs=1;/写
14、数据:RS=H,RW=L,D0D7=指令码,E=高脉冲PORTD=dat;/写数据到液晶delay(5);e=1;delay(5);e=0;void disp_init()TRISD=0;/选择D端口为液晶屏数据的输入口write_com(0x38);/液晶开显示write_com(0x0c);/显示光标,光标闪烁write_com(0x06);/读或写一个字符后地址指针加一,光标加一write_com(0x01);/显示清屏:1、数据指针清零;2、所有显示清零write_com(0x80);/第一行首位void disp(uchar num1,uchar num2,uchar num3)wr
15、ite_com(0x80+0x40);write_data(num1+0x30);/液晶第二行第一位数delay(1); write_com(0x80+0x41);write_data(num2+0x30);/液晶第二行第二位数delay(1);write_com(0x80+0x42);write_data(num3+0x30);/液晶第二行第三位数delay(1);void delay(uint z)/z毫秒延时子程序uint x,y;for(x=110;x>0;x-)for(y=z;y>0;y-);附录二 (任务三程序)#include <pic18.h> /调用头
16、文件,可以去PICC18软件下去查找PIC18FXX2.H_CONFIG(1,XT) ; /晶振为外部4M _CONFIG(2,WDTDIS) ; /看门狗关闭_CONFIG(4,LVPDIS) ; /禁止低电压编程 #define RSPIN RB5 /Data or Instrument Select LCD1602#define RWPIN RB4 /Write or Read#define EPIN RB3 /6800 mode Enable singleunsigned char temp1=0,temp1_1=0; /采集到的温度高8位 上一次的unsigned char temp
17、2=0,temp2_2=0; /采集到的温度低8位unsigned int a,b,c=0;#define beep RC2 /定义蜂鸣器接口/*/#define sda RC4 /AT24C02#define scl RC3bit eepromdi;bit eepromdo;unsigned char addressbuf;unsigned char buf_24C02;/*/bit clrbit; /USARTunsigned char recebuf;/*/转换后的温度值小数点部分查表const unsigned char tablexiao16=0,0,1,2,2,3,4,4,5,6,
18、6,7,8,8,9,9;/*/#define Key_Data RB1#define Key_CLK RB0 unsigned char IntNum; /中断次数计数unsigned char KeyV; /键值unsigned char Key_UP=0, Shift = 0;/Key_UP是键松开标识,Shift是Shift键按下标识unsigned char keybuf;unsigned char disbuf;/84unsigned char shu1=0,shu2=0,tem1=0,tem2=0,tem3=0; /温度上限bit bf; /标识是否有字符被收到bit disbit
19、;/0x66为backspace键/0x5a为Enter键const unsigned char UnShifted592 = 0x1C, 'a',0x32, 'b',0x21, 'c',0x23, 'd',0x24, 'e',0x2B, 'f',0x34, 'g',0x33, 'h',0x43, 'i',0x3B, 'j',0x42, 'k',0x4B, 'l',0x3A, 'm',0x
20、31, 'n',0x44, 'o',0x4D, 'p',0x15, 'q',0x2D, 'r',0x1B, 's',0x2C, 't',0x3C, 'u',0x2A, 'v',0x1D, 'w',0x22, 'x',0x35, 'y',0x1A, 'z',0x45, '0',0x16, '1',0x1E, '2',0x26, '3
21、39;,0x25, '4',0x2E, '5',0x36, '6',0x3D, '7',0x3E, '8',0x46, '9',0x0E, '',0x4E, '-',0x55, '=',0x5D, '',0x29, ' ',0x54, '',0x5B, '',0x4C, '',0x52, ''',0x41, ',',0x49,
22、9;.',0x4A, '/',0x71, '.',0x70, '0',0x69, '1',0x72, '2',0x7A, '3',0x6B, '4',0x73, '5',0x74, '6',0x6C, '7',0x75, '8',0x7D, '9',;const unsigned char Shifted592 = 0x1C, 'A',0x32, 'B',0x21,
23、 'C',0x23, 'D',0x24, 'E',0x2B, 'F',0x34, 'G',0x33, 'H',0x43, 'I',0x3B, 'J',0x42, 'K',0x4B, 'L',0x3A, 'M',0x31, 'N',0x44, 'O',0x4D, 'P',0x15, 'Q',0x2D, 'R',0x1B, 'S'
24、,0x2C, 'T',0x3C, 'U',0x2A, 'V',0x1D, 'W',0x22, 'X',0x35, 'Y',0x1A, 'Z',0x45, '0',0x16, '1',0x1E, '2',0x26, '3',0x25, '4',0x2E, '5',0x36, '6',0x3D, '7',0x3E, '8',0x46, '
25、9',0x0E, '',0x4E, '_',0x55, '+',0x5D, '|',0x29, ' ',0x54, '',0x5B, '',0x4C, ':',0x52, '"',0x41, '<',0x49, '>',0x4A, '?',0x71, '.',0x70, '0',0x69, '1',0x72, '2
26、9;,0x7A, '3',0x6B, '4',0x73, '5',0x74, '6',0x6C, '7',0x75, '8',0x7D, '9',;/*/6x8.h文件:/*-6 x 8 font1 pixel space at left and bottomindex = ASCII - 32-*/const unsigned char font6x86 = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ,/ sp 0x00, 0x00, 0x00, 0x2
27、f, 0x00, 0x00 ,/ ! 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 ,/ " 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 ,/ # 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 ,/ $ 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 ,/ %5 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 ,/ & 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 ,/ ' 0x00, 0x00, 0x1c, 0x22, 0x4
28、1, 0x00 ,/ ( 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 ,/ ) 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 ,/ * 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 ,/ + 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 ,/ , 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 ,/ - 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 ,/ . 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 ,/ / 0x00, 0
29、x3E, 0x51, 0x49, 0x45, 0x3E ,/ 0 16 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 ,/ 1 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 ,/ 2 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 ,/ 3 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 ,/ 4 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 ,/ 5 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 ,/ 6 0x00, 0x01, 0x71, 0x09,
30、0x05, 0x03 ,/ 7 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 ,/ 8 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E ,/ 9 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 ,/ : 26 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 ,/ ; 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 ,/ < 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 ,/ = 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 ,/
31、> 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 ,/ ? 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E ,/ 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C ,/ A33 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 ,/ B 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 ,/ C 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C ,/ D 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 ,/ E 0x00, 0x7F, 0x0
32、9, 0x09, 0x09, 0x01 ,/ F 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A ,/ G 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F ,/ H 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 ,/ I 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 ,/ J 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 ,/ K 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 ,/ L 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F
33、,/ M 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F ,/ N 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E ,/ O 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 ,/ P 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E ,/ Q 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 ,/ R 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 ,/ S 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 ,/ T 0x00, 0x3F, 0x4
34、0, 0x40, 0x40, 0x3F ,/ U 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F ,/ V 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F ,/ W 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 ,/ X 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 ,/ Y 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 ,/ Z 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 ,/ 59 0x00, 0x02, 0x04, 0x08, 0x10, 0x20
35、 ,/ '' 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 ,/ 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 ,/ 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 ,/ _ 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 ,/ ' 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 ,/ a 65 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 ,/ b 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 ,/ c 0x
36、00, 0x38, 0x44, 0x44, 0x48, 0x7F ,/ d 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 ,/ e 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 ,/ f 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C ,/ g 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 ,/ h 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 ,/ i 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 ,/ j 0x00, 0x7F, 0x10, 0x28
37、, 0x44, 0x00 ,/ k 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 ,/ l 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 ,/ m 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 ,/ n 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 ,/ o 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 ,/ p 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC ,/ q 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 ,/ r 0x
38、00, 0x48, 0x54, 0x54, 0x54, 0x20 ,/ s 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 ,/ t 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C ,/ u 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C ,/ v 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C ,/ w 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 ,/ x 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C ,/ y 0x00, 0x44, 0x64, 0x54
39、, 0x4C, 0x44 ,/ z 90 0x00, 0x00, 0x00, 0xff, 0x00, 0x00 ,/ | 91 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 / horiz lines; /*/void delay(unsigned char x,unsigned char y) unsigned char z; do z=y; do ; while(-z); while(-x); /名称: 复位DS18B20函数unsigned char reset(void)unsigned char outbit;TRISA4=0;/设置RA4位输出口RA4=0;
40、 /设置RA4=0; delay(2,70); /延时503us TRISA4=1; /设置RA4为输入口,以释放总线等电阻拉高总线 delay(2,8); /延时70us if(RA4=1) outbit=0; /没有接收到应答信号,继续复位 else outbit=1; /接收到应答信号 delay(2,60); /延时430us return outbit; /带参数返回,如果接收到应答,返回1,否则返回0/名称: 写字节函数void write_byte(unsigned char val) unsigned char i; unsigned char temp; for(i=8;i&
41、gt;0;i-) temp=val&0x01; /最低位移出 TRISA4=0;/设置RA4位输出口RA4=0; /设置RA4=0; NOP(); NOP(); NOP(); NOP(); NOP(); /从高拉至低电平,产生写时间隙 if(temp=1) TRISA4=1; /如果写1,拉高电平 delay(2,7); /延时63us TRISA4=1; /设置RA4为输入口,以释放总线等电阻拉高总线 NOP(); NOP(); val=val>>1; /右移一位 /名称: 读字节函数unsigned char read_byte(void) unsigned char
42、i; unsigned char value=0; /读出温度 for(i=8;i>0;i-) value>>=1; TRISA4=0;/设置RA4位输出口 RA4=0; /设置RA4=0; NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); /6us TRISA4=1; /设置RA4为输入口 NOP(); NOP(); NOP(); NOP(); /4us if(RA4=1) value|=0x80; /如果接收到数据为1,从最高位往右移 delay(2,7); /63us return(value);/名称: 启动读温度函数void con
43、vert_T(void) if(reset()=1) /如果复位成功 write_byte(0xcc); / 跳过多器件识别 write_byte(0x44); / 启动温度转换 /名称: 读温度函数void read_T(void) unsigned char Lsb,Msb; if(reset()=1) write_byte(0xcc); / 跳过多器件识别 write_byte(0xbe); / 读暂存器 Lsb=read_byte(); / 低字节 Msb=read_byte(); / 高字节 temp2=Lsb&0x0f; /LSB的低4位为小数部分temp1=(Lsb>
44、;>4)|(Msb<<4);/LSB的高4位和MSB拼成整数部分 /名称: 延时函数 void delay1(unsigned int t)unsigned int i,j;for(i=0;i<t;i+)for(j=0;j<10;j+);/名称: 1602忙检测函数 void lcd_wait_busy(void) TRISD7=1; /为读状态做准备,把RD7设为输入 RSPIN=0; /选择指令寄存器 RWPIN=1; /选择读 EPIN=1; /使能线电平变化 while(RD7=1); /读忙状态,不忙时退出 EPIN=0; /恢复使能线电平 TRISD7
45、=0; /把RD7设置为输出/名称: 1602写命令函数 void lcd_write_com(unsigned char combuf) RSPIN=0; /选择指令寄存器 RWPIN=0; /选择写 PORTD=combuf; /把命令字送入RD EPIN=1; /使能线电平变化,命令送入1602的8位数据口 asm("NOP"); /来一个空操作,以延时片刻 EPIN=0; /恢复使能线电平/1602写命令函数(带忙检测) void lcd_write_com_busy(unsigned char combuf) lcd_wait_busy();/调用忙检测函数 lc
46、d_write_com(combuf); /调用写命令函数/1602写数据函数(带忙检测) void lcd_write_data(unsigned char databuf) lcd_wait_busy();/调用忙检测函数 RSPIN=1; /选择数据寄存器 RWPIN=0; /选择写 PORTD=databuf; /把数据字送入RD口 EPIN=1; /使能线电平变化,命令送入1602的8位数据口 asm("NOP"); EPIN=0; /恢复使能线电平/名称: 1602显示地址写函数 void lcd_write_address(unsigned char x,un
47、signed char y) x&=0x0f;/列地址限制在0-15 y&=0x01;/行地址限制在0-1 if(y=0x00) lcd_write_com_busy(x|0x80); /第一行的列地址写入 else lcd_write_com_busy(x+0x40)|0x80); /第二行的列地址写入/名称: 1602初始化函数 void lcdreset(void) delay1(150); lcd_write_com(0x38); delay1(50); lcd_write_com(0x38); delay1(50); lcd_write_com(0x38); lcd_write_com_busy(0x38); /8位数据,双列,5*7字形 lcd_write_com_busy(0x08);/显示功能关,无光标 lcd_write_com_busy(0x01);/清屏指令 lcd_write_com_busy(0x06);/写入新的数据后,光标右移,显示屏不移动 lcd_write_com_bus
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年度现代农业项目融资借款合同3篇
- 2024年度高端服装品牌代理与分销合同2篇
- 2024年农业节水灌溉装置安装合同3篇
- 2024年户外运动场所租赁合同范本版B版
- 暖通空调工程招标合同三篇
- 2024年度量子计算机技术转让合同3篇
- 二零二四年高档住宅区门窗安装工程合同2篇
- 2024年出租汽车服务标准合同模板
- 2024年专属:高级管理人员聘用协议3篇
- 2024年版教育软件开发与授权许可合同6篇
- 《西方经济学(本)》形考任务(1-6)试题答案解析
- (高级)插花花艺师(三级)技能鉴定考试题库-下(判断题)
- 护理学专业大学生职业规划书
- 北师大版五年级上册数学期末测试卷及答案共5套
- 2023年中航集团(国航股份)财务业务储备岗招聘考试真题
- 品质异常(8D)改善报告
- 更换天沟维修施工方案(共8页)
- 光伏发电项目工程水土保持方案编制总则
- 山东浅谈鉴定肩撞击综合症伤残1例
- 蟾蜍药用价值的研究进展
- ProE5.0全套教程(完整版)
评论
0/150
提交评论