【單片機】單片機基本原理練習題3
- 一、題目一
- 1.1 作業題目
- 1.2 作業解答
- 二、題目二
- 2.1 作業題目
- 2.2 作業解答
- 三、題目三
- 3.1 作業題目
- 3.2 作業解答
- 四、題目四
- 4.1 作業題目
- 4.2 作業解答
一、題目一
1.1 作業題目
1.什麼是MCS-51單片機的最小系統?
1.2 作業解答
指51單片機為核心的真正可用的最小配置系統。51單片機内部內建了微型計算機的大部分功能部件,隻需要外部連接配接一些簡單電路就可組成最小系統。分為以下兩種情況:
8051/8751片内有4KB的ROM/EPROM,是以,隻需要外接晶體振蕩器和複位電路就可以構成最小系統;
8031片内無程式存儲器,是以,在構成最小系統時,不僅要外接晶體振蕩器和複位電路,還應在外擴充程式存儲器。
二、題目二
2.1 作業題目
2.LED數位管顯示器的顯示方式有幾種?各有什麼特點?
2.2 作業解答
數位管在顯示時,通常有靜态顯示方式和動态顯示方式兩種。
靜态顯示時,其公共端直接接地(共陰極)或接電源(共陽極),各段選線分别與I/O接口線相連。要顯示字元,直接在IO線發送相應的字段碼。
動态顯示時,将所有的數位管的段選線并接在一起,用一個I/O接口控制,公共端不是直接接地(共陰極)或電源(共陽極),而是通過相應的I/O接口線控制。顯示是多個數位管輪流顯示。當機關時間顯示的頻率足夠高,看起來就是穩定顯示。
三、題目三
3.1 作業題目
3.矩陣鍵盤有幾種編碼方式?怎樣編碼?
3.2 作業解答
通常有以下兩種方法進行編碼;
(1)用連接配接鍵盤的I/O線的二進制組合進行編碼。
(2)順序排列編碼。
四、題目四
4.1 作業題目
4.2 作業解答
#include <reg51.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
uchar disbuffer[8] = {0, 1, 2, 3, 4, 5, 6, 7};
void delay(uint i)//定義延時函數
{
for (uint j = 0; j < i; j++);
}
void display(void)//定義顯示函數
{
uchar codevalue[16] = {0x3f, 0x06, 0x5b, 0x4f,
0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x77, 0x7c,
0x39, 0x5e, 0x79, 0x71};//共陰極0~F的字段碼表
uchar chocode[8] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f}; //ll位選碼表
uchar i, p, temp;
for (i = 0; i < 8; i++)
{
temp = chocode[i]; //取目前的位選碼
P2 = temp; //送出位選碼
p = disbuffer[i]; //取目前顯示的字元
temp = codevalue[p]; //查得顯示字元的字段碼
P0 = temp; //送出字段碼
delay(20); //延時1ms
}
}
void main(void)
{
TH1 = (65536 - 20000) / 256;
TL1 = (65536 - 20000) % 256;
EA = 1; //EA=1通路片内程式存儲器
ET1 = 1; //ET1=1定時/計數器T1溢出中斷允許控制位
TR1 = 1; //TR1=1定時/計數器T1啟動位
while (1);
}
void time1(void) interrupt 3
{
TH1 = (65536 - 20000) / 256;
TL1 = (65536 - 20000) % 256;
display(); //設顯示函數
}