久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10195|回復: 3
打印 上一主題 下一主題
收起左側

笨鳥先飛之八位動態(tài)數顯

[復制鏈接]
跳轉到指定樓層
樓主
ID:23261 發(fā)表于 2010-4-27 19:59 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

/*動態(tài)數顯的設計思路,首先是我們要先知道怎樣才能使哪個位亮,顯示的段是什么數值,接下來就是中斷時間
的問題了,設計步驟如下,如果要讓八個數碼管靜態(tài)顯示1到8,我們可以修改中斷時間,如把50000改成100或更低*/

#include<reg52.h>   
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit duan=P2^6;     
sbit wei=P2^7; 

uchar  a,numw,numd;
uchar code tabled[]={
0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f}; /*第二步驟,創(chuàng)建段顯數值的對碼表0~9數值.如果要顯示1~8數值,最好多加前后兩位數0跟9,
      因為后面++移位時就能按我們常規(guī)順序亮下去,至于如何顯示對應數值請先看數碼顯示電路圖*/  
uchar code tablew[]={
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f}; //第二步驟,創(chuàng)建位顯,就是顯示的位置,這個碼表相對簡單,用二進制表示11111110~01111111,是0的為八位數顯管的位置
void main()
{
 a=0;            //定義個時間函數
 numw=0;     //附位顯初值為0位
 numd=0;     //附段顯初值為0位
 
 TMOD=0X01;    //第四步驟,附中斷暫存器初值
 TH0=(65536-50000)/256; //附中斷請求時間初值,高8位
 TL0=(65536-50000)%256; //附中斷請求時間初值,低8位
 EA=1;     //開啟總中斷
 ET0=1;     //開啟定時中斷
 TR0=1;     //啟動定時中斷
 while(1)
 {
  if(a==10)   //第三步驟,執(zhí)行速度,如果等20差不多是1秒,則往下執(zhí)行,相當于單位數值亮的時間
  { 
   a=0;   //重新附值初值0
   numd++;   //段顯值++
   if(numd==9)  //如果段值在對碼表第9位則轉下執(zhí)行  
    numd=1;  /*重新附值段顯值對應對碼表第1位,因為++所以0位并不在數碼管中顯示.
       如果要顯示,也會因為++而在第二輪中顯示出*/
   duan=1;   //開啟段顯端
   P0=tabled[numd];//附段顯P0值對應段顯值對碼表 
   duan=0;   //鎖存 
   wei=1;   //開啟位顯端
   P0=tablew[numw];//附位顯P0值對應位顯值對碼表
   wei=0;   //鎖存 
   numw++;   //相當于位顯移位
   if(numw==8)  //如果位顯值到對應位顯對碼表第八位則轉下執(zhí)行 
    numw=0;  //重新附值位顯值對應對碼表第0位起
/*

下面是簡單的單個數碼管顯示例證 第一驟, 修改后在第三步驟內
#include"reg52.h"
#include"intrins.h"

sbit duan=P2^6; //段顯端口
sbit wei=P2^7; //位顯端口

void main()
{
 //P0=0xff; 數碼管不顯示任何信號,默認情況下通電本身就不顯示,可以不寫
 duan=1;  //開啟段顯端口
 P0=0x06; //附值段顯數值為1,可以查閱數碼管電路圖相對應顯示的對碼表
 duan=0;  //鎖存,保持上一步段顯狀態(tài),硬件說明請查閱74HC573功能
 wei=1;  //開啟位顯端口
 P0=0xfe; //附值位顯位置,01111111,左邊第一位,為0的顯示
 wei=0;  //鎖存,保持上一步位顯狀態(tài),硬件說明請查閱74HC573功能
}
*/
  
  } 
 } 
}

void timer0() interrupt 1 /*第四步驟,中斷時間函數這個相當于移位數顯的速度,速度夠快,人眼就會有余輝效應,
       感覺8位數顯一直在亮著,相當于正在播放的電影膠卷*/

{
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 a++;
}

