找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 10139|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

基于單片機(jī)的電子時(shí)鐘程序流程圖等資料

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:845808 發(fā)表于 2020-11-19 12:15 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
要求:1.秒表最長(zhǎng)計(jì)時(shí)為23:59:59;
                2.秒表精度為1;
               3.設(shè)置三個(gè)按鍵,分別為啟動(dòng),暫停和清零;
               4. 用數(shù)碼管(或液晶)進(jìn)行顯示。

電路模塊介紹2.3.1時(shí)鐘電路
圖 3時(shí)鐘振蕩電路
在內(nèi)部方式時(shí)鐘電路中,必須在XTAL1和XTAL2引腳兩端跨接石英晶體振蕩器和兩個(gè)微調(diào)電容構(gòu)成振蕩電路。
2.3.2按鍵電路
圖 4按鍵電路
按鍵電路分矩陣鍵盤和獨(dú)立按鍵兩種。獨(dú)立按鍵式直接用I/O口線構(gòu)成的單個(gè)按鍵電路,其特點(diǎn)是每個(gè)按鍵單獨(dú)占用一根I/O口線,每個(gè)按鍵的工作不會(huì)影響其他I/O口線的狀態(tài)。獨(dú)立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單,但每個(gè)按鍵必須占用一個(gè)I/O口線,因此,在按鍵較多時(shí),I/O口線浪費(fèi)較大,不宜采用。
本次設(shè)計(jì)采用的是獨(dú)立按鍵,按鍵處理設(shè)置為:
按下K1鍵,啟動(dòng);K2鍵,暫停;K3鍵,清零。
2.3.3顯示電路
圖 5顯示電路
顯示電路中使用的是8位共陰極數(shù)碼管,其中,由P2口進(jìn)行位選,P0口進(jìn)行段選并利用數(shù)碼管進(jìn)行動(dòng)態(tài)顯示。
2.3.4復(fù)位電路
圖 6復(fù)位電路
51單片機(jī)一般要求的是高電平復(fù)位。復(fù)位電路的目的就是在上電的瞬間提供一個(gè)與正常工作狀態(tài)下相反的電平。一般利用電容電壓不能突變的原理,將電容與電阻串聯(lián),上電時(shí)刻,電容沒有充電,兩端電壓為零,此時(shí),提供復(fù)位脈沖,電源不斷的給電容充電,直至電容兩端電壓為電源電壓,電路進(jìn)入正常工作狀態(tài)。

3.軟件設(shè)計(jì)3.1軟件簡(jiǎn)介
Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、鏈接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過(guò)一個(gè)集成開發(fā)環(huán)境(μVision)將這些部分組合在一起。運(yùn)行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。
C51工具包的整體結(jié)構(gòu),μVision與Ishell分別是C51 for Windows 和for Dos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及C51編譯器編譯生成目標(biāo)文件(.obj)。目標(biāo)文件可由LIB51創(chuàng)建生成庫(kù)文件,也可以與庫(kù)文件一起經(jīng)L51連接定位生成絕對(duì)目標(biāo)文件(.abs)。abs文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的hex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器如EPROM中。
使用獨(dú)立的Keil仿真器時(shí),注意事項(xiàng):
*仿真器標(biāo)配11.0592MHz的晶振,但用戶可以在仿真器上的晶振插孔中換插其他頻率的晶振。
*仿真器上的復(fù)位按鈕只復(fù)位仿真芯片,不復(fù)位目標(biāo)系統(tǒng)。
*仿真芯片的31腳(/EA)已接至高電平,所以仿真時(shí)只能使用片內(nèi)ROM,不能使用片外ROM;但仿真器外引插針中的31腳并不與仿真芯片的31腳相連,故該仿真器仍可插入到擴(kuò)展有外部ROM(其CPU的/EA引腳接至低電平)的目標(biāo)系統(tǒng)中使用。

3.2流程圖


3.3設(shè)計(jì)思路
利用單片機(jī)16位定時(shí)/計(jì)數(shù)器方式,TMOD為0X01。每1ms計(jì)數(shù)一次,共計(jì)1000次即1s,此時(shí)秒單位進(jìn)一;當(dāng)秒數(shù)值達(dá)到60時(shí),秒數(shù)值清零,分單位進(jìn)一;分?jǐn)?shù)值達(dá)到60時(shí),時(shí)單位進(jìn)一,分?jǐn)?shù)值清零,以此達(dá)到時(shí)鐘功能。k1控制中斷總開關(guān),用來(lái)控制計(jì)數(shù)器工作。按下k1鍵啟動(dòng)中斷,按下k2鍵關(guān)閉,k3鍵則用來(lái)控制秒、分、時(shí)的數(shù)值清零。

4.總結(jié)
本次設(shè)計(jì)主題為基于單片機(jī)設(shè)計(jì)的時(shí)鐘電路,體現(xiàn)了AT89C51的簡(jiǎn)易性、可控性等諸多優(yōu)良特性。用單片機(jī)來(lái)設(shè)計(jì)時(shí)鐘電路,其優(yōu)點(diǎn)十分明顯,即穩(wěn)定性高、方便維護(hù)和操作簡(jiǎn)單。但它的缺點(diǎn)也較明顯,即難以滿足較為復(fù)雜的功能。
拿到課題后,我們小組每個(gè)成員先上網(wǎng)查閱資料以及翻閱單片機(jī)課本,復(fù)習(xí)本次設(shè)計(jì)內(nèi)容,比如七段譯碼顯示器、計(jì)數(shù)器、振蕩器等等。然后根據(jù)設(shè)計(jì)要求畫出整體設(shè)計(jì)框架。做完準(zhǔn)備工作后就正式開始設(shè)計(jì)與繪圖。
在軟件設(shè)計(jì)過(guò)程中我們遇到了許多困難,其中最主要的困難是設(shè)計(jì)好按鍵程序后,進(jìn)行實(shí)際開發(fā)板測(cè)試時(shí)按鍵無(wú)法工作,我們經(jīng)過(guò)多次檢查和測(cè)試后發(fā)現(xiàn)是由于P2口控制數(shù)碼管位選時(shí)連續(xù)發(fā)送的數(shù)據(jù)對(duì)按鍵造成了干擾,最后我們更換了接口,解決了這個(gè)問題。
我們小組從這次的設(shè)計(jì)中收獲頗多,不僅溫習(xí)了一遍大二學(xué)過(guò)的單片機(jī)編程知識(shí),而且還加深了對(duì)單片機(jī)的理解,感受到了設(shè)計(jì)的樂趣。

附錄1.總電路
圖 8總電路圖
2.程序代碼
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. void Delayms(uint x);
  6. sbit L=P2^0;
  7. sbit LA=P2^1;
  8. sbit LB=P2^2;
  9. void Display();
  10. sbit key1=P1^5;
  11. sbit key2=P1^6;
  12. sbit key3=P1^7;

  13. /*位碼*/uchar tablew[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
  14. /*位選*/uchar shu[8]={0};
  15. /*共陰極*/
  16. uchar table6[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  17. uint aa,bb,cc,dd;
  18. void main()
  19. {
  20. TMOD=0x01;//設(shè)置工作方式
  21. TH0=(65536-1000)/256;//設(shè)置定時(shí)器高八位
  22. TL0=(65536-1000)%256;//設(shè)置定時(shí)器低八位
  23. ET0=1;//打開定時(shí)器T0的中斷開關(guān)
  24. TR0=1;//啟動(dòng)定時(shí)器T0工作
  25. EA=0;//打開總中斷開關(guān)

  26. while(1)
  27.               {
  28.      uchar mshi,mge,fshi,fge,sshi,sge;
  29.      if(key1==0)
  30.      {
  31.                             EA=1;
  32.      }
  33.      else if(key2==0)
  34.               {
  35.                 EA=0;
  36.               }
  37.      else if(key3==0)
  38.      {
  39.       bb=0;cc=0;dd=0;
  40.       }
  41.       else;

  42.       mshi=bb/10;
  43.       mge=bb%10;
  44.       if(bb>59)
  45.                  {
  46. bb=0;
  47. cc++;
  48. }
  49. fshi=cc/10;
  50. fge=cc%10;
  51. if(cc>59)
  52. {
  53. cc=0;
  54. dd++;
  55. }
  56. sshi=dd/10;
  57. sge=dd%10;
  58. if(dd>23)
  59. {
  60. dd=0;
  61. }

  62. shu[7]=table6[mge];
  63. shu[6]=table6[mshi];
  64. shu[5]=0x40;
  65. shu[4]=table6[fge];
  66. shu[3]=table6[fshi];
  67. shu[2]=0x40;
  68. shu[1]=table6[sge];
  69. shu[0]=table6[sshi];
  70. Display();
  71. }
  72. }
  73. void int0_0() interrupt 1
  74. {
  75. TH0=(65536-1000)/256;
  76. TL0=(65536-1000)%256;
  77. aa++;//1ms加一次
  78. if(aa>1000)
  79. {
  80. aa=0;
  81. bb++;//1S加一次
  82. }

  83. }
  84. void Display()
  85. {
  86. uint i;
  87. for(i=0;i<8;i++)
  88. {
  89. P2=tablew[i];
  90. P0=shu[i];
  91. Delayms(1);
  92. }
  93. }
  94. void Delayms(uint x)
  95. {
  96. uchar j;
  97. while(x--)
  98.               {
  99.                             for(j=0;j<125;j++);
  100.               }
  101. }
復(fù)制代碼

以上圖文的Word格式文檔下載(內(nèi)容和本網(wǎng)頁(yè)上的一模一樣,方便保存):
基于單片機(jī)的電子時(shí)鐘.docx (272.49 KB, 下載次數(shù): 53)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:288353 發(fā)表于 2021-1-28 11:23 | 只看該作者
能幫我看看嗎,小白,照著做,但是顯示有問題,上面的屏幕共陽(yáng)極,下面的共陰極,上面的8后面兩位會(huì)走但是顯示不全,下面的屏幕不動(dòng)
回復(fù)

使用道具 舉報(bào)

板凳
ID:943668 發(fā)表于 2021-6-24 08:41 來(lái)自觸屏版 | 只看該作者
剎訤 發(fā)表于 2021-1-28 11:23
能幫我看看嗎,小白,照著做,但是顯示有問題,上面的屏幕共陽(yáng)極,下面的共陰極,上面的8后面兩位會(huì)走但是 ...

解決了么?
回復(fù)

使用道具 舉報(bào)

地板
ID:977208 發(fā)表于 2021-11-3 00:54 | 只看該作者
按照你的做了數(shù)碼管顯示不出來(lái),想向你請(qǐng)教一下
回復(fù)

使用道具 舉報(bào)

5#
ID:1054389 發(fā)表于 2022-11-28 14:44 | 只看該作者
剎訤 發(fā)表于 2021-1-28 11:23
能幫我看看嗎,小白,照著做,但是顯示有問題,上面的屏幕共陽(yáng)極,下面的共陰極,上面的8后面兩位會(huì)走但是 ...

你好 我也出現(xiàn)這個(gè)問題了 請(qǐng)問你解決了嗎 怎么解決的呢
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表