/*************************************************
*功能描述: CEPARK CAN开发板-数码管显示8051
*版本:v1.00
*声明:程序来自网络,欢迎网友交流改进
* 活跃论坛,共同进步
*作者:协成电子 、hnrain
*时间:2010/09/14
*邮箱:hnrain1004@gmail.com ,HQL19982003@163.com ,qq:87675298
*网站:bbs.cepark.com ;写程序如果有问题,可以在这里讨论
*我们的口号:让不懂can的学习者,也能轻松玩转can
*推荐教材:
饶运涛,邹继军《现场总线 CAN 原理与应用技术》.北京:北京航空航天大学出版社 (这本书,看着不错)
周立功《增强型80c51单片机速成与实战》还有周立功写的一些can通信程序算法很不错,值得学习
本程序,融入了那么一点点点点点,他们的编程思想,哈哈....仅供学习用
****************************************************/
#include <reg52.h>
#include "config.h"
//数码管段码显示:0~f,不亮
uint8 code LED_Disp[] = {0xc0,0xde,0xa2,0x8a,0x9c,0x89,0x81,0xda,0x80,0x88,
0x90,0x85,0xe1,0x86,0xa1,0xb1,0xff};
sfr LedPort = 0x80; //段选段P0
sfr LedCtrl = 0xa0; //位选段P2
uint8 DisBuff[4];
uint8 Txd_data = 51;
uint8 Rxd_data = 80;
void mDelay(uint16 mtime)
{
for(; mtime > 0; mtime--)
{
uint8 j = 244;
while(--j);
}
}
void LED_Disp_Seg7()
{
LedCtrl = LedCtrl | 0xf0;
DisBuff[0] = Txd_data%10;//取个位数
DisBuff[1] = Txd_data%100/10; //取十位数
DisBuff[2] = Rxd_data%10; //百位数
DisBuff[3] = Rxd_data%100/10; //千位数
LedPort = LED_Disp[DisBuff[0]];
LedCtrl = LedCtrl & 0x7f;
mDelay(5);
LedCtrl = LedCtrl | 0xf0;
LedPort = LED_Disp[DisBuff[1]];
LedCtrl = LedCtrl & 0xbf;
mDelay(5);
LedCtrl = LedCtrl | 0xf0;
LedPort = LED_Disp[DisBuff[2]];
LedCtrl = LedCtrl & 0xdf;
mDelay(5);
LedCtrl = LedCtrl | 0xf0;
LedPort = LED_Disp[DisBuff[3]];
LedCtrl = LedCtrl & 0xef;
mDelay(5);
LedCtrl = LedCtrl | 0xf0;
}
void main()
{
while(1)
{
LED_Disp_Seg7();
}
}
|