打印

02比较闪

[复制链接]
205|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
34af9uc|  楼主 | 2024-7-22 21:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TE, STM8, STM, ST, pc
/****************NY8TE64A触摸实验*******************/
/****************ID:共同学习stm8********************/
/****************20240707**************************/
/**************************************************/
//            gnd-|1‾vss‾‾\_/‾‾vdd‾20|-5v
//               -|2 pa6   N   pa4 19|-x1
//               -|3 pa7   Y   pa3 18|-x2
//               -|4 pa5   8   pa2 17|-x3
//               -|5 pb3   T   pa1 16|-x4
//               -|6 pb2   E   pa0 15|-x5
//               -|7 pb1   6   pb5 14|-x6
//               -|8 pb0   4   pb4 13|-x7
//               -|9 pc0   A   pb6 12|-x8
//               -|10_pc1______pb7_11|-x9
/**************************************************/
// ___a___           _______          _______          _______
//|        |        |       |        |       |        |       |
//f        b        |       |    ◇   |       |        |       |
// ---g---           -------          -------          -------
//|        |        |       |    ◇   |       |        |       |
//e        c        |       |        |       |        |       |
// ‾‾‾d‾‾‾           ‾‾‾‾‾‾‾          ‾‾‾‾‾‾‾          ‾‾‾‾‾‾‾
//              @x1 @x2 @x3 @x4 @x5 @x6 @x7 @x8 @x9
//               |   |   |   |   |   |   |   |   |
//              PA4 PA3 PA2 PA1 PA0 PB5 PB4 PB6 PB7
//x1--a--x2        x2--►--x3        x3--►--x4        x4--►--x5
//x1--►--x3        x2--►--x4        x3--►--x5        x4--►--x6
//x1--►--x4        x2--►--x5        x3--►--x6        x4--►--x7    x9--►--|
//x1--d--x5        x2--►--x6        x3--►--x7        x4--►--x8    x9--►--|
//x1--►--x6        x2--►--x7        x3--►--x8        x4--►--x1           ↓
//x1--►--x7        x2--►--x8        x3--►--x1        x4--►--x2
//x1--g--x8        x2--►--x1        x3--►--x2        x4--►--x3
/**************************************************/
#include <ny8.h>
/**************************************************/
__sbit x1                =PORTA:4;
__sbit x2                =PORTA:3;
__sbit x3                =PORTA:2;
__sbit x4                =PORTA:1;
__sbit x5                =PORTA:0;
__sbit x6                =PORTB:5;
__sbit x7                =PORTB:4;
__sbit x8                =PORTB:6;
__sbit x9                =PORTB:7;
/**************************************************/
#define                x1_gao                IOSTA&=~(1<<4);x1=1
#define                x1_di                IOSTA&=~(1<<4);x1=0
#define                x1_zu                IOSTA|=1<<4;

#define                x2_gao                IOSTA&=~(1<<3);x2=1
#define                x2_di                IOSTA&=~(1<<3);x2=0
#define                x2_zu                IOSTA|=1<<3;

#define                x3_gao                IOSTA&=~(1<<2);x3=1
#define                x3_di                IOSTA&=~(1<<2);x3=0
#define                x3_zu                IOSTA|=1<<2;

#define                x4_gao                IOSTA&=~(1<<1);x4=1
#define                x4_di                IOSTA&=~(1<<1);x4=0
#define                x4_zu                IOSTA|=1<<1;

#define                x5_gao                IOSTA&=~(1<<0);x5=1
#define                x5_di                IOSTA&=~(1<<0);x5=0
#define                x5_zu                IOSTA|=1<<0;

#define                x6_gao                IOSTB&=~(1<<5);x6=1
#define                x6_di                IOSTB&=~(1<<5);x6=0
#define                x6_zu                IOSTB|=1<<5;

#define                x7_gao                IOSTB&=~(1<<4);x7=1
#define                x7_di                IOSTB&=~(1<<4);x7=0
#define                x7_zu                IOSTB|=1<<4;

#define                x8_gao                IOSTB&=~(1<<6);x8=1
#define                x8_di                IOSTB&=~(1<<6);x8=0
#define                x8_zu                IOSTB|=1<<6;

