再分享一下不成功的例请懂的给看看哪里有问题。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 int CODE[16]={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[i]);
- }
- 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[0]=5;
-
-
-
- //取数据
- //取数据
-
- //取数据
- //数据比较
- //第1位
- switch(CODE[0]){
- case 0: CODE[0]=0x3F; break;
- case 1: CODE[0]=0x06; break;
- case 2: CODE[0]=0x5B; break;
- case 3: CODE[0]=0x4F; break;
- case 4: CODE[0]=0x66; break;
- case 5: CODE[0]=0x6D; break;
- case 6: CODE[0]=0x7D; break;
- case 7: CODE[0]=0x07; break;
- case 8: CODE[0]=0x7F; break;
- case 9: CODE[0]=0x6F; break;
- }
- //第1位
-
-
- disp(); //显示
- //3.TM1640显示基本程序
-
- }
- }
复制代码
|