at89c51芯片,可以通過MAX7221芯片進行數碼管驅動,實現三個引腳控制8位數碼管,驅動函數已經寫好,包括數碼管顯示函數,可以隨心控制你想要輸出的數字。目前置為8位數,自動減1,具體功能可以自行加入。
1.png (113.24 KB)
下載附件
2021-6-5 15:21 上傳
部分源碼:完整源碼和仿真文件在本文尾部附件中
- #include <reg51.h>
- #include <intrins.h>
- sbit DIN = P2^0; //數據串出引腳
- sbit CS = P2^1; //片選端
- sbit CLK = P2^2; //移位時鐘端
- unsigned char disp_buff[10] = {0,1,2,3,4,5,6,7,8,9};//顯示的數字,數值為10的時候,顯示“-”
- // 延時函數
- void delayms(unsigned int x)
- {
- unsigned char i;
- while(x--)
- {
- for(i = 0;i < 120;i++);
- }
- }
- void write_data(unsigned char addr,unsigned char dat)
- {
- unsigned char i;
- CS = 0; // 先寫地址,片選置低,串行數據加載到移位寄存器
-
- for(i = 0;i < 8;i++) //
- {
- CLK = 0; //時鐘上升沿數據移入內部移位寄存器
- addr <<= 1; //待發(fā)送的地址,每次左移一次,高位在前發(fā)送,
- DIN = CY; //數據移位后,如果有溢出,則可以從進位位CY中獲得溢出的數據位
- CLK = 1;
- _nop_();
- _nop_();
- CLK = 0; //下降沿時數據從DOUT移出
- }
- for(i = 0;i < 8;i++)
- {
- CLK = 0; //
- dat <<= 1; //發(fā)送數據
- DIN = CY;
- CLK = 1;
- _nop_();
- _nop_();
- CLK = 0;
- }
- CS = 1; //CS上升沿,數據鎖存
- }
- //初始化函數
- void init_max7221(void)
- {write_data(0x09,0xff); //編碼模式
- write_data(0x0a,0x07); //亮度控制
- write_data(0x0b,0x07); //掃描數碼管的位數
- write_data(0x0c,0x01); //工作模式
- write_data(0x0f,0x00); //工作模式
- }
- void main(void)
- {
- unsigned char Sec_1=0,Sec_2=0,Sec_3=0,Sec_4=0,Sec_5=0,Sec_6=0,Sec_7=0,Sec_8=0;
- unsigned char i;
- unsigned long int Sum=87654321;
- init_max7221(); // 初始化
- delayms(2);
- while(1)
- {
- Sum-=10;
- Sec_8 = Sum/10000000;
- Sec_7 = Sum%10000000/1000000;
- Sec_6 = Sum%1000000/100000;
- Sec_5 = Sum%100000/10000;
- Sec_4 = Sum%10000/1000;
- Sec_3 = Sum%1000/100;
- Sec_2 = Sum%100/10;
- Sec_1 = Sum%10;
-
- for(i = 0;i < 8;i++)
- {
- switch(i)
- {
- case 0:write_data(i+1,disp_buff[Sec_8]);break;
- case 1:write_data(i+1,disp_buff[Sec_7]);break;
- case 2:write_data(i+1,disp_buff[Sec_6]);break;
- case 3:write_data(i+1,disp_buff[Sec_5]);break;
- case 4:write_data(i+1,disp_buff[Sec_4]);break;
- case 5:write_data(i+1,disp_buff[Sec_3]);break;
- case 6:write_data(i+1,disp_buff[Sec_2]);break;
- case 7:write_data(i+1,disp_buff[Sec_1]);break;
- default:break;
- }
- }
- i=0;
- }
- }
復制代碼 完整源碼和仿真文件:
基于MAX7221驅動數碼管.rar
(50.71 KB, 售價: 2 E幣)
2021-6-5 15:23 上傳
點擊文件名下載附件
售價: 2 E幣 [記錄]
[ 購買]
【必讀】版權免責聲明
1、本主題所有言論和內容純屬會員個人意見,與本論壇立場無關。2、本站對所發(fā)內容真實性、客觀性、可用性不做任何保證也不負任何責任,網友之間僅出于學習目的進行交流。3、對提供的數字內容不擁有任何權利,其版權歸原著者擁有。請勿將該數字內容進行商業(yè)交易、轉載等行為,該內容只為學習所提供,使用后發(fā)生的一切問題與本站無關。 4、本網站不保證本站提供的下載資源的準確性、安全性和完整性;同時本網站也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的損失或傷害。 5、本網站所有軟件和資料均為網友推薦收集整理而來,僅供學習用途使用,請務必下載后兩小時內刪除,禁止商用。6、如有侵犯你版權的,請及時聯系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|
|