51單片機(jī)100例實(shí)例之20例

//項(xiàng)目20:數(shù)碼管顯示撥碼開(kāi)關(guān)編碼
//項(xiàng)目再創(chuàng)作者:科技小宅神
//說(shuō)明:系統(tǒng)顯示撥碼開(kāi)關(guān)所設(shè)置的編碼000~255
//資源來(lái)自網(wǎng)絡(luò),由小宅神收集,整理,注釋,講解,說(shuō)明,修正。
仿真圖:

代碼:
#include <reg51.h>
#include <intrins.h>//c51內(nèi)部移位函數(shù)
#define uchar unsigned char
#define uint unsigned int
//共陰極數(shù)碼管顯示數(shù)組
uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//待顯示的數(shù)據(jù)緩沖區(qū),顯示3位
uchar DSY_Buffer[3]={0,0,0};
//1毫秒延時(shí)函數(shù)
void DelayMS(uint x)
{
? uchar i;
? while(x--)
? {
????????for(i=0;i<120;i++);
? ?}
}
//主程序
void main()
{
????uchar i,m,Num;//定義3個(gè)局部變量
????P0 = 0xff;//P0初始化
????P2 = 0xff;//P2初始化
????while(1)//死循環(huán)
????{
????????m = 0xfe;// 1111 1110
????????Num = P1;//讀取撥碼開(kāi)關(guān)的值
????????//存放撥碼值(16進(jìn)制數(shù)轉(zhuǎn)換成3位表示的十進(jìn)制數(shù))
????????DSY_Buffer[0] = Num/100;
????????DSY_Buffer[1] = Num/10%10;
????????DSY_Buffer[2] = Num%10;
????????for(i=0;i<3;i++)//刷新顯示在數(shù)碼管上
????????{
????????????m = _crol_(m,1);//循環(huán)左移
????????????P2 = m;
????????????P0 = DSY_CODE[DSY_Buffer[i]];
????????????DelayMS(10);
????????}
????}
}
祝大家學(xué)(白)習(xí)(嫖)愉快!喜歡可以關(guān)注,三連up主一波!