《spihc595显示数码管主函数.docx.pdf》由会员分享,可在线阅读,更多相关《spihc595显示数码管主函数.docx.pdf(7页珍藏版)》请在三一文库上搜索。
1、主函数 volatile unsigned int countnum=0; void timerl_init(void) TCCR1B = =0x00; /stop TCNT1H = =0x8F; /setup TCNT1L = = 0x81; OCR1AH =0x70; OCR1AL : =0x7F; OCR1BH =0x70; OCR1BL = =0x7F; OCR1CH =0x70; OCR1CL = =0x7F; ICR1H = :0x70; ICR1L = 0x7F; TCCR1A = =0x00; TCCR1B = =0x04; /start Timer #pragma inter
2、rupt_handler timerl_ovf_isr: 15 void timerl_ovMsr(void) TCNT1H = 0x8F; /reload counter high value TCNT1L = 0x81; /reload counter low value countnum+; if(countnum9999) countnum=0; void init_devices(void) CLI(); /disable all interrupts timerl _init(); TIMSK = 0x04; /timer interrupt sources SEI(); /re-
3、enable interrupts void main(void) init_devices(); HC_595Jnit(); while(l) Seg7_Led_display(countnum); /Seg7_Led_float(25.13); 函数1 void spinit(void) DDRB |= (1? MOSI)|(1? SCK)|(1?SS);/设置mosi, sck 输出 SPCR = (1?SPE)|(1?MSTR)|(1? SPRO)|(1?SPR1);/ 使spi 主机模式 void SPI_MasterTransmit(char Data) /* 启动数据传输 */
4、SPDR = Data; /* 等待传输结束 */ while(!(SPSR Seg7_Bitselect_PORT|=(l? Seg7_BitO)|(l? Seg7_Bitl)|(l? Seg7_Bit2)|(l ?Seg7_Bit3); else if(data999) Seg7_Led_Buf3=data/1000; Seg7_Led_BuH2=(data % 1000)/100; Seg7_Led_Buf 1 =(data % 100)/10; Seg7_Led_BuflOJ=data %10; Seg7_Led_Update(); else if(data99) Seg7_Led_B
5、uf3=16; /16E 2 Az daE%t Seg7_Led_Buf2=(data % 1000)/100; Seg7_Led_Bufl=(data% 100)/10; Seg7_Led_Buf0=data %10; Seg7_Led_Upd ate(); else if(data9) Seg7_Led_Buf3=16; Seg7_Led_Bufl2J=16; Seg7_Led_Buf l=(data % 100)/10; Seg7_Led_Buf0=data%10; Seg7_Led_U pda te(); else Seg7_Led_Buf3=16; Seg7_Led_Buf2=16;
6、 Seg7_Led_Bufl=16; Seg7_Led_Buf0=data %10; Seg7_Led_U pdate(); rjw ?卜 ?卜 rj* ?! ?!?!?! ?!?! eta ef eta ef af ae af 999) llr lldAl, 3 Y oIOE% ? 1JI OdE?AA HC_595_OUT(OxFF); Seg7_Bitselect_PORT|=(l? Seg7_BitO)|(l? Seg7_Bitl)|(l? Seg7_Bit2)|(l ?Seg7_Bit3); else if(data99) temp=data*10; point_pos=l; Seg
7、7_Led_Buf3J=temp/1000; Seg7_Led_Bufl2=(temp % 1000)/100; Seg7_Led_Bufl=(temp% 100)/10; Seg7_Led_Buf0=tem p%10; Seg7_Led_U pdate(); else if(data9) temp=data*100; point_pos=2; Seg7_Led_Buf3=temp/1000; Seg7_Led_Buf2=(temp% 1000)/100; Seg7_Led_BufllJ=(temp% 100)/10; Seg7_Led_Buf0=temp% 10; Seg7_Led_Update(); else temp二data* 1000; point_pos=3; Seg7_Led_Buf3=temp/1000; Seg7_Led_Buf2=(temp% 1000)/100; Seg7_Led_Bufl=(temp% 100)/10; Seg7_Led_Buf0=temp% 10; Seg7_Led_Update(); point=0;
链接地址:https://www.31doc.com/p-5616327.html