㈠ 51單片機數碼管動態顯示從右往左
這是四位數碼管從右從左流動顯示,像滾動字幕一樣的。用不著矩陣按鍵哪。
其實程序很簡單,沒那麼復雜。程序如下
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//共陰段碼碼,0x00為滅
void delay()//延時子程序
{
uint y;
for(y=400;y>0;y--);
}
void main()
{
uchar n,x;
while(1)
{
n++;
if(n>50)//n為顯示一屏顯示次數,n大小可調節流動速度
{
n=0;
x++;//從下一個位置開始顯示
if(x>8)x=0;
}
}
}
模擬結果
㈡ 利用矩陣式鍵盤,設計一個10以內數的階乘計算器,計算結果用六位數碼管顯示
首先,我們需要選擇一種合適的單片機進行編程。在本例中,我們可以選擇AT89S52單片機作為主控晶元。
接下來,我們需要設計電路圖並進行硬體搭建。按照題目要求,我們需要使用矩陣式鍵盤和六位數碼管。可通過鏈接進行查看:
https://www.easyeda.com/claraliu/matrix-keyboard-and-6-digit-display
接下來,我們需要編寫程序實現階乘計算功能並將結果顯示在六位數碼管上。以下是具體的程序實現方式:
首先定義一個用於保存輸入數字的變數,並初始化為0;另外還需要定義一個用於保存階乘結果的變數。
2.然後通過鍵盤讀取用戶輸入的數字,並進行判斷是否小於等於10。如果不是,提示用戶重新輸入。
3.接著,通過一個循環語句計算出所輸入數字的階乘,並將結果保存到之前定義的結果變數中。
4.最後,將計算出的階乘結果轉換為六位十進制數,並通過數碼管進行顯示。
以下是完整程序的示例:
#include <reg52.h> // 包含AT89S52頭文件
#define uchar unsigned char // 定義uchar類型
#define uint unsigned int // 定義uint類型
sbit LSA = P2^2; // 設置LSA-P2.2引腳
sbit LSB = P2^3; // 設置LSB-P2.3引腳
sbit LSC = P2^4; // 設置LSC-P2.4引腳
uchar code table[]={ // 建立表格實現數碼管顯示
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0xbf,0xff,
0x88,0x83,0xc6,0xa1};
void delay(uint i) // 延時函數
{
while(i--);
}
void Display(uchar FirstBit,uchar Num) // 數碼管顯示函數
{
LSA=FirstBit; // 選擇哪一位數碼管
P0=table[Num]; // 顯示數字
delay(100); // 延時一段時間
P0=0xff; // 關閉數碼管
}
void main()
{
uchar input_num = 0; // 輸入的數字
uint result = 1; // 階乘結果
uchar i; // 循環計數器
while(1)
{
P1 = 0xf0;
if(P1 != 0xf0) // 如果有鍵按下
{
delay(1000); // 延時去抖
if(P1 != 0xf0) // 確認是否有鍵按下
{
switch(P1) // 判斷按下的是哪個鍵
{
case 0x7f: input_num = 1;break;
case 0xbf: input_num = 2;break;
case 0xdf: input_num = 3;break;
case 0xef: input_num = 10;break;
}
break; // 跳出while循環
}
}
}
if(input_num != 0 && input_num <= 10) // 判斷輸入的數字是否符合要求
{
for(i = 1; i <= input_num; i++) // 計算階乘
{
result *= i;
}
}
else
{
P1 = 0xfe;
Display(0,result/100000); // 顯示結果
Display(1,(result%100000)/10000);
Display(2,(result%10000)/1000);
Display(3,(result%1000)/100);
Display(4,(result%100)/10);
Display(5,result%10);
}
}
最後,我們需要將程序下載到單片機中,並將硬體連接好。這樣,當用戶輸入一個1-10之間的數字時,該計算器就會