#define                x9_gao                IOSTB&=~(1<<7);x9=1
#define                x9_di                IOSTB&=~(1<<7);x9=0
#define                x9_zu                IOSTB|=1<<7;
/**************************************************/
unsigned char const zi1[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,                //0-9
0x77,0x7c,0x39,0x5e,0x79,0x71,0x7e,                                                //a-f,20
0x00,0x00,0x00};                                                                        //不显               
unsigned char const zi12[]={
0x77,0x7c,0x39,0x5e,0x79,                //a-e
0x71,0x6f,0x76,0x04,0x1e,                //f-J
0x78,0x38,0x55,0x54,0x5c,                //k-o
0X73,0X67,0X50,0X49,0X31,                //p-t
0X3e,0X1c,0X1f,0X52,0X6e,0X5b};//u-z
/**************************************************/
static unsigned char xian_b1;                //第一个数码管要显示的数据
static unsigned char xian_b2;                //第二个数码管要显示的数据
static unsigned char xian_b3;                //第三个数码管要显示的数据
static unsigned char xian_b4;                //第四个数码管要显示的数据
static unsigned char xian_c1;                //第一个数码管要显示的字模
static unsigned char xian_c2;                //第二个数码管要显示的字模
static unsigned char xian_c3;                //第三个数码管要显示的字模
static unsigned char xian_c4;                //第四个数码管要显示的字模
static unsigned char xian_c5;                //点点
/**************************************************/
void        xianshi();                //显示
void        xianshi_jisuan();                //显示计算
void        yanshi();                //延时
/**************************************************/
void main(void)
{
/**************************************************/
static unsigned int xian_a1;                //计次
static unsigned int xian_a2;
unsigned int                a1 =0;
unsigned char                a2 =0;
/**************************************************/
        WDTEN                =0;                //关闭WDT,关狗
/**************************************************/
xian_c1=zi1[a1+0];
xian_c2=zi1[a1+1];
xian_c3=zi1[a1+2];
xian_c4=zi1[a1+3];
/**************************************************/
while(1)
{
xian_a1                ++;
if(xian_a1 ==435)                //显示50HZ
        {
        xian_a1                =0;
        xian_a2                ++;
        if(xian_a2 ==100){/*xian_c5 =1;*/}                //点点
        if(xian_a2 >200)
        {
        xian_a2 =0;
        xian_c5 =0;
        xian_b1                =a1+0;
        xian_b2                =a1+1;
        xian_b3                =a1+2;
        xian_b4                =a1+3;
        a1                                ++;
        if(a1 >16){a1 =0;}
        xianshi_jisuan();
        }
        xianshi();
        }


}
/**************************************************/
}
/**************************************************/
void        yanshi()                //延时
{
unsigned int z1,z2;
for(z1=200;z1>0;z1--)
        for(z2=500;z2>0;z2--);
}
/**************************************************/
void        xianshi_jisuan()                //显示计算
{
xian_c1                =zi1[xian_b1];
xian_c2                =zi1[xian_b2];
xian_c3                =zi1[xian_b3];
xian_c4                =zi1[xian_b4];
}
/**************************************************/
void xianshi()                //显示
{
//static unsigned char xian_a1;                //计次
static unsigned char xian_a2;                //状态数码管1234
xian_a2                ++;
if(xian_a2 ==4){xian_a2 =0;}
if(xian_a2 ==0)                //第一个数码管算法
        {
        x1_di;
        if(xian_c1&0b00000001){x2_di;}        else{x2_zu;}                //a
        if(xian_c1&0b00000010){x3_di;}        else{x3_zu;}                //b
        if(xian_c1&0b00000100){x4_di;}        else{x4_zu;}                //c
        if(xian_c1&0b00001000){x5_di;}        else{x5_zu;}                //d
        if(xian_c1&0b00010000){x6_di;}        else{x6_zu;}                //e
        if(xian_c1&0b00100000){x7_di;}        else{x7_zu;}                //f
        if(xian_c1&0b01000000){x8_di;}        else{x8_zu;}                //g
        x1_gao;
        }
if(xian_a2 ==1)                //第二个数码管算法
        {
        x2_di;
        if(xian_c2&0b00000001){x3_di;}        else{x3_zu;}
        if(xian_c2&0b00000010){x4_di;}        else{x4_zu;}
        if(xian_c2&0b00000100){x5_di;}        else{x5_zu;}
        if(xian_c2&0b00001000){x6_di;}        else{x6_zu;}
        if(xian_c2&0b00010000){x7_di;}        else{x7_zu;}
        if(xian_c2&0b00100000){x8_di;}        else{x8_zu;}
        if(xian_c2&0b01000000){x1_di;}        else{x1_zu;}
        x2_gao;
        }
if(xian_a2 ==2)                //第三个数码管算法
        {
        x3_di;
        if(xian_c3&0b00000001){x4_di;}        else{x4_zu;}
        if(xian_c3&0b00000010){x5_di;}        else{x5_zu;}
        if(xian_c3&0b00000100){x6_di;}        else{x6_zu;}
        if(xian_c3&0b00001000){x7_di;}        else{x7_zu;}
        if(xian_c3&0b00010000){x8_di;}        else{x8_zu;}
        if(xian_c3&0b00100000){x1_di;}        else{x1_zu;}
        if(xian_c3&0b01000000){x2_di;}        else{x2_zu;}
        x3_gao;
        }
if(xian_a2 ==3)                //第四个数码管算法
        {
        x4_di;
        if(xian_c4&0b00000001){x5_di;}        else{x5_zu;}
        if(xian_c4&0b00000010){x6_di;}        else{x6_zu;}
        if(xian_c4&0b00000100){x7_di;}        else{x7_zu;}
        if(xian_c4&0b00001000){x8_di;}        else{x8_zu;}
        if(xian_c4&0b00010000){x1_di;}        else{x1_zu;}
        if(xian_c4&0b00100000){x2_di;}        else{x2_zu;}
        if(xian_c4&0b01000000){x3_di;}        else{x3_zu;}
        x4_gao;
        }
if(xian_c5==1){x9_gao;}        else{x9_di;}

}
/**************************************************/
/**************************************************/
/**************************************************/


02.zip

1.91 KB

使用特权

评论回复

相关帖子

发新帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

300

主题

457

帖子

60

粉丝