用C51系列的单片机控制 在8位数码管动态显示秒表 要c语言版程序 谢谢

如题所述

显示程序和硬件关联,如驱动方式、位数等,所以没有统一的程序,假定动态显示,大概思路如下:
1、设置定时中断,定时中断时间是5毫秒;
2、中断程序完成秒计时,秒数发生变化时,要将秒数对应的显示码放到显示缓冲区;
3、每次中断循环显示一位数码管;
下面是我曾经写的一个显示程序(显示缓冲区G_Disp_Buf):
#define PIN_SDIN P0_0
#define PIN_ST P0_1
#define PIN_SH P0_2
#define LOC_D1 0x08
void Display(void)
{
unsigned char i,ch,loc;

if(g_disp_location>3) g_disp_location=0; // display one digit every time, total 4 digits.
ch=G_Disp_Buf[g_disp_location];
loc=LOC_D1; // D1 position,P0_3-P0_6 located D1-D4
for(i=0;i<g_disp_location;i++) loc <<=1;
P0 &=0x87; // P0_3-6 clear, disable display
PIN_ST=0;
for(i=0;i<=7;i++) // output one character
{
PIN_SH=0;
if((ch&0x80)==0) PIN_SDIN=0;
else PIN_SDIN=1;
ch <<=1;
PIN_SH =1;
}
PIN_ST=1; // character ready
P0 |=loc; // set D1,D2,D3 or D4 ,enable display
g_disp_location++;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-16
LZ很多东西没讲明白:
1.晶振多大?
2.数码管类型,共阳?共阴?
3.数码管段选,即数据接口在哪里?
4.数码管位选接口在哪里?低电平选通 还是 高电平选通?
5.八位数码管,仅显示秒表?秒表就是说,全是秒,高位表示 几万 或 几千 秒,而不是分。
相似回答