标题: 求赐教,求赐教,显示程序不会啊 [打印本页]
作者: 李小慧 时间: 2016-12-28 17:56
标题: 求赐教,求赐教,显示程序不会啊
#include "reg52.h"
unsigned char code dsp_code_ca[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned int tflag;
unsigned char dspflag;
unsigned char second;
unsigned char dflag;
void display(unsigned char d);
void main()
{
TMOD |= 0x02;
TH0 = 0x06;
TL0 = 0x06;
EA = 1;
ET0 = 1;
TR0 = 1;
while(1)
{
display(second);
}
}
//T0中断服务函数
void isr_t0(void) interrupt 1
{
tflag++;
dflag++;
if(dflag == 16)
{
dflag = 0;
dspflag++;
if(dspflag == 2)
dspflag = 0;
}
if(tflag == 4000)
{
tflag = 0;
second++;
if(second == 60)
second = 0;
}
}
//显示程序
void display(unsigned char d)
{
if((dspflag == 0) && (d/10 != 0))
{
P0 = 0xFF;
P2 |= 0xE0;
P2 &= 0x1F;
P0 = dsp_code_ca[d/10];
P2 |= 0xE0;
P2 &= 0x1F;
P0 = 0x40;
P2 |= 0xC0;
P2 &= 0x3F;
}
if(dspflag == 1)
{
P0 = 0xFF;
P2 |= 0xE0;
P2 &= 0x1F;
P0 = dsp_code_ca[d%10];
P2 |= 0xE0;
P2 &= 0x1F;
P0 = 0x80;
P2 |= 0xC0;
P2 &= 0x3F;
}
}
作者: 张伟灵 时间: 2016-12-28 21:33
有电路图吗?没有电路图不好说。&=|=就是按位与和或,然后赋值。
作者: 李小慧 时间: 2016-12-29 14:49

作者: 李小慧 时间: 2016-12-29 14:51
Y7是位选,Y6是段选。这个现实程序定义的d,还有显示的逻辑我看不懂。能帮我解一下惑吗?
谢谢您
作者: zl2168 时间: 2016-12-29 22:08
本帖最后由 zl2168 于 2016-12-29 22:12 编辑
显示是单片机最基本最常用的功能。
介绍你几种显示电路和程序,自己去学习研究吧!
第5章 显示
5.1 LED数码管静态显示
实例51 单个LED数码管循环显示0~9
实例52 74LS377并行输出3位LED静态显示
实例53 CC4511 BCD码驱动3位LED数码管静态显示
实例54 74LS164串行扩展3位LED数码管静态显示
实例55 CC4094串行扩展3位LED数码管静态显示
实例56 74HC595串行扩展3位LED数码管静态显示
5.2 LED数码管动态显示
实例57 PNP晶体管选通3位共阳LED数码管动态显示
实例58 74LS139选通4位LED数码管动态显示
实例59 74LS138选通8位LED数码管动态显示
实例60 74LS595串行选通8位LED数码管动态显示
实例61 控制8位LED数码管滚动显示
实例62 8255A扩展8位LED数码管动态显示
实例63 8155扩展8位LED数码管动态显示
实例64 MAX7221控制8位LED数码管动态显示
5.3 LED点阵显示
实例65 LED5×7点阵显示字符
实例66 LED 16×16点阵显示汉字
5.4 LCD显示屏显示
实例67 LCD1602显示屏显示字符
实例68 LCD12864显示屏显示汉字
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1,内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行。
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |