qepuemc
发表于 2024-4-17 22:44:52
再分享一下不成功的例请懂的给看看哪里有问题。STC8H8K下 LQFP32
//本例程基于STC8H8K64U为主控芯片的实验箱9进行编写测试,STC8G、STC8H系列芯片可通用参考.
#include "stc8h.h" //包含此头文件后,不需要再包含"reg51.h"头文件
#include "intrins.h"
//1.TM1640显示基本程序
sbit DIN=P3^5; //定义DIN数据端口
sbit CLK=P3^4; //定义CLK数据端口
unsigned intCODE={0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,};//共阴数码管0~F字型码,需根据硬件接法定义
//1.TM1640显示基本程序
//2.TM1640显示基本程序
/********************Start函数*************************/
void I2CStart()
{
DIN=1;
CLK=1;
_nop_();
_nop_();
DIN=1;
_nop_();
_nop_();
DIN=0;
_nop_();
_nop_();
_nop_();
_nop_();
CLK=0;
_nop_();
_nop_();
}
/********************Stop函数*************************/
void I2CStop()
{
CLK=1;
_nop_();
_nop_();
DIN=0;
_nop_();
_nop_();
DIN=1;
_nop_();
_nop_();
CLK=0;
DIN=0;
}
/***************发送8bit数据,从低位开始**************/
void I2CWritebyte(unsigned char oneByte)
{
unsigned char i;
for(i=0;i<8;i++)
{
CLK=0;
if(oneByte&0x01)
DIN=1;
else
DIN=0;
_nop_();
_nop_();
_nop_();
CLK=1;
oneByte=oneByte>>1;
}
CLK=0;
_nop_();
_nop_();
_nop_();
_nop_();
DIN=0;
_nop_();
_nop_();
}
/************显示函数,数码管1~16位显示0~F************/
void disp()
{
unsigned char i;
I2CStart();
I2CWritebyte(0x40); //数据命令设置:普通模式,地址自动加一
I2CStop();
I2CStart();
I2CWritebyte(0xc0); //地址命令设置:初始地址00H
for(i=0;i<16;i++) //发送16位显示数据
{
I2CWritebyte(CODE);
}
I2CStop();
I2CStart();
I2CWritebyte(0x8c); //显示控制:显示开,脉冲宽度设为11/16
I2CStop();
}
//2.TM1640显示基本程序
void main()
{
P0M0 = 0x00; P0M1 = 0x00;
P1M0 = 0x00; P1M1 = 0x00;
P2M0 = 0x00; P2M1 = 0x00;
P3M0 = 0x00; P3M1 = 0x00;
P4M0 = 0x00; P4M1 = 0x00;
P5M0 = 0x00; P5M1 = 0x00;
P6M0 = 0x00; P6M1 = 0x00;
P7M0 = 0x00; P7M1 = 0x00;
while (1);
{
//3.TM1640显示基本程序
//重新定义数码管显示的数据
//取数据
CODE=5;
//取数据
//取数据
//取数据
//数据比较
//第1位
switch(CODE){
case 0: CODE=0x3F; break;
case 1: CODE=0x06; break;
case 2: CODE=0x5B; break;
case 3: CODE=0x4F; break;
case 4: CODE=0x66; break;
case 5: CODE=0x6D; break;
case 6: CODE=0x7D; break;
case 7: CODE=0x07; break;
case 8: CODE=0x7F; break;
case 9: CODE=0x6F; break;
}
//第1位
disp(); //显示
//3.TM1640显示基本程序
}
}
嵌入式之路
发表于 2024-4-18 00:20:16
我有1637的,感兴趣的话我可以贴下
jackfangxq
发表于 2024-4-21 20:36:54
嵌入式之路 发表于 2024-4-18 00:20
我有1637的,感兴趣的话我可以贴下
贴上来学习一下,谢谢
嵌入式之路
发表于 2024-4-21 22:41:03
jackfangxq 发表于 2024-4-21 20:36
贴上来学习一下,谢谢
我本周整理下
jackfangxq
发表于 2024-4-22 07:36:19
嵌入式之路 发表于 2024-4-21 22:41
我本周整理下
非常感谢
xxkj2010
发表于 2024-4-22 09:02:42
qepuemc
发表于 2024-4-24 14:36:44
xxkj2010 发表于 2024-4-22 09:02
代码就是人家给的例子。在stc15w可以用。stc32也可以用。stc8让我直接放弃1640
xxkj2010
发表于 2024-4-24 15:02:00
用逻辑分析仪看一下波形。
qepuemc
发表于 2024-4-24 22:21:12
xxkj2010 发表于 2024-4-24 15:02
用逻辑分析仪看一下波形。
该解决的问题已解决,解决不了的。就算了,波形什么的就算了吧。
qepuemc
发表于 2024-4-25 21:27:47
STC32G12K128 发表于 2024-3-23 09:48
stc32G驱动数码,其他客户测试的分享:
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=5604&high ...
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=7602在9楼
这个是我刚分离好的好理解的STC直接驱动PCB的例子。有需要可以参考一下