freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c語言單片機(jī)實(shí)例-文庫吧

2024-12-23 11:40 本頁面


【正文】 8051 Family 80C51 電阻排 Resistor Resistor Pack RESPACK8 ANALOG 發(fā)光二極管 Optoelectronics LEDs ledred DIGITAL 二、參考程序 /*****************************************************************************/ include void delay(void) { unsigned char i,j。 for(i = 0。i 255。i++) for(j = 0。j 255。j++)。 } void main(void) { unsigned char j = 0x01。 while( 1) { j = j 1。 if(j == 0x00) j = 0x01。 P0 = j。 delay()。 } } /*****************************************************************************/ 三、程序說明 j = j 1,執(zhí)行的目的是控制 P0 整個字節(jié)的數(shù)據(jù)在循環(huán)時左移變化,程序循環(huán)第一次, P0 = 0x02, 連接的 LED 亮,其它滅;循環(huán)第七次, 連接的 LED 亮,其它滅;循環(huán)第八次, j = 0x00, if 語句條件滿足, j = 0x01, 連接的 LED 亮,其它滅,然后依次變化下去。如果 P0 口驅(qū)動 8 個 LED 低電平有效,如下修該: /**********************/ void main(void) { unsigned char j = 0xfe。 while( 1) { j =( j 1) | 0x01 。 if(j = 0xff) j = 0xfe。 P0 = j。 delay()。 } } 2. delay()函數(shù)無形參,延時時間不能設(shè)置。 利用 P0 口驅(qū)動一個數(shù)碼管,顯示 0 – 9,并循環(huán) 一、參考電路 實(shí)驗(yàn)電路在單片機(jī)的最小系統(tǒng)基礎(chǔ)上, P0 口接一只共陽數(shù)碼管,見圖 313。帶小數(shù)點(diǎn)的數(shù)碼管是由 8 個 LED 組成,七個 LED 組成數(shù)字,另一只 LED 用來顯示小數(shù)點(diǎn)。如果數(shù)碼管內(nèi)部的 8 只 LED 的正極接在一起,負(fù)極分別引出,引腳依次命名為 a、 b、 c、 d、 e、 f、g 和 dot,稱為帶小數(shù)點(diǎn)的 7 段共陽極性數(shù)碼管。 P 1 . 0P 1 . 1P 1 . 2P 1 . 3P 1 . 4P 1 . 5P 1 . 62345678P 0 . 0 / A D 0P 0 . 1 / A D 1P 0 . 2 / A D 2P 0 . 3 / A D 3P 0 . 4 / A D 4P 0 . 5 / A D 5P 0 . 6 / A D 6P 0 . 7 / A D 7P 2 . 7 / A 1 5P 2 . 6 / A 1 4P 2 . 5 / A 1 3P 2 . 4 / A 1 2P 2 . 3 / A 1 1P 2 . 2 / A 1 0P 2 . 1 / A 9P 2 . 0 / A 8R E S E TX T A L 2X T A L 1E AA L EP S E N3 93 83 73 63 53 43 33 23 13 02 92 82 72 62 52 42 32 22 1P 3 . 0 / R X DP 3 . 1 / T X DP 3 . 2 / I N T 0P 3 . 3 / I N T 1P 3 . 4 / T 0P 3 . 5 / T 1P 3 . 6 / W RP 3 . 7 / R D1 01 11 21 31 41 51 61 7P 1 . 711 91 89C 1 3 0 PC 2 3 0 PC Y 1 2 M H zR 1 1 KC 3 1 0μI C S T C 8 9 C 5 1V C CV C C ( + 5 V )R 2 ~ 9 2 0 0?S E V E N _ S E Gaaabcdefgd o tbcdefgd o tA C 圖 313 單片機(jī)驅(qū)動共陽數(shù)碼管電路 單片機(jī)的 口分別接數(shù)碼管的 adot 引腳,如果讓數(shù)碼管顯示 1,數(shù)碼管 b、 c段亮,程序控制 P0 輸出 0xbe 十六進(jìn)制編碼即可,因此共陽數(shù)碼管顯示 09 十進(jìn)制數(shù)字,需要利用 10 個顯示碼組成的數(shù)組。對于共陰數(shù)碼管,也有相應(yīng)的編碼要求。小數(shù)點(diǎn)在不用時一般不讓顯示,高位端口 輸 出高電平即可。 由于 P0 每個端口的灌電流達(dá) 20mA,數(shù)碼管每段 LED 正常顯示 5mA 即可,因此需要R2~9 用來限制數(shù)碼管每一段電流,以防止驅(qū)動電流過大而燒毀器件。利用 Proteus 軟件仿真時,數(shù)碼管采用 Optoelectronics 元件庫中 7Segment Displays 下的 7SEGCOMANODE。 二、參考程序 /*****************************************************************************/ include code unsigned char seven_seg[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}。 void delay (void) /* 時間延遲函數(shù) */ { unsigned char i,j。 for (i = 0。i 255。i++) for (j = 0。j = 255。j++)。 } void main (void) { unsigned char i。 /* 變量 i 用來儲存 0~9 */ /*無窮循環(huán) */ while (1) { for (i = 0。 i10。 i++) { P0 = seven_seg[i]。 /*輸出 0~9 到共陽七段顯示器 */ delay()。 /*調(diào)用時間延遲函數(shù) delay*/ } } } /*****************************************************************************/ 三、程序說明 1. 當(dāng)程序中使用常量數(shù)據(jù)時,可以把數(shù)據(jù)存儲在單片機(jī)的程序存儲器中,對此類數(shù)據(jù)聲明時,前面需要加上關(guān)鍵字 code 或 const,如本實(shí)驗(yàn)中的共陽數(shù)碼管數(shù)字顯示需要的編碼,表 313 是共陽數(shù)碼管編碼,表 314 是共陰數(shù)碼管編碼。單片機(jī)驅(qū)動液晶顯示器顯示的漢字也是一種常量數(shù)據(jù)。 表 313 共陽數(shù)碼管顯示編碼 顯示數(shù)字 dot g f e d c b a 16 進(jìn)制 0 1 1 0 0 0 0 0 0 0xc0 1 1 1 1 1 1 0 0 1 0xf9 2 1 0 1 0 0 1 0 0 0xa4 3 1 0 1 1 0 0 0 0 0xb0 4 1 0 0 1 1 0 0 1 0x99 5 1 0 0 1 0 0 1 0 0x92 6 1 0 0 0 0 0 1 0 0x82 7 1 1 1 1 1 0 0 0 0xf8 8 1 0 0 0 0 0 0 0 0x80 9 1 0 0 1 0 0 0 0 0x90 表 314 共陰數(shù)碼管顯示編碼 顯示數(shù)字 dot g f e d c b a 16 進(jìn)制 0 0 0 1 1 1 1 1 1 0x3f 1 0 0 0 0 0 1 1 0 0x06 2 0 1 0 1 1 0 1 1 0x5b 3 0 1 0 0 1 1 1 1 0x4f 4 0 1 1 0 0 1 1 0 0x66 5 0 1 1 0 1 1 0 1 0x6d 6 0 1 1 1 1 1 0 1 0x7d 7 0 0 0 0 0 1 1 1 0x07 8 0 1 1 1 1 1 1 1 0x7f 9 0 1 1 0 1 1 1 1 0x6f for 循環(huán),讓變 量 i 依次由 0 遞增到 9,并將數(shù)字顯示碼送到 P0,需要注意, seven_seg[10] 有 10 各數(shù)據(jù), seven_seg[0] 為第一個數(shù)據(jù), seven_seg[9] 為第 10 個數(shù)據(jù)。數(shù)碼管顯示的數(shù)據(jù)變化時間由延時函數(shù)決定。 for 循環(huán)體嵌套在 while 循環(huán)體中,數(shù)碼管回循環(huán)顯示 0~9,永不結(jié)束,除非電路斷電。利用數(shù)碼管也可以顯示日期和時間,在以后的程序設(shè)計(jì)案例中就可以學(xué)到。 單片機(jī)定時器 /計(jì)數(shù)器應(yīng)用 利用 Timer0 中斷產(chǎn)生 1 秒延時,讓數(shù) 1 個碼管顯示秒計(jì)數(shù) 本案例主要目的是熟練 掌握單片機(jī)內(nèi)部 Timer0 或 Timer1 的編程控制方法,會利用Timer0 或 Timer1 中斷精確定時。同時掌握數(shù)碼管動態(tài)顯示原理,學(xué)會 6 位數(shù)字顯示的程序設(shè)計(jì)。本案例使用的電路為圖 313。 一、程序設(shè)計(jì) /*****************************************************************************/ include code unsigned char seven_seg[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}。 unsigned char cp,i。 //聲明全局變量 void timer0_isr(void) interrupt 1 // timer0 中斷服務(wù)函數(shù) { TR0 = 0。 //停止計(jì)數(shù) TL0 = 0x11。 // TL0 重新預(yù)置 TH0 = 0xee。 // TH0 重新預(yù)置 TR0 = 0。 //開始計(jì)數(shù) cp++。 // timer0 中斷 1 次,變量 cp 加 1 if(cp == 200) //中斷 200 次,時間剛好為 1 秒 {cp = 0。i ++。} if(i == 10) i = 0。 P0 = seven_seg[i] // P0 輸出顯示數(shù)據(jù) } void timer0_initialize(void) // timer0 中斷初始化函數(shù) { EA = 0。 //設(shè)置中斷允許寄存器 IE 中的 EA 位,關(guān)閉中斷總開關(guān) TMOD = 0x01; //設(shè)置計(jì)時器模式控制寄存器, Time0 工作在定時方式 1 TR0 = 0。 //設(shè)置計(jì)時器控制寄存器 TCON 寄存器的 TR0 位為 0, Timer0 //停止計(jì)數(shù) TL0 = 0x11。 TH0 = 0xee。 // Timer0 的 16 位計(jì)數(shù) 器初始值為 0xee11, 12MHz 晶體振 //頻率,單片機(jī)的機(jī)器周期為 1 微妙, Timer0 每 1 微秒加 1 //計(jì)數(shù),加滿溢出變產(chǎn)生中斷,從計(jì)數(shù)到中斷剛好為 5 毫秒 PT0 = 1。 //設(shè)置中斷優(yōu)先次序寄存器 IP 中的 PT0 位, Timer0 中斷優(yōu)先 ET0 = 1。 //設(shè)置中斷允許寄存器 IE 中 ET0 的位,開啟中斷小開關(guān) EA = 1。 //打開中斷總開關(guān) TR0 = 1。 //開始計(jì)數(shù) } void main (void) { timer0_initialize() // timer0 初始化,為中斷做好準(zhǔn)備 while (1)。 //等待中斷 } /*****************************************************************************/ 二、程序說明 , interruput 為關(guān)鍵字, 1 為 timer0 中斷號。在 頭文件中已經(jīng)定義,表 為單片機(jī)常用中斷的中斷號。在使用中斷服務(wù)函數(shù)時,直接在名后加interruput 和中斷號即可。 表 中單片機(jī)常用中斷號定義 中斷
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1