File name : demo_6_5.c
Chip type : ATmega16
Program type : Application
Clock frequency : 4.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*********************************************/
#include <mega16.h>
#include <delay.h>
flash unsigned char led_7[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
flash unsigned char position[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
unsigned char time[3]; // 时、分、秒计数
unsigned char dis_buff[6]; // 显示缓冲区,存放要显示的6个字符的段码值
unsigned char time_counter; // 1秒计数器
bit point_on; // 秒显示标志
void display(void) // 扫描显示函数,执行时间12ms
{
unsigned char i;
for(i=0;i<=5;i++)
{
PORTA = led_7[dis_buff[i]];
if (point_on && ( i==2 || i==4 )) PORTA |= 0x80; // (1)
PORTC =
关于6位数码管动态扫描显示程序的一些问题
最新推荐文章于 2024-08-23 15:57:39 发布
该程序是用ATmega16单片机实现6位数码管动态扫描显示的示例。它包括显示函数、时间转换为显示缓冲区函数。主要疑惑点在于秒数点的显示逻辑。程序中通过`if (point_on && (i == 2 || i == 4)) PORTA |= 0x80;`这一行来控制秒数的点显示,`point_on`用于切换秒数点的状态,每40ms更新一次时间并显示。程序提供了时间更新、延时和扫描显示等功能。
摘要由CSDN通过智能技术生成