⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 display1.c

📁 好东西 关于单片机的一些重要的代码本程序是操作系统中比较典型的线程同步算法中的哲学家进餐问题,为防止死锁,采取了两个条件(筷子空闲)同时满足时再允许进餐的办法来解决。期望与大家一起学习交流!
💻 C
字号:
/****************************************Copyright (c)**************************************************/
/**                                
;**                                 西南科技大学计算机学院
;**                                   
;**                                  http://cs.swust.edu.cn
;**            
;**             日期:   2004.10.15
;**             功能:   8段数码管显示程序,利用6个数码管来同时显示数据,提示信息,显示原理:
;**                      采用轮循扫描的方式,过高的扫描频率会浪费CPU资源,过低的频率会使人肉眼
;**                      感到闪烁,一般频率应设置为50HZ为佳。
;**             扩展:    采用扫描频率来调节显示亮度。利用定时器设置频率   
;**             本程序作用:数码管数据显示原理,使数码管显示6位16进制数据
;**             数码管段码:0------F 对应 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
;**                                        0x77,0x7c,0x39,0x5e,0x79,0x71 ,可采用查表实现   
;**             硬件连接,连接数码管显示模块中的两组跳线,一组为8位数据线,一组为6位位选线,
;**                       默认连接,数据:p00----p07,位选:P10----P15 ,数码管共阴级
;**             
;**
;**-------------.c文件
;**------------------------------------------------------------------------------------------------------*/

/**------------------------------------------------------------------------------------------------------*/
#include <AT89X52.H>
const char Discode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
char displaycolum=0xfe;
unsigned char dislaycount=0;
char DIS[6];
void timer0_init(void);
void Display(void);
void Print(long int disdata);
void PortInit(void);
void TimeCount1(void);
/***********************************************************************************
定时器0中断服务函数
作    用: 添加服务函数,由定时器中断统一调用
入口参数: 无
中断向量: 1
***********************************************************************************/
void int_t0(void) interrupt 1
   {
      Display();   
      TH0=0Xd8;
   }
/***********************************************************************************
主函数
作    用: 程序入口
入口参数: 无
***********************************************************************************/
void main(void)
{
   PortInit();
   timer0_init();
   Print(0x123456);
   P3=0XFF;
   while(1);
}
/***********************************************************************************
端口初始化函数
作    用: 设置上电后端口某些特殊状态。
入口参数: 无
***********************************************************************************/
void PortInit(void)
{
  P3=0x00;
}
/***********************************************************************************
定时器初始化函数
作    用: 初始化定时器,设置定时器中断,定时长度,定时器工作方式
入口参数: 无
***********************************************************************************/
void timer0_init(void)
{
 IE|=0X82;
 TL0=0X00;
 TH0=0X00;
 TMOD=01;
 TCON|=0X10;
}
/***********************************************************************************
显示扫描函数
作    用: 扫描显示的数码管,通过位选进行选择,调用它的频率表征的显示扫描的频率
入口参数: 无
***********************************************************************************/
void Display(void)
{
  P1=displaycolum;
  P0=DIS[dislaycount];
  dislaycount++;
  displaycolum=(displaycolum<<1)|0x01;
  if(dislaycount==6)
  {
     displaycolum=0xfe;
	 dislaycount=0;
  }
}
/***********************************************************************************
数据显示函数
作    用: 设置显示的数据
入口参数: 显示的具体数据,如Print(0x123456);
***********************************************************************************/
void Print(long int disdata)
{
  char count;
  for(count=0;count<6;count++)
 {
    DIS[5-count]=Discode[disdata&0x0f];
	disdata=disdata>>4;
 }
}
/*********************************************************************************************************
                                      Copyright for swust --- cs
********************************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -