程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 數碼管的動態顯示,數碼管動態顯示

數碼管的動態顯示,數碼管動態顯示

編輯:關於C語言

數碼管的動態顯示,數碼管動態顯示


 

實驗板:TX-1C     ---   八段數碼管采用共陰極連接

內容:顯示123456

 

 

原理:動態顯示的特點是將所有位數碼管的段選線並聯在一起,由位選線控制是哪一位數碼管有效。選亮數碼管采用動態掃描顯示。所謂動態掃描顯示即輪流向各位數碼管送出字形碼和相應的位選,利用發光管的余輝和人眼視覺暫留作用,使人的感覺好像各位數碼管同時都在顯示。動態顯示的亮度比靜態顯示要差一些,所以在選擇限流電阻時應略小於靜態顯示電路中的。

#include <reg52.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char sbit dula = P2^6; sbit wela = P2^7; uchar aa,num_du,num_we; /*段選的碼表*/ uchar code table_du[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; /*位選的碼表*/ uchar code table_we[]={ 0xfe,0xfd,0xfb,0xf7, 0xef,0xdf}; void main() { num_du = 1; num_we = 0; TMOD = 0x01; //設置定時器/計數器的工作模式(定時)和工作方式(T0) TMOD:gate T m1 m0 TH0 = (65536-1800)/256; TL0 = (65536-1800)%256; EA = 1; //開總中斷 ET0 = 1; //開T0中斷 TR0 = 1; //啟動定時器 while(1) { if(aa == 1) //間隔時間要足夠小 { aa = 0; dula = 1; //打開段選寄存器 P0 = table_du[num_du]; //往寄存器寫值 dula = 0; //關閉段選寄存器 wela = 1; //打開位選寄存器 P0 = table_we[num_we]; //往寄存器寫值 wela = 0; //關閉位選寄存器 num_du++; if(num_du == 7) num_du = 1; num_we++; if(num_we == 6) num_we = 0; } } } void T0_time() interrupt 1 //中斷函數,方式1,即T0中斷 { TH0 = (65536-1800)/256; TL0 = (65536-1800)%256; aa++; } View Code

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved