燒錄程序是個好玩的事情。打開燒錄軟件之后,我把光盤中的實驗程序從基礎到高級能燒的都燒了一遍。有需要按鈕的就去源程序中找控制按鈕。1.實驗前我第N次燒這個循環顯示漢字的程序的時候覺得這個“中”子兩頭多的倆點不好看,就想去掉它倆 每個燈顯示亮與不亮是開和關就是1與0,想改要從源程序入手 
中字(多兩點的)
2.發現有F,E,A等字母我明白了這是16進制,
燈板上最左邊從底向上亮為1暗為0二進制轉換為16進制恰好為0x后兩位的值(明白了字形是如何編碼的)

將多兩點的兩列由0x7c,0x7c改為0x78,0x78,重新燒錄如圖

去掉兩點的中

改過的中字字形碼
3.更改其他字(我,Li,心的形狀,你),由于不知道有字形碼轉換器,所以就算了一遍(哭)

字碼

4.由于對C語言不是很懂(苦笑),所以照著老師寫好的代碼打了一遍但是照著打還是出現了諸多錯誤(如下)

對delay函數修改了數次,甚至重新在英文狀態下編輯了一遍(還是失敗)最后發現是void前少了個“ ; ”



函數Hc595Send沒有聲明,就跑到程序最開始聲明了一下#define Hc595SendByte,還是不對 最終發現s沒有大寫,最后引用的時候中間多了個空格(去掉空格重新編譯,成功)
5.實驗感悟1.深切感受到了實驗板的魅力 2.重新復習了2進制轉16進制 3.悔不當初,沒有認真學習C語言(錯誤基本是百度解決) 4.亡羊補牢,借此學期機會學習C語言,搞明白基本函數,控制語句,數據類型,關鍵字,運算符等基本編程知識,獲取高級思維模式 本文是自己初學單片機的經驗分享,希望對初學的同學有用。感謝平臺
單片機源程序如下:
- //該板子上的點陣為8*8,只能顯示簡單的一些漢子,如果要顯示真正的漢字
- //通過取模軟件取的可以選擇16*16點陣的板子
- #include<reg51.h>
- #include<intrins.h>
- sbit SRCLK=P3^6;
- sbit RCLK=P3^5;
- sbit SER=P3^4;
- //--定義要使用的IO口--//
- #define COMMONPORTS P0
- //--列選通控制--//
- unsigned char code TAB[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
- //--點陣字碼--//
- unsigned char code CHARCODE[4][8]=
- {
- 0x7F,0x01,0x01,0x01,0x00,0x00,0x5F,0x00, //Li
- 0x10,0x55,0xBF,0x14,0x10,0xFE,0x99,0x52, //我
- 0x38,0x64,0x22,0x11,0x11,0x22,0x64,0x38, //心形
- {0x20,0x7F,0x84,0x6A,0xC1,0x5F,0x68,0x44} //你
- };
- void delay(unsigned int time)
- {
- unsigned int i,j;
- for(i=0;i<time;i++)
- for(j=0;j<121;j++);
- }
- /*******************************************************************************
- * 函數名 : Hc595SendByte(unsigned char dat)
- * 函數功能 : 想74H595發送一個字節的數據
- * 輸入 : 無
- * 輸出 : 無
- *******************************************************************************/
- void Hc595SendByte(unsigned char dat)
- {
- unsigned char a;
- SRCLK=0;
- RCLK=0;
- for(a=0;a<8;a++)
- {
- SER=dat>>7;
- dat<<=1;
- SRCLK=1;
- _nop_();
- _nop_();
- SRCLK=0;
- }
- RCLK=1;
- _nop_();
- _nop_();
- RCLK=0;
- }
- /*******************************************************************************
- * 函數名 : main
- * 函數功能 : 主函數
- * 輸入 : 無
- * 輸出 : 無
- *******************************************************************************/
- void main()
- {
- unsigned char tab, j;
- unsigned int i;
- while(1)
- {
- for(i= 0; i<50; i++ ) //兩個字之間的掃描間隔時間
- {
- for(tab=0;tab<8;tab++)
- {
- Hc595SendByte(0x00); //消隱
- COMMONPORTS = TAB[tab]; //輸出字碼
- Hc595SendByte(CHARCODE[j][tab]);
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
LED點陣顯示漢字.rar
(24.31 KB, 下載次數: 34)
2018-5-19 09:33 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|