/*

以上有什么地方還需要改進的還請老師明示

*/

 

 

 

 

[此貼子已經被作者于2010-4-28 8:52:39編輯過]
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2010-4-28 00:00 | 只看該作者

這是個很好的程序,注釋非常詳細,我在板子上測試了可以運行

回復

使用道具 舉報

板凳
ID:23261 發(fā)表于 2010-4-28 09:25 | 只看該作者

有些函數解釋的很模糊,像下面這個就是了 

TH0=(65536-50000)/256; //附中斷請求時間初值,高8位
TL0=(65536-50000)%256; //附中斷請求時間初值,低8位

其實像我這樣沒念過初中以上的人理解這個確實很難,下面是引用其他論壇上的資料,寫得非常明白.

 

TL0=0xb0;
TH0=0x3c;
這兩個是怎么算出來得
如果晶振不是12Mhz
是11.0592 MHz
怎么算

12M的晶振每秒可產生1M個機器周期,50ms就需要50000個機器周期,定時器在方式1工作,是16位計數器,最大值為65536,所以需設置初值15536,即3CB0H(10進制15536轉換成16進制數3CB0),所以TH0=0x3c,TL0=0xb0。
(65536-50000周期=初值15536)
高位就是TH0的值,低位為TL0的值
11.0592M的晶振每秒可產生0.9216M個機器周期,50ms就需要46080個機器周期,定時器在方式1工作,是16位計數器,最大值為65536,所以需設置初值19456,即4C00H,所以TH0=0x4c,TL0=0x00。
其實很簡單,不管你使用多大的晶振,使用51單片機,一般都是12分頻出來,也就可以得出一個機器周期


機器周期=12/n(n指晶振頻率),假設你要定時的時間為M
那么定時的初值為:
M/機器周期=初值;
TH0=(65536-初值)%256;         
TL0=(65536-初值)/256;
將(65536-初值)所得的值化成16進制,其高位就是TH0的值,低位為TL0的值
例如用12M晶振做1ms定時計算如下:
機器周期=12/12*10^6=1us(微秒)
定時初值=(1*10^-3)/(1*10^-6)=1000;
所以:TH0=(65536-1000)%256;
      TL0=(65536-1000)/256;
將65536-1000=64536化為16進制為:0xFC18
TH0=0xFC;
TL0=0X18;

回復

使用道具 舉報

地板
ID:370231 發(fā)表于 2018-8-3 17:07 | 只看該作者
admin 發(fā)表于 2010-4-28 00:00
這是個很好的程序,注釋非常詳細,我在板子上測試了可以運行

你們的板子是什么型號的,
還有這sbit duan=P2^6;     
sbit wei=P2^7; 端口接哪里。
我一臉迷茫
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久7电影 | 国产区在线免费观看 | 日韩午夜| 亚洲 欧美 在线 一区 | 一级看片免费视频囗交动图 | 国产精品成人一区二区三区 | 亚洲欧美国产精品久久 | 免费观看一区二区三区毛片 | 91麻豆精品国产91久久久久久久久 | 欧美久操网 | 亚洲电影一区二区三区 | 欧美激情va永久在线播放 | 成年人视频在线免费观看 | 日日天天 | www.亚洲一区二区三区 | 91精品久久久 | 精品一二三区 | wwwww在线观看 | 青青操av | 日本不卡一区二区三区 | 国产激情自拍视频 | 91亚洲精品在线观看 | 久久亚洲国产 | 国产成人精品一区二区三区在线 | 99久久久久国产精品免费 | 99爱在线观看 | 欧美成人aaa级毛片在线视频 | 在线欧美一区二区 | 亚洲欧美中文日韩在线v日本 | 国产精品久久久久无码av | 国产91综合 | 97伊人 | 黄色毛片在线看 | 尤物在线| 国产欧美日韩久久久 | 伊人激情综合网 | 久久9久 | 一区二区在线看 | 久久精品免费一区二区 | 欧美一区 | 成人福利视频网站 |