完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
原来是有点问题想发上来问的,自己解决了,顺便发上来吧,有需要的可以看看。代码是精简过的,只保留点亮的部分,51和AVR都是测试过的。
51用的是原版的STC15W408AS,AVR用的是ATmega128,内部1M晶振 51的源码: main.c #include《STC1T.h》 #define uint unsigned int #define uchar unsigned char #include“PT6311.H” void main() { P3M0=0xcc; PT6311_4(); while(1) { delay(10); } } main.h ***it DATA = P3^3; ***it CLK = P3^6; ***it STB = P3^7; void write_PT6311(uchar dat) { uchar i; for(i=0;i《8;i++) { dat=dat》》1; DATA=CY; CLK=1; CLK=0; } } void PT6311_4() { STB=0; STB=1; write_PT6311(0x8f); } AVR的代码 main.c #include “main.h” int main(void) { DDRD=0Xff; PORTD=0X00; CPORT|=(1《《BOOSTER); PT6311_4(); while (1) { _delay_ms(100); } } main.h #define F_CPU 1000000UL #include 《avr/io.h》 #include 《util/delay.h》 #define CPORT PORTD #define DIN PD1 #define SCLK PD2 #define STB PD3 #define BOOSTER PD4 #ifndef MAIN_H_ #define MAIN_H_ void write_PT6311(unsigned char dat) { unsigned char i; for(i=0;i《8;i++) { if((dat》》i)%2) CPORT&=~(1《《DIN); else CPORT|=(1《《DIN); CPORT|=(1《《SCLK); CPORT&=~(1《《SCLK); } } void PT6311_4() { CPORT&=~(1《《STB); CPORT|=(1《《STB); write_PT6311(0x8f); } #endif /* MAIN_H_ */ |
|
|
|
只有小组成员才能发言,加入小组>>
2514 浏览 0 评论
1090浏览 2评论
703浏览 1评论
456浏览 0评论
198浏览 0评论
337浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 20:00 , Processed in 1.856685 second(s), Total 51, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号