历史上的今天

今天是:2024年09月16日(星期一)

2020年09月16日 | P10点阵屏C51单片机程序

发布者:SereneWhisper 来源: 51hei关键字:P10点阵屏  C51  单片机 手机看文章 扫描二维码
随时随地手机看文章

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;

                }

        }

}


关键字:P10点阵屏  C51  单片机 引用地址:P10点阵屏C51单片机程序

上一篇:H桥逆变,带死区的SPWM单片机程序
下一篇:KEIL-51单片机实现自定义bootloader,用于程序更新

推荐阅读

在实验1的电机驱动基础上,这里补充编码器测速的程序部分#include "encoder.h"#include "led.h"///TIM4 编码器输入,TIM4_CH1作A相,TIM4_CH2作B相GPIO_Pin_6|GPIO_Pin_7;TIM_ICInitTypeDef TIM_ICInitStructure;void TIM4_Encoder_Init(u16 arr,u16 psc){GPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure...
过去,上政府机构办事是件叫人头疼的难事,不仅要准备繁复资料,还有“办事来回跑、办事地点远、办事点分散”等诸多困扰,增加了办事难度,也拉长了办事周期。2018年,中共中央办公厅、国务院办公厅印发《进一步深化“互联网+政务服务”推进政务服务“一网、一门、一次”改革实施方案》,要求审批服务便民化,推动基于互联网、自助终端、移动终端的政务服...
1、指针式万用表的使用方法(1)准备工作由于万用表种类型式很多,在使用前要做好测量的准备工作:1)熟悉转换开关、旋钮、插孔等的作用,检查表盘符号,“∏”表示水平放置,“⊥”表示垂直使用。2)了解刻度盘上每条刻度线所对应的被测电量。3)检查红色和黑色两根表笔所接的位置是否正确,红表笔插人“十”插孔,黑表笔插人“一”插孔,有些万用表另有...
#include <stdio.h>//加入以下代码,支持printf函数,而不需要选择use MicroLIB #if 1#pragma import(__use_no_semihosting) //标准库需要的支持函数 struct __FILE { int handle; }; FILE __stdout; //定义_sys_exit()以避免使用半主机模式 void _sys_exit(int x) { x = x; } //重...

史海拾趣

问答坊 | AI 解惑

2007 DSP产业如何变化?两大DSP巨头看法不尽相同

德州仪器和模拟器件公司(ADI)是全球最大的两家DSP厂商,它们认为明年DSP市场将出现巨大变化。基本和以前一样,虽然都认为将发生变化,但它们对于变化程度的看法分歧较大。 “市场处于大转变过程之中。”德州仪器DSP部门的业务拓展经理Gene A. Frant ...…

查看全部问答∨

语音门禁

有哪位大侠做过这样的门禁没有:整栋楼的门禁机(每层有4户),功能:密码开锁,刷卡开锁,语音通话,主人可远程开大门?…

查看全部问答∨

用VC编写与HID设备通信程序遇到问题!

大家好,现在情况是这样的,HID设备可以正常枚举并且Windows提示可以使用,我也基本知道了在 VC中如何访问HID设备,但是现在的问题是,CreateFile之后可以得到正确的句炳,并且HidD_GetAttributes,HidD_GetPreparsedData以及HidP_GetCaps都正确得 ...…

查看全部问答∨

用J-LINK调试STM32F101VB的问题,急救!!!

第一次仿真调试ST的例子,GPIO的EXAMPLE:进行了几次都很正常,int main(void){#ifdef DEBUG  debug();#endif  /* Configure the system clocks */  RCC_Configuration();&nbs ...…

查看全部问答∨

想测正弦信号的频率?用捕获捕捉还是捕获比较?

                                 以前是把正弦信号处理成方波信号,然后用输入捕获测车频率。我想省掉交流信号转换方波信号电路,直接用捕获比较的 ...…

查看全部问答∨

32位的定点dsp有吗??

32位的定点dsp有吗??32位的dsp都有哪几款啊?…

查看全部问答∨

求教,为什么这两个MOS管的管压降不同,谢谢

求教,为什么这两个MOS管的管压降不同,谢谢 [ 本帖最后由 kumuhuakai 于 2011-7-22 17:43 编辑 ]…

查看全部问答∨

飞思卡尔单片机Trace怎么用?

飞思卡尔单片机Trace怎么用?…

查看全部问答∨

求助:关于VxWorks网络仿真的问题,谢谢

我的电脑上安装的是D版的Tornado2.2.1 for Pentium,查看Details下的信息不是完全版 我目前还没有开发板,需要用到网络仿真功能,如何将我的Tornado变成 Tornado Full Simulator    如果哪位前辈知道,请指导我一下,谢谢…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved