51單片機 完美驅動LED P10板 可用于畢業設計 DIY制作等
單片機源程序如下:
- #include <reg52.h>
- #include <intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define NOP _nop_()
- sbit OE = P2^0;
- sbit A1 = P2^1;
- sbit B1 = P2^2;
- sbit SHCP=P2^4; //11腳SHCP 移位時鐘
- sbit STCP=P2^3; //12腳STCP 鎖存時鐘
- sbit DATA=P3^7; //數據輸入
- unsigned int flag,i;
- uchar code table0[10][32]=
- {{0xFF,0xFF,0xFF,0xFF,0xF8,0x7F,0xF7,0xBF,0xEF,0xDF,0xEF,0xDF,0xEF,0xDF,0xEF,0xDF,
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
-
- { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}};
- uchar* table[10] = {table0,table1,table2,table3,table4,table5,table6,table7,table8,table9};
- /*******************************************************************************************/
-
- /*******************************************************************************************/
- /*******************************************************************************************/
- //數據串行輸入
- void serial_input(uchar dat)
- {
- uint m;
- for(m=0;m<8;m++)
- {
- if(dat & 0x80)
- DATA=1;
- else
- DATA=0;
- SHCP=0;
- SHCP=1;
- NOP;
- NOP;
- SHCP=0;
- NOP;
- NOP;
- dat=dat<<1;
- }
- }
- /*******************************************************************************************/
- //并出
- void serial_output()
- {
- STCP=1;
- NOP;
- NOP;
- STCP=0;
- }
- /*******************************************************************************************/
- /*******************************************************************************************/
- //行顯控制
- void HC138_scan(uchar temp)
- {
- OE=1;
- A1=0x01 & temp;
- B1=0x01 &(temp>>1);
- }
- /*******************************************************************************************/
- /*******************************************************************************************/
- //整屏顯示
- void display0(uchar table[10][32])
- {
- uint i,j,k;
- for(k=0;k<4;k++) //顯示的四行
- {
- for(j=0;j<2;j++) //顯示3、4列
- {
- for(i=0;i<2;i++) // 顯示1、2列
- {
- serial_input(table[j][3*8+2*k+i]);
- serial_input(table[j][2*8+2*k+i]);
- serial_input(table[j][1*8+2*k+i]);
- serial_input(table[j][0*8+2*k+i]);
- }
- }
- serial_output();
- HC138_scan(k);
- }
- }
- //void Delay1000ms() //@11.0592MHz
- //{
- // unsigned char i, j, k;
- // _nop_();
- // _nop_();
- // i = 43;
- // j = 6;
- // k = 203;
- // do
- // {
- // do
- // {
- // while (--k);
- // } while (--j);
- // } while (--i);
- //}
- //void Delay1000ms()
- //{
- // int i=0;
- // for(i=0;i<90000;i++)
- // {
- // }
- //}
- /*******************************************************************************************/
- /*******************************************************************************************/
- /*******************************************************************************************/
- /*******************************************************************************************/
- void main()
- {
- SCON = 0x50;
- TMOD=0x20;
- TH1=0xfd;
- TL1=0xfd; //串口波特率9600
- TR1 = 1;
- // SM0=0;
- // SM1=1;
- REN=1;
- EA=1; //開總中斷
- ES=1; //開串行中斷
- i=0;
-
- // SBUF=i;
- // while(!TI);
- // TI=0;
- while(1)
- {
- if(flag==1)
- {
- ES=0;
- flag=0;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
LEDP1051.rar
(41.45 KB, 下載次數: 112)
2018-4-4 18:48 上傳
點擊文件名下載附件
|