版主你好: 我用STC8H1K28做温度测量,采用MAX6675测温芯片,我的测温程序在STC15W4K32S4上运行正常,但 ...
建议有IO口软件模拟SPI通讯,代码简单可靠,移植方便。 uint16_t MAX6675(unsigned char channel)
{
uint16_t temp = 0;
char i;
CHANGE_CS_OFF(channel);//切换CS端口为0
for(i=0;i<=15;i++)
{
SCLK_P21 = 1;//read data SO
Delay(100);
temp <<= 1;
if(DIN_P22)
temp |= 0x0001;
SCLK_P21 = 0;
Delay(100);
}
CHANGE_CS_ON();
temp >>= 3;//右移3位,D0,D1,D3不要
return temp;
}
zwf33335 发表于 2024-12-24 17:55
版主你好: 我用STC8H1K28做温度测量,采用MAX6675测温芯片,我的测温程序在STC15W4K32S4上运行正常,但 ...
同频率下,STC8H1K28比STC15W4K32S4运行速度快了30%,要适当增加延时。 社区闲人 发表于 2024-12-24 20:10
同频率下,STC8H1K28比STC15W4K32S4运行速度快了30%,要适当增加延时。
谢谢你的提示,我调整时间弄好了,但我在调试过程中,MAX667的延时需要缩短时间,而数码管驱74HC595的函数反而增加了很多时间才能正常工作,不知道和原因啊? 驱动74HC595的函数不需要延时:
void Send_595(u8 dat)
{
u8 i;
u8 tmp = dat;
for(i=0;i<8;i++)
{
tmp <<= 1;
P_595_ser = CY;
_nop_();
P_595_srclk = 1;
_nop_();
P_595_srclk = 0;
}
}
void Display_595(void)
{
Send_595(w_led_code);
Send_595(D_led_code]);
P_595_rclk = 1;
display_Point++;
P_595_rclk = 0;
display_Point &= 0x07;
// if(display_Point > 7)
// {
// display_Point = 0;
// }
} 社区闲人 发表于 2024-12-25 09:55
驱动74HC595的函数不需要延时:
void Send_595(u8 dat)
{
按照您的指导,调试好了,太感谢了,我弄了好几天都没弄好{:baoquan:} 社区闲人 发表于 2024-12-25 09:55
驱动74HC595的函数不需要延时:
void Send_595(u8 dat)
{
建议有IO口软件模拟SPI通讯,代码简单可靠,移植方便。
这个IO口软件模拟SPI通讯,是个软件吗?老师哪里有啊
页:
1
[2]