本人新手,自己琢磨的8*8點陣滾動循環(huán)顯示數字的程序,實驗板測試正常,但就是覺得這個程序復雜了,哪位大神幫忙看看,有什么需要改進的!
單片機源程序如下:
- #include<reg52.h>
- #include<intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- #define dig P0
- sbit ser=P3^4;
- sbit rclk=P3^5;
- sbit srclk=P3^6;
- uchar code table1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
- uchar xdata table2[]= // 只能存放在xdata了,code不能修改,data放不下
- {
- 0x00,0x00,0x7E,0x81,0x81,0x81,0x7E,0x00, // 0
- 0x00,0x00,0x00,0x41,0xFF,0x01,0x00,0x00, // 1
- 0x00,0x00,0x63,0x85,0x89,0x91,0x61,0x00, // 2
- 0x00,0x00,0x42,0x81,0x91,0x91,0x6E,0x00, // 3
- 0x00,0x00,0x0c,0x34,0x44,0xFF,0x04,0x00, // 4
- 0x00,0x00,0xF2,0x91,0x91,0x91,0x8E,0x00, // 5
- 0x00,0x00,0x7E,0x91,0x91,0x91,0x4E,0x00, // 6
- 0x00,0x00,0xC0,0x80,0x9F,0xa0,0xc0,0x00, // 7
- 0x00,0x00,0x6E,0x91,0x91,0x91,0x6E,0x00, // 8
- 0x00,0x00,0x72,0x89,0x89,0x89,0x7E,0x00, // 9
- 0x00,0x01,0x1F,0xE4,0x1C,0x07,0x01,0x00, // A
- 0x00,0x00,0x81,0xFF,0x91,0x91,0x6E,0x00, // B
- 0x00,0x00,0x7E,0x81,0x81,0x81,0x42,0x00, // C
- 0x00,0x00,0x81,0xFF,0x81,0x81,0x7E,0x00, // D
- 0x00,0x00,0x81,0xFf,0x91,0xB9,0xC3,0x00, // E
- 0x00,0x00,0X81,0xFF,0x91,0xB8,0xC0,0x00, // F
- 0x00 // 輔助數據,與table2[0]一致,方便滾動
- };
- void hc595(uchar dat)
- {
- uchar a;
- rclk=0;
- srclk=0;
- for(a=0;a<8;a++)
- {
- ser=dat>>7;
- dat<<=1;
- srclk=1;
- _nop_();
- _nop_();
- srclk=0;
- }
- rclk=1;
- _nop_();
- _nop_();
- rclk=0;
- }
- void main()
- {
- uint i,j;
- while(1)
- {
- j=20; //滾動速度
- while(j--)
- {
- for(i=0;i<8;i++)
- {
-
- dig=table1[i];
- hc595(table2[i]);
- hc595(0x00);
- }
- }
- table2[128]=table2[0]; //table2[]數據左移
- for(i=0;i<128;i++)
- {
- table2[i]=table2[i+1];
- }
-
- }
- }
復制代碼
所有資料51hei提供下載:
點陣滾動.rar
(17.3 KB, 下載次數: 48)
2018-10-25 10:53 上傳
點擊文件名下載附件
|