51单片机四位数码管不用锁存器怎么写?

adsdfer 2010-09-01 12:31:03
想不用锁存器直接用89c52的P2^4---^7控制四位数码管,我记得位选低电平时候才能修改显示数字,可是我这么写什么都显示不出来。

#include<reg52.h>

char clear = 0xff;

sbit wela1 = P2^4;
sbit wela2 = P2^5;
sbit wela3 = P2^6;
sbit wela4 = P2^7;
unsigned char code table[] = {0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0};

void delay(int z)
{
int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display( char one,char two,char three,char four )
{
wela1 = wela2 = wela3 = wela4 = 1;


wela1 = 0;
P0 = clear;
P0 = table[one];
wela1 = 1;
delay(5);


wela2 = 0;
P0 = clear;
P0 = table[two];
wela2 = 1;
delay(5);


wela3 = 0;
P0 = clear;
P0 = table[three];
wela3 = 1;
delay(5);


wela4 = 0;
P0 = clear;
P0 = table[four];
wela4 = 1;
delay(5);
}

void main()
{
display(1,2,3,4);
}
...全文
823 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
碲矿 2010-09-01
  • 打赏
  • 举报
回复
贴图,要不把端口分配及数码管类型说下。。。用动态扫描就可以了。。。
bluesea87 2010-09-01
  • 打赏
  • 举报
回复
贴硬件电路图
bluesea87 2010-09-01
  • 打赏
  • 举报
回复
P0 = clear;
P0 = table[one];
wela1 = 0;
delay(5);
wela1 = 1;

把四个都写成这样,然后在main函数里面,改成这样子while(1){display(1,2,3,4);},你的要效果就出现了
adsdfer 2010-09-01
  • 打赏
  • 举报
回复
CC,共阴的。
adsdfer 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 supermanking 的回复:]
char clear = 0xff;
改为
unsigned char clear = 0xff;
[/Quote]

不是的,这里unsigned也不管用。应该还是显示的问题。
现在还是人类 2010-09-01
  • 打赏
  • 举报
回复
char clear = 0xff;
改为
unsigned char clear = 0xff;
现在还是人类 2010-09-01
  • 打赏
  • 举报
回复
数码管分供阴的和供阳的,你的是哪一种?
adsdfer 2010-09-01
  • 打赏
  • 举报
回复
图就是这样的
adsdfer 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 a451173299 的回复:]
贴图,要不把端口分配及数码管类型说下。。。用动态扫描就可以了。。。
[/Quote]
不好意思不会贴图……很简单的,就是P0控制四位数码管段选,P2的4到7控制1234四个位选。这写法应该就是动态扫描吧
shizhiyong001 2010-09-01
  • 打赏
  • 举报
回复
0xff给clear溢出了
shizhiyong001 2010-09-01
  • 打赏
  • 举报
回复
clear应该是unsigned char吧
目 录 第1篇 序 幕 单片机是什么?单片机有何用?如何系统学习单片机?单片机系统设计的流程是怎样的,需要掌握哪些辅助软件?本篇将针对这些问题一一阐述,为读者掀开单片机完全学习与应用的华丽序幕。 第1章 单片机在哪里 1.1 ■寻找单片机 1.1.1 电磁炉与单片机 1.1.2 MP3播放机与单片机 1.1.3 更多单片机 1.2 ■学习单片机 1.2.1 掌握单片机基础知识 1.2.2 理解单片机系统 1.2.3 成为单片机系统设计师 1.3 ■单片机之家 1.3.1 Intel 8051单片机 1.3.2 PIC单片机 1.3.3 AVR单片机 1.3.4 其他单片机 1.4 ■应用体验——数字温度计 1.4.1 数字温度计工作原理 1.4.2 体验数字温度计 1.5 ■实例解读——装小球系统 1.5.1 需求分析 1.5.2 系统框架 第2章 如何成为单片机系统设计师 2.1 ■需要准备哪些 2.1.1 综合素质 2.1.2 软件工具 2.1.3 硬件工具之一:面包板 2.1.4 硬件工具之二:万用板和 印制电路板 2.1.5 焊接工具 2.1.6 焊接方法 2.2 ■单片机系统设计流程 2.2.1 需求分析 2.2.2 电路设计 2.2.3 程序设计 2.2.4 系统调试 2.3 ■应用体验——单片机控制下的 发光二极管 2.3.1 发光二极管工作原理 2.3.2 单片机的控制 2.3.3 体验单片机控制发光二极管 2.4 ■实例解读——反应时间测试仪 2.4.1 需求分析 2.4.2 电路设计 2.4.3 程序设计 第3章 单片机系统登场 3.1 ■单片机系统组成 3.1.1 单片机本身 3.1.2 系统的构成 3.2 ■单片机系统抽丝剥茧 3.2.1 AT89S51单片机的“外衣” 3.2.2 AT89S51单片机的管脚 3.2.3 常见外设 3.3 ■元器件插曲之一:变压器 3.3.1 变压器基础知识 3.3.2 电源变压器 3.4 ■元器件插曲之二:二极管与整流 3.4.1 二极管基础知识 3.4.2 整流 3.4.3 整流全桥 3.5 ■元器件插曲之三:电容 3.5.1 电容基础知识 3.5.2 电容的种类 3.5.3 电源滤波 3.6 ■元器件插曲之四:三端稳压与 单片机系统电源 3.6.1 三端稳压基础知识 3.6.2 单片机系统电源方案一: 自制直流稳压电源 3.6.3 单片机系统电源方案二: 电源适配器 3.6.4 单片机系统电源方案三: USB口供电 3.7 ■元器件插曲之五:晶振与振荡器 3.7.1 晶振基础知识 3.7.2 振荡器 3.8 ■诠释单片机最简系统 3.8.1 单片机最简系统 3.8.2 电源端(VCC、GND) 3.8.3 时钟信号端(XTAL1、 XTAL2) 3.8.4 复位端(RST) 3.8.5 外部程序存储器访问控制端 ( ) 3.8.6 从最简系统出发 3.9 ■元器件插曲之六:电阻 3.9.1 电阻基础知识 3.9.2 电阻的参数和种类 3.9.3 电阻的分压、限流、上拉作用 3.10 ■从单片机最简系统开始设计 3.10.1 发光二极管交替发光 3.10.2 程序设计 3.10.3 初见汇编语言 3.10.4 初识指令 3.10.5 立即数 3.11 ■应用体验——发光二极管的交替 发光 3.11.1 控制交替发光的原理 3.11.2 体验交替发光 3.12 ■元器件插曲之七:开关 3.12.1 开关基础知识 3.12.2 常用开关 3.13 ■实例解读——与发光二极管的 交互 3.13.1 需求分析 3.13.2 电路设计 3.13.3 程序设计 3.13.4 延时子程序 第4章 单片机系统设计辅助软件 4.1 ■Proteus单片机系统仿真软件 4.1.1 Proteus软件界面 4.1.2 用Proteus仿真 Vision单片机程序开发4.2 ■ Vision软件界面4.2.1 4.2.2 新建和保存项目 4.2.3 向项目中添加文件 4.2.4 汇编程序,生成执行代码 4.2.5 生成下载到单片机的执行 代码HEX文件 Vision的调试及仿真功能4.3 ■ 4.3.1 调试界面 4.3.2 虚拟逻辑分析仪 4.4 ■应用体验——把程序下载到 单片机里 4.4.1 下载器与单片机 4.4.2 体验下载过程 4.5 ■实例解读——流水灯 4.5.1 需求分析 4.5.2 电路设计 4.5.3 软件设计 第2篇 揭 密 单片机的内部结构是怎样的?单片机开发经常会用到哪些电子技术和元器件知识?还有那困扰了很多人的单片机编程语言……本篇将生动地通过诸多实例带出单片机的基础知识,在遇到相关模拟电路、数字电路、元器件知识时会有及时的补充说明,带领读者一点点揭开单片机的神秘面纱。 第5章 单片机的触角——I/O口 5.1 ■何谓I/O口 5.1.1 I/O口的功能 5.1.2 I/O口与单片机的关系 5.1.3 I/O口的操作 5.2 ■元器件插曲之八:场效应管 5.2.1 JFET 5.2.2 MOSFET 5.3 ■元器件插曲之九:逻辑门 5.3.1 非门 5.3.2 或门 5.3.3 或非门 5.3.4 与门 5.3.5 与非门 5.3.6 异或门 5.3.7 缓冲器 5.4 ■元器件插曲之十:锁存器与触发器 5.4.1 门控D锁存器 5.4.2 边沿D触发器 5.5 ■I/O口结构探密 5.5.1 P1口 5.5.2 P3口 5.5.3 P0口 5.5.4 P2口 5.5.5 I/O口小结 5.6 ■应用体验——控制流水灯 5.6.1 功能与电路 5.6.2 体验控制流水灯 5.7 ■实例解读——晃晃灯 5.7.1 原理分析 5.7.2 需求分析 5.7.3 电路设计 5.7.4 软件设计 第6章 七段数码管显示 6.1 ■二进制与数据 6.1.1 二进制与数字 6.1.2 二进制与语音 6.1.3 二进制与图像 6.2 ■元器件插曲之十一:七段数码管 6.2.1 七段数码管原理 6.2.2 七段数码管显示数字 6.3 ■应用体验——计时器 6.3.1 功能与电路 6.3.2 体验计时器 6.4 ■元器件插曲之十二:蜂鸣器 6.4.1 蜂鸣器 6.4.2 蜂鸣器如何工作 6.5 ■元器件插曲之十三:三极管及 三极管开关 6.5.1 三极管基础 6.5.2 三极管的直流放大特性 6.5.3 三极管的直流增益 6.5.4 三极管的电流关系式 6.5.5 三极管开关 6.6 ■实例解读——带声音提示的秒表 6.6.1 需求分析 6.6.2 电路设计 6.6.3 开关抖动的处理 6.6.4 计时中数字的增加 6.6.5 软件设计 第7章 解剖单片机 7.1 ■单片机的功耗 7.1.1 运行功耗 7.1.2 I/O口驱动功耗 7.1.3 空闲模式 7.1.4 待机模式 7.2 ■单片机内部结构 7.2.1 从I/O口到内部结构 7.2.2 数据在内部交换 7.2.3 算术逻辑单元(ALU) Vision中观察寄存器7.2.4 在 7.3 ■单片机的程序存储器 7.3.1 整体结构 7.3.2 程序下载到哪里 7.3.3 片内程序存储器 7.3.4 程序计数器PC 7.3.5 是片内还是片外程序存储器 Vision中观察程序存储器7.3.6 在 7.4 ■单片机的数据存储器 7.4.1 片内数据存储器 7.4.2 工作寄存器区(00H~1FH) 7.4.3 位寻址区(20H~2FH) 7.4.4 开放区(30H~7FH) Vision中观察数据存储器7.4.5 在 7.5 ■单片机的特殊功能寄存器 7.5.1 特殊功能寄存器分布图 7.5.2 特殊功能寄存器的功能 7.5.3 特殊功能寄存器的字节操作 7.5.4 特殊功能寄存器的位操作 Vision中观察特殊功能7.5.5 在 寄存器 7.6 ■应用体验——用取表方式实现 流水灯 7.6.1 取表法 7.6.2 取表法小结 7.6.3 体验流水灯 7.7 ■实例解读——直接驱动七段 数码管 7.7.1 需求分析 7.7.2 电路设计 7.7.3 软件设计 第8章 单片机与汇编指令 8.1 ■汇编语言真面目 8.1.1 汇编语言与高级语言 8.1.2 从汇编程序到执行代码 8.1.3 伪指令 8.2 ■指令的执行 8.2.1 振荡周期、机器周期、指令 周期 8.2.2 指令的执行 8.3 ■寻址方式 8.3.1 直接寻址 8.3.2 间接寻址 8.3.3 寄存器寻址 8.3.4 寄存器特征寻址 8.3.5 立即寻址 8.3.6 变址寻址 8.4 ■指令分类 8.4.1 指令概述 8.4.2 指令的长度 8.5 ■算术运算指令 8.5.1 加法指令——ADD A, <src-byte> 8.5.2 带进位的加法指令——ADDC A, <src-byte> 8.5.3 带借位的减法指令——SUBB A,<src-byte> 8.5.4 自增/自减指令——INC <byte> / DEC <byte> 8.5.5 乘法指令——MUL AB 8.5.6 除法指令——DIV AB 8.5.7 十进制调整指令——DA A 8.6 ■逻辑运算指令 8.6.1 与操作——ANL <dest-byte>,<src-byte> 8.6.2 或操作——ORL <dest-byte>,<src-byte> 8.6.3 异或操作——XRL <dest-byte>, <src-byte> 8.6.4 累加器A清0操作——CLR A 8.6.5 累加器A取反操作——CPL A 8.6.6 累加器A位移动操作——RL、 RLC、RR、RRC 8.6.7 累加器A高低位交换操作 ——SWAP A 8.7 ■数据装载指令 8.7.1 片内数据装载指令——MOV   <dest>, <src> 8.7.2 数据指针DPTR装载指令 ——MOV DPTR, #data16 8.7.3 堆栈指令——PUSH、POP 8.7.4 数据交换指令——XCH、 XCHD 8.7.5 片外数据装载指令——MOVX   <dest>, <src> 8.7.6 查表指令——MOVC  <dest>, <src> 8.8 ■布尔指令 8.8.1 清0、置1、取反操作——CLR、 SETB、CPL 8.8.2 布尔逻辑运算指令——ANL、 ORL 8.8.3 位数据装载指令——MOV <dest-bit>,<src-bit> 8.8.4 布尔跳转指令——JC、JNC、 JB、JNB、JBC 8.9 ■调用子程序指令 8.9.1 长调用指令——LCALL 8.9.2 绝对调用指令——ACALL 8.9.3 返回指令——RET、RETI 8.10 ■跳转与循环指令 8.10.1 无条件跳转指令——LJMP、 AJMP、SJMP、JMP 8.10.2 条件跳转指令——JZ、JNZ 8.10.3 比较跳转指令——CJNE <dest-byte>, <src-byte>, rel 8.10.4 循环指令——DJNZ <byte>,<rel-addr> 8.10.5 无操作指令——NOP 8.11 ■应用体验——七段数码管的串行 控制技术 8.11.1 串行与并行传输 8.11.2 串行控制七段数码管 8.11.3 程序设计 8.12 ■实例解读——指令应用(程序) 实例 8.12.1 数据求和 8.12.2 减法与二进制的二补数 8.12.3 异或操作指令XRL用于比较 寄存器数值 8.12.4 利用布尔指令产生矩形波 信号 8.12.5 布尔指令应用于控制
基于51单片机的电子时钟设计 *** 山东工商学院 264005 摘 要:本文介绍了基于51单片机的电子时钟的设计,从硬件和软件两个方面给出了具体实 现过程。该时钟的设计采用功能分块的思想方法,将硬件电路划分为开关电路,显示驱 动电路和数码管电路等若干独立模块,而软件的实现则由闹钟的声音程序、时间显示程 序、日期显示程序,秒表显示程序,时间调整程序、闹钟调整程序、定时调整程序,延 时程序等组成。文中给出了各个模块的电路图,并用Proteus的ISIS软件对电子时钟系统 的各个功能进行了仿真,并给出了相应的仿真结果图像。 关键词:单片机;电子时钟;键盘控制 Electronic Clock Design Based on 51 Single-chip *** Shandong Institute of Business and Technology , 264005 Abstract: This paper introduces the electronic clock design based on 51 single-chip microcomputer, and it provides us specific implementation process from aspects of hardware and software. This clock is designed by the method of function blocks. In hardware, it's circuit is divided into switch block, display drive block and digital control block. However, the software consist of the program of alarm clock, time display, date display, stopwatch display, time adjust, timing adjustment, the alarm clock adjustment, time delay and so on. Circuit diagrams of each module is also given and the corresponding simulation image of this clock produced by software of Proteus is also showed in this paper. Key words: single chip microcomputer; electronic clock; Keyboard control 1. 引言 1957年,Ventura发明了世界上第一个电子表,从而奠定了电子时钟的基础,电子时钟 开始迅速发展起来。现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生 一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小 时进一,满二十四小时小时清零。从而达到计时的功能,是人民日常生活补课缺少的工 具。现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石 英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数 字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显 示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分 的校对,片选的灵活性好。 二,时钟的基本原理分析 利用单片机定时器完成计时功能,定时器0计时中断程序每隔0.01s中断一次并当作一 个计数,设定定时1秒的中断计数初值为100,每中断一次中断计数初值减1,当减到0时 ,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。 为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法 需要译码器,数据锁存器等较多硬件,可采用动态显示法实现LED显示,通过对每位数码 管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。由于 数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现 了各种显示。 三,时钟设计分析 针对要实现的功能,采用AT89S51单片机进行设计,AT89S51 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦 1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准 MCS- 51指令系统及80C51引脚结构。这样,既能做到经济合理又能实现预期的功能。 在程序方面,采用分块设计的方法,这样既减小了编程
基于51单片机的电子时钟设计 *** 山东工商学院 264005 摘 要:本文介绍了基于51单片机的电子时钟的设计,从硬件和软件两个方面给出了具体实 现过程。该时钟的设计采用功能分块的思想方法,将硬件电路划分为开关电路,显示驱 动电路和数码管电路等若干独立模块,而软件的实现则由闹钟的声音程序、时间显示程 序、日期显示程序,秒表显示程序,时间调整程序、闹钟调整程序、定时调整程序,延 时程序等组成。文中给出了各个模块的电路图,并用Proteus的ISIS软件对电子时钟系统 的各个功能进行了仿真,并给出了相应的仿真结果图像。 关键词:单片机;电子时钟;键盘控制 Electronic Clock Design Based on 51 Single-chip *** Shandong Institute of Business and Technology , 264005 Abstract: This paper introduces the electronic clock design based on 51 single-chip microcomputer, and it provides us specific implementation process from aspects of hardware and software. This clock is designed by the method of function blocks. In hardware, it's circuit is divided into switch block, display drive block and digital control block. However, the software consist of the program of alarm clock, time display, date display, stopwatch display, time adjust, timing adjustment, the alarm clock adjustment, time delay and so on. Circuit diagrams of each module is also given and the corresponding simulation image of this clock produced by software of Proteus is also showed in this paper. Key words: single chip microcomputer; electronic clock; Keyboard control 1. 引言 1957年,Ventura发明了世界上第一个电子表,从而奠定了电子时钟的基础,电子时钟 开始迅速发展起来。现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生 一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小 时进一,满二十四小时小时清零。从而达到计时的功能,是人民日常生活补课缺少的工 具。现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石 英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数 字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显 示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分 的校对,片选的灵活性好。 二,时钟的基本原理分析 利用单片机定时器完成计时功能,定时器0计时中断程序每隔0.01s中断一次并当作一 个计数,设定定时1秒的中断计数初值为100,每中断一次中断计数初值减1,当减到0时 ,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。 为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法 需要译码器,数据锁存器等较多硬件,可采用动态显示法实现LED显示,通过对每位数码 管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。由于 数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现 了各种显示。 三,时钟设计分析 针对要实现的功能,采用AT89S51单片机进行设计,AT89S51 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦 1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准 MCS- 51指令系统及80C51引脚结构。这样,既能做到经济合理又能实现预期的功能。 在程序方面,采用分块设计的方法,这样既减小了编程

27,372

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