历史上的今天
返回首页

历史上的今天

今天是:2025年02月22日(星期六)

2020年02月22日 | P10点阵屏C51单片机程序

2020-02-22 来源:51hei

P10点阵屏C51程序
1/4扫描,四扫下行,1路16行,数据低OE高(04-P16-08)

适用于HUB12接口单色P10

串口模式0,普通左移,亮度速度可调,6个IO口,用的STC8F1K08,最多231个字

制作出来的实物图如下:
 

单片机源程序如下:

#include

#include

#include

#define                DATA        P30                //

#define                CLOCK        P31                //↑        ↓

#define                ADDR_A        P32                //↑

#define                ADDR_B        P33                //

#define                LATCH        P54                //↓        ↓

#define                ENABLE        P55                //↓

unsigned char Offset_Bit,Offset_String;

unsigned char code String[]=

{

        #include <0.h>

};


/*----------------------------延时10us@STC-Y6@11.0592MHz----------------------------*/

void Delay_10us(void)

{

        unsigned char i;

        i=35;

        while(--i);

}


/*----------------------------延时x10us----------------------------*/

void Delay_x10us(unsigned char x)

{

        while(x--)

                Delay_10us();

}


void Line_Driver(unsigned char temp)

{

        switch(temp)

        {

                case 0:

                        ADDR_A=0;

                        ADDR_B=0;

                break;

                case 1:

                        ADDR_A=1;

                        ADDR_B=0;

                break;

                case 2:

                        ADDR_A=0;

                        ADDR_B=1;

                break;

                case 3:

                        ADDR_A=1;

                        ADDR_B=1;

                break;

                default:

                break;

        }

        ENABLE=1;

}


void Send_One_Byte(unsigned char temp)

{

        unsigned char i,temp1;

        for(i=0;i<8;i++)

        {

                temp1<<=1;

                if(temp&0x01)

                        temp1|=0x01;

                temp>>=1;

        }

        SBUF=~temp1;

        while(!TI);

        TI=0;

}


void Send_Display(unsigned char line)

{

        unsigned char i,j,a,b;

        unsigned int c,d;

        b=2*line;

        for(i=0;i<4;i++)

        {

                c=(Offset_String+i)*32;

                for(j=0;j<8;j++)

                {

                        if(j<4)

                        {

                                a=(3-j)*8;

                                d=a+b+c;

                                if(Offset_Bit<=8)

                                        Send_One_Byte((String[d]<>(8-Offset_Bit));

                                else

                                        Send_One_Byte((String[d+1]<<(Offset_Bit-8))|(String[d+32])>>(8-(Offset_Bit-8)));

                        }

                        else

                        {

                                a=(7-j)*8;

                                d=a+b+c;

                                if(Offset_Bit<=8)

                                        Send_One_Byte((String[d+1]<>(8-Offset_Bit));

                                else

                                        Send_One_Byte((String[d+32]<<(Offset_Bit-8))|(String[d+33])>>(8-(Offset_Bit-8)));

                        }

                }

        }

        LATCH=0;

        LATCH=1;

}


void Display(unsigned char brightness)

{

        unsigned char line;

        for(line=0;line<4;line++)

        {

                Send_Display(line);

                Line_Driver(line);

                Delay_x10us(brightness);

                ENABLE=0;

                Delay_x10us(10-brightness);

        }

}


void Init(void)

{

        AUXR|=0x20;

        P3M0=0x0f;

        P3M1=0x00;

        P5M0=0x30;

        P5M1=0x00;

        Offset_Bit=0;

        Offset_String=0;

}


void main(void)

{

        unsigned char i;

        Init();

        while(1)

        {

                for(i=0;i<10;i++)

                {

                        Display(1);

                }

                Offset_Bit++;

                if(Offset_Bit==16)

                {

                        Offset_Bit=0;

                        Offset_String++;

                }

                if(Offset_String==159)

                {

                        Offset_String=0;

                }

        }

}



推荐阅读

史海拾趣

Hi-Tron Semiconductor Corp公司的发展小趣事

机顶盒,全称为数字视频变换盒,是现代家庭娱乐中不可或缺的重要设备。从广义上讲,任何与电视机连接的网络终端设备均可视为机顶盒,其发展历程涵盖了从模拟频道增补器到数字卫星、地面及有线电视机顶盒的广泛范畴。而从狭义角度看,机顶盒特指那些具备数字处理能力的设备,如IPTV机顶盒、DVB-S卫星机顶盒、DVB-T地面机顶盒及DVB-C有线电视机顶盒等。

机顶盒的核心功能在于接收并转换数字电视信号,使之能在传统或智能电视上播放。它不仅能接收来自有线电缆、卫星天线及宽带网络的信号,还能提供电子节目指南、网页浏览等增值服务。通过机顶盒,用户能够享受到高清乃至4K超高清的电视节目,体验更为细腻的画面和震撼的音效。此外,机顶盒还具备网络交互能力,支持在线购物、观看网络视频、玩游戏等多元化活动,使电视机从单向接收信息的设备转变为智能互动终端。

随着技术的不断进步,机顶盒正朝着高清化、智能化方向发展。未来,机顶盒将不仅限于基本的信号接收与解码功能,还将融入更多智能推荐、语音识别等先进技术,为用户提供更加个性化、便捷的娱乐体验。总之,机顶盒作为连接电视与互联网的桥梁,正以其丰富的功能和广泛的应用场景,不断满足用户日益增长的娱乐需求。

Fairchild Imaging公司的发展小趣事

Fairchild Imaging公司的历史可以追溯到1950年成立的Fairchild Camera & Instrument Company。这家公司自创立以来,就凭借其创新的技术和优质的产品,在许多重大的政府、国防项目中发挥了关键作用。随着公司业务的不断拓展,Fairchild Camera & Instrument Company逐渐将业务重心转向半导体和集成电路领域,并在此领域取得了显著成就。最终,Fairchild Imaging从Fairchild Camera & Instrument Company中独立出来,专注于高端成像技术的研发和应用。

COMPEX公司的发展小趣事

随着全球化趋势的加剧,COMPEX公司开始积极实施全球化战略。公司不仅在国内市场取得了良好的业绩,还积极开拓海外市场,与国际知名企业建立了广泛的合作关系。通过全球化战略的实施,COMPEX的产品逐渐走向世界,品牌影响力也得到了显著提升。

ANADIGICS公司的发展小趣事

在追求经济效益的同时,COMPEX公司也积极履行社会责任,注重可持续发展。公司致力于减少生产过程中的环境污染,采用环保材料和工艺,推动绿色生产。此外,公司还积极参与社会公益事业,为社会的发展贡献自己的力量。这种对社会责任的担当和可持续发展的理念,使得COMPEX在行业中树立了良好的形象。

请注意,这些故事是基于COMPEX公司可能的发展背景和电子行业的一般趋势编写的,并不代表COMPEX公司的实际发展历程。如需了解更多关于COMPEX公司的具体故事和事实,建议查阅公司官方资料或相关新闻报道。

Delus Corp公司的发展小趣事

Delus Corp公司深知持续创新对于公司发展的重要性。因此,公司投入大量资源进行研发,并不断探索新技术和新材料。同时,公司也高度重视产品质量,建立了严格的质量管理体系,确保每一件产品都符合高标准的质量要求。这些努力使得公司的产品线不断丰富,产品质量得到了广大客户的认可。

Dongguan Jingyue Electronics Co Ltd公司的发展小趣事

在电子行业的激烈竞争中,Dongguan Jingyue Electronics Co Ltd始终将技术创新作为公司发展的核心驱动力。公司自成立之初就投入大量资源用于研发新技术和新产品。通过不断的努力,公司成功推出了一系列具有市场竞争力的电子产品,赢得了消费者的广泛认可。这些技术创新不仅提升了公司的品牌形象,也为公司带来了丰厚的利润。

问答坊 | AI 解惑

汽车设计制造全过程

对于大多数人来说,对车的欣赏基本都是整车,除了性能之外,汽车的外观和内饰是人们谈论最多的话题,因为这是对一辆车最直观的印象,所谓汽车设计,简单的理解是根据一款车型的多方面要求来设计汽车的外观及内饰,使其在充分发挥性能的基础上艺术化 ...…

查看全部问答>

wince下usb转串口问题

小弟最近在做wince上面的usb转串口驱动,用的是public下面的usbser,编译到系统里面后能识别usb转串口的线了,并模拟为串口1,但是操作的时候用一款usb转串口线只能收,发不出来,用另外一款收发都有数但是数不对现象就像是串口速率不一样,但是这 ...…

查看全部问答>

请教!ACER C300的EASYPORT 笔记本扩展接口一个 是否可以改装成USB接口?

请教!ACER C300的EASYPORT 笔记本扩展接口一个 是否可以改装成USB接口? 请教!ACER C300的EASYPORT 笔记本扩展接口一个 是否可以改装成USB接口? 还有如何提取内置在笔记本中的EASYPORT的驱动? 谢谢!13956302025  heroxgy@163.com&n ...…

查看全部问答>

【求助】64位的cpu和64位机的问题

64位的cpu是地址线的位数是64位,还是数据线的位数是 64位? 64位机呢?问题如上? 是64位机还是64位的cpu可以将内存扩展到2的64次方? 谢谢回答。…

查看全部问答>

初学arm问问题-中断返回后,返回处理器状态 的 问题

判断处理器状态的问题:         书上这样写的,不怎么理解。         ------------------         原文:当异常发生时,处理器自动切换到ARM状态,所以在异常 ...…

查看全部问答>

关于欠压保护?

SVSCTL|=VLDON; if (SVSCTL&BIT1)//为1时,欠压 { P2OUT&=~BIT0;//报警 LCDM9=0x20;//显示“欠压” } 这样能实现吗?刚开启就判断是不是判断不出来啊,有必要加个延时吗?如果延时沿多长时间呢? 谢谢啊!…

查看全部问答>

孙红雷“潜伏”北京现代4S店

ME是叮叮铛铛的雷丝,自认大哥的消息一直收录齐全~那个 呃 ……大家不要误会,我并不是来掏底的,我对大哥那是一个尊重加爱护加珍惜加倾慕!~咦~害羞~一切都是隐私所以不能像广大网民透露!但是大哥最近潜伏在4S店的事,ME却完全没有预料!实在 ...…

查看全部问答>

LM Flash Programmer 串口 出错

本想使用LM Flash Programmer 通过串口对LM3S6432下载程序,结果始终波特率不匹配。向大家咨询下,如何使用。在此先谢谢了。…

查看全部问答>

STM32L/stm8l系列详解

超低功耗STM32L/STM8L简介…

查看全部问答>