历史上的今天
返回首页

历史上的今天

今天是:2024年12月19日(星期四)

正在发生

2019年12月19日 | 基于LCD显示的篮球定时计分器的设计

2019-12-19 来源:51hei

LCD1602显示的篮球定时计分器的51单片机程序:

#include

#define uint unsigned int 

#define uchar unsigned char


uchar code table[]=".. Play ball! ....";

uchar code table1[]="Welcome to here!" ;

sbit key_ST=P1^5;                 //功能键(开始/暂停)

sbit key_A1=P1^0;                 //功能键(A队分数加1)

sbit key_A2=P1^3;                 //功能键(A队分数加2)

sbit key_1A=P1^6;                 //功能键(A队分数减1)

sbit key_B1=P1^1;                 //功能键(B队分数加1)

sbit key_B2=P1^4;                 //功能键(B队分数加2)

sbit key_1B=P1^7;                 //功能键(B队分数减1)

sbit key_EX=P1^2;                 //功能键(交换场地,A/B两队分数交换)

sbit key_JS=P3^0;                 //功能键(比赛节数加1)

sbit FMQ=P3^3;                         //蜂鸣器

sbit lcdrs=P3^5;                 //LCD显示的数据/命令选择端

sbit lcden=P3^4;                 //LCD显示的使能信号


uchar flag,ms,mg,ss,sg,ags,agg,bgs,bgg,num,num1,num2,js=1,C,D,t,min=0,time_fmq;        

int sec=12;


void delayms(uint xms)                        //定义延时函数

{

        uint i,j;

        for(i=xms;i>0;i--)

                for(j=110;j>0;j--);

}


void write_data(uchar date)                                        //定义为数据模式

{

        lcdrs=1;

        P0=date;

        delayms(5);

        lcden=1;

        delayms(5);

        lcden=0;

}

                                                                        

void write_com(uchar com)                                           //定义为命令模式

{

        lcdrs=0;

        P0=com;

        delayms(5);

        lcden=1;

        delayms(5);

        lcden=0;

}


void lcd_init()                                                                   //LCD显示屏的初始化

{

        lcden=0;

        write_com(0x38);

        write_com(0x0c);

        write_com(0x06);

        write_com(0x01);

}


void init()                                                                          //LCD显示屏的初始化2(即输出“T-”、“Q-”、“A:”、“B:”)

{

        lcden=0;

        write_com(0x82);

        write_data('T');

        write_data('-');


        write_com(0x8a);

        write_data('Q');

        write_data('-');


        write_com(0x80+0x43);

        write_data('A');

        write_data(':');


        write_com(0x80+0x49);

        write_data('B');

        write_data(':');


}


void init_start()                                                                          //LCD显示屏的初始化2(即输出“T-”、“Q-”、“A:”、“B:”)

{

        lcden=0;

        write_com(0x80+0x10);

        for(num2=0;num2<16;num2++)

        {

                write_data(table1[num2]);

                delayms(5);

        }


        write_com(0x80+0x50);

        for(num2=0;num2<17;num2++)

        {

                write_data(table[num2]);

                delayms(5);

        }

        for(num2=0;num2<16;num2++)

        {

                write_com(0x18);

                delayms(400);

        }

}


void display(uchar min,int sec,uchar C,uchar D,uchar js)                   //显示函数

{

        ss=sec/10;

        sg=sec%10;

        ms=min/10;

        mg=min%10;

        ags=C/10;

        agg=C%10;

        bgs=D/10;

        bgg=D%10;


        write_com(0x84);

        write_data(0x30+ms);


        write_data(0x30+mg);


        write_data(':');


        write_data(0x30+ss);


        write_data(0x30+sg);


        write_com(0x8d-1);

        write_data(0x30+js);


        write_com(0x80+0x45);

        write_data(0x30+ags);

        write_data(0x30+agg);


        write_com(0x80+0x4b);

        write_data(0x30+bgs);

        write_data(0x30+bgg);                

}


void main()

{

        TMOD=0x11;                                                                //定义定时器0的工作方式为0001

        TH0=(65536-45872)/256;                                        //装初值

        TL0=(65536-45872)%256;

        TH1=(65536-45872)/256;                                        //装初值

        TL1=(65536-45872)%256;

        EA=1;                                                                        //打开总中断

        ET0=1;                                                                        //打开定时器0的中断

        TR0=0;

        ET1=1;

        TR1=0;

        lcd_init();

        init_start();                                                

        while(1)

        {

                TR1=0;


                if(key_ST==0)                                                

                {

                        delayms(5);

                        if(key_ST==0)

                        {

                                FMQ=0;

                                if(flag==0)

                                {

                                        lcd_init();

                                        init();

                                }

                                flag=1;

                                TR0=~TR0;        

推荐阅读

史海拾趣

Alpha Semiconductor公司的发展小趣事

Alpha Semiconductor公司于1983年创立,成立之初,公司主要从事代工服务业务。这一策略为Alpha Semiconductor在半导体行业打下了坚实的基础。通过为其他公司提供高质量的代工服务,Alpha Semiconductor逐渐积累了技术实力和行业经验,为后续的自主研发和产品创新奠定了坚实的基础。

Good-Ark公司的发展小趣事
定期检查电路各部件的工作状态,及时更换损坏的元件,确保电路长期稳定运行。
Filtran Ltd公司的发展小趣事

随着业务规模的扩大,Filtran Ltd意识到供应链管理的重要性。公司开始在全球范围内寻找优质原材料供应商,并在亚洲和欧洲建立了生产基地,以降低成本并缩短交货周期。同时,通过引入先进的ERP系统和数字化管理工具,实现了供应链的高效协同。这一战略调整不仅提高了生产效率,还增强了公司对市场变化的快速响应能力。

Force Technologies Ltd公司的发展小趣事

背景:在电子行业竞争日益激烈的背景下,Force Technologies Ltd意识到通过并购整合可以迅速扩大规模、提升竞争力。

发展:公司精心挑选了几家在特定领域具有优势的企业作为并购目标,并成功完成了多起并购案。这些并购不仅为公司带来了先进的技术和人才资源,还极大地丰富了产品线和市场布局。通过并购整合,Force Technologies Ltd在多个细分领域均占据了领先地位。

Edsun Laboratories Inc公司的发展小趣事

ECM Electronics Limited.自创立之初,就注重技术创新。公司投入大量研发资金,专注于开发高效、节能的电子产品。通过不断的技术迭代和产品创新,ECM成功推出了一系列具有竞争力的产品,逐渐在市场上建立了良好的口碑。同时,公司还积极与高校和科研机构合作,引进先进技术,为公司的持续发展提供了强大的技术支撑。

Cableform Inc公司的发展小趣事

2012年,对于Cableform Inc来说是一个重要的转折点。这一年,公司成功加入了HUBBELL系列,与Hubbell工业控制有限公司建立了战略合作关系。这一合作使得Cableform Inc能够借助Hubbell的品牌影响力和市场渠道,进一步拓展业务范围,提升市场地位。同时,通过与Hubbell的技术交流和资源共享,Cableform Inc在技术创新和产品升级方面也取得了显著进展。

问答坊 | AI 解惑

最受欢迎的国际和区域分销商:规模、专精与特色的较量

本帖最后由 jameswangsynnex 于 2015-3-3 20:00 编辑 …

查看全部问答>

四川话8级测试

一。选择题(70分) 1。 “ 包谷 ” 是指( ) A 农民 B 小麦 C 蝗虫 D 玉米 2。 “ 批噻噻 ” 是形容一个人() A 舌头长,搬弄是非 B 一种腌制品 C 长得强壮 D 一种交通工具 3。 “ 叮叮猫 ” 是指( ) A ...…

查看全部问答>

你有意念移物能力吗

恐怖电影里经常出现这样的场面:物体咯咯作响、好像长腿似的移动起来,甚至在空中呼啸而过。一些人能够用思维影响物质的说法已存在了几百年,从移动家具到把勺子“看”弯,但是对这种现象的调查却一直存在争议。在普林斯顿大学从事全球意识研究计 ...…

查看全部问答>

DSP C语言入门谈

年初到现在,接触DSP已经半年了,由于公司没有人指导,做了这么久都没出什么大的成果,也走了不少的弯路。以前做单片机用C编过一些程序,个人觉得还可以。现在看来也只是在吃以前在学校里面一些C语言皮毛的老本,加上一些网上说的所谓的技巧什么的 ...…

查看全部问答>

点触摸屏,屏幕会出现小黑圆圈,这部分代码在那里?

在wince中,当我们用触摸笔点一下屏幕的时候,会在围绕触摸笔在触摸笔周围画一个由几个小黑圆点围成的圆圈,我想问一下,这部分代码在什么位置?调用的什么函数或者库?…

查看全部问答>

51单片机控制SIM300收发数据

各位高手,我想用51通过串口来控制SIM300收发数据,现在已经把SIM300模块和51实验板通过串口连接起来了,可写完程序后模块没有反应,不知道为什么,需要对模块初始化吗?我把程序贴上来麻烦大家看看有什么问题。另外我想用串口接收字符串并判断接收 ...…

查看全部问答>

初学者请教个中断的问题,谢谢!

电平触发方式的中断不是应该保持中断状态么?咋我这个接地之后只是变化的慢了而不是完全不动呢? #include void delay(unsigned int z); //延迟子程序声明 sbit dula=P1^0; //段锁位 sbit A1=P2^2; sbit B1=P2^3; sbit C1=P2^4; ...…

查看全部问答>

难道是KEILMDK的BUG吗?!!有图为证,郁闷~~

就是当你在线仿真调试的时候,变量多的时候MDK的变量(有些是不能显示出来,) 我不知道这算不算是BUG,现在我把我个人经历写出来,希望同行有类似经历时,多留个心眼,换个思维解决,说不定不是你的错! 在我的程序中,刚开始是KEIL MDK建 ...…

查看全部问答>

【版主救命】关于STM8S的SPI模式的选择

我想用STM8S207和一个解码芯片进行SPI通信,ST芯片只接受,而解码芯片只发送,两者之间有3根线连接,一根CS片选,一根时钟,一根数据线,然后我用的STVD和source insight进行编程,其中sourceinsight库中有2LINES_FULLDUPLEX,  2LI ...…

查看全部问答>