马永锋 发表于 2023-5-10 12:18:28

滚屏显示电话号码

滚屏显示电话号码:

https://www.bilibili.com/video/BV1ra4y1g7G3/?vd_source=0307e15e9fa044390016a3924cbb2039


#include "COMM/stc.h"               
#include "COMM/usb.h"

#define MAIN_Fosc 24000000UL       

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
       
u8 SEG_Tab = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0xFF};        //0-9段码,0-9带小数点,熄灭
u8 COM_Tab = { 0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe };        //0-7的位码数组
u8 Show_Tab= {1,5,2,3,4,8,5,2,8,6,6,20,20,20};

u8 num = 0;
u8 segdig;
u16segdelay;
void sys_init();       
void delay_ms(u16 ms);       

void Timer0_Init(void)                //1毫秒@24.000MHz
{
        AUXR &= 0x7F;               
        TMOD &= 0xF0;               
        TL0 = 0x30;                       
        TH0 = 0xF8;                       
        TF0 = 0;                               
        TR0 = 1;                               
        ET0 = 1;                               
}


void main()                               
{
        sys_init();                               
        usb_init();                               
        Timer0_Init();
        EA = 1;                                       
        while(1)       
        {
                if( DeviceState != DEVSTATE_CONFIGURED )
                        continue;
                if( bUsbOutReady )                                                               
                {
                        usb_OUT_done();
                }

          for(num=0;num<8;num++)
    {
      if(num+segdig < 14)
                  {
                    P7 = COM_Tab;                       
              P6 = SEG_Tab];
                  }
                  if(num+segdig >= 14)
                  {
                                P7 = COM_Tab;               
              P6 = SEG_Tab];
                  }
          delay_ms(1);       
          }
}
       
}


void Timer0_Isr(void) interrupt 1
{
                segdelay++;                                                                                                                                                               
        if(segdelay == 1000) segdelay = 0;                                                                       
        if(segdelay == 0) segdig++;                                                                                                       
        if(segdig >13) segdig = 0;                                                                                                       
}


void sys_init()                //函数定义
{
    WTST = 0;//设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

        P0M1 = 0x00;   P0M0 = 0x00;   //设置为准双向口
    P1M1 = 0x00;   P1M0 = 0x00;   //设置为准双向口
    P2M1 = 0x00;   P2M0 = 0x00;   //设置为准双向口
    P3M1 = 0x00;   P3M0 = 0x00;   //设置为准双向口
    P4M1 = 0x00;   P4M0 = 0x00;   //设置为准双向口
    P5M1 = 0x00;   P5M0 = 0x00;   //设置为准双向口
    P6M1 = 0x00;   P6M0 = 0x00;   //设置为准双向口
    P7M1 = 0x00;   P7M0 = 0x00;   //设置为准双向口
       
    P3M0 = 0x00;
    P3M1 = 0x00;
   
    P3M0 &= ~0x03;
    P3M1 |= 0x03;

    //设置USB使用的时钟源
    IRC48MCR = 0x80;    //使能内部48M高速IRC
    while (!(IRC48MCR & 0x01));//等待时钟稳定

    USBCLK = 0x00;        //使用CDC功能需要使用这两行,HID功能禁用这两行。
    USBCON = 0x90;
}


void delay_ms(u16 ms)        //unsigned int
{
        u16 i;
        do
        {
                i = MAIN_Fosc/6000;
                while(--i);
        }while(--ms);
}

32位8051-AI 发表于 2023-5-10 15:58:47

感谢分享,楼主可以将原视频直接分享到论坛哦,上传视频的方法可以参考此帖:如何在本论坛发视频 - 开源广场及教学视频交流 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区https://www.stcaimcu.com/forum.php?mod=viewthread&tid=1815&extra=page%3D3

马永锋 发表于 2023-5-10 17:19:28

本帖最后由 马永锋 于 2023-9-10 12:19 编辑

之前视频可能无法正常显示,重新上传。
attach://9828.mp4

电子DIY小家 发表于 2023-5-11 09:48:17

{:4_197:}恭喜楼主小有所成

马永锋 发表于 2023-5-11 15:04:02

电子DIY小家 发表于 2023-5-11 09:48
恭喜楼主小有所成

这得感谢冲哥,还有官方的支持啊。
页: [1]
查看完整版本: 滚屏显示电话号码