PIC模拟I2C和24c02通讯
;在硬件里能够通讯,但是在proteus里实现不了,一直等待应答,不知道啥原因
;请斑竹及各位大虾看看错误在哪里,请指出,呵呵,谢谢了.
;硬件接法:
;1.24CXX的SDA接877A的RB5口,SCLK接877A的RB4口,WP接地,A0,A1,A2接地
;
;程序清单如下: 阅读全文…
;在硬件里能够通讯,但是在proteus里实现不了,一直等待应答,不知道啥原因
;请斑竹及各位大虾看看错误在哪里,请指出,呵呵,谢谢了.
;硬件接法:
;1.24CXX的SDA接877A的RB5口,SCLK接877A的RB4口,WP接地,A0,A1,A2接地
;
;程序清单如下: 阅读全文…
本文中,ANY电子 带你继续来学习使用Proteus仿真辅助学习PIC单片机的C语言程序。今天我们要学习的内容是使用Proteus软件仿真辅助学习PIC单片机的MSSP模块的SPI模式来扩展单片机的外部接口。
本例构思如下,在PIC单片机的MSSP模块SPI模式相应端口,即SCL(RC3)和SDO(RC5)上外接一个串口转并口的器件——74LS164,将从PIC单片机的SPI端口输出的串口信号转化为并口信号,并输出到接在74LS164上的七段数码管,将数据在数码管上显示出来。
和以前所有例子一样,首先在本地硬盘上新建一个名为MSSPSPI的文件夹,然后在MPLAB中新建一个名为MSSPSPI的工程项目,工程使用PICC编译器。然后将其保存到新建的MSSPSPI文件夹中,接着在该工程中添加一个名为main.c的C语言文件,并在其中输入如下图所示的源程序: 阅读全文…
继上一个例子的发出已经半月有余,然而这一段时间实在太忙,一直抽不开身子,直到今天 ANY电子 才为朋友们送上一个新的例子。需要说明的是,本例只是为了说明PIC单片机的USART模块的使用,故而十分简单。例子的构思如下:在PIC单片机的USART端口上外接一个74LS164串行转并行转换器,将由PIC单片机内部USART模块发出的串行数据转换为并行数据,接着将其输送给外接在74LS164上的数码管,并在数码管上将发送的数据信息显示出来。还需要说明的一点是,例子中我们将PIC单片机的USART模块的波特率设置为9600比特;并且输出了从0到F对应的七段数码管的段值。
和以前的所有例子一样,首先我们还是在本地的电脑上新建一个名为USART的文件夹,接着在MPLAB中新建一个名为USART使用PICC语言工具的工程,并将该工程保存到前面新建的USART文件夹中;然后在MPLAB中新建一个名为main.c的C语言源程序,源程序的内容如下图所示: 阅读全文…
在前面的文章中,ANY电子 带你一起学习了PIC单片机的CCP功能,包括 CCP输入捕捉模式的应用 以及 CCP输出比较模式的应用,并使用Proteus仿真了相关例子来辅助学习这些功能。今天,ANY电子带你继续学习PIC单片机的其他功能,并使用Proteus软件仿真相应例子来详细讲解相关内容。
本文我们要学习的内容是PIC单片机中的ADC模块的应用。PIC单片机内部集成了一个10位ADC模块,只需在程序中将其启用即可将ADC输入接口中输入的模拟信号转化为相应的数字信号。需要注意的还有,如PIC16F877这种40脚封装的器件,其ADC模块拥有8个模拟输入通道,分别从RA0-RA5和RE0-RE2输入(记作AN0-AN7)。
本例的构思如下,在PIC单片机ADC模块的AN0输入通道接上一个滑动变阻器,变阻器上分得的电压值作为输入的模拟信号;通过改变滑动变阻器的阻值来改变其上电压的大小,从而改变输入模拟信号的大小。而输入到PIC单片机ADC模块AN0通道的模拟电压信号即可被ADC模块转化为数字信号,我们将这个数字信号的大小直接显示在接在PORTB和PORTC端口上的数码管上。 阅读全文…
在上一篇文章中,ANY电子 为朋友们送上了一个讲述PIC单片机CCP1模块输入捕捉模式应用的例子。今天,我们接着来学习PIC单片机CCP模块的应用。本例我们将要学习的是CCP1模块输出比较模式的应用。
例子的构思如下:例子使用PIC单片机的CCP1模块的输出比较功能,并将CCP1模块设置为产生软件中断模式,在中断产生并进入到中断子程序中时,将PIC单片机的RB0口取反,以期在PIC单片机的PORTB口的最低位RB0口上输出一个方波。方波通过接在PIC单片机RB0口上的示波器来监视并查看其效果。
和以前的所有例子一样,首先在自己电脑的PIC文件夹下新建一个名为CCPCompare的子文件夹,然后在其中使用MPLAB集成开发环境新建一个名为CCPCompare的工程项目文件,记得将语言工具选择为PICC编译程序;接着,在MPLAB中新建一个名为main.c的程序源文件,并将其添加到前面新建的CCPCompare工程项目中。最后,我们在程序源文件中输入如下图所示的源程序: 阅读全文…
在前面的数个例子中,ANY电子带你学习了如何使用PIC的C语言书写定时器计数器程序,并在Proteus软件中对程序进行仿真应用,这些例子包括时钟以及中断等等。从本例开始,我们来学习PIC单片机中的CCP模块的应用,主要包括输入捕捉以及输出比较等等。今天我们先来学习输入捕捉。
本例的构思如下,使用接在PIC单片机CCP1模块捕捉接在CCP1端口上的按键产生的脉冲信号,并在CCP模块的中断程序中将捕捉次数加1。然后,我们在PIC单片机的主程序中,将捕捉次数在数码管上显示出来。数码管通过4511硬译码模块接在PIC单片机的RB端口上;同时,为了简便,我们只在外部电路中接入一个数码管,如果按键次数超过了显示返回(超过9次),则重新从0开始显示。 阅读全文…
今天,ANY电子带你继续使用Proteus软件仿真学习PIC单片机的C语言程序。本例将使用Proteus软件仿真学习PIC单片机的TMR2定时器/计数器的中断来产生方波。
例子的构思如下:将Proteus中的示波器器件接到PIC单片机的RB0口上,用以查看在RB0口上产生的方波;在PIC单片机C语言的主程序中初始化外接示波器的PortB端口,并初始化TMR2定时器启用定时器功能;一旦TMR2定时完成,就进入TMR2的中断子程序,在中断子程序中,将PIC单片机的RB0口上的电平取反,从而在RB0口上产生一个方波。而方波的周期则是通过TMR2定时器的定时长短来进行控制。我们可以通过接在RB0口上的示波器来查看最终输出的方波波形。 阅读全文…
在前面的例子中,ANY电子为你送上了一个使用外接晶振的时钟例子,但遗憾的是,不知道到底是什么原因,那里的外接晶振始终没有起振,我们没有实现预期效果。希望有朋友能为我们指出原因,以便我们及时修改,以利于更多后来者学习;当然,我们自己也会努力修正,以使其达到预期效果。
本例,我们将上例中使用外接晶振修改为使用内部时钟,而其余部分相比前例则没有任何变化,以完成另一个TMR1时钟的例子。本例构思和上例相同,如下:通过使用TMR1产生0.1S的定时,计时达到时产生一个中断,在中断子程序中累加与单片机RB口相连的两数码管中代表个位数的显示数字;当个位数字累积到9时,则更新显示两个数码管中代表十位的数字。单片机输出数字的BCD码经过与单片机连接的外部4511硬译码器译码为数码管所需的七段数码管的段值。本例使用PIC单片机内部时钟。 阅读全文…
继上一个关于TMR0的PIC单片机C语言例子之后,本文,ANY电子 带你继续学习使用Proteus仿真PIC单片机的C语言实例。
本文我们将要学习的是使用TMR1定时器计数器来制作一个时钟。例子构思如下:使用TMR1的定时功能,产生0.1S的定时,如果计时达到,则产生一个中断,在中断子程序中更新与PIC单片机RB口连接的两个数码管中个位数的显示数字;当个位数字积累到9时,则更新显示两个数码管中的十位数字。单片机输出数字的BCD码经过外部的4511硬译码器译码为数码管要求的七段数码管的段值。
首先,我们试图使用PIC单片机外接的32.768kHz的晶振,在MPLAB中新建一个使用PICC的C语言的工程,命名为TMR1SecondOuter,并将其保存到本地硬盘中PIC文件夹下的TMR1SECOND文件夹里。然后建立一个名为mainouter.c的C语言文件,文件里C语言源程序的内容如下图所示: 阅读全文…
从本例开始,ANY电子将带你学习使用Proteus软件仿真学习PIC单片机的C语言程序,开发环境依然是MPLAB,C语言编译器使用的是HI-TECH的PICC。
进行下面的讲述之前,首先需要说明的是,因为这是PIC单片机的第一个C语言程序示例,所以,我们将尽可能详细地为你呈现开发调试的全过程,希望你能学好,或者经常回头复习,并在以后的例子中按照这样的步骤操作。而且在以后的例子中,我们将不会再这样大篇幅的详细介绍。
今天的第一个例子,我们讲述PIC单片机的TMR0计数器的使用,例子的构思如下:利用TMR0的计数器功能,来记录PIC单片机外接按键的按键次数,并在中断程序中将按键次数通过数码管显示出来。开始时,数码管显示0,一旦有按键按下,TMR0将记录其次数,并产生中断,在TMR0的中断子程序中将按键次数转化为BCD码,通过与PORTB口相连的BCD to 7 Segment转化器4511将BCD码转换为七段数码管的输入数据,然后输入到七段数码管并在七段数码管上将按键次数实时显示出来。 阅读全文…
最近评论