- 單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)100例
- 彭偉編著
- 660字
- 2018-12-27 05:12:03
3.8 8只數(shù)碼管顯示多個(gè)不同字符
本例不同于上一案例的是在集成式數(shù)碼管上同時(shí)顯示了多個(gè)不同字符。
本例電路如圖3-8所示。

圖3-8 8只數(shù)碼管顯示多個(gè)不同字符電路
程序設(shè)計(jì)調(diào)試與實(shí)訓(xùn):
前面已經(jīng)討論過(guò),對(duì)于集成式數(shù)碼管,任何時(shí)候發(fā)送的段碼會(huì)被所有數(shù)碼管收到,如果本例中所有共陽(yáng)數(shù)碼管的位碼均為1(0xFF),則所有數(shù)碼管都會(huì)顯示同一字符。
為了使不同數(shù)碼管顯示不同字符,本例使用的是集成式多位數(shù)碼管常用的動(dòng)態(tài)掃描顯示技術(shù),它利用了人的視覺(jué)暫留特征,選通第1只數(shù)碼管時(shí),發(fā)送1的段碼;選通第2只數(shù)碼管時(shí),發(fā)送2的段碼;選通第3只數(shù)碼管時(shí),發(fā)送3的段碼。每次僅選通一只數(shù)碼管,發(fā)送對(duì)應(yīng)的段碼,每次切換選通下一數(shù)碼管并發(fā)送相應(yīng)段碼的時(shí)間間隔非常短,視覺(jué)惰性使人感覺(jué)不到字符是一個(gè)接一個(gè)顯示在不同數(shù)碼管上的,而會(huì)覺(jué)得所有字符很穩(wěn)定地同時(shí)顯示在不同數(shù)碼管上。
可見(jiàn),這種設(shè)計(jì)方法和上一案例類似的是仍然是在數(shù)碼管不同位置上逐個(gè)顯示不同字符,只是切換速度大大增加了,在控制切換延時(shí)的時(shí)候,要注意全屏的掃描頻率要高于視覺(jué)暫留頻率16~20Hz。對(duì)于代碼中的最后一行語(yǔ)句DelayMS(2),讀者可嘗試將函數(shù)參數(shù)修改為3,10,20等,觀察會(huì)出現(xiàn)什么樣的效果。
讀者可修改代碼,實(shí)現(xiàn)自定義的若干位數(shù)字串的顯示。
源程序代碼:
//----------------------------------------------------------------- // 名稱: 8只數(shù)碼管動(dòng)態(tài)顯示多個(gè)不同字符 //----------------------------------------------------------------- // 說(shuō)明: 數(shù)碼管動(dòng)態(tài)掃描顯示0~7。 //----------------------------------------------------------------- #include <reg51.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int //各數(shù)字的數(shù)碼管段碼 uchar code DSY_CODE[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //----------------------------------------------------------------- // 延時(shí) //----------------------------------------------------------------- void DelayMS(uint x) { uchar i; while(x--) for(i = 0; i < 120; i++); } //----------------------------------------------------------------- // 主程序 //----------------------------------------------------------------- void main() { uchar k,m = 0x80; P0 = 0xff; P2 = 0x00; while(1) { for(k = 0; k < 8; k++) { m = _crol_(m,1); P2 = m; //位碼 P0 = DSY_CODE[ k + 1 ]; //段碼 DelayMS(2); //延時(shí) } } }
- Java程序設(shè)計(jì)(慕課版)
- The Supervised Learning Workshop
- Learning Linux Binary Analysis
- Swift 3 New Features
- Python應(yīng)用輕松入門
- Oracle BAM 11gR1 Handbook
- Java EE核心技術(shù)與應(yīng)用
- 第一行代碼 C語(yǔ)言(視頻講解版)
- Instant jQuery Boilerplate for Plugins
- Python開(kāi)發(fā)基礎(chǔ)
- Vue.js 3應(yīng)用開(kāi)發(fā)與核心源碼解析
- CodeIgniter Web Application Blueprints
- Qt 4開(kāi)發(fā)實(shí)踐
- Three.js權(quán)威指南:在網(wǎng)頁(yè)上創(chuàng)建3D圖形和動(dòng)畫的方法與實(shí)踐(原書第4版)
- Natural Language Processing with Python Cookbook