?? 數碼管循環左移.lst
字號:
C51 COMPILER V7.06 數碼_苧_籣左移 06/15/2010 18:05:31 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 數碼_苧_籣左移
OBJECT MODULE PLACED IN .\obj\數碼管循環左移.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 數碼管循環左移.c BROWSE DEBUG OBJECTEXTEND PRINT(.\obj\數碼管循環左移.lst)
-OBJECT(.\obj\數碼管循環左移.obj)
stmt level source
1 /*-----------------------------------------------
2 名稱:多位數碼管動態掃描顯示變化數據
3 論壇:www.doflye.net
4 編寫:shifang
5 日期:2009.5
6 修改:無
7 內容:多位數碼管分別顯示不同數字,這種掃描顯示方式成為動態掃描,并不停變化賦值
8 ------------------------------------------------*/
9 #include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
10
11 #define DataPort P0 //定義數據端口 程序中遇到DataPort 則用P0 替換
12 sbit LATCH1=P2^2;//定義鎖存使能端口 段鎖存
13 sbit LATCH2=P2^3;// 位鎖存
14
15 unsigned char code dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 顯示段碼值0~9
16 unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分別對應相應的數碼管點亮,即位
-碼
17 unsigned char TempData[8]; //存儲顯示值的全局變量
18 void Delay(unsigned int t); //函數聲明
19 void Display(unsigned char FirstBit,unsigned char Num);
20 /*------------------------------------------------
21 主函數
22 ------------------------------------------------*/
23 main()
24 {
25 1
26 1 unsigned int i,j,k=7,m;
27 1 unsigned char *pa=TempData,*pb=dofly_DuanMa;//定義2個指針,并賦值2個數組初始地址
28 1 //*pa=TempData 等效于 *pa=&TempData[0]
29 1 while(1)
30 1 {
31 2
32 2 j++;
33 2 if(j==20) //用于延時,改變值可以改變延時長度
34 2 {
35 3 j=0; //延時到重新賦值
36 3 for(i=0;i<(8-k);i++) //循環把顯示的字符值賦值給臨時緩沖數組TempData
37 3 {
38 4 *(pa+k+i)=*(pb+i+m);//使用指針操作賦值
39 4
40 4 }
41 3 for(i=0;i<m;i++) //8位左移出去,右邊空出來的數碼管需要熄滅,所有賦值0 m表示移出位置,同時也表示右
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -