PIC单片机应用开发典型模块第一章程序Word文档下载推荐.docx
- 文档编号:17817757
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:41
- 大小:34.11KB
PIC单片机应用开发典型模块第一章程序Word文档下载推荐.docx
《PIC单片机应用开发典型模块第一章程序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《PIC单片机应用开发典型模块第一章程序Word文档下载推荐.docx(41页珍藏版)》请在冰豆网上搜索。
adr)*8+(bit))/*绝对寻址位操作指令*/
staticbitPORTA_5@PORTAIT(PORTA,5);
/*************************************************************************/
/*函数名:
SPIINT()*/
/*功能:
SPIi初始化*/
voidSPIINIT()
PIR1=0;
SSPCON=0x30;
/*允许SPI工作在主控方式下,SSPEN=1;
CKP=1,
/*FOSC/4*/
SSPSTAT=0xC0;
TRISC=0x00;
/*SDO引脚为输出,SCK引脚为输出*/
initial()*/
系统各输入输出口初始化*/
voidinitial()
TRISA=0x00;
/*A口设置为输出*/
INTCON=0x00;
/*关闭所有中断*/
PORTA_5=0;
/*LACK送低电平,为锁存做准备*/
/****************************************************************************/
SPILED()*/
SPI发送数据*/
voidSPILED(intdata)
SSPBUF=data;
/*启动发送*/
do
;
}while(SSPIF==0);
/*等待发送完毕*/
SSPIF=0;
/*清除SSPIF标志*/
/***************************************************************************/
main()*/
主程序*/
unsignedi;
initial();
/*系统初始化*/
SPIINIT();
/*SPI初始化*/
for(i=8;
i>
0;
i--)/*连续发送8个数据*/
{
data=table[i];
/*通过数组的转换获得待显示的段码*/
SPILED(data);
/*发送显示段码显示*/
}
PORTA_5=1;
/*最后给锁存信号,代表显示任务完成*/
(2)I2C工作方式驱动MAX518程序
利用PIC16F877的I2C方式来驱动D/A转换器,使之输出一个连续的正弦波形(本程序并没有对正弦波的频率进行控制)。
SPIINT()*/
spi初始化*/
FOSC/4*/
/*SDO引脚为输出,SCK引脚为输出*/
SPILED()*/
/*清除SSPIF标志*/
main()*/
主程序*/
/*SPI初始化*/
/*通过数组的转换获得待显示的段码*/
/*发送显示段码显示*/
/*最后给锁存信号,代表显示任务完成*/
(3)利用I2C访问24C02E2PROM
利用I2C总线对24C02进行访问,首先对芯片进行配置。
程序运行后,当24C02准备好时另LED0亮,测试完成后令LED7亮,对24C02进行读写操作时零LED1、LED3、LED7亮。
程序代码如下:
16F877A.h>
//PIC16F877headerfile
#usedelay(clock=4000000)
//for4Mhzcrystal
#fusesXT,NOWDT,NOPROTECT,NOLVP
//编译模式
#defineEEPROM_24C02_SDA
PIN_B5
#defineEEPROM_24C02_SCL
PIN_B4
#defineEEPROM_24C02_SIZE
256
#usei2c(master,sda=EEPROM_24C02_SDA,scl=EEPROM_24C02_SCL)
voidinit_eeprom_24c02(void)
port_b_pullups(true);
output_float(EEPROM_24C02_SCL);
output_float(EEPROM_24C02_SDA);
}//endinit_24c02()
int8eeprom_24c02_ready(void)
int1ack;
i2c_start();
//Ifwritecmdisacknowledged,
ack=i2c_write(0xa0);
//thenthedeviceisready.
i2c_stop();
return(0==ack)?
0xff:
0;
}//endeeprom_24c02_ready()
voideeprom_24c02_write(int8addr,int8data)
while(0==eeprom_24c02_ready());
//wait24c02ready
i2c_write(0xa0);
i2c_write(addr);
i2c_write(data);
}//endeeprom_24c02_write()
int8eeprom_24c02_read(int8addr)
int8data;
i2c_write(0xa1);
data=i2c_read(0);
return(data);
}//endeeprom_24c02_read()
int8eeprom_24c02_test(void)
int16i;
//write0x55test
for(i=0;
i<
EEPROM_24C02_SIZE;
++i)
eeprom_24c02_write(i,0x55);
if(0x55!
=eeprom_24c02_read(i))return0;
}
//write0xaatest
eeprom_24c02_write(i,0xaa);
if(0xaa!
//writeeeprom0
eeprom_24c02_write(i,0x00);
return0xff;
}//endeeprom_24c02_test()
voidmain(void)
init_eeprom_24c02();
//24c02isready
if(0!
=eeprom_24c02_ready())
output_high(PIN_C0);
//test24c02
=eeprom_24c02_test())
output_high(PIN_C7);
delay_ms(1000);
//write24c02
eeprom_24c02_write(0,0xaa);
//read24c02
output_c(eeprom_24c02_read(0));
}//endmain()
1.3PIC单片机的定时器/计数器模块的应用
通过配置PIC单片机寄存器,使TIMER0定时来实现秒表的功能。
math.h>
//此程序实现计时秒表功能,时钟显示范围00.00~99.99s,分辨度:
0.01s
unsignedchars0,s1,s2,s3;
//定义0.01s、0.1s、1s、10s计时器
unsignedchars[4];
unsignedchark,data,sreg;
unsignedinti;
consttable[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90};
//不带小数点的显示段码表
consttable0[10]={0X40,0X79,0X24,0X30,0X19,0X12,0X02,0X78,0X00,0X10};
//带小数点的显示段码表
/*****************************************************************************/
tmint()*/
TMR0初始化子程序,使TMR0工作于定时器方式*/
voidtmint()
T0CS=0;
//TMR0工作于定时器方式
PSA=1;
//TMR0不用分频
T0IF=0;
//清除TMR0的中断标志
T0IE=1;
//TMR0中断允许
SPIINIT()*/
spi显示初始化子程序*/
SSPSTAT=0xC0;
//设置SPI的控制方式,允许SSP方式,并且时钟下降沿发//送。
与"
74HC595,当其SCLK从低到高跳变时,串行输入*/
TRISC=0xD7;
//SDO引脚为输出,SCK引脚为输出
TRISA5=0;
//RA5引脚置为输出,输出显示锁存信号
系统其它部分初始化子程序*/
TRISB1=0;
TRISB2=0;
TRISB4=1;
TRISB5=1;
//设置与键盘有关的各口的输入输出方式
RB1=0;
RB2=0;
//建立键盘扫描的初始条件
/*函数名;
/*功能;
SPI传输数据子程序*/
voidSPILED(data)
//启动发送
do{
;
}while(SSPIF==0);
SSPIF=0;
disply()*/
显示子程序,显示4位数*/
voiddispaly()
RA5=0;
//准备锁存
for(k=4;
k>
k--)
data=s[k-1];
if(k==3)data=table0[data];
//第二位需要显示小数点
elsedata=table[data];
//发送显示段码
}
for(k=0;
k<
4;
k++)
data=0xFF;
//连续发送4个DARK,使显示美观
RA5=1;
//最后给锁存信号,代表显示任务完成
DELAY()*/
/功能:
软件延时子程序*/
voidDELAY()
for(i=3553;
--i;
)continue;
KEYSCAN()*/
键扫描子程序*/
/*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PIC 单片机 应用 开发 典型 模块 第一章 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)