pic单片机应用开发典型模块_第七章程序

pic单片机应用开发典型模块_第七章程序

ID:797581

大小:154.03 KB

页数:23页

时间:2017-09-05

pic单片机应用开发典型模块_第七章程序_第1页
pic单片机应用开发典型模块_第七章程序_第2页
pic单片机应用开发典型模块_第七章程序_第3页
pic单片机应用开发典型模块_第七章程序_第4页
pic单片机应用开发典型模块_第七章程序_第5页
资源描述:

《pic单片机应用开发典型模块_第七章程序》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、(1)步进电机稳压直流稳压电源模块程序#includeunsignedcharR1,R2,R3,TXDATA,LEDF,BJF,COUNTW,data;unsignedinti;constchartable[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90,0xFF};//不带小数点的显示段码表constchartable0[11]={0X40,0X79,0X24,0X30,0X19,0X12,0X02,0X78,0X00,0X10,0xFF};//带小数

2、点的的显示段码表unsignedchars[4];//定义一个显示缓冲数组//把需要显示的数字装入显示缓冲数组voidsfz(){s[0]=R3;s[1]=R2;s[2]=R1;s[3]=0x0A;//最后一个LED显示"DARK"}//系统各寄存器初始化子程序voidinitial(){R1=0X00;R2=0X00;R3=0X00;sfz();//把需要显示的数字装入显示缓冲数组TXDATA=0X00;LEDF=0X01;BJF=0X01;TRISB1=0;TRISB2=0;TRISB4=1;TRISB5=1;//设置与键盘

3、相关的各口的输入输出方式RB1=0;RB2=0;//设置扫描初始条件}//SPI方式显示初始化子程序voidSPIINIT(){PIR1=0;SSPCON=0x30;SSPSTAT=0xC0;//设置SPI的控制方式,允许SSP方式,并且时钟下降沿发送,与"74HC595,当其//SCLK从低到高跳变时,串行输入寄存器"的特点相对应TRISC=0xD7;//SDO引脚为输出,SCK引脚为输出TRISA5=0;//RA5引脚设置为输出,以输出显示锁存信号}//I2C初始化子程序voidi2cint(){SSPCON=0X08;//

4、初始化SSPCON寄存器TRISC3=1;//设置SCL为输入口TRISC4=1;//设置SDA为输入口TRISA4=0;SSPSTAT=0X80;//初始化SSPSTAT寄存器SSPADD=0X02;//设定I2C时钟频率SSPCON2=0X00;//初始化SSPCON2寄存器di();//关闭总中断SSPIF=0;//清SSP中断标志RA4=0;//关掉74HC165的移位时钟使能,以免74HC165//移位数据输出与I2C总线的数据线发生冲突SSPEN=1;//SSP模块使能}//软件延时子程序voidDELAY(){fo

5、r(i=3553;--i;)continue;}//键服务子程序voidkeyserve(){PORTB=0XFD;if(RB5==0)BJF=0X01;//S9键按下,步进加标志置1PORTB=0XFB;if(RB5==0)BJF=0X00;//S11键按下,步进加标志清0RB1=0;//恢复PORTB的值RB2=0;}//键扫描子程序voidKEYSCAN(){while(1){while(1){if(RB5==0)break;}DELAY();//若有键按下,则软件延时if(RB5==0)break;//若还有键按下,则终

6、止循环扫描,返回}}//SPI传送数据子程序voidSPILED(data){SSPBUF=data;//启动发送do{;}while(SSPIF==0);SSPIF=0;}//显示子程序voiddisplay(){SPIINIT();//spi方式显示初始化RA5=0;//准备锁存for(COUNTW=0;COUNTW<4;COUNTW++){data=s[COUNTW];if(COUNTW==1)data=table0[data];//第二位需要显示小数点elsedata=table[data];SPILED(data);/

7、/发送显示段码}for(COUNTW=0;COUNTW<4;COUNTW++){data=0xFF;SPILED(data);//连续发送4个DARK,使显示美观}RA5=1;//最后给一个锁存信号,代表显示任务完成}//I2C总线输出数据子程序voidi2cout(){i2cint();//因为SPI输出和I2C输出不能同时工作,则需要//不断在两种方式间切换SEN=1;//产生I2C启动信号for(i=0x02;--i;)continue;//给予一定的延时,保证启动do{RSEN=1;//产生I2C启动信号}while(S

8、SPIF==0);//如果没能启动,则反复启动,直到启动为止SSPIF=0;//SSPIF标志清0SSPBUF=0X58;//I2C总线发送地址字节do{;}while(SSPIF==0);//等待地址发送完毕SSPIF=0;//SSPIF标志清0SSPBUF=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。